├── .gitignore ├── drupal ├── app │ ├── cache │ │ └── .gitkeep │ ├── logs │ │ └── .gitkeep │ ├── config │ │ ├── routing.yml │ │ ├── config_test.yml │ │ ├── services.yml │ │ ├── routing_dev.yml │ │ ├── config_prod.yml │ │ ├── parameters.yml.dist │ │ ├── security.yml │ │ ├── config_dev.yml │ │ └── config.yml │ ├── .htaccess │ ├── AppCache.php │ ├── autoload.php │ ├── Resources │ │ └── views │ │ │ ├── default │ │ │ └── index.html.twig │ │ │ └── base.html.twig │ ├── console │ ├── phpunit.xml.dist │ ├── AppKernel.php │ ├── check.php │ └── SymfonyRequirements.php ├── README.md ├── web │ ├── favicon.ico │ ├── apple-touch-icon.png │ ├── robots.txt │ ├── app.php │ ├── app_dev.php │ ├── .htaccess │ └── config.php ├── src │ ├── .htaccess │ └── AppBundle │ │ ├── AppBundle.php │ │ ├── Tests │ │ └── Controller │ │ │ └── DefaultControllerTest.php │ │ ├── Controller │ │ └── DefaultController.php │ │ └── Entity │ │ ├── Node.php │ │ └── FieldBody.php ├── .gitignore ├── composer.json └── composer.lock └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | /.idea -------------------------------------------------------------------------------- /drupal/app/cache/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /drupal/app/logs/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /drupal/README.md: -------------------------------------------------------------------------------- 1 | drupal 2 | ====== 3 | 4 | A Symfony project created on November 28, 2015, 11:56 am. 5 | -------------------------------------------------------------------------------- /drupal/app/config/routing.yml: -------------------------------------------------------------------------------- 1 | app: 2 | resource: "@AppBundle/Controller/" 3 | type: annotation 4 | -------------------------------------------------------------------------------- /drupal/web/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tracker/AllerDrupalToSymfonyMapping/master/drupal/web/favicon.ico -------------------------------------------------------------------------------- /drupal/web/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tracker/AllerDrupalToSymfonyMapping/master/drupal/web/apple-touch-icon.png -------------------------------------------------------------------------------- /drupal/web/robots.txt: -------------------------------------------------------------------------------- 1 | # www.robotstxt.org/ 2 | # www.google.com/support/webmasters/bin/answer.py?hl=en&answer=156449 3 | 4 | User-agent: * 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DrupalToSymfonyMapping 2 | 3 | Experiments of Drupal database usage in Symfony application. 4 | 5 | Performed on Aller Media OneIt Lab days in Tallinn. 6 | -------------------------------------------------------------------------------- /drupal/app/.htaccess: -------------------------------------------------------------------------------- 1 | 2 | Require all denied 3 | 4 | 5 | Order deny,allow 6 | Deny from all 7 | 8 | -------------------------------------------------------------------------------- /drupal/src/.htaccess: -------------------------------------------------------------------------------- 1 | 2 | Require all denied 3 | 4 | 5 | Order deny,allow 6 | Deny from all 7 | 8 | -------------------------------------------------------------------------------- /drupal/src/AppBundle/AppBundle.php: -------------------------------------------------------------------------------- 1 | 6 | {% for article in articles %} 7 | 8 |
  • {{ article.body[0].value }} ({{ article.id }})
  • 9 | {% endfor %} 10 | 11 | {% endautoescape %} 12 | 13 | {% endblock %} 14 | -------------------------------------------------------------------------------- /drupal/app/config/config_test.yml: -------------------------------------------------------------------------------- 1 | imports: 2 | - { resource: config_dev.yml } 3 | 4 | framework: 5 | test: ~ 6 | session: 7 | storage_id: session.storage.mock_file 8 | profiler: 9 | collect: false 10 | 11 | web_profiler: 12 | toolbar: false 13 | intercept_redirects: false 14 | 15 | swiftmailer: 16 | disable_delivery: true 17 | -------------------------------------------------------------------------------- /drupal/app/config/services.yml: -------------------------------------------------------------------------------- 1 | # Learn more about services, parameters and containers at 2 | # http://symfony.com/doc/current/book/service_container.html 3 | parameters: 4 | # parameter_name: value 5 | 6 | services: 7 | # service_name: 8 | # class: AppBundle\Directory\ClassName 9 | # arguments: ["@another_service_name", "plain_value", "%parameter_name%"] 10 | -------------------------------------------------------------------------------- /drupal/app/Resources/views/base.html.twig: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {% block title %}Welcome!{% endblock %} 6 | {% block stylesheets %}{% endblock %} 7 | 8 | 9 | 10 | {% block body %}{% endblock %} 11 | {% block javascripts %}{% endblock %} 12 | 13 | 14 | -------------------------------------------------------------------------------- /drupal/app/config/routing_dev.yml: -------------------------------------------------------------------------------- 1 | _wdt: 2 | resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml" 3 | prefix: /_wdt 4 | 5 | _profiler: 6 | resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml" 7 | prefix: /_profiler 8 | 9 | _configurator: 10 | resource: "@SensioDistributionBundle/Resources/config/routing/webconfigurator.xml" 11 | prefix: /_configurator 12 | 13 | _errors: 14 | resource: "@TwigBundle/Resources/config/routing/errors.xml" 15 | prefix: /_error 16 | 17 | _main: 18 | resource: routing.yml 19 | -------------------------------------------------------------------------------- /drupal/src/AppBundle/Tests/Controller/DefaultControllerTest.php: -------------------------------------------------------------------------------- 1 | request('GET', '/'); 14 | 15 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); 16 | $this->assertContains('Welcome to Symfony', $crawler->filter('#container h1')->text()); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /drupal/app/config/config_prod.yml: -------------------------------------------------------------------------------- 1 | imports: 2 | - { resource: config.yml } 3 | 4 | #framework: 5 | # validation: 6 | # cache: validator.mapping.cache.apc 7 | # serializer: 8 | # cache: serializer.mapping.cache.apc 9 | 10 | #doctrine: 11 | # orm: 12 | # metadata_cache_driver: apc 13 | # result_cache_driver: apc 14 | # query_cache_driver: apc 15 | 16 | monolog: 17 | handlers: 18 | main: 19 | type: fingers_crossed 20 | action_level: error 21 | handler: nested 22 | nested: 23 | type: stream 24 | path: "%kernel.logs_dir%/%kernel.environment%.log" 25 | level: debug 26 | console: 27 | type: console 28 | -------------------------------------------------------------------------------- /drupal/src/AppBundle/Controller/DefaultController.php: -------------------------------------------------------------------------------- 1 | getDoctrine()->getRepository('AppBundle:Node')->findBy( 16 | array('type' => 'article'), 17 | array(), 18 | 10 19 | ); 20 | 21 | return $this->render('default/index.html.twig', array( 22 | 'articles' => $articles, 23 | )); 24 | 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /drupal/app/config/parameters.yml.dist: -------------------------------------------------------------------------------- 1 | # This file is a "template" of what your parameters.yml file should look like 2 | # Set parameters here that may be different on each deployment target of the app, e.g. development, staging, production. 3 | # http://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration 4 | parameters: 5 | database_host: 127.0.0.1 6 | database_port: ~ 7 | database_name: symfony 8 | database_user: root 9 | database_password: ~ 10 | # You should uncomment this if you want use pdo_sqlite 11 | # database_path: "%kernel.root_dir%/data.db3" 12 | 13 | mailer_transport: smtp 14 | mailer_host: 127.0.0.1 15 | mailer_user: ~ 16 | mailer_password: ~ 17 | 18 | # A secret key that's used to generate certain security-related tokens 19 | secret: ThisTokenIsNotSoSecretChangeIt 20 | -------------------------------------------------------------------------------- /drupal/app/config/security.yml: -------------------------------------------------------------------------------- 1 | # To get started with security, check out the documentation: 2 | # http://symfony.com/doc/current/book/security.html 3 | security: 4 | 5 | # http://symfony.com/doc/current/book/security.html#where-do-users-come-from-user-providers 6 | providers: 7 | in_memory: 8 | memory: ~ 9 | 10 | firewalls: 11 | # disables authentication for assets and the profiler, adapt it according to your needs 12 | dev: 13 | pattern: ^/(_(profiler|wdt)|css|images|js)/ 14 | security: false 15 | 16 | main: 17 | anonymous: ~ 18 | # activate different ways to authenticate 19 | 20 | # http_basic: ~ 21 | # http://symfony.com/doc/current/book/security.html#a-configuring-how-your-users-will-authenticate 22 | 23 | # form_login: ~ 24 | # http://symfony.com/doc/current/cookbook/security/form_login_setup.html 25 | -------------------------------------------------------------------------------- /drupal/app/console: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env php 2 | getParameterOption(array('--env', '-e'), getenv('SYMFONY_ENV') ?: 'dev'); 19 | $debug = getenv('SYMFONY_DEBUG') !== '0' && !$input->hasParameterOption(array('--no-debug', '')) && $env !== 'prod'; 20 | 21 | if ($debug) { 22 | Debug::enable(); 23 | } 24 | 25 | $kernel = new AppKernel($env, $debug); 26 | $application = new Application($kernel); 27 | $application->run($input); 28 | -------------------------------------------------------------------------------- /drupal/web/app.php: -------------------------------------------------------------------------------- 1 | unregister(); 15 | $apcLoader->register(true); 16 | */ 17 | 18 | require_once __DIR__.'/../app/AppKernel.php'; 19 | //require_once __DIR__.'/../app/AppCache.php'; 20 | 21 | $kernel = new AppKernel('prod', false); 22 | $kernel->loadClassCache(); 23 | //$kernel = new AppCache($kernel); 24 | 25 | // When using the HttpCache, you need to call the method in your front controller instead of relying on the configuration parameter 26 | //Request::enableHttpMethodParameterOverride(); 27 | $request = Request::createFromGlobals(); 28 | $response = $kernel->handle($request); 29 | $response->send(); 30 | $kernel->terminate($request, $response); 31 | -------------------------------------------------------------------------------- /drupal/web/app_dev.php: -------------------------------------------------------------------------------- 1 | loadClassCache(); 28 | $request = Request::createFromGlobals(); 29 | $response = $kernel->handle($request); 30 | $response->send(); 31 | $kernel->terminate($request, $response); 32 | -------------------------------------------------------------------------------- /drupal/app/config/config_dev.yml: -------------------------------------------------------------------------------- 1 | imports: 2 | - { resource: config.yml } 3 | 4 | framework: 5 | router: 6 | resource: "%kernel.root_dir%/config/routing_dev.yml" 7 | strict_requirements: true 8 | profiler: { only_exceptions: false } 9 | 10 | web_profiler: 11 | toolbar: true 12 | intercept_redirects: false 13 | 14 | monolog: 15 | handlers: 16 | main: 17 | type: stream 18 | path: "%kernel.logs_dir%/%kernel.environment%.log" 19 | level: debug 20 | console: 21 | type: console 22 | bubble: false 23 | verbosity_levels: 24 | VERBOSITY_VERBOSE: INFO 25 | VERBOSITY_VERY_VERBOSE: DEBUG 26 | channels: ["!doctrine"] 27 | console_very_verbose: 28 | type: console 29 | bubble: false 30 | verbosity_levels: 31 | VERBOSITY_VERBOSE: NOTICE 32 | VERBOSITY_VERY_VERBOSE: NOTICE 33 | VERBOSITY_DEBUG: DEBUG 34 | channels: ["doctrine"] 35 | # uncomment to get logging in your browser 36 | # you may have to allow bigger header sizes in your Web server configuration 37 | #firephp: 38 | # type: firephp 39 | # level: info 40 | #chromephp: 41 | # type: chromephp 42 | # level: info 43 | 44 | assetic: 45 | use_controller: true 46 | 47 | #swiftmailer: 48 | # delivery_address: me@example.com 49 | -------------------------------------------------------------------------------- /drupal/app/phpunit.xml.dist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | ../src/*/*Bundle/Tests 17 | ../src/*/Bundle/*Bundle/Tests 18 | ../src/*Bundle/Tests 19 | 20 | 21 | 22 | 27 | 28 | 29 | 30 | ../src 31 | 32 | ../src/*Bundle/Resources 33 | ../src/*Bundle/Tests 34 | ../src/*/*Bundle/Resources 35 | ../src/*/*Bundle/Tests 36 | ../src/*/Bundle/*Bundle/Resources 37 | ../src/*/Bundle/*Bundle/Tests 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /drupal/app/AppKernel.php: -------------------------------------------------------------------------------- 1 | getEnvironment(), array('dev', 'test'), true)) { 23 | $bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle(); 24 | $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle(); 25 | $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle(); 26 | $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle(); 27 | } 28 | 29 | return $bundles; 30 | } 31 | 32 | public function registerContainerConfiguration(LoaderInterface $loader) 33 | { 34 | $loader->load($this->getRootDir().'/config/config_'.$this->getEnvironment().'.yml'); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /drupal/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "dima/drupal", 3 | "license": "proprietary", 4 | "type": "project", 5 | "autoload": { 6 | "psr-4": { 7 | "": "src/" 8 | } 9 | }, 10 | "require": { 11 | "php": ">=5.3.9", 12 | "symfony/symfony": "2.7.*", 13 | "doctrine/orm": "^2.4.8", 14 | "doctrine/doctrine-bundle": "~1.4", 15 | "symfony/assetic-bundle": "~2.3", 16 | "symfony/swiftmailer-bundle": "~2.3", 17 | "symfony/monolog-bundle": "~2.4", 18 | "sensio/distribution-bundle": "~4.0", 19 | "sensio/framework-extra-bundle": "^3.0.2", 20 | "incenteev/composer-parameter-handler": "~2.0" 21 | }, 22 | "require-dev": { 23 | "sensio/generator-bundle": "~2.3", 24 | "symfony/phpunit-bridge": "~2.7" 25 | }, 26 | "scripts": { 27 | "post-install-cmd": [ 28 | "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters", 29 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", 30 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", 31 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", 32 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile", 33 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget" 34 | ], 35 | "post-update-cmd": [ 36 | "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters", 37 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", 38 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", 39 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", 40 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile", 41 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget" 42 | ] 43 | }, 44 | "config": { 45 | "bin-dir": "bin" 46 | }, 47 | "extra": { 48 | "symfony-app-dir": "app", 49 | "symfony-web-dir": "web", 50 | "symfony-assets-install": "relative", 51 | "incenteev-parameters": { 52 | "file": "app/config/parameters.yml" 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /drupal/src/AppBundle/Entity/Node.php: -------------------------------------------------------------------------------- 1 | body; 57 | } 58 | 59 | /** 60 | * @param mixed $body 61 | */ 62 | public function setBody($body) { 63 | $this->body = $body; 64 | } 65 | 66 | /** 67 | * @ORM\OneToMany(targetEntity="FieldBody", mappedBy="node") 68 | */ 69 | private $body; 70 | 71 | /** 72 | * @return int 73 | */ 74 | public function getVid() { 75 | return $this->vid; 76 | } 77 | 78 | /** 79 | * @param int $vid 80 | */ 81 | public function setVid($vid) { 82 | $this->vid = $vid; 83 | } 84 | 85 | /** 86 | * @return string 87 | */ 88 | public function getType() { 89 | return $this->type; 90 | } 91 | 92 | /** 93 | * @param string $type 94 | */ 95 | public function setType($type) { 96 | $this->type = $type; 97 | } 98 | 99 | /** 100 | * @return string 101 | */ 102 | public function getLanguage() { 103 | return $this->language; 104 | } 105 | 106 | /** 107 | * @param string $language 108 | */ 109 | public function setLanguage($language) { 110 | $this->language = $language; 111 | } 112 | 113 | /** 114 | * @return string 115 | */ 116 | public function getTitle() { 117 | return $this->title; 118 | } 119 | 120 | /** 121 | * @param string $title 122 | */ 123 | public function setTitle($title) { 124 | $this->title = $title; 125 | } 126 | 127 | /** 128 | * Get id 129 | * 130 | * @return integer 131 | */ 132 | public function getId() 133 | { 134 | return $this->id; 135 | } 136 | } 137 | 138 | -------------------------------------------------------------------------------- /drupal/app/config/config.yml: -------------------------------------------------------------------------------- 1 | imports: 2 | - { resource: parameters.yml } 3 | - { resource: security.yml } 4 | - { resource: services.yml } 5 | 6 | # Put parameters here that don't need to change on each machine where the app is deployed 7 | # http://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration 8 | parameters: 9 | locale: en 10 | 11 | framework: 12 | #esi: ~ 13 | #translator: { fallbacks: ["%locale%"] } 14 | secret: "%secret%" 15 | router: 16 | resource: "%kernel.root_dir%/config/routing.yml" 17 | strict_requirements: ~ 18 | form: ~ 19 | csrf_protection: ~ 20 | validation: { enable_annotations: true } 21 | #serializer: { enable_annotations: true } 22 | templating: 23 | engines: ['twig'] 24 | #assets_version: SomeVersionScheme 25 | default_locale: "%locale%" 26 | trusted_hosts: ~ 27 | trusted_proxies: ~ 28 | session: 29 | # handler_id set to null will use default session handler from php.ini 30 | handler_id: ~ 31 | fragments: ~ 32 | http_method_override: true 33 | 34 | # Twig Configuration 35 | twig: 36 | debug: "%kernel.debug%" 37 | strict_variables: "%kernel.debug%" 38 | 39 | # Assetic Configuration 40 | assetic: 41 | debug: "%kernel.debug%" 42 | use_controller: false 43 | bundles: [ ] 44 | #java: /usr/bin/java 45 | filters: 46 | cssrewrite: ~ 47 | #closure: 48 | # jar: "%kernel.root_dir%/Resources/java/compiler.jar" 49 | #yui_css: 50 | # jar: "%kernel.root_dir%/Resources/java/yuicompressor-2.4.7.jar" 51 | 52 | # Doctrine Configuration 53 | doctrine: 54 | dbal: 55 | driver: pdo_mysql 56 | host: "%database_host%" 57 | port: "%database_port%" 58 | dbname: "%database_name%" 59 | user: "%database_user%" 60 | password: "%database_password%" 61 | charset: UTF8 62 | # if using pdo_sqlite as your database driver: 63 | # 1. add the path in parameters.yml 64 | # e.g. database_path: "%kernel.root_dir%/data/data.db3" 65 | # 2. Uncomment database_path in parameters.yml.dist 66 | # 3. Uncomment next line: 67 | # path: "%database_path%" 68 | 69 | orm: 70 | auto_generate_proxy_classes: "%kernel.debug%" 71 | naming_strategy: doctrine.orm.naming_strategy.underscore 72 | auto_mapping: true 73 | 74 | # Swiftmailer Configuration 75 | swiftmailer: 76 | transport: "%mailer_transport%" 77 | host: "%mailer_host%" 78 | username: "%mailer_user%" 79 | password: "%mailer_password%" 80 | spool: { type: memory } 81 | -------------------------------------------------------------------------------- /drupal/src/AppBundle/Entity/FieldBody.php: -------------------------------------------------------------------------------- 1 | entity_type; 57 | } 58 | 59 | /** 60 | * @param string $entity_type 61 | */ 62 | public function setEntityType($entity_type) { 63 | $this->entity_type = $entity_type; 64 | } 65 | 66 | /** 67 | * @return int 68 | */ 69 | public function getEntityId() { 70 | return $this->entity_id; 71 | } 72 | 73 | /** 74 | * @param int $entity_id 75 | */ 76 | public function setEntityId($entity_id) { 77 | $this->entity_id = $entity_id; 78 | } 79 | 80 | /** 81 | * @return int 82 | */ 83 | public function getDeleted() { 84 | return $this->deleted; 85 | } 86 | 87 | /** 88 | * @param int $deleted 89 | */ 90 | public function setDeleted($deleted) { 91 | $this->deleted = $deleted; 92 | } 93 | 94 | /** 95 | * @return int 96 | */ 97 | public function getDelta() { 98 | return $this->delta; 99 | } 100 | 101 | /** 102 | * @param int $delta 103 | */ 104 | public function setDelta($delta) { 105 | $this->delta = $delta; 106 | } 107 | 108 | /** 109 | * @return string 110 | */ 111 | public function getLanguage() { 112 | return $this->language; 113 | } 114 | 115 | /** 116 | * @param string $language 117 | */ 118 | public function setLanguage($language) { 119 | $this->language = $language; 120 | } 121 | 122 | /** 123 | * @var string 124 | * 125 | * @ORM\Column(name="language", type="string", length=32) 126 | */ 127 | private $language; 128 | 129 | /** 130 | * @var string 131 | * 132 | * @ORM\Column(name="body_value", type="string") 133 | */ 134 | private $value; 135 | 136 | /** 137 | * @return string 138 | */ 139 | public function getValue() { 140 | return $this->value; 141 | } 142 | 143 | /** 144 | * @param string $value 145 | */ 146 | public function setValue($value) { 147 | $this->value = $value; 148 | } 149 | 150 | /** 151 | * @ORM\ManyToOne(targetEntity="Node", inversedBy="body") 152 | * @ORM\JoinColumn(name="entity_id", referencedColumnName="nid") 153 | */ 154 | private $node; 155 | 156 | } 157 | 158 | -------------------------------------------------------------------------------- /drupal/web/.htaccess: -------------------------------------------------------------------------------- 1 | # Use the front controller as index file. It serves as a fallback solution when 2 | # every other rewrite/redirect fails (e.g. in an aliased environment without 3 | # mod_rewrite). Additionally, this reduces the matching process for the 4 | # start page (path "/") because otherwise Apache will apply the rewriting rules 5 | # to each configured DirectoryIndex file (e.g. index.php, index.html, index.pl). 6 | DirectoryIndex app.php 7 | 8 | # By default, Apache does not evaluate symbolic links if you did not enable this 9 | # feature in your server configuration. Uncomment the following line if you 10 | # install assets as symlinks or if you experience problems related to symlinks 11 | # when compiling LESS/Sass/CoffeScript assets. 12 | # Options FollowSymlinks 13 | 14 | # Disabling MultiViews prevents unwanted negotiation, e.g. "/app" should not resolve 15 | # to the front controller "/app.php" but be rewritten to "/app.php/app". 16 | 17 | Options -MultiViews 18 | 19 | 20 | 21 | RewriteEngine On 22 | 23 | # Determine the RewriteBase automatically and set it as environment variable. 24 | # If you are using Apache aliases to do mass virtual hosting or installed the 25 | # project in a subdirectory, the base path will be prepended to allow proper 26 | # resolution of the app.php file and to redirect to the correct URI. It will 27 | # work in environments without path prefix as well, providing a safe, one-size 28 | # fits all solution. But as you do not need it in this case, you can comment 29 | # the following 2 lines to eliminate the overhead. 30 | RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$ 31 | RewriteRule ^(.*) - [E=BASE:%1] 32 | 33 | # Sets the HTTP_AUTHORIZATION header removed by apache 34 | RewriteCond %{HTTP:Authorization} . 35 | RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 36 | 37 | # Redirect to URI without front controller to prevent duplicate content 38 | # (with and without `/app.php`). Only do this redirect on the initial 39 | # rewrite by Apache and not on subsequent cycles. Otherwise we would get an 40 | # endless redirect loop (request -> rewrite to front controller -> 41 | # redirect -> request -> ...). 42 | # So in case you get a "too many redirects" error or you always get redirected 43 | # to the start page because your Apache does not expose the REDIRECT_STATUS 44 | # environment variable, you have 2 choices: 45 | # - disable this feature by commenting the following 2 lines or 46 | # - use Apache >= 2.3.9 and replace all L flags by END flags and remove the 47 | # following RewriteCond (best solution) 48 | RewriteCond %{ENV:REDIRECT_STATUS} ^$ 49 | RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L] 50 | 51 | # If the requested filename exists, simply serve it. 52 | # We only want to let Apache serve files and not directories. 53 | RewriteCond %{REQUEST_FILENAME} -f 54 | RewriteRule .? - [L] 55 | 56 | # Rewrite all other queries to the front controller. 57 | RewriteRule .? %{ENV:BASE}/app.php [L] 58 | 59 | 60 | 61 | 62 | # When mod_rewrite is not available, we instruct a temporary redirect of 63 | # the start page to the front controller explicitly so that the website 64 | # and the generated links can still be used. 65 | RedirectMatch 302 ^/$ /app.php/ 66 | # RedirectTemp cannot be used instead 67 | 68 | 69 | -------------------------------------------------------------------------------- /drupal/app/check.php: -------------------------------------------------------------------------------- 1 | getPhpIniConfigPath(); 8 | 9 | echo_title('Symfony2 Requirements Checker'); 10 | 11 | echo '> PHP is using the following php.ini file:'.PHP_EOL; 12 | if ($iniPath) { 13 | echo_style('green', ' '.$iniPath); 14 | } else { 15 | echo_style('warning', ' WARNING: No configuration file (php.ini) used by PHP!'); 16 | } 17 | 18 | echo PHP_EOL.PHP_EOL; 19 | 20 | echo '> Checking Symfony requirements:'.PHP_EOL.' '; 21 | 22 | $messages = array(); 23 | foreach ($symfonyRequirements->getRequirements() as $req) { 24 | /** @var $req Requirement */ 25 | if ($helpText = get_error_message($req, $lineSize)) { 26 | echo_style('red', 'E'); 27 | $messages['error'][] = $helpText; 28 | } else { 29 | echo_style('green', '.'); 30 | } 31 | } 32 | 33 | $checkPassed = empty($messages['error']); 34 | 35 | foreach ($symfonyRequirements->getRecommendations() as $req) { 36 | if ($helpText = get_error_message($req, $lineSize)) { 37 | echo_style('yellow', 'W'); 38 | $messages['warning'][] = $helpText; 39 | } else { 40 | echo_style('green', '.'); 41 | } 42 | } 43 | 44 | if ($checkPassed) { 45 | echo_block('success', 'OK', 'Your system is ready to run Symfony2 projects'); 46 | } else { 47 | echo_block('error', 'ERROR', 'Your system is not ready to run Symfony2 projects'); 48 | 49 | echo_title('Fix the following mandatory requirements', 'red'); 50 | 51 | foreach ($messages['error'] as $helpText) { 52 | echo ' * '.$helpText.PHP_EOL; 53 | } 54 | } 55 | 56 | if (!empty($messages['warning'])) { 57 | echo_title('Optional recommendations to improve your setup', 'yellow'); 58 | 59 | foreach ($messages['warning'] as $helpText) { 60 | echo ' * '.$helpText.PHP_EOL; 61 | } 62 | } 63 | 64 | echo PHP_EOL; 65 | echo_style('title', 'Note'); 66 | echo ' The command console could use a different php.ini file'.PHP_EOL; 67 | echo_style('title', '~~~~'); 68 | echo ' than the one used with your web server. To be on the'.PHP_EOL; 69 | echo ' safe side, please check the requirements from your web'.PHP_EOL; 70 | echo ' server using the '; 71 | echo_style('yellow', 'web/config.php'); 72 | echo ' script.'.PHP_EOL; 73 | echo PHP_EOL; 74 | 75 | exit($checkPassed ? 0 : 1); 76 | 77 | function get_error_message(Requirement $requirement, $lineSize) 78 | { 79 | if ($requirement->isFulfilled()) { 80 | return; 81 | } 82 | 83 | $errorMessage = wordwrap($requirement->getTestMessage(), $lineSize - 3, PHP_EOL.' ').PHP_EOL; 84 | $errorMessage .= ' > '.wordwrap($requirement->getHelpText(), $lineSize - 5, PHP_EOL.' > ').PHP_EOL; 85 | 86 | return $errorMessage; 87 | } 88 | 89 | function echo_title($title, $style = null) 90 | { 91 | $style = $style ?: 'title'; 92 | 93 | echo PHP_EOL; 94 | echo_style($style, $title.PHP_EOL); 95 | echo_style($style, str_repeat('~', strlen($title)).PHP_EOL); 96 | echo PHP_EOL; 97 | } 98 | 99 | function echo_style($style, $message) 100 | { 101 | // ANSI color codes 102 | $styles = array( 103 | 'reset' => "\033[0m", 104 | 'red' => "\033[31m", 105 | 'green' => "\033[32m", 106 | 'yellow' => "\033[33m", 107 | 'error' => "\033[37;41m", 108 | 'success' => "\033[37;42m", 109 | 'title' => "\033[34m", 110 | ); 111 | $supports = has_color_support(); 112 | 113 | echo($supports ? $styles[$style] : '').$message.($supports ? $styles['reset'] : ''); 114 | } 115 | 116 | function echo_block($style, $title, $message) 117 | { 118 | $message = ' '.trim($message).' '; 119 | $width = strlen($message); 120 | 121 | echo PHP_EOL.PHP_EOL; 122 | 123 | echo_style($style, str_repeat(' ', $width).PHP_EOL); 124 | echo_style($style, str_pad(' ['.$title.']', $width, ' ', STR_PAD_RIGHT).PHP_EOL); 125 | echo_style($style, str_pad($message, $width, ' ', STR_PAD_RIGHT).PHP_EOL); 126 | echo_style($style, str_repeat(' ', $width).PHP_EOL); 127 | } 128 | 129 | function has_color_support() 130 | { 131 | static $support; 132 | 133 | if (null === $support) { 134 | if (DIRECTORY_SEPARATOR == '\\') { 135 | $support = false !== getenv('ANSICON') || 'ON' === getenv('ConEmuANSI'); 136 | } else { 137 | $support = function_exists('posix_isatty') && @posix_isatty(STDOUT); 138 | } 139 | } 140 | 141 | return $support; 142 | } 143 | -------------------------------------------------------------------------------- /drupal/web/config.php: -------------------------------------------------------------------------------- 1 | getFailedRequirements(); 20 | $minorProblems = $symfonyRequirements->getFailedRecommendations(); 21 | 22 | ?> 23 | 24 | 25 | 26 | 27 | 28 | Symfony Configuration 29 | 30 | 31 | 32 | 33 | 34 |
    35 |
    36 | 39 | 40 | 60 |
    61 | 62 |
    63 |
    64 |
    65 |

    Welcome!

    66 |

    Welcome to your new Symfony project.

    67 |

    68 | This script will guide you through the basic configuration of your project. 69 | You can also do the same by editing the ‘app/config/parameters.yml’ file directly. 70 |

    71 | 72 | 73 |

    Major problems

    74 |

    Major problems have been detected and must be fixed before continuing:

    75 |
      76 | 77 |
    1. getHelpHtml() ?>
    2. 78 | 79 |
    80 | 81 | 82 | 83 |

    Recommendations

    84 |

    85 | Additionally, toTo enhance your Symfony experience, 86 | it’s recommended that you fix the following: 87 |

    88 |
      89 | 90 |
    1. getHelpHtml() ?>
    2. 91 | 92 |
    93 | 94 | 95 | hasPhpIniConfigIssue()): ?> 96 |

    * 97 | getPhpIniConfigPath()): ?> 98 | Changes to the php.ini file must be done in "getPhpIniConfigPath() ?>". 99 | 100 | To change settings, create a "php.ini". 101 | 102 |

    103 | 104 | 105 | 106 |

    Your configuration looks good to run Symfony.

    107 | 108 | 109 | 118 |
    119 |
    120 |
    121 |
    Symfony Standard Edition
    122 |
    123 | 124 | 125 | -------------------------------------------------------------------------------- /drupal/app/SymfonyRequirements.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * For the full copyright and license information, please view the LICENSE 9 | * file that was distributed with this source code. 10 | */ 11 | 12 | /* 13 | * Users of PHP 5.2 should be able to run the requirements checks. 14 | * This is why the file and all classes must be compatible with PHP 5.2+ 15 | * (e.g. not using namespaces and closures). 16 | * 17 | * ************** CAUTION ************** 18 | * 19 | * DO NOT EDIT THIS FILE as it will be overridden by Composer as part of 20 | * the installation/update process. The original file resides in the 21 | * SensioDistributionBundle. 22 | * 23 | * ************** CAUTION ************** 24 | */ 25 | 26 | /** 27 | * Represents a single PHP requirement, e.g. an installed extension. 28 | * It can be a mandatory requirement or an optional recommendation. 29 | * There is a special subclass, named PhpIniRequirement, to check a php.ini configuration. 30 | * 31 | * @author Tobias Schultze 32 | */ 33 | class Requirement 34 | { 35 | private $fulfilled; 36 | private $testMessage; 37 | private $helpText; 38 | private $helpHtml; 39 | private $optional; 40 | 41 | /** 42 | * Constructor that initializes the requirement. 43 | * 44 | * @param bool $fulfilled Whether the requirement is fulfilled 45 | * @param string $testMessage The message for testing the requirement 46 | * @param string $helpHtml The help text formatted in HTML for resolving the problem 47 | * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags) 48 | * @param bool $optional Whether this is only an optional recommendation not a mandatory requirement 49 | */ 50 | public function __construct($fulfilled, $testMessage, $helpHtml, $helpText = null, $optional = false) 51 | { 52 | $this->fulfilled = (bool) $fulfilled; 53 | $this->testMessage = (string) $testMessage; 54 | $this->helpHtml = (string) $helpHtml; 55 | $this->helpText = null === $helpText ? strip_tags($this->helpHtml) : (string) $helpText; 56 | $this->optional = (bool) $optional; 57 | } 58 | 59 | /** 60 | * Returns whether the requirement is fulfilled. 61 | * 62 | * @return bool true if fulfilled, otherwise false 63 | */ 64 | public function isFulfilled() 65 | { 66 | return $this->fulfilled; 67 | } 68 | 69 | /** 70 | * Returns the message for testing the requirement. 71 | * 72 | * @return string The test message 73 | */ 74 | public function getTestMessage() 75 | { 76 | return $this->testMessage; 77 | } 78 | 79 | /** 80 | * Returns the help text for resolving the problem. 81 | * 82 | * @return string The help text 83 | */ 84 | public function getHelpText() 85 | { 86 | return $this->helpText; 87 | } 88 | 89 | /** 90 | * Returns the help text formatted in HTML. 91 | * 92 | * @return string The HTML help 93 | */ 94 | public function getHelpHtml() 95 | { 96 | return $this->helpHtml; 97 | } 98 | 99 | /** 100 | * Returns whether this is only an optional recommendation and not a mandatory requirement. 101 | * 102 | * @return bool true if optional, false if mandatory 103 | */ 104 | public function isOptional() 105 | { 106 | return $this->optional; 107 | } 108 | } 109 | 110 | /** 111 | * Represents a PHP requirement in form of a php.ini configuration. 112 | * 113 | * @author Tobias Schultze 114 | */ 115 | class PhpIniRequirement extends Requirement 116 | { 117 | /** 118 | * Constructor that initializes the requirement. 119 | * 120 | * @param string $cfgName The configuration name used for ini_get() 121 | * @param bool|callback $evaluation Either a boolean indicating whether the configuration should evaluate to true or false, 122 | * or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement 123 | * @param bool $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false. 124 | * This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin. 125 | * Example: You require a config to be true but PHP later removes this config and defaults it to true internally. 126 | * @param string|null $testMessage The message for testing the requirement (when null and $evaluation is a boolean a default message is derived) 127 | * @param string|null $helpHtml The help text formatted in HTML for resolving the problem (when null and $evaluation is a boolean a default help is derived) 128 | * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags) 129 | * @param bool $optional Whether this is only an optional recommendation not a mandatory requirement 130 | */ 131 | public function __construct($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null, $optional = false) 132 | { 133 | $cfgValue = ini_get($cfgName); 134 | 135 | if (is_callable($evaluation)) { 136 | if (null === $testMessage || null === $helpHtml) { 137 | throw new InvalidArgumentException('You must provide the parameters testMessage and helpHtml for a callback evaluation.'); 138 | } 139 | 140 | $fulfilled = call_user_func($evaluation, $cfgValue); 141 | } else { 142 | if (null === $testMessage) { 143 | $testMessage = sprintf('%s %s be %s in php.ini', 144 | $cfgName, 145 | $optional ? 'should' : 'must', 146 | $evaluation ? 'enabled' : 'disabled' 147 | ); 148 | } 149 | 150 | if (null === $helpHtml) { 151 | $helpHtml = sprintf('Set %s to %s in php.ini*.', 152 | $cfgName, 153 | $evaluation ? 'on' : 'off' 154 | ); 155 | } 156 | 157 | $fulfilled = $evaluation == $cfgValue; 158 | } 159 | 160 | parent::__construct($fulfilled || ($approveCfgAbsence && false === $cfgValue), $testMessage, $helpHtml, $helpText, $optional); 161 | } 162 | } 163 | 164 | /** 165 | * A RequirementCollection represents a set of Requirement instances. 166 | * 167 | * @author Tobias Schultze 168 | */ 169 | class RequirementCollection implements IteratorAggregate 170 | { 171 | private $requirements = array(); 172 | 173 | /** 174 | * Gets the current RequirementCollection as an Iterator. 175 | * 176 | * @return Traversable A Traversable interface 177 | */ 178 | public function getIterator() 179 | { 180 | return new ArrayIterator($this->requirements); 181 | } 182 | 183 | /** 184 | * Adds a Requirement. 185 | * 186 | * @param Requirement $requirement A Requirement instance 187 | */ 188 | public function add(Requirement $requirement) 189 | { 190 | $this->requirements[] = $requirement; 191 | } 192 | 193 | /** 194 | * Adds a mandatory requirement. 195 | * 196 | * @param bool $fulfilled Whether the requirement is fulfilled 197 | * @param string $testMessage The message for testing the requirement 198 | * @param string $helpHtml The help text formatted in HTML for resolving the problem 199 | * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags) 200 | */ 201 | public function addRequirement($fulfilled, $testMessage, $helpHtml, $helpText = null) 202 | { 203 | $this->add(new Requirement($fulfilled, $testMessage, $helpHtml, $helpText, false)); 204 | } 205 | 206 | /** 207 | * Adds an optional recommendation. 208 | * 209 | * @param bool $fulfilled Whether the recommendation is fulfilled 210 | * @param string $testMessage The message for testing the recommendation 211 | * @param string $helpHtml The help text formatted in HTML for resolving the problem 212 | * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags) 213 | */ 214 | public function addRecommendation($fulfilled, $testMessage, $helpHtml, $helpText = null) 215 | { 216 | $this->add(new Requirement($fulfilled, $testMessage, $helpHtml, $helpText, true)); 217 | } 218 | 219 | /** 220 | * Adds a mandatory requirement in form of a php.ini configuration. 221 | * 222 | * @param string $cfgName The configuration name used for ini_get() 223 | * @param bool|callback $evaluation Either a boolean indicating whether the configuration should evaluate to true or false, 224 | * or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement 225 | * @param bool $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false. 226 | * This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin. 227 | * Example: You require a config to be true but PHP later removes this config and defaults it to true internally. 228 | * @param string $testMessage The message for testing the requirement (when null and $evaluation is a boolean a default message is derived) 229 | * @param string $helpHtml The help text formatted in HTML for resolving the problem (when null and $evaluation is a boolean a default help is derived) 230 | * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags) 231 | */ 232 | public function addPhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null) 233 | { 234 | $this->add(new PhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence, $testMessage, $helpHtml, $helpText, false)); 235 | } 236 | 237 | /** 238 | * Adds an optional recommendation in form of a php.ini configuration. 239 | * 240 | * @param string $cfgName The configuration name used for ini_get() 241 | * @param bool|callback $evaluation Either a boolean indicating whether the configuration should evaluate to true or false, 242 | * or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement 243 | * @param bool $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false. 244 | * This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin. 245 | * Example: You require a config to be true but PHP later removes this config and defaults it to true internally. 246 | * @param string $testMessage The message for testing the requirement (when null and $evaluation is a boolean a default message is derived) 247 | * @param string $helpHtml The help text formatted in HTML for resolving the problem (when null and $evaluation is a boolean a default help is derived) 248 | * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags) 249 | */ 250 | public function addPhpIniRecommendation($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null) 251 | { 252 | $this->add(new PhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence, $testMessage, $helpHtml, $helpText, true)); 253 | } 254 | 255 | /** 256 | * Adds a requirement collection to the current set of requirements. 257 | * 258 | * @param RequirementCollection $collection A RequirementCollection instance 259 | */ 260 | public function addCollection(RequirementCollection $collection) 261 | { 262 | $this->requirements = array_merge($this->requirements, $collection->all()); 263 | } 264 | 265 | /** 266 | * Returns both requirements and recommendations. 267 | * 268 | * @return array Array of Requirement instances 269 | */ 270 | public function all() 271 | { 272 | return $this->requirements; 273 | } 274 | 275 | /** 276 | * Returns all mandatory requirements. 277 | * 278 | * @return array Array of Requirement instances 279 | */ 280 | public function getRequirements() 281 | { 282 | $array = array(); 283 | foreach ($this->requirements as $req) { 284 | if (!$req->isOptional()) { 285 | $array[] = $req; 286 | } 287 | } 288 | 289 | return $array; 290 | } 291 | 292 | /** 293 | * Returns the mandatory requirements that were not met. 294 | * 295 | * @return array Array of Requirement instances 296 | */ 297 | public function getFailedRequirements() 298 | { 299 | $array = array(); 300 | foreach ($this->requirements as $req) { 301 | if (!$req->isFulfilled() && !$req->isOptional()) { 302 | $array[] = $req; 303 | } 304 | } 305 | 306 | return $array; 307 | } 308 | 309 | /** 310 | * Returns all optional recommendations. 311 | * 312 | * @return array Array of Requirement instances 313 | */ 314 | public function getRecommendations() 315 | { 316 | $array = array(); 317 | foreach ($this->requirements as $req) { 318 | if ($req->isOptional()) { 319 | $array[] = $req; 320 | } 321 | } 322 | 323 | return $array; 324 | } 325 | 326 | /** 327 | * Returns the recommendations that were not met. 328 | * 329 | * @return array Array of Requirement instances 330 | */ 331 | public function getFailedRecommendations() 332 | { 333 | $array = array(); 334 | foreach ($this->requirements as $req) { 335 | if (!$req->isFulfilled() && $req->isOptional()) { 336 | $array[] = $req; 337 | } 338 | } 339 | 340 | return $array; 341 | } 342 | 343 | /** 344 | * Returns whether a php.ini configuration is not correct. 345 | * 346 | * @return bool php.ini configuration problem? 347 | */ 348 | public function hasPhpIniConfigIssue() 349 | { 350 | foreach ($this->requirements as $req) { 351 | if (!$req->isFulfilled() && $req instanceof PhpIniRequirement) { 352 | return true; 353 | } 354 | } 355 | 356 | return false; 357 | } 358 | 359 | /** 360 | * Returns the PHP configuration file (php.ini) path. 361 | * 362 | * @return string|false php.ini file path 363 | */ 364 | public function getPhpIniConfigPath() 365 | { 366 | return get_cfg_var('cfg_file_path'); 367 | } 368 | } 369 | 370 | /** 371 | * This class specifies all requirements and optional recommendations that 372 | * are necessary to run the Symfony Standard Edition. 373 | * 374 | * @author Tobias Schultze 375 | * @author Fabien Potencier 376 | */ 377 | class SymfonyRequirements extends RequirementCollection 378 | { 379 | const REQUIRED_PHP_VERSION = '5.3.3'; 380 | 381 | /** 382 | * Constructor that initializes the requirements. 383 | */ 384 | public function __construct() 385 | { 386 | /* mandatory requirements follow */ 387 | 388 | $installedPhpVersion = phpversion(); 389 | 390 | $this->addRequirement( 391 | version_compare($installedPhpVersion, self::REQUIRED_PHP_VERSION, '>='), 392 | sprintf('PHP version must be at least %s (%s installed)', self::REQUIRED_PHP_VERSION, $installedPhpVersion), 393 | sprintf('You are running PHP version "%s", but Symfony needs at least PHP "%s" to run. 394 | Before using Symfony, upgrade your PHP installation, preferably to the latest version.', 395 | $installedPhpVersion, self::REQUIRED_PHP_VERSION), 396 | sprintf('Install PHP %s or newer (installed version is %s)', self::REQUIRED_PHP_VERSION, $installedPhpVersion) 397 | ); 398 | 399 | $this->addRequirement( 400 | version_compare($installedPhpVersion, '5.3.16', '!='), 401 | 'PHP version must not be 5.3.16 as Symfony won\'t work properly with it', 402 | 'Install PHP 5.3.17 or newer (or downgrade to an earlier PHP version)' 403 | ); 404 | 405 | $this->addRequirement( 406 | is_dir(__DIR__.'/../vendor/composer'), 407 | 'Vendor libraries must be installed', 408 | 'Vendor libraries are missing. Install composer following instructions from http://getcomposer.org/. '. 409 | 'Then run "php composer.phar install" to install them.' 410 | ); 411 | 412 | $cacheDir = is_dir(__DIR__.'/../var/cache') ? __DIR__.'/../var/cache' : __DIR__.'/cache'; 413 | 414 | $this->addRequirement( 415 | is_writable($cacheDir), 416 | 'app/cache/ or var/cache/ directory must be writable', 417 | 'Change the permissions of either "app/cache/" or "var/cache/" directory so that the web server can write into it.' 418 | ); 419 | 420 | $logsDir = is_dir(__DIR__.'/../var/logs') ? __DIR__.'/../var/logs' : __DIR__.'/logs'; 421 | 422 | $this->addRequirement( 423 | is_writable($logsDir), 424 | 'app/logs/ or var/logs/ directory must be writable', 425 | 'Change the permissions of either "app/logs/" or "var/logs/" directory so that the web server can write into it.' 426 | ); 427 | 428 | $this->addPhpIniRequirement( 429 | 'date.timezone', true, false, 430 | 'date.timezone setting must be set', 431 | 'Set the "date.timezone" setting in php.ini* (like Europe/Paris).' 432 | ); 433 | 434 | if (version_compare($installedPhpVersion, self::REQUIRED_PHP_VERSION, '>=')) { 435 | $timezones = array(); 436 | foreach (DateTimeZone::listAbbreviations() as $abbreviations) { 437 | foreach ($abbreviations as $abbreviation) { 438 | $timezones[$abbreviation['timezone_id']] = true; 439 | } 440 | } 441 | 442 | $this->addRequirement( 443 | isset($timezones[@date_default_timezone_get()]), 444 | sprintf('Configured default timezone "%s" must be supported by your installation of PHP', @date_default_timezone_get()), 445 | 'Your default timezone is not supported by PHP. Check for typos in your php.ini file and have a look at the list of deprecated timezones at http://php.net/manual/en/timezones.others.php.' 446 | ); 447 | } 448 | 449 | $this->addRequirement( 450 | function_exists('iconv'), 451 | 'iconv() must be available', 452 | 'Install and enable the iconv extension.' 453 | ); 454 | 455 | $this->addRequirement( 456 | function_exists('json_encode'), 457 | 'json_encode() must be available', 458 | 'Install and enable the JSON extension.' 459 | ); 460 | 461 | $this->addRequirement( 462 | function_exists('session_start'), 463 | 'session_start() must be available', 464 | 'Install and enable the session extension.' 465 | ); 466 | 467 | $this->addRequirement( 468 | function_exists('ctype_alpha'), 469 | 'ctype_alpha() must be available', 470 | 'Install and enable the ctype extension.' 471 | ); 472 | 473 | $this->addRequirement( 474 | function_exists('token_get_all'), 475 | 'token_get_all() must be available', 476 | 'Install and enable the Tokenizer extension.' 477 | ); 478 | 479 | $this->addRequirement( 480 | function_exists('simplexml_import_dom'), 481 | 'simplexml_import_dom() must be available', 482 | 'Install and enable the SimpleXML extension.' 483 | ); 484 | 485 | if (function_exists('apc_store') && ini_get('apc.enabled')) { 486 | if (version_compare($installedPhpVersion, '5.4.0', '>=')) { 487 | $this->addRequirement( 488 | version_compare(phpversion('apc'), '3.1.13', '>='), 489 | 'APC version must be at least 3.1.13 when using PHP 5.4', 490 | 'Upgrade your APC extension (3.1.13+).' 491 | ); 492 | } else { 493 | $this->addRequirement( 494 | version_compare(phpversion('apc'), '3.0.17', '>='), 495 | 'APC version must be at least 3.0.17', 496 | 'Upgrade your APC extension (3.0.17+).' 497 | ); 498 | } 499 | } 500 | 501 | $this->addPhpIniRequirement('detect_unicode', false); 502 | 503 | if (extension_loaded('suhosin')) { 504 | $this->addPhpIniRequirement( 505 | 'suhosin.executor.include.whitelist', 506 | create_function('$cfgValue', 'return false !== stripos($cfgValue, "phar");'), 507 | false, 508 | 'suhosin.executor.include.whitelist must be configured correctly in php.ini', 509 | 'Add "phar" to suhosin.executor.include.whitelist in php.ini*.' 510 | ); 511 | } 512 | 513 | if (extension_loaded('xdebug')) { 514 | $this->addPhpIniRequirement( 515 | 'xdebug.show_exception_trace', false, true 516 | ); 517 | 518 | $this->addPhpIniRequirement( 519 | 'xdebug.scream', false, true 520 | ); 521 | 522 | $this->addPhpIniRecommendation( 523 | 'xdebug.max_nesting_level', 524 | create_function('$cfgValue', 'return $cfgValue > 100;'), 525 | true, 526 | 'xdebug.max_nesting_level should be above 100 in php.ini', 527 | 'Set "xdebug.max_nesting_level" to e.g. "250" in php.ini* to stop Xdebug\'s infinite recursion protection erroneously throwing a fatal error in your project.' 528 | ); 529 | } 530 | 531 | $pcreVersion = defined('PCRE_VERSION') ? (float) PCRE_VERSION : null; 532 | 533 | $this->addRequirement( 534 | null !== $pcreVersion, 535 | 'PCRE extension must be available', 536 | 'Install the PCRE extension (version 8.0+).' 537 | ); 538 | 539 | if (extension_loaded('mbstring')) { 540 | $this->addPhpIniRequirement( 541 | 'mbstring.func_overload', 542 | create_function('$cfgValue', 'return (int) $cfgValue === 0;'), 543 | true, 544 | 'string functions should not be overloaded', 545 | 'Set "mbstring.func_overload" to 0 in php.ini* to disable function overloading by the mbstring extension.' 546 | ); 547 | } 548 | 549 | /* optional recommendations follow */ 550 | 551 | if (file_exists(__DIR__.'/../vendor/composer')) { 552 | require_once __DIR__.'/../vendor/autoload.php'; 553 | 554 | try { 555 | $r = new ReflectionClass('Sensio\Bundle\DistributionBundle\SensioDistributionBundle'); 556 | 557 | $contents = file_get_contents(dirname($r->getFileName()).'/Resources/skeleton/app/SymfonyRequirements.php'); 558 | } catch (ReflectionException $e) { 559 | $contents = ''; 560 | } 561 | $this->addRecommendation( 562 | file_get_contents(__FILE__) === $contents, 563 | 'Requirements file should be up-to-date', 564 | 'Your requirements file is outdated. Run composer install and re-check your configuration.' 565 | ); 566 | } 567 | 568 | $this->addRecommendation( 569 | version_compare($installedPhpVersion, '5.3.4', '>='), 570 | 'You should use at least PHP 5.3.4 due to PHP bug #52083 in earlier versions', 571 | 'Your project might malfunction randomly due to PHP bug #52083 ("Notice: Trying to get property of non-object"). Install PHP 5.3.4 or newer.' 572 | ); 573 | 574 | $this->addRecommendation( 575 | version_compare($installedPhpVersion, '5.3.8', '>='), 576 | 'When using annotations you should have at least PHP 5.3.8 due to PHP bug #55156', 577 | 'Install PHP 5.3.8 or newer if your project uses annotations.' 578 | ); 579 | 580 | $this->addRecommendation( 581 | version_compare($installedPhpVersion, '5.4.0', '!='), 582 | 'You should not use PHP 5.4.0 due to the PHP bug #61453', 583 | 'Your project might not work properly due to the PHP bug #61453 ("Cannot dump definitions which have method calls"). Install PHP 5.4.1 or newer.' 584 | ); 585 | 586 | $this->addRecommendation( 587 | version_compare($installedPhpVersion, '5.4.11', '>='), 588 | 'When using the logout handler from the Symfony Security Component, you should have at least PHP 5.4.11 due to PHP bug #63379 (as a workaround, you can also set invalidate_session to false in the security logout handler configuration)', 589 | 'Install PHP 5.4.11 or newer if your project uses the logout handler from the Symfony Security Component.' 590 | ); 591 | 592 | $this->addRecommendation( 593 | (version_compare($installedPhpVersion, '5.3.18', '>=') && version_compare($installedPhpVersion, '5.4.0', '<')) 594 | || 595 | version_compare($installedPhpVersion, '5.4.8', '>='), 596 | 'You should use PHP 5.3.18+ or PHP 5.4.8+ to always get nice error messages for fatal errors in the development environment due to PHP bug #61767/#60909', 597 | 'Install PHP 5.3.18+ or PHP 5.4.8+ if you want nice error messages for all fatal errors in the development environment.' 598 | ); 599 | 600 | if (null !== $pcreVersion) { 601 | $this->addRecommendation( 602 | $pcreVersion >= 8.0, 603 | sprintf('PCRE extension should be at least version 8.0 (%s installed)', $pcreVersion), 604 | 'PCRE 8.0+ is preconfigured in PHP since 5.3.2 but you are using an outdated version of it. Symfony probably works anyway but it is recommended to upgrade your PCRE extension.' 605 | ); 606 | } 607 | 608 | $this->addRecommendation( 609 | class_exists('DomDocument'), 610 | 'PHP-DOM and PHP-XML modules should be installed', 611 | 'Install and enable the PHP-DOM and the PHP-XML modules.' 612 | ); 613 | 614 | $this->addRecommendation( 615 | function_exists('mb_strlen'), 616 | 'mb_strlen() should be available', 617 | 'Install and enable the mbstring extension.' 618 | ); 619 | 620 | $this->addRecommendation( 621 | function_exists('iconv'), 622 | 'iconv() should be available', 623 | 'Install and enable the iconv extension.' 624 | ); 625 | 626 | $this->addRecommendation( 627 | function_exists('utf8_decode'), 628 | 'utf8_decode() should be available', 629 | 'Install and enable the XML extension.' 630 | ); 631 | 632 | $this->addRecommendation( 633 | function_exists('filter_var'), 634 | 'filter_var() should be available', 635 | 'Install and enable the filter extension.' 636 | ); 637 | 638 | if (!defined('PHP_WINDOWS_VERSION_BUILD')) { 639 | $this->addRecommendation( 640 | function_exists('posix_isatty'), 641 | 'posix_isatty() should be available', 642 | 'Install and enable the php_posix extension (used to colorize the CLI output).' 643 | ); 644 | } 645 | 646 | $this->addRecommendation( 647 | extension_loaded('intl'), 648 | 'intl extension should be available', 649 | 'Install and enable the intl extension (used for validators).' 650 | ); 651 | 652 | if (extension_loaded('intl')) { 653 | // in some WAMP server installations, new Collator() returns null 654 | $this->addRecommendation( 655 | null !== new Collator('fr_FR'), 656 | 'intl extension should be correctly configured', 657 | 'The intl extension does not behave properly. This problem is typical on PHP 5.3.X x64 WIN builds.' 658 | ); 659 | 660 | // check for compatible ICU versions (only done when you have the intl extension) 661 | if (defined('INTL_ICU_VERSION')) { 662 | $version = INTL_ICU_VERSION; 663 | } else { 664 | $reflector = new ReflectionExtension('intl'); 665 | 666 | ob_start(); 667 | $reflector->info(); 668 | $output = strip_tags(ob_get_clean()); 669 | 670 | preg_match('/^ICU version +(?:=> )?(.*)$/m', $output, $matches); 671 | $version = $matches[1]; 672 | } 673 | 674 | $this->addRecommendation( 675 | version_compare($version, '4.0', '>='), 676 | 'intl ICU version should be at least 4+', 677 | 'Upgrade your intl extension with a newer ICU version (4+).' 678 | ); 679 | 680 | $this->addPhpIniRecommendation( 681 | 'intl.error_level', 682 | create_function('$cfgValue', 'return (int) $cfgValue === 0;'), 683 | true, 684 | 'intl.error_level should be 0 in php.ini', 685 | 'Set "intl.error_level" to "0" in php.ini* to inhibit the messages when an error occurs in ICU functions.' 686 | ); 687 | } 688 | 689 | $accelerator = 690 | (extension_loaded('eaccelerator') && ini_get('eaccelerator.enable')) 691 | || 692 | (extension_loaded('apc') && ini_get('apc.enabled')) 693 | || 694 | (extension_loaded('Zend Optimizer+') && ini_get('zend_optimizerplus.enable')) 695 | || 696 | (extension_loaded('Zend OPcache') && ini_get('opcache.enable')) 697 | || 698 | (extension_loaded('xcache') && ini_get('xcache.cacher')) 699 | || 700 | (extension_loaded('wincache') && ini_get('wincache.ocenabled')) 701 | ; 702 | 703 | $this->addRecommendation( 704 | $accelerator, 705 | 'a PHP accelerator should be installed', 706 | 'Install and/or enable a PHP accelerator (highly recommended).' 707 | ); 708 | 709 | if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { 710 | $this->addRecommendation( 711 | $this->getRealpathCacheSize() > 1000, 712 | 'realpath_cache_size should be above 1024 in php.ini', 713 | 'Set "realpath_cache_size" to e.g. "1024" in php.ini* to improve performance on windows.' 714 | ); 715 | } 716 | 717 | $this->addPhpIniRecommendation('short_open_tag', false); 718 | 719 | $this->addPhpIniRecommendation('magic_quotes_gpc', false, true); 720 | 721 | $this->addPhpIniRecommendation('register_globals', false, true); 722 | 723 | $this->addPhpIniRecommendation('session.auto_start', false); 724 | 725 | $this->addRecommendation( 726 | class_exists('PDO'), 727 | 'PDO should be installed', 728 | 'Install PDO (mandatory for Doctrine).' 729 | ); 730 | 731 | if (class_exists('PDO')) { 732 | $drivers = PDO::getAvailableDrivers(); 733 | $this->addRecommendation( 734 | count($drivers) > 0, 735 | sprintf('PDO should have some drivers installed (currently available: %s)', count($drivers) ? implode(', ', $drivers) : 'none'), 736 | 'Install PDO drivers (mandatory for Doctrine).' 737 | ); 738 | } 739 | } 740 | 741 | /** 742 | * Loads realpath_cache_size from php.ini and converts it to int. 743 | * 744 | * (e.g. 16k is converted to 16384 int) 745 | * 746 | * @return int 747 | */ 748 | protected function getRealpathCacheSize() 749 | { 750 | $size = ini_get('realpath_cache_size'); 751 | $size = trim($size); 752 | $unit = strtolower(substr($size, -1, 1)); 753 | switch ($unit) { 754 | case 'g': 755 | return $size * 1024 * 1024 * 1024; 756 | case 'm': 757 | return $size * 1024 * 1024; 758 | case 'k': 759 | return $size * 1024; 760 | default: 761 | return (int) $size; 762 | } 763 | } 764 | } 765 | -------------------------------------------------------------------------------- /drupal/composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", 5 | "This file is @generated automatically" 6 | ], 7 | "hash": "ceae51770e2f6c9646c764a30c438164", 8 | "content-hash": "801f65d7e2382e83d339b0c1dc64d85e", 9 | "packages": [ 10 | { 11 | "name": "doctrine/annotations", 12 | "version": "v1.2.7", 13 | "source": { 14 | "type": "git", 15 | "url": "https://github.com/doctrine/annotations.git", 16 | "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535" 17 | }, 18 | "dist": { 19 | "type": "zip", 20 | "url": "https://api.github.com/repos/doctrine/annotations/zipball/f25c8aab83e0c3e976fd7d19875f198ccf2f7535", 21 | "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535", 22 | "shasum": "" 23 | }, 24 | "require": { 25 | "doctrine/lexer": "1.*", 26 | "php": ">=5.3.2" 27 | }, 28 | "require-dev": { 29 | "doctrine/cache": "1.*", 30 | "phpunit/phpunit": "4.*" 31 | }, 32 | "type": "library", 33 | "extra": { 34 | "branch-alias": { 35 | "dev-master": "1.3.x-dev" 36 | } 37 | }, 38 | "autoload": { 39 | "psr-0": { 40 | "Doctrine\\Common\\Annotations\\": "lib/" 41 | } 42 | }, 43 | "notification-url": "https://packagist.org/downloads/", 44 | "license": [ 45 | "MIT" 46 | ], 47 | "authors": [ 48 | { 49 | "name": "Roman Borschel", 50 | "email": "roman@code-factory.org" 51 | }, 52 | { 53 | "name": "Benjamin Eberlei", 54 | "email": "kontakt@beberlei.de" 55 | }, 56 | { 57 | "name": "Guilherme Blanco", 58 | "email": "guilhermeblanco@gmail.com" 59 | }, 60 | { 61 | "name": "Jonathan Wage", 62 | "email": "jonwage@gmail.com" 63 | }, 64 | { 65 | "name": "Johannes Schmitt", 66 | "email": "schmittjoh@gmail.com" 67 | } 68 | ], 69 | "description": "Docblock Annotations Parser", 70 | "homepage": "http://www.doctrine-project.org", 71 | "keywords": [ 72 | "annotations", 73 | "docblock", 74 | "parser" 75 | ], 76 | "time": "2015-08-31 12:32:49" 77 | }, 78 | { 79 | "name": "doctrine/cache", 80 | "version": "v1.5.1", 81 | "source": { 82 | "type": "git", 83 | "url": "https://github.com/doctrine/cache.git", 84 | "reference": "2b9cec5a5e722010cbebc91713d4c11eaa064d5e" 85 | }, 86 | "dist": { 87 | "type": "zip", 88 | "url": "https://api.github.com/repos/doctrine/cache/zipball/2b9cec5a5e722010cbebc91713d4c11eaa064d5e", 89 | "reference": "2b9cec5a5e722010cbebc91713d4c11eaa064d5e", 90 | "shasum": "" 91 | }, 92 | "require": { 93 | "php": ">=5.3.2" 94 | }, 95 | "conflict": { 96 | "doctrine/common": ">2.2,<2.4" 97 | }, 98 | "require-dev": { 99 | "phpunit/phpunit": ">=3.7", 100 | "predis/predis": "~1.0", 101 | "satooshi/php-coveralls": "~0.6" 102 | }, 103 | "type": "library", 104 | "extra": { 105 | "branch-alias": { 106 | "dev-master": "1.5.x-dev" 107 | } 108 | }, 109 | "autoload": { 110 | "psr-4": { 111 | "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" 112 | } 113 | }, 114 | "notification-url": "https://packagist.org/downloads/", 115 | "license": [ 116 | "MIT" 117 | ], 118 | "authors": [ 119 | { 120 | "name": "Roman Borschel", 121 | "email": "roman@code-factory.org" 122 | }, 123 | { 124 | "name": "Benjamin Eberlei", 125 | "email": "kontakt@beberlei.de" 126 | }, 127 | { 128 | "name": "Guilherme Blanco", 129 | "email": "guilhermeblanco@gmail.com" 130 | }, 131 | { 132 | "name": "Jonathan Wage", 133 | "email": "jonwage@gmail.com" 134 | }, 135 | { 136 | "name": "Johannes Schmitt", 137 | "email": "schmittjoh@gmail.com" 138 | } 139 | ], 140 | "description": "Caching library offering an object-oriented API for many cache backends", 141 | "homepage": "http://www.doctrine-project.org", 142 | "keywords": [ 143 | "cache", 144 | "caching" 145 | ], 146 | "time": "2015-11-02 18:35:48" 147 | }, 148 | { 149 | "name": "doctrine/collections", 150 | "version": "v1.3.0", 151 | "source": { 152 | "type": "git", 153 | "url": "https://github.com/doctrine/collections.git", 154 | "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a" 155 | }, 156 | "dist": { 157 | "type": "zip", 158 | "url": "https://api.github.com/repos/doctrine/collections/zipball/6c1e4eef75f310ea1b3e30945e9f06e652128b8a", 159 | "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a", 160 | "shasum": "" 161 | }, 162 | "require": { 163 | "php": ">=5.3.2" 164 | }, 165 | "require-dev": { 166 | "phpunit/phpunit": "~4.0" 167 | }, 168 | "type": "library", 169 | "extra": { 170 | "branch-alias": { 171 | "dev-master": "1.2.x-dev" 172 | } 173 | }, 174 | "autoload": { 175 | "psr-0": { 176 | "Doctrine\\Common\\Collections\\": "lib/" 177 | } 178 | }, 179 | "notification-url": "https://packagist.org/downloads/", 180 | "license": [ 181 | "MIT" 182 | ], 183 | "authors": [ 184 | { 185 | "name": "Roman Borschel", 186 | "email": "roman@code-factory.org" 187 | }, 188 | { 189 | "name": "Benjamin Eberlei", 190 | "email": "kontakt@beberlei.de" 191 | }, 192 | { 193 | "name": "Guilherme Blanco", 194 | "email": "guilhermeblanco@gmail.com" 195 | }, 196 | { 197 | "name": "Jonathan Wage", 198 | "email": "jonwage@gmail.com" 199 | }, 200 | { 201 | "name": "Johannes Schmitt", 202 | "email": "schmittjoh@gmail.com" 203 | } 204 | ], 205 | "description": "Collections Abstraction library", 206 | "homepage": "http://www.doctrine-project.org", 207 | "keywords": [ 208 | "array", 209 | "collections", 210 | "iterator" 211 | ], 212 | "time": "2015-04-14 22:21:58" 213 | }, 214 | { 215 | "name": "doctrine/common", 216 | "version": "v2.5.1", 217 | "source": { 218 | "type": "git", 219 | "url": "https://github.com/doctrine/common.git", 220 | "reference": "0009b8f0d4a917aabc971fb089eba80e872f83f9" 221 | }, 222 | "dist": { 223 | "type": "zip", 224 | "url": "https://api.github.com/repos/doctrine/common/zipball/0009b8f0d4a917aabc971fb089eba80e872f83f9", 225 | "reference": "0009b8f0d4a917aabc971fb089eba80e872f83f9", 226 | "shasum": "" 227 | }, 228 | "require": { 229 | "doctrine/annotations": "1.*", 230 | "doctrine/cache": "1.*", 231 | "doctrine/collections": "1.*", 232 | "doctrine/inflector": "1.*", 233 | "doctrine/lexer": "1.*", 234 | "php": ">=5.3.2" 235 | }, 236 | "require-dev": { 237 | "phpunit/phpunit": "~3.7" 238 | }, 239 | "type": "library", 240 | "extra": { 241 | "branch-alias": { 242 | "dev-master": "2.6.x-dev" 243 | } 244 | }, 245 | "autoload": { 246 | "psr-0": { 247 | "Doctrine\\Common\\": "lib/" 248 | } 249 | }, 250 | "notification-url": "https://packagist.org/downloads/", 251 | "license": [ 252 | "MIT" 253 | ], 254 | "authors": [ 255 | { 256 | "name": "Roman Borschel", 257 | "email": "roman@code-factory.org" 258 | }, 259 | { 260 | "name": "Benjamin Eberlei", 261 | "email": "kontakt@beberlei.de" 262 | }, 263 | { 264 | "name": "Guilherme Blanco", 265 | "email": "guilhermeblanco@gmail.com" 266 | }, 267 | { 268 | "name": "Jonathan Wage", 269 | "email": "jonwage@gmail.com" 270 | }, 271 | { 272 | "name": "Johannes Schmitt", 273 | "email": "schmittjoh@gmail.com" 274 | } 275 | ], 276 | "description": "Common Library for Doctrine projects", 277 | "homepage": "http://www.doctrine-project.org", 278 | "keywords": [ 279 | "annotations", 280 | "collections", 281 | "eventmanager", 282 | "persistence", 283 | "spl" 284 | ], 285 | "time": "2015-08-31 13:00:22" 286 | }, 287 | { 288 | "name": "doctrine/dbal", 289 | "version": "v2.5.2", 290 | "source": { 291 | "type": "git", 292 | "url": "https://github.com/doctrine/dbal.git", 293 | "reference": "01dbcbc5cd0a913d751418e635434a18a2f2a75c" 294 | }, 295 | "dist": { 296 | "type": "zip", 297 | "url": "https://api.github.com/repos/doctrine/dbal/zipball/01dbcbc5cd0a913d751418e635434a18a2f2a75c", 298 | "reference": "01dbcbc5cd0a913d751418e635434a18a2f2a75c", 299 | "shasum": "" 300 | }, 301 | "require": { 302 | "doctrine/common": ">=2.4,<2.6-dev", 303 | "php": ">=5.3.2" 304 | }, 305 | "require-dev": { 306 | "phpunit/phpunit": "4.*", 307 | "symfony/console": "2.*" 308 | }, 309 | "suggest": { 310 | "symfony/console": "For helpful console commands such as SQL execution and import of files." 311 | }, 312 | "bin": [ 313 | "bin/doctrine-dbal" 314 | ], 315 | "type": "library", 316 | "extra": { 317 | "branch-alias": { 318 | "dev-master": "2.5.x-dev" 319 | } 320 | }, 321 | "autoload": { 322 | "psr-0": { 323 | "Doctrine\\DBAL\\": "lib/" 324 | } 325 | }, 326 | "notification-url": "https://packagist.org/downloads/", 327 | "license": [ 328 | "MIT" 329 | ], 330 | "authors": [ 331 | { 332 | "name": "Roman Borschel", 333 | "email": "roman@code-factory.org" 334 | }, 335 | { 336 | "name": "Benjamin Eberlei", 337 | "email": "kontakt@beberlei.de" 338 | }, 339 | { 340 | "name": "Guilherme Blanco", 341 | "email": "guilhermeblanco@gmail.com" 342 | }, 343 | { 344 | "name": "Jonathan Wage", 345 | "email": "jonwage@gmail.com" 346 | } 347 | ], 348 | "description": "Database Abstraction Layer", 349 | "homepage": "http://www.doctrine-project.org", 350 | "keywords": [ 351 | "database", 352 | "dbal", 353 | "persistence", 354 | "queryobject" 355 | ], 356 | "time": "2015-09-16 16:29:33" 357 | }, 358 | { 359 | "name": "doctrine/doctrine-bundle", 360 | "version": "1.6.0", 361 | "source": { 362 | "type": "git", 363 | "url": "https://github.com/doctrine/DoctrineBundle.git", 364 | "reference": "a5b3ba908ba68f3e14e42762a7b940fde65ed7da" 365 | }, 366 | "dist": { 367 | "type": "zip", 368 | "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/a5b3ba908ba68f3e14e42762a7b940fde65ed7da", 369 | "reference": "a5b3ba908ba68f3e14e42762a7b940fde65ed7da", 370 | "shasum": "" 371 | }, 372 | "require": { 373 | "doctrine/dbal": "~2.3", 374 | "doctrine/doctrine-cache-bundle": "~1.0", 375 | "jdorn/sql-formatter": "~1.1", 376 | "php": ">=5.3.2", 377 | "symfony/console": "~2.3|~3.0", 378 | "symfony/doctrine-bridge": "~2.2|~3.0", 379 | "symfony/framework-bundle": "~2.3|~3.0" 380 | }, 381 | "require-dev": { 382 | "doctrine/orm": "~2.3", 383 | "phpunit/phpunit": "~4", 384 | "satooshi/php-coveralls": "~0.6.1", 385 | "symfony/validator": "~2.2|~3.0", 386 | "symfony/yaml": "~2.2|~3.0", 387 | "twig/twig": "~1.10" 388 | }, 389 | "suggest": { 390 | "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", 391 | "symfony/web-profiler-bundle": "to use the data collector" 392 | }, 393 | "type": "symfony-bundle", 394 | "extra": { 395 | "branch-alias": { 396 | "dev-master": "1.6.x-dev" 397 | } 398 | }, 399 | "autoload": { 400 | "psr-4": { 401 | "Doctrine\\Bundle\\DoctrineBundle\\": "" 402 | } 403 | }, 404 | "notification-url": "https://packagist.org/downloads/", 405 | "license": [ 406 | "MIT" 407 | ], 408 | "authors": [ 409 | { 410 | "name": "Symfony Community", 411 | "homepage": "http://symfony.com/contributors" 412 | }, 413 | { 414 | "name": "Benjamin Eberlei", 415 | "email": "kontakt@beberlei.de" 416 | }, 417 | { 418 | "name": "Doctrine Project", 419 | "homepage": "http://www.doctrine-project.org/" 420 | }, 421 | { 422 | "name": "Fabien Potencier", 423 | "email": "fabien@symfony.com" 424 | } 425 | ], 426 | "description": "Symfony DoctrineBundle", 427 | "homepage": "http://www.doctrine-project.org", 428 | "keywords": [ 429 | "database", 430 | "dbal", 431 | "orm", 432 | "persistence" 433 | ], 434 | "time": "2015-11-04 21:33:02" 435 | }, 436 | { 437 | "name": "doctrine/doctrine-cache-bundle", 438 | "version": "1.2.1", 439 | "source": { 440 | "type": "git", 441 | "url": "https://github.com/doctrine/DoctrineCacheBundle.git", 442 | "reference": "3233bc78e222d528ca89a6a47d48d6f37888e95e" 443 | }, 444 | "dist": { 445 | "type": "zip", 446 | "url": "https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/3233bc78e222d528ca89a6a47d48d6f37888e95e", 447 | "reference": "3233bc78e222d528ca89a6a47d48d6f37888e95e", 448 | "shasum": "" 449 | }, 450 | "require": { 451 | "doctrine/cache": "^1.4.2", 452 | "doctrine/inflector": "~1.0", 453 | "php": ">=5.3.2", 454 | "symfony/doctrine-bridge": "~2.2|~3.0", 455 | "symfony/security-acl": "~2.3|~3.0" 456 | }, 457 | "require-dev": { 458 | "instaclick/coding-standard": "~1.1", 459 | "instaclick/object-calisthenics-sniffs": "dev-master", 460 | "instaclick/symfony2-coding-standard": "dev-remaster", 461 | "phpunit/phpunit": "~4", 462 | "satooshi/php-coveralls": "~0.6.1", 463 | "squizlabs/php_codesniffer": "~1.5", 464 | "symfony/console": "~2.2|~3.0", 465 | "symfony/finder": "~2.2|~3.0", 466 | "symfony/framework-bundle": "~2.2|~3.0", 467 | "symfony/phpunit-bridge": "~2.7|~3.0", 468 | "symfony/validator": "~2.2|~3.0", 469 | "symfony/yaml": "~2.2|~3.0" 470 | }, 471 | "type": "symfony-bundle", 472 | "extra": { 473 | "branch-alias": { 474 | "dev-master": "1.0.x-dev" 475 | } 476 | }, 477 | "autoload": { 478 | "psr-4": { 479 | "Doctrine\\Bundle\\DoctrineCacheBundle\\": "" 480 | } 481 | }, 482 | "notification-url": "https://packagist.org/downloads/", 483 | "license": [ 484 | "MIT" 485 | ], 486 | "authors": [ 487 | { 488 | "name": "Symfony Community", 489 | "homepage": "http://symfony.com/contributors" 490 | }, 491 | { 492 | "name": "Benjamin Eberlei", 493 | "email": "kontakt@beberlei.de" 494 | }, 495 | { 496 | "name": "Fabio B. Silva", 497 | "email": "fabio.bat.silva@gmail.com" 498 | }, 499 | { 500 | "name": "Guilherme Blanco", 501 | "email": "guilhermeblanco@hotmail.com" 502 | }, 503 | { 504 | "name": "Doctrine Project", 505 | "homepage": "http://www.doctrine-project.org/" 506 | }, 507 | { 508 | "name": "Fabien Potencier", 509 | "email": "fabien@symfony.com" 510 | } 511 | ], 512 | "description": "Symfony Bundle for Doctrine Cache", 513 | "homepage": "http://www.doctrine-project.org", 514 | "keywords": [ 515 | "cache", 516 | "caching" 517 | ], 518 | "time": "2015-11-05 13:48:27" 519 | }, 520 | { 521 | "name": "doctrine/inflector", 522 | "version": "v1.1.0", 523 | "source": { 524 | "type": "git", 525 | "url": "https://github.com/doctrine/inflector.git", 526 | "reference": "90b2128806bfde671b6952ab8bea493942c1fdae" 527 | }, 528 | "dist": { 529 | "type": "zip", 530 | "url": "https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae", 531 | "reference": "90b2128806bfde671b6952ab8bea493942c1fdae", 532 | "shasum": "" 533 | }, 534 | "require": { 535 | "php": ">=5.3.2" 536 | }, 537 | "require-dev": { 538 | "phpunit/phpunit": "4.*" 539 | }, 540 | "type": "library", 541 | "extra": { 542 | "branch-alias": { 543 | "dev-master": "1.1.x-dev" 544 | } 545 | }, 546 | "autoload": { 547 | "psr-0": { 548 | "Doctrine\\Common\\Inflector\\": "lib/" 549 | } 550 | }, 551 | "notification-url": "https://packagist.org/downloads/", 552 | "license": [ 553 | "MIT" 554 | ], 555 | "authors": [ 556 | { 557 | "name": "Roman Borschel", 558 | "email": "roman@code-factory.org" 559 | }, 560 | { 561 | "name": "Benjamin Eberlei", 562 | "email": "kontakt@beberlei.de" 563 | }, 564 | { 565 | "name": "Guilherme Blanco", 566 | "email": "guilhermeblanco@gmail.com" 567 | }, 568 | { 569 | "name": "Jonathan Wage", 570 | "email": "jonwage@gmail.com" 571 | }, 572 | { 573 | "name": "Johannes Schmitt", 574 | "email": "schmittjoh@gmail.com" 575 | } 576 | ], 577 | "description": "Common String Manipulations with regard to casing and singular/plural rules.", 578 | "homepage": "http://www.doctrine-project.org", 579 | "keywords": [ 580 | "inflection", 581 | "pluralize", 582 | "singularize", 583 | "string" 584 | ], 585 | "time": "2015-11-06 14:35:42" 586 | }, 587 | { 588 | "name": "doctrine/instantiator", 589 | "version": "1.0.5", 590 | "source": { 591 | "type": "git", 592 | "url": "https://github.com/doctrine/instantiator.git", 593 | "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" 594 | }, 595 | "dist": { 596 | "type": "zip", 597 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", 598 | "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", 599 | "shasum": "" 600 | }, 601 | "require": { 602 | "php": ">=5.3,<8.0-DEV" 603 | }, 604 | "require-dev": { 605 | "athletic/athletic": "~0.1.8", 606 | "ext-pdo": "*", 607 | "ext-phar": "*", 608 | "phpunit/phpunit": "~4.0", 609 | "squizlabs/php_codesniffer": "~2.0" 610 | }, 611 | "type": "library", 612 | "extra": { 613 | "branch-alias": { 614 | "dev-master": "1.0.x-dev" 615 | } 616 | }, 617 | "autoload": { 618 | "psr-4": { 619 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 620 | } 621 | }, 622 | "notification-url": "https://packagist.org/downloads/", 623 | "license": [ 624 | "MIT" 625 | ], 626 | "authors": [ 627 | { 628 | "name": "Marco Pivetta", 629 | "email": "ocramius@gmail.com", 630 | "homepage": "http://ocramius.github.com/" 631 | } 632 | ], 633 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 634 | "homepage": "https://github.com/doctrine/instantiator", 635 | "keywords": [ 636 | "constructor", 637 | "instantiate" 638 | ], 639 | "time": "2015-06-14 21:17:01" 640 | }, 641 | { 642 | "name": "doctrine/lexer", 643 | "version": "v1.0.1", 644 | "source": { 645 | "type": "git", 646 | "url": "https://github.com/doctrine/lexer.git", 647 | "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" 648 | }, 649 | "dist": { 650 | "type": "zip", 651 | "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", 652 | "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", 653 | "shasum": "" 654 | }, 655 | "require": { 656 | "php": ">=5.3.2" 657 | }, 658 | "type": "library", 659 | "extra": { 660 | "branch-alias": { 661 | "dev-master": "1.0.x-dev" 662 | } 663 | }, 664 | "autoload": { 665 | "psr-0": { 666 | "Doctrine\\Common\\Lexer\\": "lib/" 667 | } 668 | }, 669 | "notification-url": "https://packagist.org/downloads/", 670 | "license": [ 671 | "MIT" 672 | ], 673 | "authors": [ 674 | { 675 | "name": "Roman Borschel", 676 | "email": "roman@code-factory.org" 677 | }, 678 | { 679 | "name": "Guilherme Blanco", 680 | "email": "guilhermeblanco@gmail.com" 681 | }, 682 | { 683 | "name": "Johannes Schmitt", 684 | "email": "schmittjoh@gmail.com" 685 | } 686 | ], 687 | "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", 688 | "homepage": "http://www.doctrine-project.org", 689 | "keywords": [ 690 | "lexer", 691 | "parser" 692 | ], 693 | "time": "2014-09-09 13:34:57" 694 | }, 695 | { 696 | "name": "doctrine/orm", 697 | "version": "v2.5.1", 698 | "source": { 699 | "type": "git", 700 | "url": "https://github.com/doctrine/doctrine2.git", 701 | "reference": "e6a83bedbe67579cb0bfb688e982e617943a2945" 702 | }, 703 | "dist": { 704 | "type": "zip", 705 | "url": "https://api.github.com/repos/doctrine/doctrine2/zipball/e6a83bedbe67579cb0bfb688e982e617943a2945", 706 | "reference": "e6a83bedbe67579cb0bfb688e982e617943a2945", 707 | "shasum": "" 708 | }, 709 | "require": { 710 | "doctrine/cache": "~1.4", 711 | "doctrine/collections": "~1.2", 712 | "doctrine/common": ">=2.5-dev,<2.6-dev", 713 | "doctrine/dbal": ">=2.5-dev,<2.6-dev", 714 | "doctrine/instantiator": "~1.0.1", 715 | "ext-pdo": "*", 716 | "php": ">=5.4", 717 | "symfony/console": "~2.5" 718 | }, 719 | "require-dev": { 720 | "phpunit/phpunit": "~4.0", 721 | "satooshi/php-coveralls": "dev-master", 722 | "symfony/yaml": "~2.1" 723 | }, 724 | "suggest": { 725 | "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" 726 | }, 727 | "bin": [ 728 | "bin/doctrine", 729 | "bin/doctrine.php" 730 | ], 731 | "type": "library", 732 | "extra": { 733 | "branch-alias": { 734 | "dev-master": "2.6.x-dev" 735 | } 736 | }, 737 | "autoload": { 738 | "psr-0": { 739 | "Doctrine\\ORM\\": "lib/" 740 | } 741 | }, 742 | "notification-url": "https://packagist.org/downloads/", 743 | "license": [ 744 | "MIT" 745 | ], 746 | "authors": [ 747 | { 748 | "name": "Roman Borschel", 749 | "email": "roman@code-factory.org" 750 | }, 751 | { 752 | "name": "Benjamin Eberlei", 753 | "email": "kontakt@beberlei.de" 754 | }, 755 | { 756 | "name": "Guilherme Blanco", 757 | "email": "guilhermeblanco@gmail.com" 758 | }, 759 | { 760 | "name": "Jonathan Wage", 761 | "email": "jonwage@gmail.com" 762 | } 763 | ], 764 | "description": "Object-Relational-Mapper for PHP", 765 | "homepage": "http://www.doctrine-project.org", 766 | "keywords": [ 767 | "database", 768 | "orm" 769 | ], 770 | "time": "2015-08-31 12:59:39" 771 | }, 772 | { 773 | "name": "incenteev/composer-parameter-handler", 774 | "version": "v2.1.2", 775 | "source": { 776 | "type": "git", 777 | "url": "https://github.com/Incenteev/ParameterHandler.git", 778 | "reference": "d7ce7f06136109e81d1cb9d57066c4d4a99cf1cc" 779 | }, 780 | "dist": { 781 | "type": "zip", 782 | "url": "https://api.github.com/repos/Incenteev/ParameterHandler/zipball/d7ce7f06136109e81d1cb9d57066c4d4a99cf1cc", 783 | "reference": "d7ce7f06136109e81d1cb9d57066c4d4a99cf1cc", 784 | "shasum": "" 785 | }, 786 | "require": { 787 | "php": ">=5.3.3", 788 | "symfony/yaml": "~2.3|~3.0" 789 | }, 790 | "require-dev": { 791 | "composer/composer": "1.0.*@dev", 792 | "phpspec/prophecy-phpunit": "~1.0", 793 | "symfony/filesystem": "~2.2" 794 | }, 795 | "type": "library", 796 | "extra": { 797 | "branch-alias": { 798 | "dev-master": "2.1.x-dev" 799 | } 800 | }, 801 | "autoload": { 802 | "psr-4": { 803 | "Incenteev\\ParameterHandler\\": "" 804 | } 805 | }, 806 | "notification-url": "https://packagist.org/downloads/", 807 | "license": [ 808 | "MIT" 809 | ], 810 | "authors": [ 811 | { 812 | "name": "Christophe Coevoet", 813 | "email": "stof@notk.org" 814 | } 815 | ], 816 | "description": "Composer script handling your ignored parameter file", 817 | "homepage": "https://github.com/Incenteev/ParameterHandler", 818 | "keywords": [ 819 | "parameters management" 820 | ], 821 | "time": "2015-11-10 17:04:01" 822 | }, 823 | { 824 | "name": "jdorn/sql-formatter", 825 | "version": "v1.2.17", 826 | "source": { 827 | "type": "git", 828 | "url": "https://github.com/jdorn/sql-formatter.git", 829 | "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc" 830 | }, 831 | "dist": { 832 | "type": "zip", 833 | "url": "https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc", 834 | "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc", 835 | "shasum": "" 836 | }, 837 | "require": { 838 | "php": ">=5.2.4" 839 | }, 840 | "require-dev": { 841 | "phpunit/phpunit": "3.7.*" 842 | }, 843 | "type": "library", 844 | "extra": { 845 | "branch-alias": { 846 | "dev-master": "1.3.x-dev" 847 | } 848 | }, 849 | "autoload": { 850 | "classmap": [ 851 | "lib" 852 | ] 853 | }, 854 | "notification-url": "https://packagist.org/downloads/", 855 | "license": [ 856 | "MIT" 857 | ], 858 | "authors": [ 859 | { 860 | "name": "Jeremy Dorn", 861 | "email": "jeremy@jeremydorn.com", 862 | "homepage": "http://jeremydorn.com/" 863 | } 864 | ], 865 | "description": "a PHP SQL highlighting library", 866 | "homepage": "https://github.com/jdorn/sql-formatter/", 867 | "keywords": [ 868 | "highlight", 869 | "sql" 870 | ], 871 | "time": "2014-01-12 16:20:24" 872 | }, 873 | { 874 | "name": "kriswallsmith/assetic", 875 | "version": "v1.3.2", 876 | "source": { 877 | "type": "git", 878 | "url": "https://github.com/kriswallsmith/assetic.git", 879 | "reference": "9928f7c4ad98b234e3559d1049abd13387f86db5" 880 | }, 881 | "dist": { 882 | "type": "zip", 883 | "url": "https://api.github.com/repos/kriswallsmith/assetic/zipball/9928f7c4ad98b234e3559d1049abd13387f86db5", 884 | "reference": "9928f7c4ad98b234e3559d1049abd13387f86db5", 885 | "shasum": "" 886 | }, 887 | "require": { 888 | "php": ">=5.3.1", 889 | "symfony/process": "~2.1|~3.0" 890 | }, 891 | "conflict": { 892 | "twig/twig": "<1.23" 893 | }, 894 | "require-dev": { 895 | "cssmin/cssmin": "3.0.1", 896 | "joliclic/javascript-packer": "1.1", 897 | "kamicane/packager": "1.0", 898 | "leafo/lessphp": "^0.3.7", 899 | "leafo/scssphp": "~0.1", 900 | "mrclay/minify": "~2.2", 901 | "patchwork/jsqueeze": "~1.0|~2.0", 902 | "phpunit/phpunit": "~4.8", 903 | "psr/log": "~1.0", 904 | "ptachoire/cssembed": "~1.0", 905 | "symfony/phpunit-bridge": "~2.7|~3.0", 906 | "twig/twig": "~1.8|~2.0" 907 | }, 908 | "suggest": { 909 | "leafo/lessphp": "Assetic provides the integration with the lessphp LESS compiler", 910 | "leafo/scssphp": "Assetic provides the integration with the scssphp SCSS compiler", 911 | "leafo/scssphp-compass": "Assetic provides the integration with the SCSS compass plugin", 912 | "patchwork/jsqueeze": "Assetic provides the integration with the JSqueeze JavaScript compressor", 913 | "ptachoire/cssembed": "Assetic provides the integration with phpcssembed to embed data uris", 914 | "twig/twig": "Assetic provides the integration with the Twig templating engine" 915 | }, 916 | "type": "library", 917 | "extra": { 918 | "branch-alias": { 919 | "dev-master": "1.4-dev" 920 | } 921 | }, 922 | "autoload": { 923 | "psr-0": { 924 | "Assetic": "src/" 925 | }, 926 | "files": [ 927 | "src/functions.php" 928 | ] 929 | }, 930 | "notification-url": "https://packagist.org/downloads/", 931 | "license": [ 932 | "MIT" 933 | ], 934 | "authors": [ 935 | { 936 | "name": "Kris Wallsmith", 937 | "email": "kris.wallsmith@gmail.com", 938 | "homepage": "http://kriswallsmith.net/" 939 | } 940 | ], 941 | "description": "Asset Management for PHP", 942 | "homepage": "https://github.com/kriswallsmith/assetic", 943 | "keywords": [ 944 | "assets", 945 | "compression", 946 | "minification" 947 | ], 948 | "time": "2015-11-12 13:51:40" 949 | }, 950 | { 951 | "name": "monolog/monolog", 952 | "version": "1.17.2", 953 | "source": { 954 | "type": "git", 955 | "url": "https://github.com/Seldaek/monolog.git", 956 | "reference": "bee7f0dc9c3e0b69a6039697533dca1e845c8c24" 957 | }, 958 | "dist": { 959 | "type": "zip", 960 | "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bee7f0dc9c3e0b69a6039697533dca1e845c8c24", 961 | "reference": "bee7f0dc9c3e0b69a6039697533dca1e845c8c24", 962 | "shasum": "" 963 | }, 964 | "require": { 965 | "php": ">=5.3.0", 966 | "psr/log": "~1.0" 967 | }, 968 | "provide": { 969 | "psr/log-implementation": "1.0.0" 970 | }, 971 | "require-dev": { 972 | "aws/aws-sdk-php": "^2.4.9", 973 | "doctrine/couchdb": "~1.0@dev", 974 | "graylog2/gelf-php": "~1.0", 975 | "jakub-onderka/php-parallel-lint": "0.9", 976 | "php-console/php-console": "^3.1.3", 977 | "phpunit/phpunit": "~4.5", 978 | "phpunit/phpunit-mock-objects": "2.3.0", 979 | "raven/raven": "^0.13", 980 | "ruflin/elastica": ">=0.90 <3.0", 981 | "swiftmailer/swiftmailer": "~5.3", 982 | "videlalvaro/php-amqplib": "~2.4" 983 | }, 984 | "suggest": { 985 | "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", 986 | "doctrine/couchdb": "Allow sending log messages to a CouchDB server", 987 | "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", 988 | "ext-mongo": "Allow sending log messages to a MongoDB server", 989 | "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", 990 | "php-console/php-console": "Allow sending log messages to Google Chrome", 991 | "raven/raven": "Allow sending log messages to a Sentry server", 992 | "rollbar/rollbar": "Allow sending log messages to Rollbar", 993 | "ruflin/elastica": "Allow sending log messages to an Elastic Search server", 994 | "videlalvaro/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib" 995 | }, 996 | "type": "library", 997 | "extra": { 998 | "branch-alias": { 999 | "dev-master": "1.16.x-dev" 1000 | } 1001 | }, 1002 | "autoload": { 1003 | "psr-4": { 1004 | "Monolog\\": "src/Monolog" 1005 | } 1006 | }, 1007 | "notification-url": "https://packagist.org/downloads/", 1008 | "license": [ 1009 | "MIT" 1010 | ], 1011 | "authors": [ 1012 | { 1013 | "name": "Jordi Boggiano", 1014 | "email": "j.boggiano@seld.be", 1015 | "homepage": "http://seld.be" 1016 | } 1017 | ], 1018 | "description": "Sends your logs to files, sockets, inboxes, databases and various web services", 1019 | "homepage": "http://github.com/Seldaek/monolog", 1020 | "keywords": [ 1021 | "log", 1022 | "logging", 1023 | "psr-3" 1024 | ], 1025 | "time": "2015-10-14 12:51:02" 1026 | }, 1027 | { 1028 | "name": "psr/log", 1029 | "version": "1.0.0", 1030 | "source": { 1031 | "type": "git", 1032 | "url": "https://github.com/php-fig/log.git", 1033 | "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b" 1034 | }, 1035 | "dist": { 1036 | "type": "zip", 1037 | "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b", 1038 | "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b", 1039 | "shasum": "" 1040 | }, 1041 | "type": "library", 1042 | "autoload": { 1043 | "psr-0": { 1044 | "Psr\\Log\\": "" 1045 | } 1046 | }, 1047 | "notification-url": "https://packagist.org/downloads/", 1048 | "license": [ 1049 | "MIT" 1050 | ], 1051 | "authors": [ 1052 | { 1053 | "name": "PHP-FIG", 1054 | "homepage": "http://www.php-fig.org/" 1055 | } 1056 | ], 1057 | "description": "Common interface for logging libraries", 1058 | "keywords": [ 1059 | "log", 1060 | "psr", 1061 | "psr-3" 1062 | ], 1063 | "time": "2012-12-21 11:40:51" 1064 | }, 1065 | { 1066 | "name": "sensio/distribution-bundle", 1067 | "version": "v4.0.3", 1068 | "target-dir": "Sensio/Bundle/DistributionBundle", 1069 | "source": { 1070 | "type": "git", 1071 | "url": "https://github.com/sensiolabs/SensioDistributionBundle.git", 1072 | "reference": "2d061c01e708c83ede4720e2551d9449bf606c0a" 1073 | }, 1074 | "dist": { 1075 | "type": "zip", 1076 | "url": "https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/2d061c01e708c83ede4720e2551d9449bf606c0a", 1077 | "reference": "2d061c01e708c83ede4720e2551d9449bf606c0a", 1078 | "shasum": "" 1079 | }, 1080 | "require": { 1081 | "php": ">=5.3.9", 1082 | "sensiolabs/security-checker": "~3.0", 1083 | "symfony/class-loader": "~2.2", 1084 | "symfony/framework-bundle": "~2.3", 1085 | "symfony/process": "~2.2" 1086 | }, 1087 | "require-dev": { 1088 | "symfony/form": "~2.2", 1089 | "symfony/validator": "~2.2", 1090 | "symfony/yaml": "~2.2" 1091 | }, 1092 | "suggest": { 1093 | "symfony/form": "If you want to use the configurator", 1094 | "symfony/validator": "If you want to use the configurator", 1095 | "symfony/yaml": "If you want to use the configurator" 1096 | }, 1097 | "type": "symfony-bundle", 1098 | "extra": { 1099 | "branch-alias": { 1100 | "dev-master": "4.0.x-dev" 1101 | } 1102 | }, 1103 | "autoload": { 1104 | "psr-0": { 1105 | "Sensio\\Bundle\\DistributionBundle": "" 1106 | } 1107 | }, 1108 | "notification-url": "https://packagist.org/downloads/", 1109 | "license": [ 1110 | "MIT" 1111 | ], 1112 | "authors": [ 1113 | { 1114 | "name": "Fabien Potencier", 1115 | "email": "fabien@symfony.com" 1116 | } 1117 | ], 1118 | "description": "Base bundle for Symfony Distributions", 1119 | "keywords": [ 1120 | "configuration", 1121 | "distribution" 1122 | ], 1123 | "time": "2015-10-27 18:48:08" 1124 | }, 1125 | { 1126 | "name": "sensio/framework-extra-bundle", 1127 | "version": "v3.0.11", 1128 | "source": { 1129 | "type": "git", 1130 | "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git", 1131 | "reference": "a79e205737b58d557c05caef6dfa8f94d8084bca" 1132 | }, 1133 | "dist": { 1134 | "type": "zip", 1135 | "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/a79e205737b58d557c05caef6dfa8f94d8084bca", 1136 | "reference": "a79e205737b58d557c05caef6dfa8f94d8084bca", 1137 | "shasum": "" 1138 | }, 1139 | "require": { 1140 | "doctrine/common": "~2.2", 1141 | "symfony/framework-bundle": "~2.3|~3.0" 1142 | }, 1143 | "require-dev": { 1144 | "symfony/expression-language": "~2.4|~3.0", 1145 | "symfony/security-bundle": "~2.4|~3.0" 1146 | }, 1147 | "suggest": { 1148 | "symfony/expression-language": "", 1149 | "symfony/psr-http-message-bridge": "To use the PSR-7 converters", 1150 | "symfony/security-bundle": "" 1151 | }, 1152 | "type": "symfony-bundle", 1153 | "extra": { 1154 | "branch-alias": { 1155 | "dev-master": "3.0.x-dev" 1156 | } 1157 | }, 1158 | "autoload": { 1159 | "psr-4": { 1160 | "Sensio\\Bundle\\FrameworkExtraBundle\\": "" 1161 | } 1162 | }, 1163 | "notification-url": "https://packagist.org/downloads/", 1164 | "license": [ 1165 | "MIT" 1166 | ], 1167 | "authors": [ 1168 | { 1169 | "name": "Fabien Potencier", 1170 | "email": "fabien@symfony.com" 1171 | } 1172 | ], 1173 | "description": "This bundle provides a way to configure your controllers with annotations", 1174 | "keywords": [ 1175 | "annotations", 1176 | "controllers" 1177 | ], 1178 | "time": "2015-10-28 15:47:04" 1179 | }, 1180 | { 1181 | "name": "sensiolabs/security-checker", 1182 | "version": "v3.0.2", 1183 | "source": { 1184 | "type": "git", 1185 | "url": "https://github.com/sensiolabs/security-checker.git", 1186 | "reference": "21696b0daa731064c23cfb694c60a2584a7b6e93" 1187 | }, 1188 | "dist": { 1189 | "type": "zip", 1190 | "url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/21696b0daa731064c23cfb694c60a2584a7b6e93", 1191 | "reference": "21696b0daa731064c23cfb694c60a2584a7b6e93", 1192 | "shasum": "" 1193 | }, 1194 | "require": { 1195 | "symfony/console": "~2.0|~3.0" 1196 | }, 1197 | "bin": [ 1198 | "security-checker" 1199 | ], 1200 | "type": "library", 1201 | "extra": { 1202 | "branch-alias": { 1203 | "dev-master": "3.0-dev" 1204 | } 1205 | }, 1206 | "autoload": { 1207 | "psr-0": { 1208 | "SensioLabs\\Security": "" 1209 | } 1210 | }, 1211 | "notification-url": "https://packagist.org/downloads/", 1212 | "license": [ 1213 | "MIT" 1214 | ], 1215 | "authors": [ 1216 | { 1217 | "name": "Fabien Potencier", 1218 | "email": "fabien.potencier@gmail.com" 1219 | } 1220 | ], 1221 | "description": "A security checker for your composer.lock", 1222 | "time": "2015-11-07 08:07:40" 1223 | }, 1224 | { 1225 | "name": "swiftmailer/swiftmailer", 1226 | "version": "v5.4.1", 1227 | "source": { 1228 | "type": "git", 1229 | "url": "https://github.com/swiftmailer/swiftmailer.git", 1230 | "reference": "0697e6aa65c83edf97bb0f23d8763f94e3f11421" 1231 | }, 1232 | "dist": { 1233 | "type": "zip", 1234 | "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/0697e6aa65c83edf97bb0f23d8763f94e3f11421", 1235 | "reference": "0697e6aa65c83edf97bb0f23d8763f94e3f11421", 1236 | "shasum": "" 1237 | }, 1238 | "require": { 1239 | "php": ">=5.3.3" 1240 | }, 1241 | "require-dev": { 1242 | "mockery/mockery": "~0.9.1,<0.9.4" 1243 | }, 1244 | "type": "library", 1245 | "extra": { 1246 | "branch-alias": { 1247 | "dev-master": "5.4-dev" 1248 | } 1249 | }, 1250 | "autoload": { 1251 | "files": [ 1252 | "lib/swift_required.php" 1253 | ] 1254 | }, 1255 | "notification-url": "https://packagist.org/downloads/", 1256 | "license": [ 1257 | "MIT" 1258 | ], 1259 | "authors": [ 1260 | { 1261 | "name": "Chris Corbyn" 1262 | }, 1263 | { 1264 | "name": "Fabien Potencier", 1265 | "email": "fabien@symfony.com" 1266 | } 1267 | ], 1268 | "description": "Swiftmailer, free feature-rich PHP mailer", 1269 | "homepage": "http://swiftmailer.org", 1270 | "keywords": [ 1271 | "email", 1272 | "mail", 1273 | "mailer" 1274 | ], 1275 | "time": "2015-06-06 14:19:39" 1276 | }, 1277 | { 1278 | "name": "symfony/assetic-bundle", 1279 | "version": "v2.7.1", 1280 | "source": { 1281 | "type": "git", 1282 | "url": "https://github.com/symfony/assetic-bundle.git", 1283 | "reference": "d885ec8451d5a7b077bda81bb19ac9fbff9cdc76" 1284 | }, 1285 | "dist": { 1286 | "type": "zip", 1287 | "url": "https://api.github.com/repos/symfony/assetic-bundle/zipball/d885ec8451d5a7b077bda81bb19ac9fbff9cdc76", 1288 | "reference": "d885ec8451d5a7b077bda81bb19ac9fbff9cdc76", 1289 | "shasum": "" 1290 | }, 1291 | "require": { 1292 | "kriswallsmith/assetic": "~1.3", 1293 | "php": ">=5.3.0", 1294 | "symfony/console": "~2.3|~3.0", 1295 | "symfony/dependency-injection": "~2.3|~3.0", 1296 | "symfony/framework-bundle": "~2.3|~3.0", 1297 | "symfony/yaml": "~2.3|~3.0" 1298 | }, 1299 | "conflict": { 1300 | "kriswallsmith/spork": "<=0.2", 1301 | "twig/twig": "<1.20" 1302 | }, 1303 | "require-dev": { 1304 | "kriswallsmith/spork": "~0.3", 1305 | "patchwork/jsqueeze": "~1.0", 1306 | "symfony/class-loader": "~2.3|~3.0", 1307 | "symfony/css-selector": "~2.3|~3.0", 1308 | "symfony/dom-crawler": "~2.3|~3.0", 1309 | "symfony/phpunit-bridge": "~2.7|~3.0", 1310 | "symfony/twig-bundle": "~2.3|~3.0" 1311 | }, 1312 | "suggest": { 1313 | "kriswallsmith/spork": "to be able to dump assets in parallel", 1314 | "symfony/twig-bundle": "to use the Twig integration" 1315 | }, 1316 | "type": "symfony-bundle", 1317 | "extra": { 1318 | "branch-alias": { 1319 | "dev-master": "2.7-dev" 1320 | } 1321 | }, 1322 | "autoload": { 1323 | "psr-4": { 1324 | "Symfony\\Bundle\\AsseticBundle\\": "" 1325 | } 1326 | }, 1327 | "notification-url": "https://packagist.org/downloads/", 1328 | "license": [ 1329 | "MIT" 1330 | ], 1331 | "authors": [ 1332 | { 1333 | "name": "Kris Wallsmith", 1334 | "email": "kris.wallsmith@gmail.com", 1335 | "homepage": "http://kriswallsmith.net/" 1336 | } 1337 | ], 1338 | "description": "Integrates Assetic into Symfony2", 1339 | "homepage": "https://github.com/symfony/AsseticBundle", 1340 | "keywords": [ 1341 | "assets", 1342 | "compression", 1343 | "minification" 1344 | ], 1345 | "time": "2015-11-17 09:45:47" 1346 | }, 1347 | { 1348 | "name": "symfony/monolog-bundle", 1349 | "version": "v2.8.2", 1350 | "source": { 1351 | "type": "git", 1352 | "url": "https://github.com/symfony/monolog-bundle.git", 1353 | "reference": "84785c4d44801c4dd82829fa2e1820cacfe2c46f" 1354 | }, 1355 | "dist": { 1356 | "type": "zip", 1357 | "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/84785c4d44801c4dd82829fa2e1820cacfe2c46f", 1358 | "reference": "84785c4d44801c4dd82829fa2e1820cacfe2c46f", 1359 | "shasum": "" 1360 | }, 1361 | "require": { 1362 | "monolog/monolog": "~1.8", 1363 | "php": ">=5.3.2", 1364 | "symfony/config": "~2.3|~3.0", 1365 | "symfony/dependency-injection": "~2.3|~3.0", 1366 | "symfony/http-kernel": "~2.3|~3.0", 1367 | "symfony/monolog-bridge": "~2.3|~3.0" 1368 | }, 1369 | "require-dev": { 1370 | "symfony/console": "~2.3|~3.0", 1371 | "symfony/yaml": "~2.3|~3.0" 1372 | }, 1373 | "type": "symfony-bundle", 1374 | "extra": { 1375 | "branch-alias": { 1376 | "dev-master": "2.8.x-dev" 1377 | } 1378 | }, 1379 | "autoload": { 1380 | "psr-4": { 1381 | "Symfony\\Bundle\\MonologBundle\\": "" 1382 | } 1383 | }, 1384 | "notification-url": "https://packagist.org/downloads/", 1385 | "license": [ 1386 | "MIT" 1387 | ], 1388 | "authors": [ 1389 | { 1390 | "name": "Symfony Community", 1391 | "homepage": "http://symfony.com/contributors" 1392 | }, 1393 | { 1394 | "name": "Fabien Potencier", 1395 | "email": "fabien@symfony.com" 1396 | } 1397 | ], 1398 | "description": "Symfony MonologBundle", 1399 | "homepage": "http://symfony.com", 1400 | "keywords": [ 1401 | "log", 1402 | "logging" 1403 | ], 1404 | "time": "2015-11-17 10:02:29" 1405 | }, 1406 | { 1407 | "name": "symfony/swiftmailer-bundle", 1408 | "version": "v2.3.8", 1409 | "source": { 1410 | "type": "git", 1411 | "url": "https://github.com/symfony/swiftmailer-bundle.git", 1412 | "reference": "970b13d01871207e81d17b17ddda025e7e21e797" 1413 | }, 1414 | "dist": { 1415 | "type": "zip", 1416 | "url": "https://api.github.com/repos/symfony/swiftmailer-bundle/zipball/970b13d01871207e81d17b17ddda025e7e21e797", 1417 | "reference": "970b13d01871207e81d17b17ddda025e7e21e797", 1418 | "shasum": "" 1419 | }, 1420 | "require": { 1421 | "php": ">=5.3.2", 1422 | "swiftmailer/swiftmailer": ">=4.2.0,~5.0", 1423 | "symfony/swiftmailer-bridge": "~2.1" 1424 | }, 1425 | "require-dev": { 1426 | "symfony/config": "~2.1", 1427 | "symfony/dependency-injection": "~2.1", 1428 | "symfony/http-kernel": "~2.1", 1429 | "symfony/yaml": "~2.1" 1430 | }, 1431 | "suggest": { 1432 | "psr/log": "Allows logging" 1433 | }, 1434 | "type": "symfony-bundle", 1435 | "extra": { 1436 | "branch-alias": { 1437 | "dev-master": "2.3-dev" 1438 | } 1439 | }, 1440 | "autoload": { 1441 | "psr-4": { 1442 | "Symfony\\Bundle\\SwiftmailerBundle\\": "" 1443 | } 1444 | }, 1445 | "notification-url": "https://packagist.org/downloads/", 1446 | "license": [ 1447 | "MIT" 1448 | ], 1449 | "authors": [ 1450 | { 1451 | "name": "Symfony Community", 1452 | "homepage": "http://symfony.com/contributors" 1453 | }, 1454 | { 1455 | "name": "Fabien Potencier", 1456 | "email": "fabien@symfony.com" 1457 | } 1458 | ], 1459 | "description": "Symfony SwiftmailerBundle", 1460 | "homepage": "http://symfony.com", 1461 | "time": "2014-12-01 17:44:50" 1462 | }, 1463 | { 1464 | "name": "symfony/symfony", 1465 | "version": "v2.7.7", 1466 | "source": { 1467 | "type": "git", 1468 | "url": "https://github.com/symfony/symfony.git", 1469 | "reference": "cc69dbd24b4b2e6de60b2414ef95da2794f459a2" 1470 | }, 1471 | "dist": { 1472 | "type": "zip", 1473 | "url": "https://api.github.com/repos/symfony/symfony/zipball/cc69dbd24b4b2e6de60b2414ef95da2794f459a2", 1474 | "reference": "cc69dbd24b4b2e6de60b2414ef95da2794f459a2", 1475 | "shasum": "" 1476 | }, 1477 | "require": { 1478 | "doctrine/common": "~2.4", 1479 | "php": ">=5.3.9", 1480 | "psr/log": "~1.0", 1481 | "twig/twig": "~1.23|~2.0" 1482 | }, 1483 | "replace": { 1484 | "symfony/asset": "self.version", 1485 | "symfony/browser-kit": "self.version", 1486 | "symfony/class-loader": "self.version", 1487 | "symfony/config": "self.version", 1488 | "symfony/console": "self.version", 1489 | "symfony/css-selector": "self.version", 1490 | "symfony/debug": "self.version", 1491 | "symfony/debug-bundle": "self.version", 1492 | "symfony/dependency-injection": "self.version", 1493 | "symfony/doctrine-bridge": "self.version", 1494 | "symfony/dom-crawler": "self.version", 1495 | "symfony/event-dispatcher": "self.version", 1496 | "symfony/expression-language": "self.version", 1497 | "symfony/filesystem": "self.version", 1498 | "symfony/finder": "self.version", 1499 | "symfony/form": "self.version", 1500 | "symfony/framework-bundle": "self.version", 1501 | "symfony/http-foundation": "self.version", 1502 | "symfony/http-kernel": "self.version", 1503 | "symfony/intl": "self.version", 1504 | "symfony/locale": "self.version", 1505 | "symfony/monolog-bridge": "self.version", 1506 | "symfony/options-resolver": "self.version", 1507 | "symfony/process": "self.version", 1508 | "symfony/property-access": "self.version", 1509 | "symfony/proxy-manager-bridge": "self.version", 1510 | "symfony/routing": "self.version", 1511 | "symfony/security": "self.version", 1512 | "symfony/security-acl": "self.version", 1513 | "symfony/security-bundle": "self.version", 1514 | "symfony/security-core": "self.version", 1515 | "symfony/security-csrf": "self.version", 1516 | "symfony/security-http": "self.version", 1517 | "symfony/serializer": "self.version", 1518 | "symfony/stopwatch": "self.version", 1519 | "symfony/swiftmailer-bridge": "self.version", 1520 | "symfony/templating": "self.version", 1521 | "symfony/translation": "self.version", 1522 | "symfony/twig-bridge": "self.version", 1523 | "symfony/twig-bundle": "self.version", 1524 | "symfony/validator": "self.version", 1525 | "symfony/var-dumper": "self.version", 1526 | "symfony/web-profiler-bundle": "self.version", 1527 | "symfony/yaml": "self.version" 1528 | }, 1529 | "require-dev": { 1530 | "doctrine/data-fixtures": "1.0.*", 1531 | "doctrine/dbal": "~2.4", 1532 | "doctrine/doctrine-bundle": "~1.2", 1533 | "doctrine/orm": "~2.4,>=2.4.5", 1534 | "egulias/email-validator": "~1.2", 1535 | "ircmaxell/password-compat": "~1.0", 1536 | "monolog/monolog": "~1.11", 1537 | "ocramius/proxy-manager": "~0.4|~1.0" 1538 | }, 1539 | "type": "library", 1540 | "extra": { 1541 | "branch-alias": { 1542 | "dev-master": "2.7-dev" 1543 | } 1544 | }, 1545 | "autoload": { 1546 | "psr-4": { 1547 | "Symfony\\Bridge\\Doctrine\\": "src/Symfony/Bridge/Doctrine/", 1548 | "Symfony\\Bridge\\Monolog\\": "src/Symfony/Bridge/Monolog/", 1549 | "Symfony\\Bridge\\ProxyManager\\": "src/Symfony/Bridge/ProxyManager/", 1550 | "Symfony\\Bridge\\Swiftmailer\\": "src/Symfony/Bridge/Swiftmailer/", 1551 | "Symfony\\Bridge\\Twig\\": "src/Symfony/Bridge/Twig/", 1552 | "Symfony\\Bundle\\": "src/Symfony/Bundle/", 1553 | "Symfony\\Component\\": "src/Symfony/Component/" 1554 | }, 1555 | "classmap": [ 1556 | "src/Symfony/Component/HttpFoundation/Resources/stubs", 1557 | "src/Symfony/Component/Intl/Resources/stubs" 1558 | ], 1559 | "files": [ 1560 | "src/Symfony/Component/Intl/Resources/stubs/functions.php" 1561 | ], 1562 | "exclude-from-classmap": [ 1563 | "**/Tests/" 1564 | ] 1565 | }, 1566 | "notification-url": "https://packagist.org/downloads/", 1567 | "license": [ 1568 | "MIT" 1569 | ], 1570 | "authors": [ 1571 | { 1572 | "name": "Fabien Potencier", 1573 | "email": "fabien@symfony.com" 1574 | }, 1575 | { 1576 | "name": "Symfony Community", 1577 | "homepage": "https://symfony.com/contributors" 1578 | } 1579 | ], 1580 | "description": "The Symfony PHP framework", 1581 | "homepage": "https://symfony.com", 1582 | "keywords": [ 1583 | "framework" 1584 | ], 1585 | "time": "2015-11-23 11:58:08" 1586 | }, 1587 | { 1588 | "name": "twig/twig", 1589 | "version": "v1.23.1", 1590 | "source": { 1591 | "type": "git", 1592 | "url": "https://github.com/twigphp/Twig.git", 1593 | "reference": "d9b6333ae8dd2c8e3fd256e127548def0bc614c6" 1594 | }, 1595 | "dist": { 1596 | "type": "zip", 1597 | "url": "https://api.github.com/repos/twigphp/Twig/zipball/d9b6333ae8dd2c8e3fd256e127548def0bc614c6", 1598 | "reference": "d9b6333ae8dd2c8e3fd256e127548def0bc614c6", 1599 | "shasum": "" 1600 | }, 1601 | "require": { 1602 | "php": ">=5.2.7" 1603 | }, 1604 | "require-dev": { 1605 | "symfony/debug": "~2.7", 1606 | "symfony/phpunit-bridge": "~2.7" 1607 | }, 1608 | "type": "library", 1609 | "extra": { 1610 | "branch-alias": { 1611 | "dev-master": "1.23-dev" 1612 | } 1613 | }, 1614 | "autoload": { 1615 | "psr-0": { 1616 | "Twig_": "lib/" 1617 | } 1618 | }, 1619 | "notification-url": "https://packagist.org/downloads/", 1620 | "license": [ 1621 | "BSD-3-Clause" 1622 | ], 1623 | "authors": [ 1624 | { 1625 | "name": "Fabien Potencier", 1626 | "email": "fabien@symfony.com", 1627 | "homepage": "http://fabien.potencier.org", 1628 | "role": "Lead Developer" 1629 | }, 1630 | { 1631 | "name": "Armin Ronacher", 1632 | "email": "armin.ronacher@active-4.com", 1633 | "role": "Project Founder" 1634 | }, 1635 | { 1636 | "name": "Twig Team", 1637 | "homepage": "http://twig.sensiolabs.org/contributors", 1638 | "role": "Contributors" 1639 | } 1640 | ], 1641 | "description": "Twig, the flexible, fast, and secure template language for PHP", 1642 | "homepage": "http://twig.sensiolabs.org", 1643 | "keywords": [ 1644 | "templating" 1645 | ], 1646 | "time": "2015-11-05 12:49:06" 1647 | } 1648 | ], 1649 | "packages-dev": [ 1650 | { 1651 | "name": "sensio/generator-bundle", 1652 | "version": "v2.5.3", 1653 | "target-dir": "Sensio/Bundle/GeneratorBundle", 1654 | "source": { 1655 | "type": "git", 1656 | "url": "https://github.com/sensiolabs/SensioGeneratorBundle.git", 1657 | "reference": "e50108c2133ee5c9c484555faed50c17a61221d3" 1658 | }, 1659 | "dist": { 1660 | "type": "zip", 1661 | "url": "https://api.github.com/repos/sensiolabs/SensioGeneratorBundle/zipball/e50108c2133ee5c9c484555faed50c17a61221d3", 1662 | "reference": "e50108c2133ee5c9c484555faed50c17a61221d3", 1663 | "shasum": "" 1664 | }, 1665 | "require": { 1666 | "symfony/console": "~2.5", 1667 | "symfony/framework-bundle": "~2.2" 1668 | }, 1669 | "require-dev": { 1670 | "doctrine/orm": "~2.2,>=2.2.3", 1671 | "symfony/doctrine-bridge": "~2.2", 1672 | "twig/twig": "~1.11" 1673 | }, 1674 | "type": "symfony-bundle", 1675 | "extra": { 1676 | "branch-alias": { 1677 | "dev-master": "2.5.x-dev" 1678 | } 1679 | }, 1680 | "autoload": { 1681 | "psr-0": { 1682 | "Sensio\\Bundle\\GeneratorBundle": "" 1683 | } 1684 | }, 1685 | "notification-url": "https://packagist.org/downloads/", 1686 | "license": [ 1687 | "MIT" 1688 | ], 1689 | "authors": [ 1690 | { 1691 | "name": "Fabien Potencier", 1692 | "email": "fabien@symfony.com" 1693 | } 1694 | ], 1695 | "description": "This bundle generates code for you", 1696 | "time": "2015-03-17 06:36:52" 1697 | }, 1698 | { 1699 | "name": "symfony/phpunit-bridge", 1700 | "version": "v2.7.7", 1701 | "source": { 1702 | "type": "git", 1703 | "url": "https://github.com/symfony/phpunit-bridge.git", 1704 | "reference": "e960e64acbed50e49818eb78840486c8d7fe1bed" 1705 | }, 1706 | "dist": { 1707 | "type": "zip", 1708 | "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/e960e64acbed50e49818eb78840486c8d7fe1bed", 1709 | "reference": "e960e64acbed50e49818eb78840486c8d7fe1bed", 1710 | "shasum": "" 1711 | }, 1712 | "require": { 1713 | "php": ">=5.3.9" 1714 | }, 1715 | "suggest": { 1716 | "symfony/debug": "For tracking deprecated interfaces usages at runtime with DebugClassLoader" 1717 | }, 1718 | "type": "symfony-bridge", 1719 | "extra": { 1720 | "branch-alias": { 1721 | "dev-master": "2.7-dev" 1722 | } 1723 | }, 1724 | "autoload": { 1725 | "files": [ 1726 | "bootstrap.php" 1727 | ], 1728 | "psr-4": { 1729 | "Symfony\\Bridge\\PhpUnit\\": "" 1730 | }, 1731 | "exclude-from-classmap": [ 1732 | "/Tests/" 1733 | ] 1734 | }, 1735 | "notification-url": "https://packagist.org/downloads/", 1736 | "license": [ 1737 | "MIT" 1738 | ], 1739 | "authors": [ 1740 | { 1741 | "name": "Nicolas Grekas", 1742 | "email": "p@tchwork.com" 1743 | }, 1744 | { 1745 | "name": "Symfony Community", 1746 | "homepage": "https://symfony.com/contributors" 1747 | } 1748 | ], 1749 | "description": "Symfony PHPUnit Bridge", 1750 | "homepage": "https://symfony.com", 1751 | "time": "2015-11-06 10:15:01" 1752 | } 1753 | ], 1754 | "aliases": [], 1755 | "minimum-stability": "stable", 1756 | "stability-flags": [], 1757 | "prefer-stable": false, 1758 | "prefer-lowest": false, 1759 | "platform": { 1760 | "php": ">=5.3.9" 1761 | }, 1762 | "platform-dev": [] 1763 | } 1764 | --------------------------------------------------------------------------------