Source of file RoutingManipulator.php
Size: 2,225 Bytes - Last Modified: 2013-07-04T14:20:59+02:00
/home/theseer/Downloads/Symfony/vendor/sensio/generator-bundle/Sensio/Bundle/GeneratorBundle/Manipulator/RoutingManipulator.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 | <?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Sensio\Bundle\GeneratorBundle\Manipulator; use Symfony\Component\DependencyInjection\Container; /** * Changes the PHP code of a YAML routing file. * * @author Fabien Potencier <fabien@symfony.com> */ class RoutingManipulator extends Manipulator { private $file; /** * Constructor. * * @param string $file The YAML routing file path */ public function __construct($file) { $this->file = $file; } /** * Adds a routing resource at the top of the existing ones. * * @param string $bundle * @param string $format * @param string $prefix * @param string $path * * @return Boolean true if it worked, false otherwise * * @throws \RuntimeException If bundle is already imported */ public function addResource($bundle, $format, $prefix = '/', $path = 'routing') { $current = ''; if (file_exists($this->file)) { $current = file_get_contents($this->file); // Don't add same bundle twice if (false !== strpos($current, $bundle)) { throw new \RuntimeException(sprintf('Bundle "%s" is already imported.', $bundle)); } } elseif (!is_dir($dir = dirname($this->file))) { mkdir($dir, 0777, true); } $code = sprintf("%s:\n", Container::underscore(substr($bundle, 0, -6)).('/' !== $prefix ? '_'.str_replace('/', '_', substr($prefix, 1)) : '')); if ('annotation' == $format) { $code .= sprintf(" resource: \"@%s/Controller/\"\n type: annotation\n", $bundle); } else { $code .= sprintf(" resource: \"@%s/Resources/config/%s.%s\"\n", $bundle, $path, $format); } $code .= sprintf(" prefix: %s\n", $prefix); $code .= "\n"; $code .= $current; if (false === file_put_contents($this->file, $code)) { return false; } return true; } } |