├── app ├── logs │ └── .gitkeep ├── .htaccess ├── config │ ├── routing.yml │ ├── config_test.yml │ ├── routing_dev.yml │ ├── config_prod.yml │ ├── parameters.yml.dist │ ├── config_dev.yml │ ├── security.yml │ └── config.yml ├── AppCache.php ├── autoload.php ├── Resources │ └── views │ │ └── base.html.twig ├── console ├── AppKernel.php ├── phpunit.xml.dist ├── check.php └── SymfonyRequirements.php ├── src └── .htaccess ├── web ├── favicon.ico ├── apple-touch-icon.png ├── robots.txt ├── app.php ├── app_dev.php ├── .htaccess └── config.php ├── .travis.yml ├── .gitignore ├── LICENSE ├── README.md ├── composer.json └── composer.lock /app/logs/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/.htaccess: -------------------------------------------------------------------------------- 1 | deny from all -------------------------------------------------------------------------------- /src/.htaccess: -------------------------------------------------------------------------------- 1 | deny from all -------------------------------------------------------------------------------- /web/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/prismicio/php-symfony-starter/master/web/favicon.ico -------------------------------------------------------------------------------- /web/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/prismicio/php-symfony-starter/master/web/apple-touch-icon.png -------------------------------------------------------------------------------- /app/config/routing.yml: -------------------------------------------------------------------------------- 1 | prismic: 2 | resource: "@PrismicBundle/Resources/config/routing.xml" 3 | prefix: / 4 | 5 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: php 2 | 3 | php: 4 | - 5.3.3 5 | - 5.3 6 | - 5.4 7 | 8 | before_script: composer install -n 9 | 10 | script: phpunit -c app 11 | -------------------------------------------------------------------------------- /app/AppCache.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {% block title %}Welcome!{% endblock %} 6 | {% block stylesheets %}{% endblock %} 7 | 8 | 9 | 14 | 15 | 16 | 17 | {% block body %}{% endblock %} 18 | {% block javascripts %}{% endblock %} 19 | 20 | 21 | -------------------------------------------------------------------------------- /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 | firephp: 21 | type: firephp 22 | level: info 23 | chromephp: 24 | type: chromephp 25 | level: info 26 | 27 | assetic: 28 | use_controller: true 29 | 30 | #swiftmailer: 31 | # delivery_address: me@example.com 32 | -------------------------------------------------------------------------------- /web/app.php: -------------------------------------------------------------------------------- 1 | register(true); 14 | */ 15 | 16 | require_once __DIR__.'/../app/AppKernel.php'; 17 | //require_once __DIR__.'/../app/AppCache.php'; 18 | 19 | $kernel = new AppKernel('prod', false); 20 | $kernel->loadClassCache(); 21 | //$kernel = new AppCache($kernel); 22 | $request = Request::createFromGlobals(); 23 | $response = $kernel->handle($request); 24 | $response->send(); 25 | $kernel->terminate($request, $response); 26 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2004-2013 Fabien Potencier 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is furnished 8 | to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /web/app_dev.php: -------------------------------------------------------------------------------- 1 | loadClassCache(); 27 | $request = Request::createFromGlobals(); 28 | $response = $kernel->handle($request); 29 | $response->send(); 30 | $kernel->terminate($request, $response); 31 | -------------------------------------------------------------------------------- /app/config/security.yml: -------------------------------------------------------------------------------- 1 | security: 2 | encoders: 3 | Symfony\Component\Security\Core\User\User: plaintext 4 | 5 | role_hierarchy: 6 | ROLE_ADMIN: ROLE_USER 7 | ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH] 8 | 9 | providers: 10 | in_memory: 11 | memory: 12 | users: 13 | user: { password: userpass, roles: [ 'ROLE_USER' ] } 14 | admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] } 15 | 16 | firewalls: 17 | dev: 18 | pattern: ^/(_(profiler|wdt)|css|images|js)/ 19 | security: false 20 | 21 | login: 22 | pattern: ^/demo/secured/login$ 23 | security: false 24 | 25 | secured_area: 26 | pattern: ^/demo/secured/ 27 | form_login: 28 | check_path: _security_check 29 | login_path: _demo_login 30 | logout: 31 | path: _demo_logout 32 | target: _demo 33 | #anonymous: ~ 34 | #http_basic: 35 | # realm: "Secured Demo Area" 36 | 37 | access_control: 38 | - { path: ^/demo/secured/hello/admin/, roles: ROLE_ADMIN } 39 | #- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https } 40 | -------------------------------------------------------------------------------- /app/AppKernel.php: -------------------------------------------------------------------------------- 1 | getEnvironment(), array('dev', 'test'))) { 23 | $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle(); 24 | $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle(); 25 | $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle(); 26 | } 27 | 28 | return $bundles; 29 | } 30 | 31 | public function registerContainerConfiguration(LoaderInterface $loader) 32 | { 33 | $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml'); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/phpunit.xml.dist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 15 | 16 | 17 | 18 | ../src/*/*Bundle/Tests 19 | ../src/*/Bundle/*Bundle/Tests 20 | 21 | 22 | 23 | 28 | 29 | 30 | 31 | ../src 32 | 33 | ../src/*/*Bundle/Resources 34 | ../src/*/*Bundle/Tests 35 | ../src/*/Bundle/*Bundle/Resources 36 | ../src/*/Bundle/*Bundle/Tests 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /app/check.php: -------------------------------------------------------------------------------- 1 | getPhpIniConfigPath(); 8 | 9 | echo "********************************\n"; 10 | echo "* *\n"; 11 | echo "* Symfony requirements check *\n"; 12 | echo "* *\n"; 13 | echo "********************************\n\n"; 14 | 15 | echo $iniPath ? sprintf("* Configuration file used by PHP: %s\n\n", $iniPath) : "* WARNING: No configuration file (php.ini) used by PHP!\n\n"; 16 | 17 | echo "** ATTENTION **\n"; 18 | echo "* The PHP CLI can use a different php.ini file\n"; 19 | echo "* than the one used with your web server.\n"; 20 | if ('\\' == DIRECTORY_SEPARATOR) { 21 | echo "* (especially on the Windows platform)\n"; 22 | } 23 | echo "* To be on the safe side, please also launch the requirements check\n"; 24 | echo "* from your web server using the web/config.php script.\n"; 25 | 26 | echo_title('Mandatory requirements'); 27 | 28 | $checkPassed = true; 29 | foreach ($symfonyRequirements->getRequirements() as $req) { 30 | /** @var $req Requirement */ 31 | echo_requirement($req); 32 | if (!$req->isFulfilled()) { 33 | $checkPassed = false; 34 | } 35 | } 36 | 37 | echo_title('Optional recommendations'); 38 | 39 | foreach ($symfonyRequirements->getRecommendations() as $req) { 40 | echo_requirement($req); 41 | } 42 | 43 | exit($checkPassed ? 0 : 1); 44 | 45 | /** 46 | * Prints a Requirement instance 47 | */ 48 | function echo_requirement(Requirement $requirement) 49 | { 50 | $result = $requirement->isFulfilled() ? 'OK' : ($requirement->isOptional() ? 'WARNING' : 'ERROR'); 51 | echo ' ' . str_pad($result, 9); 52 | echo $requirement->getTestMessage() . "\n"; 53 | 54 | if (!$requirement->isFulfilled()) { 55 | echo sprintf(" %s\n\n", $requirement->getHelpText()); 56 | } 57 | } 58 | 59 | function echo_title($title) 60 | { 61 | echo "\n** $title **\n\n"; 62 | } 63 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Starter for Symfony PHP projects 2 | 3 | ## :warning: UNMAINTAINED PROJECT :warning: 4 | 5 | This project is now unmaintained and becomes more and more outdated comparing to the evolution of the Symfony framework. We invite you to read our [PHP documentation](https://prismic.io/docs/php/getting-started/with-the-php-starter-kit) and integrate yourself our [PHP SDK](https://packagist.org/packages/prismic/php-sdk) in your Symfony project. 6 | 7 | ### Info 8 | 9 | This is a blank [Symfony](http://symfony.com) project that will connect to any [prismic.io](https://prismic.io) repository. It uses the prismic.io PHP development kit, and provide a few helpers to integrate with the Symfony framework. 10 | 11 | > This is a starter project, you are encouraged to use it to bootstrap your own project, or as inspiration to understand how you can integrate the prismic.io developement kit with a Symfony project. 12 | 13 | ### How to start? 14 | 15 | curl -s http://getcomposer.org/installer | php -- 16 | php composer.phar create-project prismic/symfony-starter php-symfony-starter 17 | cd php-symfony-starter 18 | sudo chmod -R 777 app/cache app/logs 19 | 20 | Launch the application in your browser (the URL should be something like http://localhost/php-symfony-starter/web/app_dev.php/). 21 | 22 | ### Reporting an issue 23 | 24 | Note that this starter project is almost entirely based on [the official prismic.io SymfonyBundle](https://github.com/prismicio/SymfonyBundle); please report any issue over there. 25 | 26 | ### Licence 27 | 28 | This software is licensed under the Apache 2 license, quoted below. 29 | 30 | Copyright 2013 Zengularity (http://www.zengularity.com). 31 | 32 | Licensed under the Apache License, Version 2.0 (the "License"); you may not use this project except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0. 33 | 34 | Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. 35 | -------------------------------------------------------------------------------- /app/config/config.yml: -------------------------------------------------------------------------------- 1 | imports: 2 | - { resource: parameters.yml } 3 | - { resource: security.yml } 4 | 5 | framework: 6 | #esi: ~ 7 | #translator: { fallback: %locale% } 8 | secret: %secret% 9 | router: 10 | resource: "%kernel.root_dir%/config/routing.yml" 11 | strict_requirements: ~ 12 | form: ~ 13 | csrf_protection: ~ 14 | validation: { enable_annotations: true } 15 | templating: 16 | engines: ['twig'] 17 | #assets_version: SomeVersionScheme 18 | default_locale: "%locale%" 19 | trusted_proxies: ~ 20 | session: ~ 21 | fragments: ~ 22 | http_method_override: true 23 | 24 | # Twig Configuration 25 | twig: 26 | debug: %kernel.debug% 27 | strict_variables: %kernel.debug% 28 | 29 | # Assetic Configuration 30 | assetic: 31 | debug: %kernel.debug% 32 | use_controller: false 33 | bundles: [ ] 34 | #java: /usr/bin/java 35 | filters: 36 | cssrewrite: ~ 37 | #closure: 38 | # jar: %kernel.root_dir%/Resources/java/compiler.jar 39 | #yui_css: 40 | # jar: %kernel.root_dir%/Resources/java/yuicompressor-2.4.7.jar 41 | 42 | # Doctrine Configuration 43 | doctrine: 44 | dbal: 45 | driver: %database_driver% 46 | host: %database_host% 47 | port: %database_port% 48 | dbname: %database_name% 49 | user: %database_user% 50 | password: %database_password% 51 | charset: UTF8 52 | # if using pdo_sqlite as your database driver, add the path in parameters.yml 53 | # e.g. database_path: %kernel.root_dir%/data/data.db3 54 | # path: %database_path% 55 | 56 | orm: 57 | auto_generate_proxy_classes: %kernel.debug% 58 | auto_mapping: true 59 | 60 | # Swiftmailer Configuration 61 | swiftmailer: 62 | transport: %mailer_transport% 63 | host: %mailer_host% 64 | username: %mailer_user% 65 | password: %mailer_password% 66 | spool: { type: memory } 67 | 68 | prismic: 69 | api: 70 | endpoint: %prismic_endpoint% 71 | access_token: %prismic_access_token% 72 | client_id: %prismic_client_id% 73 | client_secret: %prismic_client_secret% 74 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "prismic/symfony-starter", 3 | "license": "MIT", 4 | "type": "project", 5 | "description": "This is a blank Symfony project that will connect to any prismic.io repository.", 6 | "autoload": { 7 | "psr-0": { "": "src/" } 8 | }, 9 | "require": { 10 | "php": ">=5.3.3", 11 | "symfony/symfony": "2.6.*", 12 | "doctrine/orm": ">=2.2.3,<2.4-dev", 13 | "doctrine/doctrine-bundle": "1.2.*", 14 | "twig/extensions": "1.0.*", 15 | "symfony/assetic-bundle": "2.3.*", 16 | "symfony/swiftmailer-bundle": "2.3.*", 17 | "symfony/monolog-bundle": "2.3.*", 18 | "sensio/distribution-bundle": "2.3.*", 19 | "sensio/framework-extra-bundle": "2.3.*", 20 | "sensio/generator-bundle": "2.3.*", 21 | "incenteev/composer-parameter-handler": "~2.0", 22 | "prismic/prismic-bundle": "dev-master" 23 | }, 24 | "scripts": { 25 | "post-install-cmd": [ 26 | "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters", 27 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", 28 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", 29 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", 30 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile" 31 | ], 32 | "post-update-cmd": [ 33 | "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters", 34 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", 35 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", 36 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", 37 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile" 38 | ] 39 | }, 40 | "config": { 41 | "bin-dir": "bin" 42 | }, 43 | "minimum-stability": "stable", 44 | "extra": { 45 | "symfony-app-dir": "app", 46 | "symfony-web-dir": "web", 47 | "incenteev-parameters": { 48 | "file": "app/config/parameters.yml" 49 | }, 50 | "branch-alias": { 51 | "dev-master": "2.3-dev" 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /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 | 9 | RewriteEngine On 10 | 11 | # Determine the RewriteBase automatically and set it as environment variable. 12 | # If you are using Apache aliases to do mass virtual hosting or installed the 13 | # project in a subdirectory, the base path will be prepended to allow proper 14 | # resolution of the app.php file and to redirect to the correct URI. It will 15 | # work in environments without path prefix as well, providing a safe, one-size 16 | # fits all solution. But as you do not need it in this case, you can comment 17 | # the following 2 lines to eliminate the overhead. 18 | RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$ 19 | RewriteRule ^(.*) - [E=BASE:%1] 20 | 21 | # Redirect to URI without front controller to prevent duplicate content 22 | # (with and without `/app.php`). Only do this redirect on the initial 23 | # rewrite by Apache and not on subsequent cycles. Otherwise we would get an 24 | # endless redirect loop (request -> rewrite to front controller -> 25 | # redirect -> request -> ...). 26 | # So in case you get a "too many redirects" error or you always get redirected 27 | # to the start page because your Apache does not expose the REDIRECT_STATUS 28 | # environment variable, you have 2 choices: 29 | # - disable this feature by commenting the following 2 lines or 30 | # - use Apache >= 2.3.9 and replace all L flags by END flags and remove the 31 | # following RewriteCond (best solution) 32 | RewriteCond %{ENV:REDIRECT_STATUS} ^$ 33 | RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L] 34 | 35 | # If the requested filename exists, simply serve it. 36 | # We only want to let Apache serve files and not directories. 37 | RewriteCond %{REQUEST_FILENAME} -f 38 | RewriteRule .? - [L] 39 | 40 | # Rewrite all other queries to the front controller. 41 | RewriteRule .? %{ENV:BASE}/app.php [L] 42 | 43 | 44 | 45 | 46 | # When mod_rewrite is not available, we instruct a temporary redirect of 47 | # the start page to the front controller explicitly so that the website 48 | # and the generated links can still be used. 49 | RedirectMatch 302 ^/$ /app.php/ 50 | # RedirectTemp cannot be used instead 51 | 52 | 53 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 Boolean $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 Boolean $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 = (Boolean) $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 = (Boolean) $optional; 57 | } 58 | 59 | /** 60 | * Returns whether the requirement is fulfilled. 61 | * 62 | * @return Boolean 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 Boolean 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 Boolean|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 Boolean $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 Boolean $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 Boolean $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 Boolean $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 Boolean|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 Boolean $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 Boolean|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 Boolean $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 Boolean 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 | $baseDir = basename(__DIR__); 413 | 414 | $this->addRequirement( 415 | is_writable(__DIR__.'/cache'), 416 | "$baseDir/cache/ directory must be writable", 417 | "Change the permissions of the \"$baseDir/cache/\" directory so that the web server can write into it." 418 | ); 419 | 420 | $this->addRequirement( 421 | is_writable(__DIR__.'/logs'), 422 | "$baseDir/logs/ directory must be writable", 423 | "Change the permissions of the \"$baseDir/logs/\" directory so that the web server can write into it." 424 | ); 425 | 426 | $this->addPhpIniRequirement( 427 | 'date.timezone', true, false, 428 | 'date.timezone setting must be set', 429 | 'Set the "date.timezone" setting in php.ini* (like Europe/Paris).' 430 | ); 431 | 432 | if (version_compare($installedPhpVersion, self::REQUIRED_PHP_VERSION, '>=')) { 433 | $timezones = array(); 434 | foreach (DateTimeZone::listAbbreviations() as $abbreviations) { 435 | foreach ($abbreviations as $abbreviation) { 436 | $timezones[$abbreviation['timezone_id']] = true; 437 | } 438 | } 439 | 440 | $this->addRequirement( 441 | isset($timezones[date_default_timezone_get()]), 442 | sprintf('Configured default timezone "%s" must be supported by your installation of PHP', date_default_timezone_get()), 443 | '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.' 444 | ); 445 | } 446 | 447 | $this->addRequirement( 448 | function_exists('json_encode'), 449 | 'json_encode() must be available', 450 | 'Install and enable the JSON extension.' 451 | ); 452 | 453 | $this->addRequirement( 454 | function_exists('session_start'), 455 | 'session_start() must be available', 456 | 'Install and enable the session extension.' 457 | ); 458 | 459 | $this->addRequirement( 460 | function_exists('ctype_alpha'), 461 | 'ctype_alpha() must be available', 462 | 'Install and enable the ctype extension.' 463 | ); 464 | 465 | $this->addRequirement( 466 | function_exists('token_get_all'), 467 | 'token_get_all() must be available', 468 | 'Install and enable the Tokenizer extension.' 469 | ); 470 | 471 | $this->addRequirement( 472 | function_exists('simplexml_import_dom'), 473 | 'simplexml_import_dom() must be available', 474 | 'Install and enable the SimpleXML extension.' 475 | ); 476 | 477 | if (function_exists('apc_store') && ini_get('apc.enabled')) { 478 | if (version_compare($installedPhpVersion, '5.4.0', '>=')) { 479 | $this->addRequirement( 480 | version_compare(phpversion('apc'), '3.1.13', '>='), 481 | 'APC version must be at least 3.1.13 when using PHP 5.4', 482 | 'Upgrade your APC extension (3.1.13+).' 483 | ); 484 | } else { 485 | $this->addRequirement( 486 | version_compare(phpversion('apc'), '3.0.17', '>='), 487 | 'APC version must be at least 3.0.17', 488 | 'Upgrade your APC extension (3.0.17+).' 489 | ); 490 | } 491 | } 492 | 493 | $this->addPhpIniRequirement('detect_unicode', false); 494 | 495 | if (extension_loaded('suhosin')) { 496 | $this->addPhpIniRequirement( 497 | 'suhosin.executor.include.whitelist', 498 | create_function('$cfgValue', 'return false !== stripos($cfgValue, "phar");'), 499 | false, 500 | 'suhosin.executor.include.whitelist must be configured correctly in php.ini', 501 | 'Add "phar" to suhosin.executor.include.whitelist in php.ini*.' 502 | ); 503 | } 504 | 505 | if (extension_loaded('xdebug')) { 506 | $this->addPhpIniRequirement( 507 | 'xdebug.show_exception_trace', false, true 508 | ); 509 | 510 | $this->addPhpIniRequirement( 511 | 'xdebug.scream', false, true 512 | ); 513 | 514 | $this->addPhpIniRecommendation( 515 | 'xdebug.max_nesting_level', 516 | create_function('$cfgValue', 'return $cfgValue > 100;'), 517 | true, 518 | 'xdebug.max_nesting_level should be above 100 in php.ini', 519 | '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.' 520 | ); 521 | } 522 | 523 | $pcreVersion = defined('PCRE_VERSION') ? (float) PCRE_VERSION : null; 524 | 525 | $this->addRequirement( 526 | null !== $pcreVersion, 527 | 'PCRE extension must be available', 528 | 'Install the PCRE extension (version 8.0+).' 529 | ); 530 | 531 | /* optional recommendations follow */ 532 | 533 | if (file_exists(__DIR__.'/../vendor/composer')) { 534 | require_once __DIR__.'/../vendor/autoload.php'; 535 | 536 | try { 537 | $r = new \ReflectionClass('Sensio\Bundle\DistributionBundle\SensioDistributionBundle'); 538 | 539 | $contents = file_get_contents(dirname($r->getFileName()).'/Resources/skeleton/app/SymfonyRequirements.php'); 540 | } catch (\ReflectionException $e) { 541 | $contents = ''; 542 | } 543 | $this->addRecommendation( 544 | file_get_contents(__FILE__) === $contents, 545 | 'Requirements file should be up-to-date', 546 | 'Your requirements file is outdated. Run composer install and re-check your configuration.' 547 | ); 548 | } 549 | 550 | $this->addRecommendation( 551 | version_compare($installedPhpVersion, '5.3.4', '>='), 552 | 'You should use at least PHP 5.3.4 due to PHP bug #52083 in earlier versions', 553 | '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.' 554 | ); 555 | 556 | $this->addRecommendation( 557 | version_compare($installedPhpVersion, '5.3.8', '>='), 558 | 'When using annotations you should have at least PHP 5.3.8 due to PHP bug #55156', 559 | 'Install PHP 5.3.8 or newer if your project uses annotations.' 560 | ); 561 | 562 | $this->addRecommendation( 563 | version_compare($installedPhpVersion, '5.4.0', '!='), 564 | 'You should not use PHP 5.4.0 due to the PHP bug #61453', 565 | '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.' 566 | ); 567 | 568 | $this->addRecommendation( 569 | version_compare($installedPhpVersion, '5.4.11', '>='), 570 | '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)', 571 | 'Install PHP 5.4.11 or newer if your project uses the logout handler from the Symfony Security Component.' 572 | ); 573 | 574 | $this->addRecommendation( 575 | (version_compare($installedPhpVersion, '5.3.18', '>=') && version_compare($installedPhpVersion, '5.4.0', '<')) 576 | || 577 | version_compare($installedPhpVersion, '5.4.8', '>='), 578 | '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', 579 | 'Install PHP 5.3.18+ or PHP 5.4.8+ if you want nice error messages for all fatal errors in the development environment.' 580 | ); 581 | 582 | if (null !== $pcreVersion) { 583 | $this->addRecommendation( 584 | $pcreVersion >= 8.0, 585 | sprintf('PCRE extension should be at least version 8.0 (%s installed)', $pcreVersion), 586 | '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.' 587 | ); 588 | } 589 | 590 | $this->addRecommendation( 591 | class_exists('DomDocument'), 592 | 'PHP-DOM and PHP-XML modules should be installed', 593 | 'Install and enable the PHP-DOM and the PHP-XML modules.' 594 | ); 595 | 596 | $this->addRecommendation( 597 | function_exists('mb_strlen'), 598 | 'mb_strlen() should be available', 599 | 'Install and enable the mbstring extension.' 600 | ); 601 | 602 | $this->addRecommendation( 603 | function_exists('iconv'), 604 | 'iconv() should be available', 605 | 'Install and enable the iconv extension.' 606 | ); 607 | 608 | $this->addRecommendation( 609 | function_exists('utf8_decode'), 610 | 'utf8_decode() should be available', 611 | 'Install and enable the XML extension.' 612 | ); 613 | 614 | if (!defined('PHP_WINDOWS_VERSION_BUILD')) { 615 | $this->addRecommendation( 616 | function_exists('posix_isatty'), 617 | 'posix_isatty() should be available', 618 | 'Install and enable the php_posix extension (used to colorize the CLI output).' 619 | ); 620 | } 621 | 622 | $this->addRecommendation( 623 | class_exists('Locale'), 624 | 'intl extension should be available', 625 | 'Install and enable the intl extension (used for validators).' 626 | ); 627 | 628 | if (extension_loaded('intl')) { 629 | // in some WAMP server installations, new Collator() returns null 630 | $this->addRecommendation( 631 | null !== new Collator('fr_FR'), 632 | 'intl extension should be correctly configured', 633 | 'The intl extension does not behave properly. This problem is typical on PHP 5.3.X x64 WIN builds.' 634 | ); 635 | 636 | // check for compatible ICU versions (only done when you have the intl extension) 637 | if (defined('INTL_ICU_VERSION')) { 638 | $version = INTL_ICU_VERSION; 639 | } else { 640 | $reflector = new ReflectionExtension('intl'); 641 | 642 | ob_start(); 643 | $reflector->info(); 644 | $output = strip_tags(ob_get_clean()); 645 | 646 | preg_match('/^ICU version +(?:=> )?(.*)$/m', $output, $matches); 647 | $version = $matches[1]; 648 | } 649 | 650 | $this->addRecommendation( 651 | version_compare($version, '4.0', '>='), 652 | 'intl ICU version should be at least 4+', 653 | 'Upgrade your intl extension with a newer ICU version (4+).' 654 | ); 655 | 656 | $this->addPhpIniRecommendation( 657 | 'intl.error_level', 658 | create_function('$cfgValue', 'return (int) $cfgValue === 0;'), 659 | true, 660 | 'intl.error_level should be 0 in php.ini', 661 | 'Set "intl.error_level" to "0" in php.ini* to inhibit the messages when an error occurs in ICU functions.' 662 | ); 663 | } 664 | 665 | $accelerator = 666 | (extension_loaded('eaccelerator') && ini_get('eaccelerator.enable')) 667 | || 668 | (extension_loaded('apc') && ini_get('apc.enabled')) 669 | || 670 | (extension_loaded('Zend OPcache') && ini_get('opcache.enable')) 671 | || 672 | (extension_loaded('xcache') && ini_get('xcache.cacher')) 673 | || 674 | (extension_loaded('wincache') && ini_get('wincache.ocenabled')) 675 | ; 676 | 677 | $this->addRecommendation( 678 | $accelerator, 679 | 'a PHP accelerator should be installed', 680 | 'Install and enable a PHP accelerator like APC (highly recommended).' 681 | ); 682 | 683 | $this->addPhpIniRecommendation('short_open_tag', false); 684 | 685 | $this->addPhpIniRecommendation('magic_quotes_gpc', false, true); 686 | 687 | $this->addPhpIniRecommendation('register_globals', false, true); 688 | 689 | $this->addPhpIniRecommendation('session.auto_start', false); 690 | 691 | $this->addRecommendation( 692 | class_exists('PDO'), 693 | 'PDO should be installed', 694 | 'Install PDO (mandatory for Doctrine).' 695 | ); 696 | 697 | if (class_exists('PDO')) { 698 | $drivers = PDO::getAvailableDrivers(); 699 | $this->addRecommendation( 700 | count($drivers), 701 | sprintf('PDO should have some drivers installed (currently available: %s)', count($drivers) ? implode(', ', $drivers) : 'none'), 702 | 'Install PDO drivers (mandatory for Doctrine).' 703 | ); 704 | } 705 | } 706 | } 707 | -------------------------------------------------------------------------------- /composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", 5 | "This file is @generated automatically" 6 | ], 7 | "hash": "95eed05734d4b5702ead7bfa1c517f26", 8 | "packages": [ 9 | { 10 | "name": "doctrine/annotations", 11 | "version": "v1.2.7", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/doctrine/annotations.git", 15 | "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/doctrine/annotations/zipball/f25c8aab83e0c3e976fd7d19875f198ccf2f7535", 20 | "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "doctrine/lexer": "1.*", 25 | "php": ">=5.3.2" 26 | }, 27 | "require-dev": { 28 | "doctrine/cache": "1.*", 29 | "phpunit/phpunit": "4.*" 30 | }, 31 | "type": "library", 32 | "extra": { 33 | "branch-alias": { 34 | "dev-master": "1.3.x-dev" 35 | } 36 | }, 37 | "autoload": { 38 | "psr-0": { 39 | "Doctrine\\Common\\Annotations\\": "lib/" 40 | } 41 | }, 42 | "notification-url": "https://packagist.org/downloads/", 43 | "license": [ 44 | "MIT" 45 | ], 46 | "authors": [ 47 | { 48 | "name": "Roman Borschel", 49 | "email": "roman@code-factory.org" 50 | }, 51 | { 52 | "name": "Benjamin Eberlei", 53 | "email": "kontakt@beberlei.de" 54 | }, 55 | { 56 | "name": "Guilherme Blanco", 57 | "email": "guilhermeblanco@gmail.com" 58 | }, 59 | { 60 | "name": "Jonathan Wage", 61 | "email": "jonwage@gmail.com" 62 | }, 63 | { 64 | "name": "Johannes Schmitt", 65 | "email": "schmittjoh@gmail.com" 66 | } 67 | ], 68 | "description": "Docblock Annotations Parser", 69 | "homepage": "http://www.doctrine-project.org", 70 | "keywords": [ 71 | "annotations", 72 | "docblock", 73 | "parser" 74 | ], 75 | "time": "2015-08-31 12:32:49" 76 | }, 77 | { 78 | "name": "doctrine/cache", 79 | "version": "v1.4.2", 80 | "source": { 81 | "type": "git", 82 | "url": "https://github.com/doctrine/cache.git", 83 | "reference": "8c434000f420ade76a07c64cbe08ca47e5c101ca" 84 | }, 85 | "dist": { 86 | "type": "zip", 87 | "url": "https://api.github.com/repos/doctrine/cache/zipball/8c434000f420ade76a07c64cbe08ca47e5c101ca", 88 | "reference": "8c434000f420ade76a07c64cbe08ca47e5c101ca", 89 | "shasum": "" 90 | }, 91 | "require": { 92 | "php": ">=5.3.2" 93 | }, 94 | "conflict": { 95 | "doctrine/common": ">2.2,<2.4" 96 | }, 97 | "require-dev": { 98 | "phpunit/phpunit": ">=3.7", 99 | "predis/predis": "~1.0", 100 | "satooshi/php-coveralls": "~0.6" 101 | }, 102 | "type": "library", 103 | "extra": { 104 | "branch-alias": { 105 | "dev-master": "1.5.x-dev" 106 | } 107 | }, 108 | "autoload": { 109 | "psr-0": { 110 | "Doctrine\\Common\\Cache\\": "lib/" 111 | } 112 | }, 113 | "notification-url": "https://packagist.org/downloads/", 114 | "license": [ 115 | "MIT" 116 | ], 117 | "authors": [ 118 | { 119 | "name": "Roman Borschel", 120 | "email": "roman@code-factory.org" 121 | }, 122 | { 123 | "name": "Benjamin Eberlei", 124 | "email": "kontakt@beberlei.de" 125 | }, 126 | { 127 | "name": "Guilherme Blanco", 128 | "email": "guilhermeblanco@gmail.com" 129 | }, 130 | { 131 | "name": "Jonathan Wage", 132 | "email": "jonwage@gmail.com" 133 | }, 134 | { 135 | "name": "Johannes Schmitt", 136 | "email": "schmittjoh@gmail.com" 137 | } 138 | ], 139 | "description": "Caching library offering an object-oriented API for many cache backends", 140 | "homepage": "http://www.doctrine-project.org", 141 | "keywords": [ 142 | "cache", 143 | "caching" 144 | ], 145 | "time": "2015-08-31 12:36:41" 146 | }, 147 | { 148 | "name": "doctrine/collections", 149 | "version": "v1.3.0", 150 | "source": { 151 | "type": "git", 152 | "url": "https://github.com/doctrine/collections.git", 153 | "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a" 154 | }, 155 | "dist": { 156 | "type": "zip", 157 | "url": "https://api.github.com/repos/doctrine/collections/zipball/6c1e4eef75f310ea1b3e30945e9f06e652128b8a", 158 | "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a", 159 | "shasum": "" 160 | }, 161 | "require": { 162 | "php": ">=5.3.2" 163 | }, 164 | "require-dev": { 165 | "phpunit/phpunit": "~4.0" 166 | }, 167 | "type": "library", 168 | "extra": { 169 | "branch-alias": { 170 | "dev-master": "1.2.x-dev" 171 | } 172 | }, 173 | "autoload": { 174 | "psr-0": { 175 | "Doctrine\\Common\\Collections\\": "lib/" 176 | } 177 | }, 178 | "notification-url": "https://packagist.org/downloads/", 179 | "license": [ 180 | "MIT" 181 | ], 182 | "authors": [ 183 | { 184 | "name": "Roman Borschel", 185 | "email": "roman@code-factory.org" 186 | }, 187 | { 188 | "name": "Benjamin Eberlei", 189 | "email": "kontakt@beberlei.de" 190 | }, 191 | { 192 | "name": "Guilherme Blanco", 193 | "email": "guilhermeblanco@gmail.com" 194 | }, 195 | { 196 | "name": "Jonathan Wage", 197 | "email": "jonwage@gmail.com" 198 | }, 199 | { 200 | "name": "Johannes Schmitt", 201 | "email": "schmittjoh@gmail.com" 202 | } 203 | ], 204 | "description": "Collections Abstraction library", 205 | "homepage": "http://www.doctrine-project.org", 206 | "keywords": [ 207 | "array", 208 | "collections", 209 | "iterator" 210 | ], 211 | "time": "2015-04-14 22:21:58" 212 | }, 213 | { 214 | "name": "doctrine/common", 215 | "version": "v2.4.3", 216 | "source": { 217 | "type": "git", 218 | "url": "https://github.com/doctrine/common.git", 219 | "reference": "4824569127daa9784bf35219a1cd49306c795389" 220 | }, 221 | "dist": { 222 | "type": "zip", 223 | "url": "https://api.github.com/repos/doctrine/common/zipball/4824569127daa9784bf35219a1cd49306c795389", 224 | "reference": "4824569127daa9784bf35219a1cd49306c795389", 225 | "shasum": "" 226 | }, 227 | "require": { 228 | "doctrine/annotations": "1.*", 229 | "doctrine/cache": "1.*", 230 | "doctrine/collections": "1.*", 231 | "doctrine/inflector": "1.*", 232 | "doctrine/lexer": "1.*", 233 | "php": ">=5.3.2" 234 | }, 235 | "require-dev": { 236 | "phpunit/phpunit": "~3.7" 237 | }, 238 | "type": "library", 239 | "extra": { 240 | "branch-alias": { 241 | "dev-master": "2.4.x-dev" 242 | } 243 | }, 244 | "autoload": { 245 | "psr-0": { 246 | "Doctrine\\Common\\": "lib/" 247 | } 248 | }, 249 | "notification-url": "https://packagist.org/downloads/", 250 | "license": [ 251 | "MIT" 252 | ], 253 | "authors": [ 254 | { 255 | "name": "Roman Borschel", 256 | "email": "roman@code-factory.org" 257 | }, 258 | { 259 | "name": "Benjamin Eberlei", 260 | "email": "kontakt@beberlei.de" 261 | }, 262 | { 263 | "name": "Guilherme Blanco", 264 | "email": "guilhermeblanco@gmail.com" 265 | }, 266 | { 267 | "name": "Jonathan Wage", 268 | "email": "jonwage@gmail.com" 269 | }, 270 | { 271 | "name": "Johannes Schmitt", 272 | "email": "schmittjoh@gmail.com" 273 | } 274 | ], 275 | "description": "Common Library for Doctrine projects", 276 | "homepage": "http://www.doctrine-project.org", 277 | "keywords": [ 278 | "annotations", 279 | "collections", 280 | "eventmanager", 281 | "persistence", 282 | "spl" 283 | ], 284 | "time": "2015-08-31 14:38:45" 285 | }, 286 | { 287 | "name": "doctrine/dbal", 288 | "version": "2.3.5", 289 | "source": { 290 | "type": "git", 291 | "url": "https://github.com/doctrine/dbal.git", 292 | "reference": "d5067b0b7e5ef59ba165dcc116c539400bf957ff" 293 | }, 294 | "dist": { 295 | "type": "zip", 296 | "url": "https://api.github.com/repos/doctrine/dbal/zipball/d5067b0b7e5ef59ba165dcc116c539400bf957ff", 297 | "reference": "d5067b0b7e5ef59ba165dcc116c539400bf957ff", 298 | "shasum": "" 299 | }, 300 | "require": { 301 | "doctrine/common": ">=2.3.0,<2.5-dev", 302 | "php": ">=5.3.2" 303 | }, 304 | "type": "library", 305 | "extra": { 306 | "branch-alias": { 307 | "dev-master": "2.3.x-dev" 308 | } 309 | }, 310 | "autoload": { 311 | "psr-0": { 312 | "Doctrine\\DBAL": "lib/" 313 | } 314 | }, 315 | "notification-url": "https://packagist.org/downloads/", 316 | "license": [ 317 | "MIT" 318 | ], 319 | "authors": [ 320 | { 321 | "name": "Roman Borschel", 322 | "email": "roman@code-factory.org" 323 | }, 324 | { 325 | "name": "Benjamin Eberlei", 326 | "email": "kontakt@beberlei.de" 327 | }, 328 | { 329 | "name": "Guilherme Blanco", 330 | "email": "guilhermeblanco@gmail.com" 331 | }, 332 | { 333 | "name": "Jonathan Wage", 334 | "email": "jonwage@gmail.com" 335 | } 336 | ], 337 | "description": "Database Abstraction Layer", 338 | "homepage": "http://www.doctrine-project.org", 339 | "keywords": [ 340 | "database", 341 | "dbal", 342 | "persistence", 343 | "queryobject" 344 | ], 345 | "time": "2014-09-15 11:44:29" 346 | }, 347 | { 348 | "name": "doctrine/doctrine-bundle", 349 | "version": "v1.2.0", 350 | "target-dir": "Doctrine/Bundle/DoctrineBundle", 351 | "source": { 352 | "type": "git", 353 | "url": "https://github.com/doctrine/DoctrineBundle.git", 354 | "reference": "765b0d87fcc3e839c74817b7211258cbef3a4fb9" 355 | }, 356 | "dist": { 357 | "type": "zip", 358 | "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/765b0d87fcc3e839c74817b7211258cbef3a4fb9", 359 | "reference": "765b0d87fcc3e839c74817b7211258cbef3a4fb9", 360 | "shasum": "" 361 | }, 362 | "require": { 363 | "doctrine/dbal": ">=2.2,<2.5-dev", 364 | "jdorn/sql-formatter": "~1.1", 365 | "php": ">=5.3.2", 366 | "symfony/doctrine-bridge": "~2.2", 367 | "symfony/framework-bundle": "~2.2" 368 | }, 369 | "require-dev": { 370 | "doctrine/orm": ">=2.2,<2.5-dev", 371 | "symfony/validator": "~2.2", 372 | "symfony/yaml": "~2.2" 373 | }, 374 | "suggest": { 375 | "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", 376 | "symfony/web-profiler-bundle": "to use the data collector" 377 | }, 378 | "type": "symfony-bundle", 379 | "extra": { 380 | "branch-alias": { 381 | "dev-master": "1.2.x-dev" 382 | } 383 | }, 384 | "autoload": { 385 | "psr-0": { 386 | "Doctrine\\Bundle\\DoctrineBundle": "" 387 | } 388 | }, 389 | "notification-url": "https://packagist.org/downloads/", 390 | "license": [ 391 | "MIT" 392 | ], 393 | "authors": [ 394 | { 395 | "name": "Fabien Potencier", 396 | "email": "fabien@symfony.com", 397 | "homepage": "http://fabien.potencier.org", 398 | "role": "Lead Developer" 399 | }, 400 | { 401 | "name": "Symfony Community", 402 | "homepage": "http://symfony.com/contributors" 403 | }, 404 | { 405 | "name": "Benjamin Eberlei", 406 | "email": "kontakt@beberlei.de" 407 | } 408 | ], 409 | "description": "Symfony DoctrineBundle", 410 | "homepage": "http://www.doctrine-project.org", 411 | "keywords": [ 412 | "database", 413 | "dbal", 414 | "orm", 415 | "persistence" 416 | ], 417 | "time": "2013-03-25 20:13:59" 418 | }, 419 | { 420 | "name": "doctrine/inflector", 421 | "version": "v1.0.1", 422 | "source": { 423 | "type": "git", 424 | "url": "https://github.com/doctrine/inflector.git", 425 | "reference": "0bcb2e79d8571787f18b7eb036ed3d004908e604" 426 | }, 427 | "dist": { 428 | "type": "zip", 429 | "url": "https://api.github.com/repos/doctrine/inflector/zipball/0bcb2e79d8571787f18b7eb036ed3d004908e604", 430 | "reference": "0bcb2e79d8571787f18b7eb036ed3d004908e604", 431 | "shasum": "" 432 | }, 433 | "require": { 434 | "php": ">=5.3.2" 435 | }, 436 | "require-dev": { 437 | "phpunit/phpunit": "4.*" 438 | }, 439 | "type": "library", 440 | "extra": { 441 | "branch-alias": { 442 | "dev-master": "1.0.x-dev" 443 | } 444 | }, 445 | "autoload": { 446 | "psr-0": { 447 | "Doctrine\\Common\\Inflector\\": "lib/" 448 | } 449 | }, 450 | "notification-url": "https://packagist.org/downloads/", 451 | "license": [ 452 | "MIT" 453 | ], 454 | "authors": [ 455 | { 456 | "name": "Roman Borschel", 457 | "email": "roman@code-factory.org" 458 | }, 459 | { 460 | "name": "Benjamin Eberlei", 461 | "email": "kontakt@beberlei.de" 462 | }, 463 | { 464 | "name": "Guilherme Blanco", 465 | "email": "guilhermeblanco@gmail.com" 466 | }, 467 | { 468 | "name": "Jonathan Wage", 469 | "email": "jonwage@gmail.com" 470 | }, 471 | { 472 | "name": "Johannes Schmitt", 473 | "email": "schmittjoh@gmail.com" 474 | } 475 | ], 476 | "description": "Common String Manipulations with regard to casing and singular/plural rules.", 477 | "homepage": "http://www.doctrine-project.org", 478 | "keywords": [ 479 | "inflection", 480 | "pluralize", 481 | "singularize", 482 | "string" 483 | ], 484 | "time": "2014-12-20 21:24:13" 485 | }, 486 | { 487 | "name": "doctrine/lexer", 488 | "version": "v1.0.1", 489 | "source": { 490 | "type": "git", 491 | "url": "https://github.com/doctrine/lexer.git", 492 | "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" 493 | }, 494 | "dist": { 495 | "type": "zip", 496 | "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", 497 | "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", 498 | "shasum": "" 499 | }, 500 | "require": { 501 | "php": ">=5.3.2" 502 | }, 503 | "type": "library", 504 | "extra": { 505 | "branch-alias": { 506 | "dev-master": "1.0.x-dev" 507 | } 508 | }, 509 | "autoload": { 510 | "psr-0": { 511 | "Doctrine\\Common\\Lexer\\": "lib/" 512 | } 513 | }, 514 | "notification-url": "https://packagist.org/downloads/", 515 | "license": [ 516 | "MIT" 517 | ], 518 | "authors": [ 519 | { 520 | "name": "Roman Borschel", 521 | "email": "roman@code-factory.org" 522 | }, 523 | { 524 | "name": "Guilherme Blanco", 525 | "email": "guilhermeblanco@gmail.com" 526 | }, 527 | { 528 | "name": "Johannes Schmitt", 529 | "email": "schmittjoh@gmail.com" 530 | } 531 | ], 532 | "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", 533 | "homepage": "http://www.doctrine-project.org", 534 | "keywords": [ 535 | "lexer", 536 | "parser" 537 | ], 538 | "time": "2014-09-09 13:34:57" 539 | }, 540 | { 541 | "name": "doctrine/orm", 542 | "version": "v2.3.6", 543 | "source": { 544 | "type": "git", 545 | "url": "https://github.com/doctrine/doctrine2.git", 546 | "reference": "c2135b38216c6c8a410e764792aa368e946f2ae5" 547 | }, 548 | "dist": { 549 | "type": "zip", 550 | "url": "https://api.github.com/repos/doctrine/doctrine2/zipball/c2135b38216c6c8a410e764792aa368e946f2ae5", 551 | "reference": "c2135b38216c6c8a410e764792aa368e946f2ae5", 552 | "shasum": "" 553 | }, 554 | "require": { 555 | "doctrine/dbal": "2.3.*", 556 | "ext-pdo": "*", 557 | "php": ">=5.3.2", 558 | "symfony/console": "2.*" 559 | }, 560 | "suggest": { 561 | "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" 562 | }, 563 | "bin": [ 564 | "bin/doctrine", 565 | "bin/doctrine.php" 566 | ], 567 | "type": "library", 568 | "extra": { 569 | "branch-alias": { 570 | "dev-master": "2.3.x-dev" 571 | } 572 | }, 573 | "autoload": { 574 | "psr-0": { 575 | "Doctrine\\ORM": "lib/" 576 | } 577 | }, 578 | "notification-url": "https://packagist.org/downloads/", 579 | "license": [ 580 | "MIT" 581 | ], 582 | "authors": [ 583 | { 584 | "name": "Jonathan Wage", 585 | "email": "jonwage@gmail.com", 586 | "homepage": "http://www.jwage.com/", 587 | "role": "Creator" 588 | }, 589 | { 590 | "name": "Guilherme Blanco", 591 | "email": "guilhermeblanco@gmail.com", 592 | "homepage": "http://www.instaclick.com" 593 | }, 594 | { 595 | "name": "Roman Borschel", 596 | "email": "roman@code-factory.org" 597 | }, 598 | { 599 | "name": "Benjamin Eberlei", 600 | "email": "kontakt@beberlei.de" 601 | } 602 | ], 603 | "description": "Object-Relational-Mapper for PHP", 604 | "homepage": "http://www.doctrine-project.org", 605 | "keywords": [ 606 | "database", 607 | "orm" 608 | ], 609 | "time": "2014-06-03 19:53:45" 610 | }, 611 | { 612 | "name": "egeloen/http-adapter", 613 | "version": "0.6.0", 614 | "source": { 615 | "type": "git", 616 | "url": "https://github.com/egeloen/ivory-http-adapter.git", 617 | "reference": "a1a5ef1269c5657dd9bac0bd7e999ae09f36485f" 618 | }, 619 | "dist": { 620 | "type": "zip", 621 | "url": "https://api.github.com/repos/egeloen/ivory-http-adapter/zipball/a1a5ef1269c5657dd9bac0bd7e999ae09f36485f", 622 | "reference": "a1a5ef1269c5657dd9bac0bd7e999ae09f36485f", 623 | "shasum": "" 624 | }, 625 | "require": { 626 | "php": ">=5.3.3", 627 | "psr/http-message": "~0.5.0" 628 | }, 629 | "require-dev": { 630 | "cakephp/cakephp": "^2.5.7", 631 | "ext-curl": "*", 632 | "guzzle/guzzle": "^3.9.2", 633 | "guzzlehttp/guzzle": ">=4.1.4,<6.0.0", 634 | "guzzlehttp/streams": ">=1.5.0,<4.0.0", 635 | "kriswallsmith/buzz": "~0.13", 636 | "nategood/httpful": "^0.2.17", 637 | "phpunit/phpunit": "~4.0", 638 | "phpunit/phpunit-mock-objects": "dev-matcher-verify as 2.3.x-dev", 639 | "psr/log": "~1.0", 640 | "react/dns": "^0.4.1", 641 | "react/http-client": "~0.4", 642 | "satooshi/php-coveralls": "~0.6", 643 | "symfony/event-dispatcher": "~2.0", 644 | "zendframework/zendframework": "~2.4@dev", 645 | "zendframework/zendframework1": "^1.12.9" 646 | }, 647 | "suggest": { 648 | "ext-curl": "Allows you to use the cURL adapter", 649 | "guzzle/guzzle": "Allows you to use the Guzzle 3 adapter", 650 | "guzzlehttp/guzzle": "Allows you to use the Guzzle 4 adapter", 651 | "kriswallsmith/buzz": "Allows you to use the Buzz adapter", 652 | "nategood/httpful": "Allows you to use the httpful adapter", 653 | "psr/log": "Allows you to use the logger event subscriber", 654 | "symfony/event-dispatcher": "Allows you to use the event lifecycle", 655 | "symfony/stopwatch": "Allows you to use the stopwatch http adapter and event subscriber", 656 | "zendframework/zend-http": "Allows you to use the Zend 2 adapter", 657 | "zendframework/zendframework1": "Allows you to use the Zend 1 adapter" 658 | }, 659 | "type": "library", 660 | "extra": { 661 | "branch-alias": { 662 | "dev-master": "0.6-dev" 663 | } 664 | }, 665 | "autoload": { 666 | "psr-4": { 667 | "Ivory\\HttpAdapter\\": "src/" 668 | } 669 | }, 670 | "notification-url": "https://packagist.org/downloads/", 671 | "license": [ 672 | "MIT" 673 | ], 674 | "authors": [ 675 | { 676 | "name": "Eric GELOEN", 677 | "email": "geloen.eric@gmail.com" 678 | } 679 | ], 680 | "description": "Issue HTTP request for PHP 5.3+.", 681 | "keywords": [ 682 | "http", 683 | "http-adapter", 684 | "http-client", 685 | "psr-7" 686 | ], 687 | "time": "2015-02-10 20:13:41" 688 | }, 689 | { 690 | "name": "incenteev/composer-parameter-handler", 691 | "version": "v2.1.1", 692 | "source": { 693 | "type": "git", 694 | "url": "https://github.com/Incenteev/ParameterHandler.git", 695 | "reference": "84a205fe80a46101607bafbc423019527893ddd0" 696 | }, 697 | "dist": { 698 | "type": "zip", 699 | "url": "https://api.github.com/repos/Incenteev/ParameterHandler/zipball/84a205fe80a46101607bafbc423019527893ddd0", 700 | "reference": "84a205fe80a46101607bafbc423019527893ddd0", 701 | "shasum": "" 702 | }, 703 | "require": { 704 | "php": ">=5.3.3", 705 | "symfony/yaml": "~2.0" 706 | }, 707 | "require-dev": { 708 | "composer/composer": "1.0.*@dev", 709 | "phpspec/prophecy-phpunit": "~1.0", 710 | "symfony/filesystem": "~2.2" 711 | }, 712 | "type": "library", 713 | "extra": { 714 | "branch-alias": { 715 | "dev-master": "2.1.x-dev" 716 | } 717 | }, 718 | "autoload": { 719 | "psr-4": { 720 | "Incenteev\\ParameterHandler\\": "" 721 | } 722 | }, 723 | "notification-url": "https://packagist.org/downloads/", 724 | "license": [ 725 | "MIT" 726 | ], 727 | "authors": [ 728 | { 729 | "name": "Christophe Coevoet", 730 | "email": "stof@notk.org" 731 | } 732 | ], 733 | "description": "Composer script handling your ignored parameter file", 734 | "homepage": "https://github.com/Incenteev/ParameterHandler", 735 | "keywords": [ 736 | "parameters management" 737 | ], 738 | "time": "2015-06-03 08:27:03" 739 | }, 740 | { 741 | "name": "jdorn/sql-formatter", 742 | "version": "v1.2.17", 743 | "source": { 744 | "type": "git", 745 | "url": "https://github.com/jdorn/sql-formatter.git", 746 | "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc" 747 | }, 748 | "dist": { 749 | "type": "zip", 750 | "url": "https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc", 751 | "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc", 752 | "shasum": "" 753 | }, 754 | "require": { 755 | "php": ">=5.2.4" 756 | }, 757 | "require-dev": { 758 | "phpunit/phpunit": "3.7.*" 759 | }, 760 | "type": "library", 761 | "extra": { 762 | "branch-alias": { 763 | "dev-master": "1.3.x-dev" 764 | } 765 | }, 766 | "autoload": { 767 | "classmap": [ 768 | "lib" 769 | ] 770 | }, 771 | "notification-url": "https://packagist.org/downloads/", 772 | "license": [ 773 | "MIT" 774 | ], 775 | "authors": [ 776 | { 777 | "name": "Jeremy Dorn", 778 | "email": "jeremy@jeremydorn.com", 779 | "homepage": "http://jeremydorn.com/" 780 | } 781 | ], 782 | "description": "a PHP SQL highlighting library", 783 | "homepage": "https://github.com/jdorn/sql-formatter/", 784 | "keywords": [ 785 | "highlight", 786 | "sql" 787 | ], 788 | "time": "2014-01-12 16:20:24" 789 | }, 790 | { 791 | "name": "kriswallsmith/assetic", 792 | "version": "v1.1.3", 793 | "source": { 794 | "type": "git", 795 | "url": "https://github.com/kriswallsmith/assetic.git", 796 | "reference": "02105abcd35fb32933bc566e4c3bec84c612e9c1" 797 | }, 798 | "dist": { 799 | "type": "zip", 800 | "url": "https://api.github.com/repos/kriswallsmith/assetic/zipball/02105abcd35fb32933bc566e4c3bec84c612e9c1", 801 | "reference": "02105abcd35fb32933bc566e4c3bec84c612e9c1", 802 | "shasum": "" 803 | }, 804 | "require": { 805 | "php": ">=5.3.1", 806 | "symfony/process": "~2.1" 807 | }, 808 | "require-dev": { 809 | "cssmin/cssmin": "*", 810 | "joliclic/javascript-packer": "*", 811 | "kamicane/packager": "*", 812 | "leafo/lessphp": "*", 813 | "leafo/scssphp": "*", 814 | "leafo/scssphp-compass": "*", 815 | "mrclay/minify": "*", 816 | "phpunit/phpunit": "~3.7", 817 | "ptachoire/cssembed": "*", 818 | "twig/twig": "~1.6" 819 | }, 820 | "suggest": { 821 | "leafo/lessphp": "Assetic provides the integration with the lessphp LESS compiler", 822 | "leafo/scssphp": "Assetic provides the integration with the scssphp SCSS compiler", 823 | "leafo/scssphp-compass": "Assetic provides the integration with the SCSS compass plugin", 824 | "ptachoire/cssembed": "Assetic provides the integration with phpcssembed to embed data uris", 825 | "twig/twig": "Assetic provides the integration with the Twig templating engine" 826 | }, 827 | "type": "library", 828 | "extra": { 829 | "branch-alias": { 830 | "dev-master": "1.1-dev" 831 | } 832 | }, 833 | "autoload": { 834 | "psr-0": { 835 | "Assetic": "src/" 836 | }, 837 | "files": [ 838 | "src/functions.php" 839 | ] 840 | }, 841 | "notification-url": "https://packagist.org/downloads/", 842 | "license": [ 843 | "MIT" 844 | ], 845 | "authors": [ 846 | { 847 | "name": "Kris Wallsmith", 848 | "email": "kris.wallsmith@gmail.com", 849 | "homepage": "http://kriswallsmith.net/" 850 | } 851 | ], 852 | "description": "Asset Management for PHP", 853 | "homepage": "https://github.com/kriswallsmith/assetic", 854 | "keywords": [ 855 | "assets", 856 | "compression", 857 | "minification" 858 | ], 859 | "time": "2014-12-12 05:37:00" 860 | }, 861 | { 862 | "name": "monolog/monolog", 863 | "version": "1.17.1", 864 | "source": { 865 | "type": "git", 866 | "url": "https://github.com/Seldaek/monolog.git", 867 | "reference": "0524c87587ab85bc4c2d6f5b41253ccb930a5422" 868 | }, 869 | "dist": { 870 | "type": "zip", 871 | "url": "https://api.github.com/repos/Seldaek/monolog/zipball/0524c87587ab85bc4c2d6f5b41253ccb930a5422", 872 | "reference": "0524c87587ab85bc4c2d6f5b41253ccb930a5422", 873 | "shasum": "" 874 | }, 875 | "require": { 876 | "php": ">=5.3.0", 877 | "psr/log": "~1.0" 878 | }, 879 | "provide": { 880 | "psr/log-implementation": "1.0.0" 881 | }, 882 | "require-dev": { 883 | "aws/aws-sdk-php": "^2.4.9", 884 | "doctrine/couchdb": "~1.0@dev", 885 | "graylog2/gelf-php": "~1.0", 886 | "php-console/php-console": "^3.1.3", 887 | "phpunit/phpunit": "~4.5", 888 | "phpunit/phpunit-mock-objects": "2.3.0", 889 | "raven/raven": "~0.11", 890 | "ruflin/elastica": ">=0.90 <3.0", 891 | "swiftmailer/swiftmailer": "~5.3", 892 | "videlalvaro/php-amqplib": "~2.4" 893 | }, 894 | "suggest": { 895 | "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", 896 | "doctrine/couchdb": "Allow sending log messages to a CouchDB server", 897 | "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", 898 | "ext-mongo": "Allow sending log messages to a MongoDB server", 899 | "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", 900 | "php-console/php-console": "Allow sending log messages to Google Chrome", 901 | "raven/raven": "Allow sending log messages to a Sentry server", 902 | "rollbar/rollbar": "Allow sending log messages to Rollbar", 903 | "ruflin/elastica": "Allow sending log messages to an Elastic Search server", 904 | "videlalvaro/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib" 905 | }, 906 | "type": "library", 907 | "extra": { 908 | "branch-alias": { 909 | "dev-master": "1.16.x-dev" 910 | } 911 | }, 912 | "autoload": { 913 | "psr-4": { 914 | "Monolog\\": "src/Monolog" 915 | } 916 | }, 917 | "notification-url": "https://packagist.org/downloads/", 918 | "license": [ 919 | "MIT" 920 | ], 921 | "authors": [ 922 | { 923 | "name": "Jordi Boggiano", 924 | "email": "j.boggiano@seld.be", 925 | "homepage": "http://seld.be" 926 | } 927 | ], 928 | "description": "Sends your logs to files, sockets, inboxes, databases and various web services", 929 | "homepage": "http://github.com/Seldaek/monolog", 930 | "keywords": [ 931 | "log", 932 | "logging", 933 | "psr-3" 934 | ], 935 | "time": "2015-08-31 09:17:37" 936 | }, 937 | { 938 | "name": "prismic/php-sdk", 939 | "version": "1.5.12", 940 | "source": { 941 | "type": "git", 942 | "url": "https://github.com/prismicio/php-kit.git", 943 | "reference": "b35cf1216fc54ad3a7cf30052931c357f2d433bd" 944 | }, 945 | "dist": { 946 | "type": "zip", 947 | "url": "https://api.github.com/repos/prismicio/php-kit/zipball/b35cf1216fc54ad3a7cf30052931c357f2d433bd", 948 | "reference": "b35cf1216fc54ad3a7cf30052931c357f2d433bd", 949 | "shasum": "" 950 | }, 951 | "require": { 952 | "egeloen/http-adapter": "0.6.0", 953 | "ext-curl": "*", 954 | "ext-json": "*", 955 | "ext-mbstring": "*", 956 | "php": ">=5.3.3", 957 | "symfony/event-dispatcher": "~2.0" 958 | }, 959 | "require-dev": { 960 | "codeclimate/php-test-reporter": "dev-master", 961 | "phpdocumentor/phpdocumentor": "2.*", 962 | "phpunit/phpunit": "~4.1" 963 | }, 964 | "type": "library", 965 | "extra": { 966 | "branch-alias": { 967 | "dev-master": "1.0.x-dev" 968 | } 969 | }, 970 | "autoload": { 971 | "psr-0": { 972 | "": "src/" 973 | } 974 | }, 975 | "notification-url": "https://packagist.org/downloads/", 976 | "license": [ 977 | "Apache 2 license" 978 | ], 979 | "description": "PHP development kit for prismic.io", 980 | "time": "2015-08-05 12:21:58" 981 | }, 982 | { 983 | "name": "prismic/prismic-bundle", 984 | "version": "dev-master", 985 | "source": { 986 | "type": "git", 987 | "url": "https://github.com/prismicio/SymfonyBundle.git", 988 | "reference": "318e2a689ec64d2de5087576ea518cf2645a88c7" 989 | }, 990 | "dist": { 991 | "type": "zip", 992 | "url": "https://api.github.com/repos/prismicio/SymfonyBundle/zipball/318e2a689ec64d2de5087576ea518cf2645a88c7", 993 | "reference": "318e2a689ec64d2de5087576ea518cf2645a88c7", 994 | "shasum": "" 995 | }, 996 | "require": { 997 | "php": ">=5.3.3", 998 | "prismic/php-sdk": "~1.5.12", 999 | "symfony/framework-bundle": "~2.4" 1000 | }, 1001 | "type": "symfony-bundle", 1002 | "extra": { 1003 | "branch-alias": { 1004 | "dev-master": "1.0.x-dev" 1005 | } 1006 | }, 1007 | "autoload": { 1008 | "psr-4": { 1009 | "Prismic\\Bundle\\PrismicBundle\\": "" 1010 | } 1011 | }, 1012 | "notification-url": "https://packagist.org/downloads/", 1013 | "license": [ 1014 | "Apache 2 license" 1015 | ], 1016 | "description": "Prismic.io integration with Symfony2", 1017 | "homepage": "http://www.prismic.io", 1018 | "keywords": [ 1019 | "Prismic", 1020 | "Symfony2", 1021 | "cms", 1022 | "persistence" 1023 | ], 1024 | "time": "2015-09-21 16:00:52" 1025 | }, 1026 | { 1027 | "name": "psr/http-message", 1028 | "version": "0.5.1", 1029 | "source": { 1030 | "type": "git", 1031 | "url": "https://github.com/php-fig/http-message.git", 1032 | "reference": "18619eee10ecf266bafe048e5a2922fa20938498" 1033 | }, 1034 | "dist": { 1035 | "type": "zip", 1036 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/18619eee10ecf266bafe048e5a2922fa20938498", 1037 | "reference": "18619eee10ecf266bafe048e5a2922fa20938498", 1038 | "shasum": "" 1039 | }, 1040 | "type": "library", 1041 | "extra": { 1042 | "branch-alias": { 1043 | "dev-master": "1.0.x-dev" 1044 | } 1045 | }, 1046 | "autoload": { 1047 | "psr-4": { 1048 | "Psr\\Http\\Message\\": "src" 1049 | } 1050 | }, 1051 | "notification-url": "https://packagist.org/downloads/", 1052 | "license": [ 1053 | "MIT" 1054 | ], 1055 | "authors": [ 1056 | { 1057 | "name": "PHP-FIG", 1058 | "homepage": "http://www.php-fig.org/" 1059 | } 1060 | ], 1061 | "description": "Common interface for HTTP messages", 1062 | "keywords": [ 1063 | "http", 1064 | "http-message", 1065 | "psr", 1066 | "psr-7", 1067 | "request", 1068 | "response" 1069 | ], 1070 | "time": "2014-11-04 14:03:01" 1071 | }, 1072 | { 1073 | "name": "psr/log", 1074 | "version": "1.0.0", 1075 | "source": { 1076 | "type": "git", 1077 | "url": "https://github.com/php-fig/log.git", 1078 | "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b" 1079 | }, 1080 | "dist": { 1081 | "type": "zip", 1082 | "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b", 1083 | "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b", 1084 | "shasum": "" 1085 | }, 1086 | "type": "library", 1087 | "autoload": { 1088 | "psr-0": { 1089 | "Psr\\Log\\": "" 1090 | } 1091 | }, 1092 | "notification-url": "https://packagist.org/downloads/", 1093 | "license": [ 1094 | "MIT" 1095 | ], 1096 | "authors": [ 1097 | { 1098 | "name": "PHP-FIG", 1099 | "homepage": "http://www.php-fig.org/" 1100 | } 1101 | ], 1102 | "description": "Common interface for logging libraries", 1103 | "keywords": [ 1104 | "log", 1105 | "psr", 1106 | "psr-3" 1107 | ], 1108 | "time": "2012-12-21 11:40:51" 1109 | }, 1110 | { 1111 | "name": "sensio/distribution-bundle", 1112 | "version": "v2.3.22", 1113 | "target-dir": "Sensio/Bundle/DistributionBundle", 1114 | "source": { 1115 | "type": "git", 1116 | "url": "https://github.com/sensiolabs/SensioDistributionBundle.git", 1117 | "reference": "98bdda791e7c2dfb5fd55781e69a4b00e4f751a6" 1118 | }, 1119 | "dist": { 1120 | "type": "zip", 1121 | "url": "https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/98bdda791e7c2dfb5fd55781e69a4b00e4f751a6", 1122 | "reference": "98bdda791e7c2dfb5fd55781e69a4b00e4f751a6", 1123 | "shasum": "" 1124 | }, 1125 | "require": { 1126 | "symfony/framework-bundle": "~2.2" 1127 | }, 1128 | "type": "symfony-bundle", 1129 | "extra": { 1130 | "branch-alias": { 1131 | "dev-master": "2.3.x-dev" 1132 | } 1133 | }, 1134 | "autoload": { 1135 | "psr-0": { 1136 | "Sensio\\Bundle\\DistributionBundle": "" 1137 | } 1138 | }, 1139 | "notification-url": "https://packagist.org/downloads/", 1140 | "license": [ 1141 | "MIT" 1142 | ], 1143 | "authors": [ 1144 | { 1145 | "name": "Fabien Potencier", 1146 | "email": "fabien@symfony.com" 1147 | } 1148 | ], 1149 | "description": "The base bundle for the Symfony Distributions", 1150 | "keywords": [ 1151 | "configuration", 1152 | "distribution" 1153 | ], 1154 | "time": "2015-06-05 22:32:08" 1155 | }, 1156 | { 1157 | "name": "sensio/framework-extra-bundle", 1158 | "version": "v2.3.4", 1159 | "target-dir": "Sensio/Bundle/FrameworkExtraBundle", 1160 | "source": { 1161 | "type": "git", 1162 | "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git", 1163 | "reference": "cce05719041d952bbec856789ca18646a1891d03" 1164 | }, 1165 | "dist": { 1166 | "type": "zip", 1167 | "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/cce05719041d952bbec856789ca18646a1891d03", 1168 | "reference": "cce05719041d952bbec856789ca18646a1891d03", 1169 | "shasum": "" 1170 | }, 1171 | "require": { 1172 | "doctrine/common": "~2.2", 1173 | "symfony/framework-bundle": "~2.2" 1174 | }, 1175 | "type": "symfony-bundle", 1176 | "extra": { 1177 | "branch-alias": { 1178 | "dev-master": "2.3.x-dev" 1179 | } 1180 | }, 1181 | "autoload": { 1182 | "psr-0": { 1183 | "Sensio\\Bundle\\FrameworkExtraBundle": "" 1184 | } 1185 | }, 1186 | "notification-url": "https://packagist.org/downloads/", 1187 | "license": [ 1188 | "MIT" 1189 | ], 1190 | "authors": [ 1191 | { 1192 | "name": "Fabien Potencier", 1193 | "email": "fabien@symfony.com", 1194 | "homepage": "http://fabien.potencier.org", 1195 | "role": "Lead Developer" 1196 | } 1197 | ], 1198 | "description": "This bundle provides a way to configure your controllers with annotations", 1199 | "keywords": [ 1200 | "annotations", 1201 | "controllers" 1202 | ], 1203 | "time": "2013-07-24 08:49:53" 1204 | }, 1205 | { 1206 | "name": "sensio/generator-bundle", 1207 | "version": "v2.3.5", 1208 | "target-dir": "Sensio/Bundle/GeneratorBundle", 1209 | "source": { 1210 | "type": "git", 1211 | "url": "https://github.com/sensiolabs/SensioGeneratorBundle.git", 1212 | "reference": "8b7a33aa3d22388443b6de0b0cf184122e9f60d2" 1213 | }, 1214 | "dist": { 1215 | "type": "zip", 1216 | "url": "https://api.github.com/repos/sensiolabs/SensioGeneratorBundle/zipball/8b7a33aa3d22388443b6de0b0cf184122e9f60d2", 1217 | "reference": "8b7a33aa3d22388443b6de0b0cf184122e9f60d2", 1218 | "shasum": "" 1219 | }, 1220 | "require": { 1221 | "symfony/console": "~2.0", 1222 | "symfony/framework-bundle": "~2.2" 1223 | }, 1224 | "require-dev": { 1225 | "doctrine/orm": "~2.2,>=2.2.3", 1226 | "symfony/doctrine-bridge": "~2.2", 1227 | "twig/twig": "~1.11" 1228 | }, 1229 | "type": "symfony-bundle", 1230 | "extra": { 1231 | "branch-alias": { 1232 | "dev-master": "2.3.x-dev" 1233 | } 1234 | }, 1235 | "autoload": { 1236 | "psr-0": { 1237 | "Sensio\\Bundle\\GeneratorBundle": "" 1238 | } 1239 | }, 1240 | "notification-url": "https://packagist.org/downloads/", 1241 | "license": [ 1242 | "MIT" 1243 | ], 1244 | "authors": [ 1245 | { 1246 | "name": "Fabien Potencier", 1247 | "email": "fabien@symfony.com", 1248 | "homepage": "http://fabien.potencier.org", 1249 | "role": "Lead Developer" 1250 | } 1251 | ], 1252 | "description": "This bundle generates code for you", 1253 | "time": "2014-04-28 14:01:06" 1254 | }, 1255 | { 1256 | "name": "swiftmailer/swiftmailer", 1257 | "version": "v5.4.1", 1258 | "source": { 1259 | "type": "git", 1260 | "url": "https://github.com/swiftmailer/swiftmailer.git", 1261 | "reference": "0697e6aa65c83edf97bb0f23d8763f94e3f11421" 1262 | }, 1263 | "dist": { 1264 | "type": "zip", 1265 | "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/0697e6aa65c83edf97bb0f23d8763f94e3f11421", 1266 | "reference": "0697e6aa65c83edf97bb0f23d8763f94e3f11421", 1267 | "shasum": "" 1268 | }, 1269 | "require": { 1270 | "php": ">=5.3.3" 1271 | }, 1272 | "require-dev": { 1273 | "mockery/mockery": "~0.9.1,<0.9.4" 1274 | }, 1275 | "type": "library", 1276 | "extra": { 1277 | "branch-alias": { 1278 | "dev-master": "5.4-dev" 1279 | } 1280 | }, 1281 | "autoload": { 1282 | "files": [ 1283 | "lib/swift_required.php" 1284 | ] 1285 | }, 1286 | "notification-url": "https://packagist.org/downloads/", 1287 | "license": [ 1288 | "MIT" 1289 | ], 1290 | "authors": [ 1291 | { 1292 | "name": "Chris Corbyn" 1293 | }, 1294 | { 1295 | "name": "Fabien Potencier", 1296 | "email": "fabien@symfony.com" 1297 | } 1298 | ], 1299 | "description": "Swiftmailer, free feature-rich PHP mailer", 1300 | "homepage": "http://swiftmailer.org", 1301 | "keywords": [ 1302 | "email", 1303 | "mail", 1304 | "mailer" 1305 | ], 1306 | "time": "2015-06-06 14:19:39" 1307 | }, 1308 | { 1309 | "name": "symfony/assetic-bundle", 1310 | "version": "v2.3.1", 1311 | "target-dir": "Symfony/Bundle/AsseticBundle", 1312 | "source": { 1313 | "type": "git", 1314 | "url": "https://github.com/symfony/AsseticBundle.git", 1315 | "reference": "099e0bb5d80e7039af20db384a41017fde521f21" 1316 | }, 1317 | "dist": { 1318 | "type": "zip", 1319 | "url": "https://api.github.com/repos/symfony/AsseticBundle/zipball/099e0bb5d80e7039af20db384a41017fde521f21", 1320 | "reference": "099e0bb5d80e7039af20db384a41017fde521f21", 1321 | "shasum": "" 1322 | }, 1323 | "require": { 1324 | "kriswallsmith/assetic": "1.1.x", 1325 | "php": ">=5.3.0", 1326 | "symfony/framework-bundle": "~2.1" 1327 | }, 1328 | "require-dev": { 1329 | "symfony/class-loader": "~2.1", 1330 | "symfony/console": "~2.1", 1331 | "symfony/css-selector": "~2.1", 1332 | "symfony/dom-crawler": "~2.1", 1333 | "symfony/form": "~2.1", 1334 | "symfony/twig-bundle": "~2.1", 1335 | "symfony/yaml": "~2.1" 1336 | }, 1337 | "suggest": { 1338 | "symfony/twig-bundle": "~2.1" 1339 | }, 1340 | "type": "symfony-bundle", 1341 | "extra": { 1342 | "branch-alias": { 1343 | "dev-master": "2.3-dev" 1344 | } 1345 | }, 1346 | "autoload": { 1347 | "psr-0": { 1348 | "Symfony\\Bundle\\AsseticBundle": "" 1349 | } 1350 | }, 1351 | "notification-url": "https://packagist.org/downloads/", 1352 | "license": [ 1353 | "MIT" 1354 | ], 1355 | "authors": [ 1356 | { 1357 | "name": "Kris Wallsmith", 1358 | "email": "kris.wallsmith@gmail.com", 1359 | "homepage": "http://kriswallsmith.net/" 1360 | } 1361 | ], 1362 | "description": "Integrates Assetic into Symfony2", 1363 | "homepage": "https://github.com/symfony/AsseticBundle", 1364 | "keywords": [ 1365 | "assets", 1366 | "compression", 1367 | "minification" 1368 | ], 1369 | "time": "2013-11-25 16:34:50" 1370 | }, 1371 | { 1372 | "name": "symfony/monolog-bundle", 1373 | "version": "v2.3.0", 1374 | "target-dir": "Symfony/Bundle/MonologBundle", 1375 | "source": { 1376 | "type": "git", 1377 | "url": "https://github.com/symfony/MonologBundle.git", 1378 | "reference": "03ed73bc11367b3156cc21f22ac37c7f70fcd10a" 1379 | }, 1380 | "dist": { 1381 | "type": "zip", 1382 | "url": "https://api.github.com/repos/symfony/MonologBundle/zipball/03ed73bc11367b3156cc21f22ac37c7f70fcd10a", 1383 | "reference": "03ed73bc11367b3156cc21f22ac37c7f70fcd10a", 1384 | "shasum": "" 1385 | }, 1386 | "require": { 1387 | "monolog/monolog": "~1.3", 1388 | "php": ">=5.3.2", 1389 | "symfony/config": "~2.2-beta2", 1390 | "symfony/dependency-injection": "~2.2-beta2", 1391 | "symfony/monolog-bridge": "~2.2-beta2" 1392 | }, 1393 | "require-dev": { 1394 | "symfony/yaml": "~2.2-beta2" 1395 | }, 1396 | "type": "symfony-bundle", 1397 | "extra": { 1398 | "branch-alias": { 1399 | "dev-master": "2.2.x-dev" 1400 | } 1401 | }, 1402 | "autoload": { 1403 | "psr-0": { 1404 | "Symfony\\Bundle\\MonologBundle": "" 1405 | } 1406 | }, 1407 | "notification-url": "https://packagist.org/downloads/", 1408 | "license": [ 1409 | "MIT" 1410 | ], 1411 | "authors": [ 1412 | { 1413 | "name": "Fabien Potencier", 1414 | "email": "fabien@symfony.com", 1415 | "homepage": "http://fabien.potencier.org", 1416 | "role": "Lead Developer" 1417 | }, 1418 | { 1419 | "name": "Symfony Community", 1420 | "homepage": "http://symfony.com/contributors" 1421 | } 1422 | ], 1423 | "description": "Symfony MonologBundle", 1424 | "homepage": "http://symfony.com", 1425 | "keywords": [ 1426 | "log", 1427 | "logging" 1428 | ], 1429 | "time": "2013-05-27 18:06:55" 1430 | }, 1431 | { 1432 | "name": "symfony/swiftmailer-bundle", 1433 | "version": "v2.3.8", 1434 | "source": { 1435 | "type": "git", 1436 | "url": "https://github.com/symfony/SwiftmailerBundle.git", 1437 | "reference": "970b13d01871207e81d17b17ddda025e7e21e797" 1438 | }, 1439 | "dist": { 1440 | "type": "zip", 1441 | "url": "https://api.github.com/repos/symfony/SwiftmailerBundle/zipball/970b13d01871207e81d17b17ddda025e7e21e797", 1442 | "reference": "970b13d01871207e81d17b17ddda025e7e21e797", 1443 | "shasum": "" 1444 | }, 1445 | "require": { 1446 | "php": ">=5.3.2", 1447 | "swiftmailer/swiftmailer": ">=4.2.0,~5.0", 1448 | "symfony/swiftmailer-bridge": "~2.1" 1449 | }, 1450 | "require-dev": { 1451 | "symfony/config": "~2.1", 1452 | "symfony/dependency-injection": "~2.1", 1453 | "symfony/http-kernel": "~2.1", 1454 | "symfony/yaml": "~2.1" 1455 | }, 1456 | "suggest": { 1457 | "psr/log": "Allows logging" 1458 | }, 1459 | "type": "symfony-bundle", 1460 | "extra": { 1461 | "branch-alias": { 1462 | "dev-master": "2.3-dev" 1463 | } 1464 | }, 1465 | "autoload": { 1466 | "psr-4": { 1467 | "Symfony\\Bundle\\SwiftmailerBundle\\": "" 1468 | } 1469 | }, 1470 | "notification-url": "https://packagist.org/downloads/", 1471 | "license": [ 1472 | "MIT" 1473 | ], 1474 | "authors": [ 1475 | { 1476 | "name": "Symfony Community", 1477 | "homepage": "http://symfony.com/contributors" 1478 | }, 1479 | { 1480 | "name": "Fabien Potencier", 1481 | "email": "fabien@symfony.com" 1482 | } 1483 | ], 1484 | "description": "Symfony SwiftmailerBundle", 1485 | "homepage": "http://symfony.com", 1486 | "time": "2014-12-01 17:44:50" 1487 | }, 1488 | { 1489 | "name": "symfony/symfony", 1490 | "version": "v2.6.11", 1491 | "source": { 1492 | "type": "git", 1493 | "url": "https://github.com/symfony/symfony.git", 1494 | "reference": "c6ab380a577e7bfb8db6e6f3105f470f97c83235" 1495 | }, 1496 | "dist": { 1497 | "type": "zip", 1498 | "url": "https://api.github.com/repos/symfony/symfony/zipball/c6ab380a577e7bfb8db6e6f3105f470f97c83235", 1499 | "reference": "c6ab380a577e7bfb8db6e6f3105f470f97c83235", 1500 | "shasum": "" 1501 | }, 1502 | "require": { 1503 | "doctrine/common": "~2.3", 1504 | "php": ">=5.3.3", 1505 | "psr/log": "~1.0", 1506 | "twig/twig": "~1.12,>=1.12.3" 1507 | }, 1508 | "replace": { 1509 | "symfony/browser-kit": "self.version", 1510 | "symfony/class-loader": "self.version", 1511 | "symfony/config": "self.version", 1512 | "symfony/console": "self.version", 1513 | "symfony/css-selector": "self.version", 1514 | "symfony/debug": "self.version", 1515 | "symfony/debug-bundle": "self.version", 1516 | "symfony/dependency-injection": "self.version", 1517 | "symfony/doctrine-bridge": "self.version", 1518 | "symfony/dom-crawler": "self.version", 1519 | "symfony/event-dispatcher": "self.version", 1520 | "symfony/expression-language": "self.version", 1521 | "symfony/filesystem": "self.version", 1522 | "symfony/finder": "self.version", 1523 | "symfony/form": "self.version", 1524 | "symfony/framework-bundle": "self.version", 1525 | "symfony/http-foundation": "self.version", 1526 | "symfony/http-kernel": "self.version", 1527 | "symfony/intl": "self.version", 1528 | "symfony/locale": "self.version", 1529 | "symfony/monolog-bridge": "self.version", 1530 | "symfony/options-resolver": "self.version", 1531 | "symfony/process": "self.version", 1532 | "symfony/propel1-bridge": "self.version", 1533 | "symfony/property-access": "self.version", 1534 | "symfony/proxy-manager-bridge": "self.version", 1535 | "symfony/routing": "self.version", 1536 | "symfony/security": "self.version", 1537 | "symfony/security-acl": "self.version", 1538 | "symfony/security-bundle": "self.version", 1539 | "symfony/security-core": "self.version", 1540 | "symfony/security-csrf": "self.version", 1541 | "symfony/security-http": "self.version", 1542 | "symfony/serializer": "self.version", 1543 | "symfony/stopwatch": "self.version", 1544 | "symfony/swiftmailer-bridge": "self.version", 1545 | "symfony/templating": "self.version", 1546 | "symfony/translation": "self.version", 1547 | "symfony/twig-bridge": "self.version", 1548 | "symfony/twig-bundle": "self.version", 1549 | "symfony/validator": "self.version", 1550 | "symfony/var-dumper": "self.version", 1551 | "symfony/web-profiler-bundle": "self.version", 1552 | "symfony/yaml": "self.version" 1553 | }, 1554 | "require-dev": { 1555 | "doctrine/data-fixtures": "1.0.*", 1556 | "doctrine/dbal": "~2.2", 1557 | "doctrine/doctrine-bundle": "~1.2", 1558 | "doctrine/orm": "~2.2,>=2.2.3", 1559 | "egulias/email-validator": "~1.2", 1560 | "ircmaxell/password-compat": "~1.0", 1561 | "monolog/monolog": "~1.11", 1562 | "ocramius/proxy-manager": "~0.4|~1.0", 1563 | "propel/propel1": "~1.6", 1564 | "symfony/phpunit-bridge": "~2.7" 1565 | }, 1566 | "type": "library", 1567 | "extra": { 1568 | "branch-alias": { 1569 | "dev-master": "2.6-dev" 1570 | } 1571 | }, 1572 | "autoload": { 1573 | "psr-0": { 1574 | "Symfony\\": "src/" 1575 | }, 1576 | "classmap": [ 1577 | "src/Symfony/Component/HttpFoundation/Resources/stubs", 1578 | "src/Symfony/Component/Intl/Resources/stubs" 1579 | ], 1580 | "files": [ 1581 | "src/Symfony/Component/Intl/Resources/stubs/functions.php" 1582 | ] 1583 | }, 1584 | "notification-url": "https://packagist.org/downloads/", 1585 | "license": [ 1586 | "MIT" 1587 | ], 1588 | "authors": [ 1589 | { 1590 | "name": "Fabien Potencier", 1591 | "email": "fabien@symfony.com" 1592 | }, 1593 | { 1594 | "name": "Symfony Community", 1595 | "homepage": "https://symfony.com/contributors" 1596 | } 1597 | ], 1598 | "description": "The Symfony PHP framework", 1599 | "homepage": "https://symfony.com", 1600 | "keywords": [ 1601 | "framework" 1602 | ], 1603 | "time": "2015-07-26 10:44:22" 1604 | }, 1605 | { 1606 | "name": "twig/extensions", 1607 | "version": "v1.0.1", 1608 | "source": { 1609 | "type": "git", 1610 | "url": "https://github.com/twigphp/Twig-extensions.git", 1611 | "reference": "f91a82ec225e5bb108e01a0f93c9be04f84dcfa0" 1612 | }, 1613 | "dist": { 1614 | "type": "zip", 1615 | "url": "https://api.github.com/repos/twigphp/Twig-extensions/zipball/f91a82ec225e5bb108e01a0f93c9be04f84dcfa0", 1616 | "reference": "f91a82ec225e5bb108e01a0f93c9be04f84dcfa0", 1617 | "shasum": "" 1618 | }, 1619 | "require": { 1620 | "twig/twig": "~1.0" 1621 | }, 1622 | "type": "library", 1623 | "extra": { 1624 | "branch-alias": { 1625 | "dev-master": "1.0.x-dev" 1626 | } 1627 | }, 1628 | "autoload": { 1629 | "psr-0": { 1630 | "Twig_Extensions_": "lib/" 1631 | } 1632 | }, 1633 | "notification-url": "https://packagist.org/downloads/", 1634 | "license": [ 1635 | "MIT" 1636 | ], 1637 | "authors": [ 1638 | { 1639 | "name": "Fabien Potencier", 1640 | "email": "fabien@symfony.com" 1641 | } 1642 | ], 1643 | "description": "Common additional features for Twig that do not directly belong in core", 1644 | "homepage": "https://github.com/fabpot/Twig-extensions", 1645 | "keywords": [ 1646 | "debug", 1647 | "i18n", 1648 | "text" 1649 | ], 1650 | "time": "2013-10-18 19:37:15" 1651 | }, 1652 | { 1653 | "name": "twig/twig", 1654 | "version": "v1.22.1", 1655 | "source": { 1656 | "type": "git", 1657 | "url": "https://github.com/twigphp/Twig.git", 1658 | "reference": "b7fc2469fa009897871fb95b68237286fc54a5ad" 1659 | }, 1660 | "dist": { 1661 | "type": "zip", 1662 | "url": "https://api.github.com/repos/twigphp/Twig/zipball/b7fc2469fa009897871fb95b68237286fc54a5ad", 1663 | "reference": "b7fc2469fa009897871fb95b68237286fc54a5ad", 1664 | "shasum": "" 1665 | }, 1666 | "require": { 1667 | "php": ">=5.2.7" 1668 | }, 1669 | "require-dev": { 1670 | "symfony/debug": "~2.7", 1671 | "symfony/phpunit-bridge": "~2.7" 1672 | }, 1673 | "type": "library", 1674 | "extra": { 1675 | "branch-alias": { 1676 | "dev-master": "1.22-dev" 1677 | } 1678 | }, 1679 | "autoload": { 1680 | "psr-0": { 1681 | "Twig_": "lib/" 1682 | } 1683 | }, 1684 | "notification-url": "https://packagist.org/downloads/", 1685 | "license": [ 1686 | "BSD-3-Clause" 1687 | ], 1688 | "authors": [ 1689 | { 1690 | "name": "Fabien Potencier", 1691 | "email": "fabien@symfony.com", 1692 | "homepage": "http://fabien.potencier.org", 1693 | "role": "Lead Developer" 1694 | }, 1695 | { 1696 | "name": "Armin Ronacher", 1697 | "email": "armin.ronacher@active-4.com", 1698 | "role": "Project Founder" 1699 | }, 1700 | { 1701 | "name": "Twig Team", 1702 | "homepage": "http://twig.sensiolabs.org/contributors", 1703 | "role": "Contributors" 1704 | } 1705 | ], 1706 | "description": "Twig, the flexible, fast, and secure template language for PHP", 1707 | "homepage": "http://twig.sensiolabs.org", 1708 | "keywords": [ 1709 | "templating" 1710 | ], 1711 | "time": "2015-09-15 06:50:16" 1712 | } 1713 | ], 1714 | "packages-dev": [], 1715 | "aliases": [], 1716 | "minimum-stability": "stable", 1717 | "stability-flags": { 1718 | "prismic/prismic-bundle": 20 1719 | }, 1720 | "prefer-stable": false, 1721 | "prefer-lowest": false, 1722 | "platform": { 1723 | "php": ">=5.3.3" 1724 | }, 1725 | "platform-dev": [] 1726 | } 1727 | --------------------------------------------------------------------------------