From 82a0f08883c03376fffe162ad15288448f336161 Mon Sep 17 00:00:00 2001 From: Samuel ROZE Date: Mon, 2 Oct 2017 17:37:12 +0200 Subject: [PATCH 01/10] Uses sroze's symfony --- composer.json | 10 +- composer.lock | 3555 ++++++++----------------------------------------- 2 files changed, 589 insertions(+), 2976 deletions(-) diff --git a/composer.json b/composer.json index ac83ce72a..b8bf1adc0 100644 --- a/composer.json +++ b/composer.json @@ -26,7 +26,8 @@ "symfony/yaml": "^3.3", "twig/extensions": "^1.5", "twig/twig": "^2.4", - "white-october/pagerfanta-bundle": "^1.0" + "white-october/pagerfanta-bundle": "^1.0", + "symfony/symfony": "dev-add-message-component as 3.3.9" }, "require-dev": { "dama/doctrine-test-bundle": "^3.1", @@ -67,10 +68,15 @@ } }, "conflict": { - "symfony/symfony": "*", "symfony/twig-bundle": "<3.3", "symfony/debug": "<3.3" }, + "repositories": [ + { + "type": "vcs", + "url": "https://github.com/sroze/symfony" + } + ], "extra": { "symfony": { "id": "01BP22MQ00QH5WD6NN6HHD3EX4", diff --git a/composer.lock b/composer.lock index 6b9c7a366..23f40264b 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "376bb830795bbcf2fe597a487ea961ff", + "content-hash": "556dac67515e9294166d9c39485a0da7", "packages": [ { "name": "composer/ca-bundle", @@ -481,16 +481,16 @@ }, { "name": "doctrine/doctrine-bundle", - "version": "1.7.0", + "version": "1.7.1", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "629d2a8b16f99a0b2ba6868f7af9986afee5fea7" + "reference": "f8bff22d608224ed88e90b24e9d884cb10b389bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/629d2a8b16f99a0b2ba6868f7af9986afee5fea7", - "reference": "629d2a8b16f99a0b2ba6868f7af9986afee5fea7", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/f8bff22d608224ed88e90b24e9d884cb10b389bb", + "reference": "f8bff22d608224ed88e90b24e9d884cb10b389bb", "shasum": "" }, "require": { @@ -558,27 +558,27 @@ "orm", "persistence" ], - "time": "2017-07-28T20:57:50+00:00" + "time": "2017-09-29T15:26:21+00:00" }, { "name": "doctrine/doctrine-cache-bundle", - "version": "1.3.0", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineCacheBundle.git", - "reference": "18c600a9b82f6454d2e81ca4957cdd56a1cf3504" + "reference": "cfc629363a4a1d7b3f21c4689c53aa05519eed52" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/18c600a9b82f6454d2e81ca4957cdd56a1cf3504", - "reference": "18c600a9b82f6454d2e81ca4957cdd56a1cf3504", + "url": "https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/cfc629363a4a1d7b3f21c4689c53aa05519eed52", + "reference": "cfc629363a4a1d7b3f21c4689c53aa05519eed52", "shasum": "" }, "require": { "doctrine/cache": "^1.4.2", "doctrine/inflector": "~1.0", "php": ">=5.3.2", - "symfony/doctrine-bridge": "~2.2|~3.0" + "symfony/doctrine-bridge": "~2.2|~3.0|~4.0" }, "require-dev": { "instaclick/coding-standard": "~1.1", @@ -586,15 +586,15 @@ "instaclick/symfony2-coding-standard": "dev-remaster", "phpunit/phpunit": "~4", "predis/predis": "~0.8", - "satooshi/php-coveralls": "~0.6.1", + "satooshi/php-coveralls": "^1.0", "squizlabs/php_codesniffer": "~1.5", - "symfony/console": "~2.2|~3.0", - "symfony/finder": "~2.2|~3.0", - "symfony/framework-bundle": "~2.2|~3.0", - "symfony/phpunit-bridge": "~2.7|~3.0", + "symfony/console": "~2.2|~3.0|~4.0", + "symfony/finder": "~2.2|~3.0|~4.0", + "symfony/framework-bundle": "~2.2|~3.0|~4.0", + "symfony/phpunit-bridge": "~2.7|~3.0|~4.0", "symfony/security-acl": "~2.3|~3.0", - "symfony/validator": "~2.2|~3.0", - "symfony/yaml": "~2.2|~3.0" + "symfony/validator": "~2.2|~3.0|~4.0", + "symfony/yaml": "~2.2|~3.0|~4.0" }, "suggest": { "symfony/security-acl": "For using this bundle to cache ACLs" @@ -602,7 +602,7 @@ "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "1.3.x-dev" } }, "autoload": { @@ -646,7 +646,7 @@ "cache", "caching" ], - "time": "2016-01-26T17:28:51+00:00" + "time": "2017-09-29T14:39:10+00:00" }, { "name": "doctrine/doctrine-fixtures-bundle", @@ -774,32 +774,32 @@ }, { "name": "doctrine/instantiator", - "version": "1.0.5", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", "shasum": "" }, "require": { - "php": ">=5.3,<8.0-DEV" + "php": "^7.1" }, "require-dev": { "athletic/athletic": "~0.1.8", "ext-pdo": "*", "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0" + "phpunit/phpunit": "^6.2.3", + "squizlabs/php_codesniffer": "^3.0.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { @@ -824,7 +824,7 @@ "constructor", "instantiate" ], - "time": "2015-06-14T21:17:01+00:00" + "time": "2017-07-22T11:58:36+00:00" }, { "name": "doctrine/lexer", @@ -882,16 +882,16 @@ }, { "name": "doctrine/orm", - "version": "v2.5.10", + "version": "v2.5.11", "source": { "type": "git", "url": "https://github.com/doctrine/doctrine2.git", - "reference": "c78afd51721804f4f76ff30d9b6f6159eb046161" + "reference": "249b737094f1e7cba4f0a8d19acf5be6cf3ed504" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/doctrine2/zipball/c78afd51721804f4f76ff30d9b6f6159eb046161", - "reference": "c78afd51721804f4f76ff30d9b6f6159eb046161", + "url": "https://api.github.com/repos/doctrine/doctrine2/zipball/249b737094f1e7cba4f0a8d19acf5be6cf3ed504", + "reference": "249b737094f1e7cba4f0a8d19acf5be6cf3ed504", "shasum": "" }, "require": { @@ -899,7 +899,7 @@ "doctrine/collections": "~1.2", "doctrine/common": ">=2.5-dev,<2.9-dev", "doctrine/dbal": ">=2.5-dev,<2.7-dev", - "doctrine/instantiator": "~1.0.1", + "doctrine/instantiator": "^1.0.1", "ext-pdo": "*", "php": ">=5.4", "symfony/console": "~2.5|~3.0" @@ -954,7 +954,7 @@ "database", "orm" ], - "time": "2017-08-18T19:17:35+00:00" + "time": "2017-09-18T06:50:20+00:00" }, { "name": "egulias/email-validator", @@ -1102,6 +1102,60 @@ ], "time": "2017-06-03T02:28:16+00:00" }, + { + "name": "fig/link-util", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/link-util.git", + "reference": "1a07821801a148be4add11ab0603e4af55a72fac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/link-util/zipball/1a07821801a148be4add11ab0603e4af55a72fac", + "reference": "1a07821801a148be4add11ab0603e4af55a72fac", + "shasum": "" + }, + "require": { + "php": ">=5.5.0", + "psr/link": "~1.0@dev" + }, + "require-dev": { + "phpunit/phpunit": "^5.1", + "squizlabs/php_codesniffer": "^2.3.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Fig\\Link\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common utility implementations for HTTP links", + "keywords": [ + "http", + "http-link", + "link", + "psr", + "psr-13", + "rest" + ], + "time": "2016-10-17T18:31:11+00:00" + }, { "name": "jdorn/sql-formatter", "version": "v1.2.17", @@ -1299,54 +1353,6 @@ ], "time": "2017-03-20T13:46:15+00:00" }, - { - "name": "paragonie/random_compat", - "version": "v2.0.10", - "source": { - "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "634bae8e911eefa89c1abfbf1b66da679ac8f54d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/634bae8e911eefa89c1abfbf1b66da679ac8f54d", - "reference": "634bae8e911eefa89c1abfbf1b66da679ac8f54d", - "shasum": "" - }, - "require": { - "php": ">=5.2.0" - }, - "require-dev": { - "phpunit/phpunit": "4.*|5.*" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." - }, - "type": "library", - "autoload": { - "files": [ - "lib/random.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" - } - ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", - "keywords": [ - "csprng", - "pseudorandom", - "random" - ], - "time": "2017-03-13T16:27:32+00:00" - }, { "name": "psr/cache", "version": "1.0.1", @@ -1442,6 +1448,55 @@ ], "time": "2017-02-14T16:28:37+00:00" }, + { + "name": "psr/link", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/link.git", + "reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/link/zipball/eea8e8662d5cd3ae4517c9b864493f59fca95562", + "reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Link\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for HTTP links", + "keywords": [ + "http", + "http-link", + "link", + "psr", + "psr-13", + "rest" + ], + "time": "2016-10-28T16:06:13+00:00" + }, { "name": "psr/log", "version": "1.0.2", @@ -1654,16 +1709,16 @@ }, { "name": "swiftmailer/swiftmailer", - "version": "v6.0.1", + "version": "v6.0.2", "source": { "type": "git", "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "008f088d535ed3333af5ad804dd4c0eaf97c2805" + "reference": "412333372fb6c8ffb65496a2bbd7321af75733fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/008f088d535ed3333af5ad804dd4c0eaf97c2805", - "reference": "008f088d535ed3333af5ad804dd4c0eaf97c2805", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/412333372fb6c8ffb65496a2bbd7321af75733fc", + "reference": "412333372fb6c8ffb65496a2bbd7321af75733fc", "shasum": "" }, "require": { @@ -1699,51 +1754,47 @@ } ], "description": "Swiftmailer, free feature-rich PHP mailer", - "homepage": "http://swiftmailer.org", + "homepage": "http://swiftmailer.symfony.com", "keywords": [ "email", "mail", "mailer" ], - "time": "2017-05-20T06:20:27+00:00" + "time": "2017-09-30T22:39:41+00:00" }, { - "name": "symfony/asset", - "version": "v3.3.9", + "name": "symfony/flex", + "version": "v1.0.24", "source": { "type": "git", - "url": "https://github.com/symfony/asset.git", - "reference": "4edb1a43bb961ea5f05f440eba8db82b1d58ea5b" + "url": "https://github.com/symfony/flex.git", + "reference": "dc4b6fbe914c8a96559d0723cb9a02c38347604d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/4edb1a43bb961ea5f05f440eba8db82b1d58ea5b", - "reference": "4edb1a43bb961ea5f05f440eba8db82b1d58ea5b", + "url": "https://api.github.com/repos/symfony/flex/zipball/dc4b6fbe914c8a96559d0723cb9a02c38347604d", + "reference": "dc4b6fbe914c8a96559d0723cb9a02c38347604d", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "composer-plugin-api": "^1.1", + "php": "^7.0" }, "require-dev": { - "symfony/http-foundation": "~2.8|~3.0", - "symfony/http-kernel": "~2.8|~3.0" - }, - "suggest": { - "symfony/http-foundation": "" + "composer/composer": "^1.4", + "symfony/phpunit-bridge": "^3.2.8" }, - "type": "library", + "type": "composer-plugin", "extra": { "branch-alias": { - "dev-master": "3.3-dev" - } + "dev-master": "1.0-dev" + }, + "class": "Symfony\\Flex\\Flex" }, "autoload": { "psr-4": { - "Symfony\\Component\\Asset\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Flex\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1752,64 +1803,48 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "email": "fabien.potencier@gmail.com" } ], - "description": "Symfony Asset Component", - "homepage": "https://symfony.com", - "time": "2017-07-29T21:54:42+00:00" + "time": "2017-09-29T21:04:50+00:00" }, { - "name": "symfony/cache", - "version": "v3.3.9", + "name": "symfony/monolog-bundle", + "version": "v3.1.1", "source": { "type": "git", - "url": "https://github.com/symfony/cache.git", - "reference": "0fb57f94f58bcadd7a11215039bc59b5000968e5" + "url": "https://github.com/symfony/monolog-bundle.git", + "reference": "80c82d7d41c4eed0bf27e215f27531c05b217c17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/0fb57f94f58bcadd7a11215039bc59b5000968e5", - "reference": "0fb57f94f58bcadd7a11215039bc59b5000968e5", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/80c82d7d41c4eed0bf27e215f27531c05b217c17", + "reference": "80c82d7d41c4eed0bf27e215f27531c05b217c17", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "psr/cache": "~1.0", - "psr/log": "~1.0", - "psr/simple-cache": "^1.0", - "symfony/polyfill-apcu": "~1.1" - }, - "conflict": { - "symfony/var-dumper": "<3.3" - }, - "provide": { - "psr/cache-implementation": "1.0", - "psr/simple-cache-implementation": "1.0" + "monolog/monolog": "~1.22", + "php": ">=5.3.2", + "symfony/config": "~2.7|~3.0|~4.0", + "symfony/dependency-injection": "~2.7|~3.0|~4.0", + "symfony/http-kernel": "~2.7|~3.0|~4.0", + "symfony/monolog-bridge": "~2.7|~3.0|~4.0" }, "require-dev": { - "cache/integration-tests": "dev-master", - "doctrine/cache": "~1.6", - "doctrine/dbal": "~2.4", - "predis/predis": "~1.0" + "phpunit/phpunit": "^4.8", + "symfony/console": "~2.3|~3.0|~4.0", + "symfony/yaml": "~2.3|~3.0|~4.0" }, - "type": "library", + "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "3.x-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Cache\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Bundle\\MonologBundle\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1817,58 +1852,75 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], - "description": "Symfony Cache component with PSR-6, PSR-16, and tags", - "homepage": "https://symfony.com", + "description": "Symfony MonologBundle", + "homepage": "http://symfony.com", "keywords": [ - "caching", - "psr6" + "log", + "logging" ], - "time": "2017-09-03T14:06:51+00:00" + "time": "2017-09-26T03:17:02+00:00" }, { - "name": "symfony/class-loader", - "version": "v3.3.9", + "name": "symfony/orm-pack", + "version": "v1.0.3", "source": { "type": "git", - "url": "https://github.com/symfony/class-loader.git", - "reference": "9c69968ce57924e9e93550895cd2b0477edf0e19" + "url": "https://github.com/symfony/orm-pack.git", + "reference": "e938d2441f846d1026eebd4e104155a0e32d9edc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/class-loader/zipball/9c69968ce57924e9e93550895cd2b0477edf0e19", - "reference": "9c69968ce57924e9e93550895cd2b0477edf0e19", + "url": "https://api.github.com/repos/symfony/orm-pack/zipball/e938d2441f846d1026eebd4e104155a0e32d9edc", + "reference": "e938d2441f846d1026eebd4e104155a0e32d9edc", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "doctrine/doctrine-bundle": "^1.6.10", + "doctrine/orm": "^2.5.11", + "php": "^7.0" }, - "require-dev": { - "symfony/finder": "~2.8|~3.0", - "symfony/polyfill-apcu": "~1.1" + "type": "metapackage", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A pack for the Doctrine ORM", + "time": "2017-09-29T18:31:52+00:00" + }, + { + "name": "symfony/polyfill-apcu", + "version": "v1.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-apcu.git", + "reference": "cec32398a973a9bfe9d2f94f4b5d5e186b40b698" }, - "suggest": { - "symfony/polyfill-apcu": "For using ApcClassLoader on HHVM" + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/cec32398a973a9bfe9d2f94f4b5d5e186b40b698", + "reference": "cec32398a973a9bfe9d2f94f4b5d5e186b40b698", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "1.5-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Component\\ClassLoader\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "files": [ + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1877,60 +1929,55 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony ClassLoader Component", + "description": "Symfony polyfill backporting apcu_* functions to lower PHP versions", "homepage": "https://symfony.com", - "time": "2017-07-29T21:54:42+00:00" + "keywords": [ + "apcu", + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2017-07-05T15:09:33+00:00" }, { - "name": "symfony/config", - "version": "v3.3.9", + "name": "symfony/polyfill-intl-icu", + "version": "v1.5.0", "source": { "type": "git", - "url": "https://github.com/symfony/config.git", - "reference": "f9f19a39ee178f61bb2190f51ff7c517c2159315" + "url": "https://github.com/symfony/polyfill-intl-icu.git", + "reference": "4aa0b65dc71a7369c1e7e6e2a3ca027d9decdb09" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/f9f19a39ee178f61bb2190f51ff7c517c2159315", - "reference": "f9f19a39ee178f61bb2190f51ff7c517c2159315", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/4aa0b65dc71a7369c1e7e6e2a3ca027d9decdb09", + "reference": "4aa0b65dc71a7369c1e7e6e2a3ca027d9decdb09", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/filesystem": "~2.8|~3.0" - }, - "conflict": { - "symfony/dependency-injection": "<3.3", - "symfony/finder": "<3.3" - }, - "require-dev": { - "symfony/dependency-injection": "~3.3", - "symfony/finder": "~3.3", - "symfony/yaml": "~3.0" + "php": ">=5.3.3", + "symfony/intl": "~2.3|~3.0|~4.0" }, "suggest": { - "symfony/yaml": "To use the yaml reference dumper" + "ext-intl": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "1.5-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Component\\Config\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "files": [ + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1939,66 +1986,58 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Config Component", + "description": "Symfony polyfill for intl's ICU-related data and classes", "homepage": "https://symfony.com", - "time": "2017-09-04T16:28:07+00:00" + "keywords": [ + "compatibility", + "icu", + "intl", + "polyfill", + "portable", + "shim" + ], + "time": "2017-06-14T15:44:48+00:00" }, { - "name": "symfony/console", - "version": "v3.3.9", + "name": "symfony/polyfill-mbstring", + "version": "v1.5.0", "source": { "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "a1e1b01293a090cb9ae2ddd221a3251a4a7e4abf" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "7c8fae0ac1d216eb54349e6a8baa57d515fe8803" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/a1e1b01293a090cb9ae2ddd221a3251a4a7e4abf", - "reference": "a1e1b01293a090cb9ae2ddd221a3251a4a7e4abf", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7c8fae0ac1d216eb54349e6a8baa57d515fe8803", + "reference": "7c8fae0ac1d216eb54349e6a8baa57d515fe8803", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/debug": "~2.8|~3.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/dependency-injection": "<3.3" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~3.3", - "symfony/dependency-injection": "~3.3", - "symfony/event-dispatcher": "~2.8|~3.0", - "symfony/filesystem": "~2.8|~3.0", - "symfony/process": "~2.8|~3.0" + "php": ">=5.3.3" }, "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/filesystem": "", - "symfony/process": "" + "ext-mbstring": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "1.5-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Console\\": "" + "Symfony\\Polyfill\\Mbstring\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "files": [ + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2007,54 +2046,54 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Console Component", + "description": "Symfony polyfill for the Mbstring extension", "homepage": "https://symfony.com", - "time": "2017-09-06T16:40:18+00:00" + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "time": "2017-06-14T15:44:48+00:00" }, { - "name": "symfony/debug", - "version": "v3.3.9", + "name": "symfony/polyfill-php72", + "version": "v1.5.0", "source": { "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "8beb24eec70b345c313640962df933499373a944" + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "8abc9097f5001d310f0edba727469c988acc6ea7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/8beb24eec70b345c313640962df933499373a944", - "reference": "8beb24eec70b345c313640962df933499373a944", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/8abc9097f5001d310f0edba727469c988acc6ea7", + "reference": "8abc9097f5001d310f0edba727469c988acc6ea7", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "psr/log": "~1.0" - }, - "conflict": { - "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" - }, - "require-dev": { - "symfony/http-kernel": "~2.8|~3.0" + "php": ">=5.3.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "1.5-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Debug\\": "" + "Symfony\\Polyfill\\Php72\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "files": [ + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2063,69 +2102,64 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Debug Component", + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", "homepage": "https://symfony.com", - "time": "2017-09-01T13:23:39+00:00" + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2017-07-11T13:25:55+00:00" }, { - "name": "symfony/dependency-injection", - "version": "v3.3.9", + "name": "symfony/swiftmailer-bundle", + "version": "v3.0.4", "source": { "type": "git", - "url": "https://github.com/symfony/dependency-injection.git", - "reference": "e593f06dd90a81c7b70ac1c49862a061b0ec06d2" + "url": "https://github.com/symfony/swiftmailer-bundle.git", + "reference": "d31de92759321649aec6670ca4e19179b0ec3af4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/e593f06dd90a81c7b70ac1c49862a061b0ec06d2", - "reference": "e593f06dd90a81c7b70ac1c49862a061b0ec06d2", + "url": "https://api.github.com/repos/symfony/swiftmailer-bundle/zipball/d31de92759321649aec6670ca4e19179b0ec3af4", + "reference": "d31de92759321649aec6670ca4e19179b0ec3af4", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "psr/container": "^1.0" - }, - "conflict": { - "symfony/config": "<3.3.1", - "symfony/finder": "<3.3", - "symfony/yaml": "<3.3" - }, - "provide": { - "psr/container-implementation": "1.0" + "php": ">=7.0.0", + "swiftmailer/swiftmailer": "^6.0.1", + "symfony/config": "~2.8|~3.0", + "symfony/dependency-injection": "~2.7|~3.0", + "symfony/http-kernel": "~2.7|~3.0" }, "require-dev": { - "symfony/config": "~3.3", - "symfony/expression-language": "~2.8|~3.0", - "symfony/yaml": "~3.3" + "symfony/console": "~2.7|~3.0", + "symfony/framework-bundle": "~2.7|~3.0", + "symfony/phpunit-bridge": "~3.3@dev", + "symfony/yaml": "~2.7|~3.0" }, "suggest": { - "symfony/config": "", - "symfony/expression-language": "For using expressions in service container configuration", - "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", - "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", - "symfony/yaml": "" + "psr/log": "Allows logging" }, - "type": "library", + "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "3.0-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\DependencyInjection\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Bundle\\SwiftmailerBundle\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2133,80 +2167,152 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], - "description": "Symfony DependencyInjection Component", - "homepage": "https://symfony.com", - "time": "2017-09-05T20:39:38+00:00" + "description": "Symfony SwiftmailerBundle", + "homepage": "http://symfony.com", + "time": "2017-09-10T19:31:30+00:00" }, { - "name": "symfony/doctrine-bridge", - "version": "v3.3.9", + "name": "symfony/symfony", + "version": "dev-add-message-component", "source": { "type": "git", - "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "47018ef3466c9349d80232c82cff32473f925d31" + "url": "https://github.com/sroze/symfony.git", + "reference": "89eaca5c420cbacd5887e85e7d0e7a7b235912e6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/47018ef3466c9349d80232c82cff32473f925d31", - "reference": "47018ef3466c9349d80232c82cff32473f925d31", + "url": "https://api.github.com/repos/sroze/symfony/zipball/89eaca5c420cbacd5887e85e7d0e7a7b235912e6", + "reference": "89eaca5c420cbacd5887e85e7d0e7a7b235912e6", "shasum": "" }, "require": { "doctrine/common": "~2.4", - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-mbstring": "~1.0" + "ext-xml": "*", + "fig/link-util": "^1.0", + "php": "^7.1.3", + "psr/cache": "~1.0", + "psr/container": "^1.0", + "psr/link": "^1.0", + "psr/log": "~1.0", + "psr/simple-cache": "^1.0", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php72": "~1.5", + "twig/twig": "~1.34|~2.4" }, "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/dependency-injection": "<3.3" + "phpdocumentor/reflection-docblock": "<3.0||>=3.2.0,<3.2.2", + "phpdocumentor/type-resolver": "<0.2.0", + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" + }, + "provide": { + "psr/cache-implementation": "1.0", + "psr/container-implementation": "1.0", + "psr/log-implementation": "1.0", + "psr/simple-cache-implementation": "1.0" + }, + "replace": { + "symfony/asset": "self.version", + "symfony/browser-kit": "self.version", + "symfony/cache": "self.version", + "symfony/config": "self.version", + "symfony/console": "self.version", + "symfony/css-selector": "self.version", + "symfony/debug": "self.version", + "symfony/debug-bundle": "self.version", + "symfony/dependency-injection": "self.version", + "symfony/doctrine-bridge": "self.version", + "symfony/dom-crawler": "self.version", + "symfony/dotenv": "self.version", + "symfony/event-dispatcher": "self.version", + "symfony/expression-language": "self.version", + "symfony/filesystem": "self.version", + "symfony/finder": "self.version", + "symfony/form": "self.version", + "symfony/framework-bundle": "self.version", + "symfony/http-foundation": "self.version", + "symfony/http-kernel": "self.version", + "symfony/inflector": "self.version", + "symfony/intl": "self.version", + "symfony/ldap": "self.version", + "symfony/lock": "self.version", + "symfony/monolog-bridge": "self.version", + "symfony/options-resolver": "self.version", + "symfony/process": "self.version", + "symfony/property-access": "self.version", + "symfony/property-info": "self.version", + "symfony/proxy-manager-bridge": "self.version", + "symfony/routing": "self.version", + "symfony/security": "self.version", + "symfony/security-bundle": "self.version", + "symfony/security-core": "self.version", + "symfony/security-csrf": "self.version", + "symfony/security-guard": "self.version", + "symfony/security-http": "self.version", + "symfony/serializer": "self.version", + "symfony/stopwatch": "self.version", + "symfony/templating": "self.version", + "symfony/translation": "self.version", + "symfony/twig-bridge": "self.version", + "symfony/twig-bundle": "self.version", + "symfony/validator": "self.version", + "symfony/var-dumper": "self.version", + "symfony/web-link": "self.version", + "symfony/web-profiler-bundle": "self.version", + "symfony/web-server-bundle": "self.version", + "symfony/workflow": "self.version", + "symfony/yaml": "self.version" }, "require-dev": { + "cache/integration-tests": "dev-master", + "doctrine/cache": "~1.6", "doctrine/data-fixtures": "1.0.*", "doctrine/dbal": "~2.4", - "doctrine/orm": "^2.4.5", - "symfony/dependency-injection": "~3.3", - "symfony/expression-language": "~2.8|~3.0", - "symfony/form": "^3.2.5", - "symfony/http-kernel": "~2.8|~3.0", - "symfony/property-access": "~2.8|~3.0", - "symfony/property-info": "~2.8|3.0", - "symfony/proxy-manager-bridge": "~2.8|~3.0", - "symfony/security": "~2.8|~3.0", - "symfony/stopwatch": "~2.8|~3.0", - "symfony/translation": "~2.8|~3.0", - "symfony/validator": "^2.8.18|^3.2.5" - }, - "suggest": { - "doctrine/data-fixtures": "", - "doctrine/dbal": "", - "doctrine/orm": "", - "symfony/form": "", - "symfony/property-info": "", - "symfony/validator": "" + "doctrine/doctrine-bundle": "~1.4", + "doctrine/orm": "~2.4,>=2.4.5", + "egulias/email-validator": "~1.2,>=1.2.8|~2.0", + "monolog/monolog": "~1.11", + "ocramius/proxy-manager": "~0.4|~1.0|~2.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0", + "predis/predis": "~1.0", + "symfony/phpunit-bridge": "~3.2", + "symfony/security-acl": "~2.8|~3.0" }, - "type": "symfony-bridge", + "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "4.0-dev" } }, "autoload": { "psr-4": { - "Symfony\\Bridge\\Doctrine\\": "" + "Symfony\\Bridge\\Doctrine\\": "src/Symfony/Bridge/Doctrine/", + "Symfony\\Bridge\\Monolog\\": "src/Symfony/Bridge/Monolog/", + "Symfony\\Bridge\\ProxyManager\\": "src/Symfony/Bridge/ProxyManager/", + "Symfony\\Bridge\\Twig\\": "src/Symfony/Bridge/Twig/", + "Symfony\\Bundle\\": "src/Symfony/Bundle/", + "Symfony\\Component\\": "src/Symfony/Component/" }, + "classmap": [ + "src/Symfony/Component/Intl/Resources/stubs" + ], "exclude-from-classmap": [ - "/Tests/" + "**/Tests/" + ] + }, + "autoload-dev": { + "files": [ + "src/Symfony/Component/VarDumper/Resources/functions/dump.php" ] }, - "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -2220,54 +2326,53 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Doctrine Bridge", + "description": "The Symfony PHP framework", "homepage": "https://symfony.com", - "time": "2017-09-11T15:55:22+00:00" + "keywords": [ + "framework" + ], + "support": { + "source": "https://github.com/sroze/symfony/tree/add-message-component" + }, + "time": "2017-10-02T10:32:33+00:00" }, { - "name": "symfony/event-dispatcher", - "version": "v3.3.9", + "name": "twig/extensions", + "version": "v1.5.1", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "54ca9520a00386f83bca145819ad3b619aaa2485" + "url": "https://github.com/twigphp/Twig-extensions.git", + "reference": "d188c76168b853481cc75879ea045bf93d718e9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/54ca9520a00386f83bca145819ad3b619aaa2485", - "reference": "54ca9520a00386f83bca145819ad3b619aaa2485", + "url": "https://api.github.com/repos/twigphp/Twig-extensions/zipball/d188c76168b853481cc75879ea045bf93d718e9c", + "reference": "d188c76168b853481cc75879ea045bf93d718e9c", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" - }, - "conflict": { - "symfony/dependency-injection": "<3.3" + "twig/twig": "~1.27|~2.0" }, "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0", - "symfony/dependency-injection": "~3.3", - "symfony/expression-language": "~2.8|~3.0", - "symfony/stopwatch": "~2.8|~3.0" + "symfony/phpunit-bridge": "~3.3@dev", + "symfony/translation": "~2.3|~3.0" }, "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" + "symfony/translation": "Allow the time_diff output to be translated" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "1.5-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" + "psr-0": { + "Twig_Extensions_": "lib/" }, - "exclude-from-classmap": [ - "/Tests/" - ] + "psr-4": { + "Twig\\Extensions\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2277,2099 +2382,73 @@ { "name": "Fabien Potencier", "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony EventDispatcher Component", - "homepage": "https://symfony.com", - "time": "2017-07-29T21:54:42+00:00" + "description": "Common additional features for Twig that do not directly belong in core", + "homepage": "http://twig.sensiolabs.org/doc/extensions/index.html", + "keywords": [ + "i18n", + "text" + ], + "time": "2017-06-08T18:19:53+00:00" }, { - "name": "symfony/expression-language", - "version": "v3.3.9", + "name": "twig/twig", + "version": "v2.4.4", "source": { "type": "git", - "url": "https://github.com/symfony/expression-language.git", - "reference": "c5215067aaf70f329bc114f057aac9f7a3f3c922" + "url": "https://github.com/twigphp/Twig.git", + "reference": "eddb97148ad779f27e670e1e3f19fb323aedafeb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/c5215067aaf70f329bc114f057aac9f7a3f3c922", - "reference": "c5215067aaf70f329bc114f057aac9f7a3f3c922", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/eddb97148ad779f27e670e1e3f19fb323aedafeb", + "reference": "eddb97148ad779f27e670e1e3f19fb323aedafeb", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/cache": "~3.1" + "php": "^7.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "require-dev": { + "psr/container": "^1.0", + "symfony/debug": "~2.7", + "symfony/phpunit-bridge": "~3.3@dev" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "2.4-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Component\\ExpressionLanguage\\": "" + "psr-0": { + "Twig_": "lib/" }, - "exclude-from-classmap": [ - "/Tests/" - ] + "psr-4": { + "Twig\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony ExpressionLanguage Component", - "homepage": "https://symfony.com", - "time": "2017-09-06T16:40:18+00:00" - }, - { - "name": "symfony/filesystem", - "version": "v3.3.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "b32a0e5f928d0fa3d1dd03c78d020777e50c10cb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/b32a0e5f928d0fa3d1dd03c78d020777e50c10cb", - "reference": "b32a0e5f928d0fa3d1dd03c78d020777e50c10cb", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Filesystem Component", - "homepage": "https://symfony.com", - "time": "2017-07-29T21:54:42+00:00" - }, - { - "name": "symfony/finder", - "version": "v3.3.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "b2260dbc80f3c4198f903215f91a1ac7fe9fe09e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/b2260dbc80f3c4198f903215f91a1ac7fe9fe09e", - "reference": "b2260dbc80f3c4198f903215f91a1ac7fe9fe09e", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Finder Component", - "homepage": "https://symfony.com", - "time": "2017-07-29T21:54:42+00:00" - }, - { - "name": "symfony/flex", - "version": "v1.0.19", - "source": { - "type": "git", - "url": "https://github.com/symfony/flex.git", - "reference": "e26bae9100740f20bcf19ebb6f2d82c2a9a0a1af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/e26bae9100740f20bcf19ebb6f2d82c2a9a0a1af", - "reference": "e26bae9100740f20bcf19ebb6f2d82c2a9a0a1af", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.1", - "php": "^7.1" - }, - "require-dev": { - "composer/composer": "^1.4", - "symfony/phpunit-bridge": "^3.2.8" - }, - "type": "composer-plugin", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - }, - "class": "Symfony\\Flex\\Flex" - }, - "autoload": { - "psr-4": { - "Symfony\\Flex\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien.potencier@gmail.com" - } - ], - "time": "2017-09-13T13:13:23+00:00" - }, - { - "name": "symfony/form", - "version": "v3.3.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/form.git", - "reference": "36f2059a7b9d8db4f305c284a78848eb5a3dd455" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/36f2059a7b9d8db4f305c284a78848eb5a3dd455", - "reference": "36f2059a7b9d8db4f305c284a78848eb5a3dd455", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/event-dispatcher": "~2.8|~3.0", - "symfony/intl": "^2.8.18|^3.2.5", - "symfony/options-resolver": "~2.8|~3.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/property-access": "~2.8|~3.0" - }, - "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/dependency-injection": "<3.3", - "symfony/doctrine-bridge": "<2.7", - "symfony/framework-bundle": "<2.7", - "symfony/http-kernel": "<3.3.5", - "symfony/twig-bridge": "<2.7" - }, - "require-dev": { - "doctrine/collections": "~1.0", - "symfony/config": "~2.7|~3.0", - "symfony/dependency-injection": "~3.3", - "symfony/http-foundation": "~2.8|~3.0", - "symfony/http-kernel": "^3.3.5", - "symfony/security-csrf": "~2.8|~3.0", - "symfony/translation": "~2.8|~3.0", - "symfony/validator": "^2.8.18|^3.2.5", - "symfony/var-dumper": "~3.3" - }, - "suggest": { - "symfony/framework-bundle": "For templating with PHP.", - "symfony/security-csrf": "For protecting forms against CSRF attacks.", - "symfony/twig-bridge": "For templating with Twig.", - "symfony/validator": "For form validation." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Form\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Form Component", - "homepage": "https://symfony.com", - "time": "2017-08-03T08:59:45+00:00" - }, - { - "name": "symfony/framework-bundle", - "version": "v3.3.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/framework-bundle.git", - "reference": "e41df19ba3e731e9e69ae3822dfaf562fb9d46d7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/e41df19ba3e731e9e69ae3822dfaf562fb9d46d7", - "reference": "e41df19ba3e731e9e69ae3822dfaf562fb9d46d7", - "shasum": "" - }, - "require": { - "doctrine/cache": "~1.0", - "ext-xml": "*", - "php": "^5.5.9|>=7.0.8", - "symfony/cache": "~3.3", - "symfony/class-loader": "~3.2", - "symfony/config": "~3.3", - "symfony/dependency-injection": "~3.3", - "symfony/event-dispatcher": "^3.3.1", - "symfony/filesystem": "~2.8|~3.0", - "symfony/finder": "~2.8|~3.0", - "symfony/http-foundation": "~3.3", - "symfony/http-kernel": "~3.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/routing": "~3.3", - "symfony/stopwatch": "~2.8|~3.0" - }, - "conflict": { - "phpdocumentor/reflection-docblock": "<3.0", - "phpdocumentor/type-resolver": "<0.2.0", - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/asset": "<3.3", - "symfony/console": "<3.3", - "symfony/form": "<3.3", - "symfony/property-info": "<3.3", - "symfony/serializer": "<3.3", - "symfony/translation": "<3.2", - "symfony/validator": "<3.3", - "symfony/workflow": "<3.3" - }, - "require-dev": { - "doctrine/annotations": "~1.0", - "fig/link-util": "^1.0", - "phpdocumentor/reflection-docblock": "^3.0|^4.0", - "sensio/framework-extra-bundle": "^3.0.2", - "symfony/asset": "~3.3", - "symfony/browser-kit": "~2.8|~3.0", - "symfony/console": "~3.3", - "symfony/css-selector": "~2.8|~3.0", - "symfony/dom-crawler": "~2.8|~3.0", - "symfony/expression-language": "~2.8|~3.0", - "symfony/form": "~3.3", - "symfony/polyfill-intl-icu": "~1.0", - "symfony/process": "~2.8|~3.0", - "symfony/property-info": "~3.3", - "symfony/security": "~2.8|~3.0", - "symfony/security-core": "~3.2", - "symfony/security-csrf": "~2.8|~3.0", - "symfony/serializer": "~3.3", - "symfony/templating": "~2.8|~3.0", - "symfony/translation": "~3.2", - "symfony/validator": "~3.3", - "symfony/web-link": "~3.3", - "symfony/workflow": "~3.3", - "symfony/yaml": "~3.2", - "twig/twig": "~1.34|~2.4" - }, - "suggest": { - "ext-apcu": "For best performance of the system caches", - "symfony/console": "For using the console commands", - "symfony/form": "For using forms", - "symfony/property-info": "For using the property_info service", - "symfony/serializer": "For using the serializer service", - "symfony/validator": "For using validation", - "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering", - "symfony/yaml": "For using the debug:config and lint:yaml commands" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Bundle\\FrameworkBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony FrameworkBundle", - "homepage": "https://symfony.com", - "time": "2017-09-11T05:57:23+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v3.3.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "2cdc7de1921d1a1c805a13dc05e44a2cd58f5ad3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/2cdc7de1921d1a1c805a13dc05e44a2cd58f5ad3", - "reference": "2cdc7de1921d1a1c805a13dc05e44a2cd58f5ad3", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "symfony/expression-language": "~2.8|~3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony HttpFoundation Component", - "homepage": "https://symfony.com", - "time": "2017-09-06T17:07:39+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v3.3.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "70f5bb3cdd737624249953b61023411e26be5db7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/70f5bb3cdd737624249953b61023411e26be5db7", - "reference": "70f5bb3cdd737624249953b61023411e26be5db7", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "psr/log": "~1.0", - "symfony/debug": "~2.8|~3.0", - "symfony/event-dispatcher": "~2.8|~3.0", - "symfony/http-foundation": "~3.3" - }, - "conflict": { - "symfony/config": "<2.8", - "symfony/dependency-injection": "<3.3", - "symfony/var-dumper": "<3.3", - "twig/twig": "<1.34|<2.4,>=2" - }, - "require-dev": { - "psr/cache": "~1.0", - "symfony/browser-kit": "~2.8|~3.0", - "symfony/class-loader": "~2.8|~3.0", - "symfony/config": "~2.8|~3.0", - "symfony/console": "~2.8|~3.0", - "symfony/css-selector": "~2.8|~3.0", - "symfony/dependency-injection": "~3.3", - "symfony/dom-crawler": "~2.8|~3.0", - "symfony/expression-language": "~2.8|~3.0", - "symfony/finder": "~2.8|~3.0", - "symfony/process": "~2.8|~3.0", - "symfony/routing": "~2.8|~3.0", - "symfony/stopwatch": "~2.8|~3.0", - "symfony/templating": "~2.8|~3.0", - "symfony/translation": "~2.8|~3.0", - "symfony/var-dumper": "~3.3" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/class-loader": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "", - "symfony/finder": "", - "symfony/var-dumper": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpKernel\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony HttpKernel Component", - "homepage": "https://symfony.com", - "time": "2017-09-11T16:13:23+00:00" - }, - { - "name": "symfony/inflector", - "version": "v3.3.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/inflector.git", - "reference": "0474dc4d867c7efefd44017f7903465a7f368b6b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/inflector/zipball/0474dc4d867c7efefd44017f7903465a7f368b6b", - "reference": "0474dc4d867c7efefd44017f7903465a7f368b6b", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Inflector\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Inflector Component", - "homepage": "https://symfony.com", - "keywords": [ - "inflection", - "pluralize", - "singularize", - "string", - "symfony", - "words" - ], - "time": "2017-07-29T21:54:42+00:00" - }, - { - "name": "symfony/intl", - "version": "v3.3.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/intl.git", - "reference": "431a020d3e7061e3d9c90e2279ba47ee44962820" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/431a020d3e7061e3d9c90e2279ba47ee44962820", - "reference": "431a020d3e7061e3d9c90e2279ba47ee44962820", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-intl-icu": "~1.0" - }, - "require-dev": { - "symfony/filesystem": "~2.8|~3.0" - }, - "suggest": { - "ext-intl": "to use the component with locales other than \"en\"" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Intl\\": "" - }, - "classmap": [ - "Resources/stubs" - ], - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - }, - { - "name": "Eriksen Costa", - "email": "eriksen.costa@infranology.com.br" - }, - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A PHP replacement layer for the C intl extension that includes additional data from the ICU library.", - "homepage": "https://symfony.com", - "keywords": [ - "i18n", - "icu", - "internationalization", - "intl", - "l10n", - "localization" - ], - "time": "2017-08-27T14:52:21+00:00" - }, - { - "name": "symfony/monolog-bridge", - "version": "v3.3.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "101bddb65b99611ffe3e4ac0915bf5c4d74c16da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/101bddb65b99611ffe3e4ac0915bf5c4d74c16da", - "reference": "101bddb65b99611ffe3e4ac0915bf5c4d74c16da", - "shasum": "" - }, - "require": { - "monolog/monolog": "~1.19", - "php": "^5.5.9|>=7.0.8", - "symfony/http-kernel": "~2.8|~3.0" - }, - "conflict": { - "symfony/http-foundation": "<3.3" - }, - "require-dev": { - "symfony/console": "~2.8|~3.0", - "symfony/event-dispatcher": "~2.8|~3.0", - "symfony/var-dumper": "~3.3" - }, - "suggest": { - "symfony/console": "For the possibility to show log messages in console commands depending on verbosity settings. You need version ~2.3 of the console for it.", - "symfony/event-dispatcher": "Needed when using log messages in console commands.", - "symfony/http-kernel": "For using the debugging handlers together with the response life cycle of the HTTP kernel." - }, - "type": "symfony-bridge", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Bridge\\Monolog\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Monolog Bridge", - "homepage": "https://symfony.com", - "time": "2017-07-29T21:54:42+00:00" - }, - { - "name": "symfony/monolog-bundle", - "version": "v3.1.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/monolog-bundle.git", - "reference": "6f96c7dbb6b2ef70b307a1a6f897153cbca3da47" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/6f96c7dbb6b2ef70b307a1a6f897153cbca3da47", - "reference": "6f96c7dbb6b2ef70b307a1a6f897153cbca3da47", - "shasum": "" - }, - "require": { - "monolog/monolog": "~1.22", - "php": ">=5.3.2", - "symfony/config": "~2.7|~3.0", - "symfony/dependency-injection": "~2.7|~3.0", - "symfony/http-kernel": "~2.7|~3.0", - "symfony/monolog-bridge": "~2.7|~3.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8", - "symfony/console": "~2.3|~3.0", - "symfony/yaml": "~2.3|~3.0" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Bundle\\MonologBundle\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Symfony MonologBundle", - "homepage": "http://symfony.com", - "keywords": [ - "log", - "logging" - ], - "time": "2017-03-26T11:55:59+00:00" - }, - { - "name": "symfony/options-resolver", - "version": "v3.3.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/options-resolver.git", - "reference": "ee4e22978fe885b54ee5da8c7964f0a5301abfb6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/ee4e22978fe885b54ee5da8c7964f0a5301abfb6", - "reference": "ee4e22978fe885b54ee5da8c7964f0a5301abfb6", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\OptionsResolver\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony OptionsResolver Component", - "homepage": "https://symfony.com", - "keywords": [ - "config", - "configuration", - "options" - ], - "time": "2017-07-29T21:54:42+00:00" - }, - { - "name": "symfony/orm-pack", - "version": "v1.0.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/orm-pack.git", - "reference": "5f09e33401b374607149ed17bbb1117cd4f9f5d5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/orm-pack/zipball/5f09e33401b374607149ed17bbb1117cd4f9f5d5", - "reference": "5f09e33401b374607149ed17bbb1117cd4f9f5d5", - "shasum": "" - }, - "require": { - "doctrine/doctrine-bundle": "^1.6", - "doctrine/orm": "^2.5.7", - "php": "^7.0" - }, - "type": "metapackage", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A pack for the Doctrine ORM", - "time": "2017-09-11T23:09:08+00:00" - }, - { - "name": "symfony/polyfill-apcu", - "version": "v1.5.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-apcu.git", - "reference": "cec32398a973a9bfe9d2f94f4b5d5e186b40b698" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/cec32398a973a9bfe9d2f94f4b5d5e186b40b698", - "reference": "cec32398a973a9bfe9d2f94f4b5d5e186b40b698", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting apcu_* functions to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "apcu", - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2017-07-05T15:09:33+00:00" - }, - { - "name": "symfony/polyfill-intl-icu", - "version": "v1.5.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "4aa0b65dc71a7369c1e7e6e2a3ca027d9decdb09" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/4aa0b65dc71a7369c1e7e6e2a3ca027d9decdb09", - "reference": "4aa0b65dc71a7369c1e7e6e2a3ca027d9decdb09", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "symfony/intl": "~2.3|~3.0|~4.0" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's ICU-related data and classes", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "icu", - "intl", - "polyfill", - "portable", - "shim" - ], - "time": "2017-06-14T15:44:48+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.5.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "7c8fae0ac1d216eb54349e6a8baa57d515fe8803" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7c8fae0ac1d216eb54349e6a8baa57d515fe8803", - "reference": "7c8fae0ac1d216eb54349e6a8baa57d515fe8803", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "time": "2017-06-14T15:44:48+00:00" - }, - { - "name": "symfony/polyfill-php56", - "version": "v1.5.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php56.git", - "reference": "e85ebdef569b84e8709864e1a290c40f156b30ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/e85ebdef569b84e8709864e1a290c40f156b30ca", - "reference": "e85ebdef569b84e8709864e1a290c40f156b30ca", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "symfony/polyfill-util": "~1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php56\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2017-06-14T15:44:48+00:00" - }, - { - "name": "symfony/polyfill-php70", - "version": "v1.5.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "b6482e68974486984f59449ecea1fbbb22ff840f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/b6482e68974486984f59449ecea1fbbb22ff840f", - "reference": "b6482e68974486984f59449ecea1fbbb22ff840f", - "shasum": "" - }, - "require": { - "paragonie/random_compat": "~1.0|~2.0", - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php70\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2017-06-14T15:44:48+00:00" - }, - { - "name": "symfony/polyfill-util", - "version": "v1.5.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-util.git", - "reference": "67925d1cf0b84bd234a83bebf26d4eb281744c6d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/67925d1cf0b84bd234a83bebf26d4eb281744c6d", - "reference": "67925d1cf0b84bd234a83bebf26d4eb281744c6d", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Util\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony utilities for portability of PHP codes", - "homepage": "https://symfony.com", - "keywords": [ - "compat", - "compatibility", - "polyfill", - "shim" - ], - "time": "2017-07-05T15:09:33+00:00" - }, - { - "name": "symfony/property-access", - "version": "v3.3.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/property-access.git", - "reference": "0f25f903442b33c4939fb1d36d7b0a187aa89d82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/0f25f903442b33c4939fb1d36d7b0a187aa89d82", - "reference": "0f25f903442b33c4939fb1d36d7b0a187aa89d82", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/inflector": "~3.1", - "symfony/polyfill-php70": "~1.0" - }, - "require-dev": { - "symfony/cache": "~3.1" - }, - "suggest": { - "psr/cache-implementation": "To cache access methods." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\PropertyAccess\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony PropertyAccess Component", - "homepage": "https://symfony.com", - "keywords": [ - "access", - "array", - "extraction", - "index", - "injection", - "object", - "property", - "property path", - "reflection" - ], - "time": "2017-08-30T14:49:16+00:00" - }, - { - "name": "symfony/routing", - "version": "v3.3.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "970326dcd04522e1cd1fe128abaee54c225e27f9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/970326dcd04522e1cd1fe128abaee54c225e27f9", - "reference": "970326dcd04522e1cd1fe128abaee54c225e27f9", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "conflict": { - "symfony/config": "<2.8", - "symfony/dependency-injection": "<3.3", - "symfony/yaml": "<3.3" - }, - "require-dev": { - "doctrine/annotations": "~1.0", - "doctrine/common": "~2.2", - "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0", - "symfony/dependency-injection": "~3.3", - "symfony/expression-language": "~2.8|~3.0", - "symfony/http-foundation": "~2.8|~3.0", - "symfony/yaml": "~3.3" - }, - "suggest": { - "doctrine/annotations": "For using the annotation loader", - "symfony/config": "For using the all-in-one router or any loader", - "symfony/dependency-injection": "For loading routes from a service", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Routing\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Routing Component", - "homepage": "https://symfony.com", - "keywords": [ - "router", - "routing", - "uri", - "url" - ], - "time": "2017-07-29T21:54:42+00:00" - }, - { - "name": "symfony/security", - "version": "v3.3.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/security.git", - "reference": "2b0cec013b5875c4c74afe39fcf05348d3098037" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/security/zipball/2b0cec013b5875c4c74afe39fcf05348d3098037", - "reference": "2b0cec013b5875c4c74afe39fcf05348d3098037", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/event-dispatcher": "~2.8|~3.0", - "symfony/http-foundation": "~2.8|~3.0", - "symfony/http-kernel": "~3.3", - "symfony/polyfill-php56": "~1.0", - "symfony/polyfill-php70": "~1.0", - "symfony/polyfill-util": "~1.0", - "symfony/property-access": "~2.8|~3.0" - }, - "replace": { - "symfony/security-core": "self.version", - "symfony/security-csrf": "self.version", - "symfony/security-guard": "self.version", - "symfony/security-http": "self.version" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/expression-language": "~2.8|~3.0", - "symfony/finder": "~2.8|~3.0", - "symfony/ldap": "~3.1", - "symfony/polyfill-intl-icu": "~1.0", - "symfony/routing": "~2.8|~3.0", - "symfony/validator": "^2.8.18|^3.2.5" - }, - "suggest": { - "symfony/expression-language": "For using the expression voter", - "symfony/form": "", - "symfony/ldap": "For using the LDAP user and authentication providers", - "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs", - "symfony/validator": "For using the user password constraint" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Security\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Security Component", - "homepage": "https://symfony.com", - "time": "2017-09-11T05:57:23+00:00" - }, - { - "name": "symfony/security-bundle", - "version": "v3.3.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/security-bundle.git", - "reference": "b55869bc451b26723639b4b8bb782239a4eab69f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/b55869bc451b26723639b4b8bb782239a4eab69f", - "reference": "b55869bc451b26723639b4b8bb782239a4eab69f", - "shasum": "" - }, - "require": { - "ext-xml": "*", - "php": "^5.5.9|>=7.0.8", - "symfony/dependency-injection": "~3.3", - "symfony/http-kernel": "~3.3", - "symfony/polyfill-php70": "~1.0", - "symfony/security": "~3.3" - }, - "conflict": { - "symfony/var-dumper": "<3.3" - }, - "require-dev": { - "doctrine/doctrine-bundle": "~1.4", - "symfony/asset": "~2.8|~3.0", - "symfony/browser-kit": "~2.8|~3.0", - "symfony/console": "~3.2", - "symfony/css-selector": "~2.8|~3.0", - "symfony/dom-crawler": "~2.8|~3.0", - "symfony/expression-language": "~2.8|~3.0", - "symfony/form": "^2.8.18|^3.2.5", - "symfony/framework-bundle": "^3.2.8", - "symfony/http-foundation": "~2.8|~3.0", - "symfony/process": "~2.8|~3.0", - "symfony/security-acl": "~2.8|~3.0", - "symfony/translation": "~2.8|~3.0", - "symfony/twig-bridge": "~2.8|~3.0", - "symfony/twig-bundle": "~2.8|~3.0", - "symfony/validator": "^3.2.5", - "symfony/var-dumper": "~3.3", - "symfony/yaml": "~2.8|~3.0", - "twig/twig": "~1.34|~2.4" - }, - "suggest": { - "symfony/security-acl": "For using the ACL functionality of this bundle" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Bundle\\SecurityBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony SecurityBundle", - "homepage": "https://symfony.com", - "time": "2017-07-29T21:54:42+00:00" - }, - { - "name": "symfony/stopwatch", - "version": "v3.3.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/stopwatch.git", - "reference": "9a5610a8d6a50985a7be485c0ba745c22607beeb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/9a5610a8d6a50985a7be485c0ba745c22607beeb", - "reference": "9a5610a8d6a50985a7be485c0ba745c22607beeb", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Stopwatch\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Stopwatch Component", - "homepage": "https://symfony.com", - "time": "2017-07-29T21:54:42+00:00" - }, - { - "name": "symfony/swiftmailer-bundle", - "version": "v3.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/swiftmailer-bundle.git", - "reference": "d31de92759321649aec6670ca4e19179b0ec3af4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/swiftmailer-bundle/zipball/d31de92759321649aec6670ca4e19179b0ec3af4", - "reference": "d31de92759321649aec6670ca4e19179b0ec3af4", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "swiftmailer/swiftmailer": "^6.0.1", - "symfony/config": "~2.8|~3.0", - "symfony/dependency-injection": "~2.7|~3.0", - "symfony/http-kernel": "~2.7|~3.0" - }, - "require-dev": { - "symfony/console": "~2.7|~3.0", - "symfony/framework-bundle": "~2.7|~3.0", - "symfony/phpunit-bridge": "~3.3@dev", - "symfony/yaml": "~2.7|~3.0" - }, - "suggest": { - "psr/log": "Allows logging" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Bundle\\SwiftmailerBundle\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Symfony SwiftmailerBundle", - "homepage": "http://symfony.com", - "time": "2017-09-10T19:31:30+00:00" - }, - { - "name": "symfony/translation", - "version": "v3.3.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "add53753d978f635492dfe8cd6953f6a7361ef90" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/add53753d978f635492dfe8cd6953f6a7361ef90", - "reference": "add53753d978f635492dfe8cd6953f6a7361ef90", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/config": "<2.8", - "symfony/yaml": "<3.3" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0", - "symfony/intl": "^2.8.18|^3.2.5", - "symfony/yaml": "~3.3" - }, - "suggest": { - "psr/log": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Translation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Translation Component", - "homepage": "https://symfony.com", - "time": "2017-07-29T21:54:42+00:00" - }, - { - "name": "symfony/twig-bridge", - "version": "v3.3.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/twig-bridge.git", - "reference": "9c12e8f02937a1edfa02fcc73282c7c1a18304b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/9c12e8f02937a1edfa02fcc73282c7c1a18304b2", - "reference": "9c12e8f02937a1edfa02fcc73282c7c1a18304b2", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "twig/twig": "~1.34|~2.4" - }, - "conflict": { - "symfony/form": "<3.2.10|~3.3,<3.3.3" - }, - "require-dev": { - "fig/link-util": "^1.0", - "symfony/asset": "~2.8|~3.0", - "symfony/console": "~2.8|~3.0", - "symfony/expression-language": "~2.8|~3.0", - "symfony/finder": "~2.8|~3.0", - "symfony/form": "^3.2.10|^3.3.3", - "symfony/http-kernel": "~3.2", - "symfony/polyfill-intl-icu": "~1.0", - "symfony/routing": "~2.8|~3.0", - "symfony/security": "~2.8|~3.0", - "symfony/security-acl": "~2.8|~3.0", - "symfony/stopwatch": "~2.8|~3.0", - "symfony/templating": "~2.8|~3.0", - "symfony/translation": "~2.8|~3.0", - "symfony/var-dumper": "~2.8.10|~3.1.4|~3.2", - "symfony/web-link": "~3.3", - "symfony/yaml": "~2.8|~3.0" - }, - "suggest": { - "symfony/asset": "For using the AssetExtension", - "symfony/expression-language": "For using the ExpressionExtension", - "symfony/finder": "", - "symfony/form": "For using the FormExtension", - "symfony/http-kernel": "For using the HttpKernelExtension", - "symfony/routing": "For using the RoutingExtension", - "symfony/security": "For using the SecurityExtension", - "symfony/stopwatch": "For using the StopwatchExtension", - "symfony/templating": "For using the TwigEngine", - "symfony/translation": "For using the TranslationExtension", - "symfony/var-dumper": "For using the DumpExtension", - "symfony/web-link": "For using the WebLinkExtension", - "symfony/yaml": "For using the YamlExtension" - }, - "type": "symfony-bridge", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Bridge\\Twig\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Twig Bridge", - "homepage": "https://symfony.com", - "time": "2017-07-29T21:54:42+00:00" - }, - { - "name": "symfony/twig-bundle", - "version": "v3.3.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/twig-bundle.git", - "reference": "cb4251a3270d0ea35a503bf3aebb9d917f2c4585" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/cb4251a3270d0ea35a503bf3aebb9d917f2c4585", - "reference": "cb4251a3270d0ea35a503bf3aebb9d917f2c4585", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/config": "~3.2", - "symfony/http-foundation": "~2.8|~3.0", - "symfony/http-kernel": "^3.3", - "symfony/twig-bridge": "^3.3", - "twig/twig": "~1.34|~2.4" - }, - "conflict": { - "symfony/dependency-injection": "<3.3" - }, - "require-dev": { - "doctrine/annotations": "~1.0", - "doctrine/cache": "~1.0", - "symfony/asset": "~2.8|~3.0", - "symfony/dependency-injection": "~3.3", - "symfony/expression-language": "~2.8|~3.0", - "symfony/finder": "~2.8|~3.0", - "symfony/form": "~2.8|~3.0", - "symfony/framework-bundle": "^3.2.8", - "symfony/routing": "~2.8|~3.0", - "symfony/stopwatch": "~2.8|~3.0", - "symfony/templating": "~2.8|~3.0", - "symfony/web-link": "~3.3", - "symfony/yaml": "~2.8|~3.0" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Bundle\\TwigBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony TwigBundle", - "homepage": "https://symfony.com", - "time": "2017-09-01T13:23:39+00:00" - }, - { - "name": "symfony/validator", - "version": "v3.3.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/validator.git", - "reference": "3ad28ae5f6e71b6c8224569aa6f03908f8a6b1c3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/3ad28ae5f6e71b6c8224569aa6f03908f8a6b1c3", - "reference": "3ad28ae5f6e71b6c8224569aa6f03908f8a6b1c3", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation": "~2.8|~3.0" - }, - "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/dependency-injection": "<3.3", - "symfony/yaml": "<3.3" - }, - "require-dev": { - "doctrine/annotations": "~1.0", - "doctrine/cache": "~1.0", - "egulias/email-validator": "^1.2.8|~2.0", - "symfony/cache": "~3.1", - "symfony/config": "~2.8|~3.0", - "symfony/dependency-injection": "~3.3", - "symfony/expression-language": "~2.8|~3.0", - "symfony/http-foundation": "~2.8|~3.0", - "symfony/intl": "^2.8.18|^3.2.5", - "symfony/yaml": "~3.3" - }, - "suggest": { - "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.", - "doctrine/cache": "For using the default cached annotation reader and metadata cache.", - "egulias/email-validator": "Strict (RFC compliant) email validation", - "psr/cache-implementation": "For using the metadata cache.", - "symfony/config": "", - "symfony/expression-language": "For using the Expression validator", - "symfony/http-foundation": "", - "symfony/intl": "", - "symfony/yaml": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Validator\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Validator Component", - "homepage": "https://symfony.com", - "time": "2017-08-27T14:52:21+00:00" - }, - { - "name": "symfony/yaml", - "version": "v3.3.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "1d8c2a99c80862bdc3af94c1781bf70f86bccac0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/1d8c2a99c80862bdc3af94c1781bf70f86bccac0", - "reference": "1d8c2a99c80862bdc3af94c1781bf70f86bccac0", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "require-dev": { - "symfony/console": "~2.8|~3.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Yaml Component", - "homepage": "https://symfony.com", - "time": "2017-07-29T21:54:42+00:00" - }, - { - "name": "twig/extensions", - "version": "v1.5.1", - "source": { - "type": "git", - "url": "https://github.com/twigphp/Twig-extensions.git", - "reference": "d188c76168b853481cc75879ea045bf93d718e9c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig-extensions/zipball/d188c76168b853481cc75879ea045bf93d718e9c", - "reference": "d188c76168b853481cc75879ea045bf93d718e9c", - "shasum": "" - }, - "require": { - "twig/twig": "~1.27|~2.0" - }, - "require-dev": { - "symfony/phpunit-bridge": "~3.3@dev", - "symfony/translation": "~2.3|~3.0" - }, - "suggest": { - "symfony/translation": "Allow the time_diff output to be translated" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-0": { - "Twig_Extensions_": "lib/" - }, - "psr-4": { - "Twig\\Extensions\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Common additional features for Twig that do not directly belong in core", - "homepage": "http://twig.sensiolabs.org/doc/extensions/index.html", - "keywords": [ - "i18n", - "text" - ], - "time": "2017-06-08T18:19:53+00:00" - }, - { - "name": "twig/twig", - "version": "v2.4.3", - "source": { - "type": "git", - "url": "https://github.com/twigphp/Twig.git", - "reference": "eab7c3288ae6603d7d6f92b531626af2b162d1f2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/eab7c3288ae6603d7d6f92b531626af2b162d1f2", - "reference": "eab7c3288ae6603d7d6f92b531626af2b162d1f2", - "shasum": "" - }, - "require": { - "php": "^7.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "require-dev": { - "psr/container": "^1.0", - "symfony/debug": "~2.7", - "symfony/phpunit-bridge": "~3.3@dev" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "autoload": { - "psr-0": { - "Twig_": "lib/" - }, - "psr-4": { - "Twig\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, - { - "name": "Armin Ronacher", - "email": "armin.ronacher@active-4.com", - "role": "Project Founder" - }, - { - "name": "Twig Team", - "homepage": "http://twig.sensiolabs.org/contributors", - "role": "Contributors" + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + }, + { + "name": "Twig Team", + "homepage": "http://twig.sensiolabs.org/contributors", + "role": "Contributors" } ], "description": "Twig, the flexible, fast, and secure template language for PHP", @@ -4377,7 +2456,7 @@ "keywords": [ "templating" ], - "time": "2017-06-07T18:47:58+00:00" + "time": "2017-09-27T18:10:31+00:00" }, { "name": "white-october/pagerfanta-bundle", @@ -4553,16 +2632,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v2.6.0", + "version": "v2.7.1", "source": { "type": "git", "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", - "reference": "5642a36a60c11cdd01488d192541a89bb44a4abf" + "reference": "ab2e189d94698178988f9732bc75bb4ce8d16f77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/5642a36a60c11cdd01488d192541a89bb44a4abf", - "reference": "5642a36a60c11cdd01488d192541a89bb44a4abf", + "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/ab2e189d94698178988f9732bc75bb4ce8d16f77", + "reference": "ab2e189d94698178988f9732bc75bb4ce8d16f77", "shasum": "" }, "require": { @@ -4571,8 +2650,8 @@ "ext-json": "*", "ext-tokenizer": "*", "gecko-packages/gecko-php-unit": "^2.0", - "php": "^5.6 || >=7.0 <7.2", - "sebastian/diff": "^1.4", + "php": "^5.6 || >=7.0 <7.3", + "php-cs-fixer/diff": "^1.0", "symfony/console": "^3.2", "symfony/event-dispatcher": "^3.0", "symfony/filesystem": "^3.0", @@ -4602,11 +2681,6 @@ "php-cs-fixer" ], "type": "application", - "extra": { - "branch-alias": { - "dev-master": "2.6-dev" - } - }, "autoload": { "psr-4": { "PhpCsFixer\\": "src/" @@ -4634,7 +2708,7 @@ } ], "description": "A tool to automatically fix PHP code style", - "time": "2017-09-11T15:23:20+00:00" + "time": "2017-10-02T12:16:05+00:00" }, { "name": "gecko-packages/gecko-php-unit", @@ -4681,265 +2755,32 @@ "time": "2017-08-23T07:39:54+00:00" }, { - "name": "sebastian/diff", - "version": "1.4.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff" - ], - "time": "2017-05-22T07:24:03+00:00" - }, - { - "name": "symfony/browser-kit", - "version": "v3.3.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/browser-kit.git", - "reference": "aee7120b058c268363e606ff5fe8271da849a1b5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/aee7120b058c268363e606ff5fe8271da849a1b5", - "reference": "aee7120b058c268363e606ff5fe8271da849a1b5", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/dom-crawler": "~2.8|~3.0" - }, - "require-dev": { - "symfony/css-selector": "~2.8|~3.0", - "symfony/process": "~2.8|~3.0" - }, - "suggest": { - "symfony/process": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\BrowserKit\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony BrowserKit Component", - "homepage": "https://symfony.com", - "time": "2017-07-29T21:54:42+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v3.3.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "c5f5263ed231f164c58368efbce959137c7d9488" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/c5f5263ed231f164c58368efbce959137c7d9488", - "reference": "c5f5263ed231f164c58368efbce959137c7d9488", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\CssSelector\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony CssSelector Component", - "homepage": "https://symfony.com", - "time": "2017-07-29T21:54:42+00:00" - }, - { - "name": "symfony/debug-bundle", - "version": "v3.3.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/debug-bundle.git", - "reference": "654033558fe379f36edb2afde2dae1152ba8f27b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/654033558fe379f36edb2afde2dae1152ba8f27b", - "reference": "654033558fe379f36edb2afde2dae1152ba8f27b", - "shasum": "" - }, - "require": { - "ext-xml": "*", - "php": "^5.5.9|>=7.0.8", - "symfony/http-kernel": "~2.8|~3.0", - "symfony/twig-bridge": "~2.8|~3.0", - "symfony/var-dumper": "~2.8|~3.0" - }, - "require-dev": { - "symfony/config": "~3.3", - "symfony/dependency-injection": "~3.3", - "symfony/web-profiler-bundle": "~2.8|~3.0" - }, - "suggest": { - "symfony/config": "For service container configuration", - "symfony/dependency-injection": "For using as a service from the container" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Bundle\\DebugBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony DebugBundle", - "homepage": "https://symfony.com", - "time": "2017-08-10T07:07:06+00:00" - }, - { - "name": "symfony/dom-crawler", - "version": "v3.3.9", + "name": "paragonie/random_compat", + "version": "v2.0.11", "source": { "type": "git", - "url": "https://github.com/symfony/dom-crawler.git", - "reference": "6b511d7329b203a620f09a2288818d27dcc915ae" + "url": "https://github.com/paragonie/random_compat.git", + "reference": "5da4d3c796c275c55f057af5a643ae297d96b4d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/6b511d7329b203a620f09a2288818d27dcc915ae", - "reference": "6b511d7329b203a620f09a2288818d27dcc915ae", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/5da4d3c796c275c55f057af5a643ae297d96b4d8", + "reference": "5da4d3c796c275c55f057af5a643ae297d96b4d8", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-mbstring": "~1.0" + "php": ">=5.2.0" }, "require-dev": { - "symfony/css-selector": "~2.8|~3.0" - }, - "suggest": { - "symfony/css-selector": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } + "phpunit/phpunit": "4.*|5.*" }, + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + }, + "type": "library", "autoload": { - "psr-4": { - "Symfony\\Component\\DomCrawler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "files": [ + "lib/random.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -4948,74 +2789,65 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" } ], - "description": "Symfony DomCrawler Component", - "homepage": "https://symfony.com", - "time": "2017-09-11T15:55:22+00:00" + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "pseudorandom", + "random" + ], + "time": "2017-09-27T21:40:39+00:00" }, { - "name": "symfony/dotenv", - "version": "v3.3.9", + "name": "php-cs-fixer/diff", + "version": "v1.1.0", "source": { "type": "git", - "url": "https://github.com/symfony/dotenv.git", - "reference": "ac86b6e484ae9224be290f3a0686858ba18d49d5" + "url": "https://github.com/PHP-CS-Fixer/diff.git", + "reference": "d068edadcb8f7bc2ea3d3769cdbaf609026ec4f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/ac86b6e484ae9224be290f3a0686858ba18d49d5", - "reference": "ac86b6e484ae9224be290f3a0686858ba18d49d5", + "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/d068edadcb8f7bc2ea3d3769cdbaf609026ec4f4", + "reference": "d068edadcb8f7bc2ea3d3769cdbaf609026ec4f4", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": "^5.6 || ^7.0" }, "require-dev": { - "symfony/process": "^3.2" + "phpunit/phpunit": "^4.8.35 || ^5.4.3" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, "autoload": { - "psr-4": { - "Symfony\\Component\\Dotenv\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "Registers environment variables from a .env file", - "homepage": "https://symfony.com", + "description": "sebastian/diff v2 backport support for PHP5.6", + "homepage": "https://github.com/PHP-CS-Fixer", "keywords": [ - "dotenv", - "env", - "environment" + "diff" ], - "time": "2017-09-05T07:59:31+00:00" + "time": "2017-09-23T16:02:08+00:00" }, { "name": "symfony/phpunit-bridge", @@ -5080,20 +2912,21 @@ "time": "2017-09-05T11:23:06+00:00" }, { - "name": "symfony/polyfill-php72", + "name": "symfony/polyfill-php70", "version": "v1.5.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "8abc9097f5001d310f0edba727469c988acc6ea7" + "url": "https://github.com/symfony/polyfill-php70.git", + "reference": "b6482e68974486984f59449ecea1fbbb22ff840f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/8abc9097f5001d310f0edba727469c988acc6ea7", - "reference": "8abc9097f5001d310f0edba727469c988acc6ea7", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/b6482e68974486984f59449ecea1fbbb22ff840f", + "reference": "b6482e68974486984f59449ecea1fbbb22ff840f", "shasum": "" }, "require": { + "paragonie/random_compat": "~1.0|~2.0", "php": ">=5.3.3" }, "type": "library", @@ -5104,10 +2937,13 @@ }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" + "Symfony\\Polyfill\\Php70\\": "" }, "files": [ "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -5124,7 +2960,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -5132,76 +2968,27 @@ "portable", "shim" ], - "time": "2017-07-11T13:25:55+00:00" - }, - { - "name": "symfony/process", - "version": "v3.3.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "b7666e9b438027a1ea0e1ee813ec5042d5d7f6f0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/b7666e9b438027a1ea0e1ee813ec5042d5d7f6f0", - "reference": "b7666e9b438027a1ea0e1ee813ec5042d5d7f6f0", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Process Component", - "homepage": "https://symfony.com", - "time": "2017-07-29T21:54:42+00:00" + "time": "2017-06-14T15:44:48+00:00" }, { "name": "symfony/profiler-pack", - "version": "v1.0.1", + "version": "v1.0.2", "source": { "type": "git", "url": "https://github.com/symfony/profiler-pack.git", - "reference": "b06e9064559868265233fb4b13b0342de921aba2" + "reference": "ff9e32daca50ce4d98fcfeabdc27c9028cf6747b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/profiler-pack/zipball/b06e9064559868265233fb4b13b0342de921aba2", - "reference": "b06e9064559868265233fb4b13b0342de921aba2", + "url": "https://api.github.com/repos/symfony/profiler-pack/zipball/ff9e32daca50ce4d98fcfeabdc27c9028cf6747b", + "reference": "ff9e32daca50ce4d98fcfeabdc27c9028cf6747b", "shasum": "" }, "require": { "php": "^7.0", - "symfony/stopwatch": "^3.3", - "symfony/twig-bundle": "^3.3", - "symfony/web-profiler-bundle": "^3.3" + "symfony/stopwatch": "^3.3|^4.0", + "symfony/twig-bundle": "^3.3|^4.0", + "symfony/web-profiler-bundle": "^3.3|^4.0" }, "type": "metapackage", "notification-url": "https://packagist.org/downloads/", @@ -5209,201 +2996,21 @@ "MIT" ], "description": "A pack for the Symfony web profiler", - "time": "2017-06-12T14:48:57+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v3.3.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "89fcb5a73e0ede2be2512234c4e40457bb22b35f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/89fcb5a73e0ede2be2512234c4e40457bb22b35f", - "reference": "89fcb5a73e0ede2be2512234c4e40457bb22b35f", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" - }, - "require-dev": { - "ext-iconv": "*", - "twig/twig": "~1.34|~2.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-symfony_debug": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "files": [ - "Resources/functions/dump.php" - ], - "psr-4": { - "Symfony\\Component\\VarDumper\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony mechanism for exploring and dumping PHP variables", - "homepage": "https://symfony.com", - "keywords": [ - "debug", - "dump" - ], - "time": "2017-08-27T14:52:21+00:00" - }, - { - "name": "symfony/web-profiler-bundle", - "version": "v3.3.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "929030b67cb67771937d5ffc066b1c3aa37208c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/929030b67cb67771937d5ffc066b1c3aa37208c7", - "reference": "929030b67cb67771937d5ffc066b1c3aa37208c7", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/http-kernel": "~3.2", - "symfony/polyfill-php70": "~1.0", - "symfony/routing": "~2.8|~3.0", - "symfony/twig-bridge": "~2.8|~3.0", - "symfony/var-dumper": "~3.3", - "twig/twig": "~1.34|~2.4" - }, - "conflict": { - "symfony/dependency-injection": "<3.3", - "symfony/event-dispatcher": "<3.2", - "symfony/var-dumper": "<3.3" - }, - "require-dev": { - "symfony/config": "~2.8|~3.0", - "symfony/console": "~2.8|~3.0", - "symfony/dependency-injection": "~3.3", - "symfony/stopwatch": "~2.8|~3.0" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Bundle\\WebProfilerBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony WebProfilerBundle", - "homepage": "https://symfony.com", - "time": "2017-09-01T13:44:20+00:00" - }, + "time": "2017-09-27T22:22:21+00:00" + } + ], + "aliases": [ { - "name": "symfony/web-server-bundle", - "version": "v3.3.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/web-server-bundle.git", - "reference": "b2508667fd9d468135f054c5afc59bc8a5ab7bc7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/web-server-bundle/zipball/b2508667fd9d468135f054c5afc59bc8a5ab7bc7", - "reference": "b2508667fd9d468135f054c5afc59bc8a5ab7bc7", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/console": "~3.3", - "symfony/http-kernel": "~3.3", - "symfony/process": "~3.3" - }, - "conflict": { - "symfony/dependency-injection": "<3.3" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Bundle\\WebServerBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony WebServerBundle", - "homepage": "https://symfony.com", - "time": "2017-08-22T13:33:42+00:00" + "alias": "3.3.9", + "alias_normalized": "3.3.9.0", + "version": "dev-add-message-component", + "package": "symfony/symfony" } ], - "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": { + "symfony/symfony": 20 + }, "prefer-stable": false, "prefer-lowest": false, "platform": { From 8d0c89585691c31b88939032c6353251e3942115 Mon Sep 17 00:00:00 2001 From: Samuel ROZE Date: Tue, 3 Oct 2017 15:01:38 +0200 Subject: [PATCH 02/10] Uses the `Message` component to check spam in comments --- .env.dist | 2 + README.md | 8 + composer.json | 5 +- composer.lock | 241 +++++++++++++++++- config/packages/framework.yaml | 2 + config/services.yaml | 6 + src/Controller/Admin/BlogController.php | 20 ++ src/Message/CheckSpamOnPostComments.php | 33 +++ .../CheckSpamOnPostCommentsHandler.php | 56 ++++ templates/admin/blog/show.html.twig | 10 + translations/messages.en.xlf | 8 + 11 files changed, 384 insertions(+), 7 deletions(-) create mode 100644 src/Message/CheckSpamOnPostComments.php create mode 100644 src/MessageHandler/CheckSpamOnPostCommentsHandler.php diff --git a/.env.dist b/.env.dist index 61dfee9ff..e9dfabb92 100644 --- a/.env.dist +++ b/.env.dist @@ -21,3 +21,5 @@ DATABASE_URL=sqlite:///%kernel.project_dir%/var/data/blog.sqlite # Delivery is disabled by default via "null://localhost" MAILER_URL=null://localhost ###< symfony/swiftmailer-bundle ### + +AKISMET_API_KEY=~ diff --git a/README.md b/README.md index 29a339008..37a9b19a6 100644 --- a/README.md +++ b/README.md @@ -68,6 +68,14 @@ terminal. > For more details, see: > https://symfony.com/doc/current/cookbook/configuration/web_server_configuration.html +### Asynchronous messages + +This application uses the Message component for spam validation of the comments. This is by default done synchronously +but you can activate the asynchronous processing by: +1. +2. +3. + Testing ------- diff --git a/composer.json b/composer.json index b8bf1adc0..12f0c7e30 100644 --- a/composer.json +++ b/composer.json @@ -9,6 +9,7 @@ "doctrine/doctrine-fixtures-bundle": "^2.3", "erusev/parsedown": "^1.6", "ezyang/htmlpurifier": "^4.9", + "guzzlehttp/guzzle": "~6.0", "sensio/framework-extra-bundle": "^3.0", "sensiolabs/security-checker": "^4.1", "symfony/asset": "^3.3", @@ -21,13 +22,13 @@ "symfony/polyfill-apcu": "^1.4", "symfony/security-bundle": "^3.3", "symfony/swiftmailer-bundle": "^3.0", + "symfony/symfony": "dev-add-message-component as 3.3.9", "symfony/translation": "^3.3", "symfony/validator": "^3.3", "symfony/yaml": "^3.3", "twig/extensions": "^1.5", "twig/twig": "^2.4", - "white-october/pagerfanta-bundle": "^1.0", - "symfony/symfony": "dev-add-message-component as 3.3.9" + "white-october/pagerfanta-bundle": "^1.0" }, "require-dev": { "dama/doctrine-test-bundle": "^3.1", diff --git a/composer.lock b/composer.lock index 23f40264b..0cfb8d975 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "556dac67515e9294166d9c39485a0da7", + "content-hash": "848885c9f9e9e66367c5b3645d051dcd", "packages": [ { "name": "composer/ca-bundle", @@ -1156,6 +1156,187 @@ ], "time": "2016-10-17T18:31:11+00:00" }, + { + "name": "guzzlehttp/guzzle", + "version": "6.3.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/f4db5a78a5ea468d4831de7f0bf9d9415e348699", + "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699", + "shasum": "" + }, + "require": { + "guzzlehttp/promises": "^1.0", + "guzzlehttp/psr7": "^1.4", + "php": ">=5.5" + }, + "require-dev": { + "ext-curl": "*", + "phpunit/phpunit": "^4.0 || ^5.0", + "psr/log": "^1.0" + }, + "suggest": { + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.2-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "time": "2017-06-22T18:50:49+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "v1.3.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "shasum": "" + }, + "require": { + "php": ">=5.5.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "time": "2016-12-20T10:07:11+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.4.2", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c", + "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Schultze", + "homepage": "https://github.com/Tobion" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "request", + "response", + "stream", + "uri", + "url" + ], + "time": "2017-03-20T17:10:46+00:00" + }, { "name": "jdorn/sql-formatter", "version": "v1.2.17", @@ -1448,6 +1629,56 @@ ], "time": "2017-02-14T16:28:37+00:00" }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2016-08-06T14:39:51+00:00" + }, { "name": "psr/link", "version": "1.0.0", @@ -2185,12 +2416,12 @@ "source": { "type": "git", "url": "https://github.com/sroze/symfony.git", - "reference": "89eaca5c420cbacd5887e85e7d0e7a7b235912e6" + "reference": "aa75883d21a42ffb5497f7855357b21066c2bd79" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sroze/symfony/zipball/89eaca5c420cbacd5887e85e7d0e7a7b235912e6", - "reference": "89eaca5c420cbacd5887e85e7d0e7a7b235912e6", + "url": "https://api.github.com/repos/sroze/symfony/zipball/aa75883d21a42ffb5497f7855357b21066c2bd79", + "reference": "aa75883d21a42ffb5497f7855357b21066c2bd79", "shasum": "" }, "require": { @@ -2334,7 +2565,7 @@ "support": { "source": "https://github.com/sroze/symfony/tree/add-message-component" }, - "time": "2017-10-02T10:32:33+00:00" + "time": "2017-10-03 12:57:32" }, { "name": "twig/extensions", diff --git a/config/packages/framework.yaml b/config/packages/framework.yaml index 97ce3bcce..7dea4ed83 100644 --- a/config/packages/framework.yaml +++ b/config/packages/framework.yaml @@ -28,3 +28,5 @@ framework: # See https://symfony.com/doc/current/reference/configuration/framework.html#ide ide: ~ validation: { enable_annotations: true } + form: ~ + message: ~ diff --git a/config/services.yaml b/config/services.yaml index ad62254ab..2deda1153 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -50,3 +50,9 @@ services: # needed for the 'localizeddate' Twig filter Twig\Extensions\IntlExtension: ~ + + # Message handler + App\MessageHandler\CheckSpamOnPostCommentsHandler: + arguments: + $akismetApiKey: '%env(AKISMET_API_KEY)%' + tags: [{name: 'message_handler', handles: 'App\Message\CheckSpamOnPostComments'}] diff --git a/src/Controller/Admin/BlogController.php b/src/Controller/Admin/BlogController.php index a81c0537b..411063029 100644 --- a/src/Controller/Admin/BlogController.php +++ b/src/Controller/Admin/BlogController.php @@ -13,6 +13,7 @@ use App\Entity\Post; use App\Form\PostType; +use App\Message\CheckSpamOnPostComments; use App\Utils\Slugger; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; @@ -187,4 +188,23 @@ public function deleteAction(Request $request, Post $post): Response return $this->redirectToRoute('admin_post_index'); } + + /** + * Check spam on post's entities. + * + * @Route("/{id}/check-comments", name="admin_post_check_comments") + * @Method("POST") + * @Security("is_granted('edit', post)") + */ + public function checkCommentsAction(Request $request, Post $post): Response + { + if (!$this->isCsrfTokenValid('check_comments', $request->request->get('token'))) { + return $this->redirectToRoute('admin_post_index'); + } + + $this->get('message_bus')->handle(new CheckSpamOnPostComments($post->getId())); + $this->addFlash('success', 'post.comments_checked'); + + return $this->redirectToRoute('admin_post_show', ['id' => $post->getId()]); + } } diff --git a/src/Message/CheckSpamOnPostComments.php b/src/Message/CheckSpamOnPostComments.php new file mode 100644 index 000000000..e450f9a49 --- /dev/null +++ b/src/Message/CheckSpamOnPostComments.php @@ -0,0 +1,33 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace App\Message; + +/** + * @author Samuel Roze + */ +final class CheckSpamOnPostComments +{ + /** + * @var int + */ + private $postId; + + public function __construct(int $postId) + { + $this->postId = $postId; + } + + public function getPostId(): int + { + return $this->postId; + } +} diff --git a/src/MessageHandler/CheckSpamOnPostCommentsHandler.php b/src/MessageHandler/CheckSpamOnPostCommentsHandler.php new file mode 100644 index 000000000..0546e9dcc --- /dev/null +++ b/src/MessageHandler/CheckSpamOnPostCommentsHandler.php @@ -0,0 +1,56 @@ +entityManager = $entityManager; + $this->akismetApiKey = $akismetApiKey; + $this->httpClient = new Client(); + } + + public function __invoke(CheckSpamOnPostComments $message) + { + $comments = $this->entityManager->getRepository(Comment::class)->findBy([ + 'post' => $message->getPostId(), + ]); + + foreach ($comments as $comment) { + if ($this->commentIsSpam($comment)) { + $this->entityManager->remove($comment); + } + } + } + + private function commentIsSpam(Comment $comment) : bool + { + try { + $response = $this->httpClient->request('post', sprintf('https://%s.rest.akismet.com/1.1/comment-check', $this->akismetApiKey), [ + 'form_params' => [ + 'blog' => $_SERVER['HTTP_ORIGIN'], + 'user_ip' => $_SERVER['REMOTE_ADDR'], + 'user_agent' => $_SERVER['HTTP_USER_AGENT'], + 'comment_content' => $comment->getContent(), + 'comment_author' => $comment->getAuthor()->getFullName(), + ], + ]); + } catch (RequestException $e) { + throw new \RuntimeException(sprintf('Was unable to check spam status of comment #%d', $comment->getId()), $e->getCode(), $e); + } + + return 'true' == $response->getBody()->getContents(); + } +} diff --git a/templates/admin/blog/show.html.twig b/templates/admin/blog/show.html.twig index 93fc3c94b..533dabb92 100644 --- a/templates/admin/blog/show.html.twig +++ b/templates/admin/blog/show.html.twig @@ -30,6 +30,16 @@ {{ include('admin/blog/_delete_form.html.twig', {post: post}, with_context = false) }} +
+
+ + +
+
+ {{ parent() }} {{ show_source_code(_self) }} diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index 098699b40..6d27bd9bb 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -113,6 +113,10 @@ action.edit_post Edit post + + action.check_comments + Check comments + action.save Save changes @@ -292,6 +296,10 @@ post.deleted_successfully Post deleted successfully! + + post.comments_checked + Post comments have been checked + post.search_for Search for... From 372f652310ce184072fbc44a1e2a528f0159dce0 Mon Sep 17 00:00:00 2001 From: Samuel ROZE Date: Tue, 3 Oct 2017 18:15:49 +0200 Subject: [PATCH 03/10] Add documentation about asynchronous message processing --- README.md | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 68 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 37a9b19a6..c64fb426a 100644 --- a/README.md +++ b/README.md @@ -68,13 +68,75 @@ terminal. > For more details, see: > https://symfony.com/doc/current/cookbook/configuration/web_server_configuration.html -### Asynchronous messages +### Asynchronous processing -This application uses the Message component for spam validation of the comments. This is by default done synchronously -but you can activate the asynchronous processing by: -1. -2. -3. +This application allows you to purge comments considered as spam using Akismet's API. While using the "Check comments" +button in the backend, this is done synchronously by default. As the processing can be quite slow, it can be nice to +do this processing asynchronously. In order to do so, follow these steps: + +1. Pick and install a [Message adapter](https://github.com/sroze/symfony/blob/add-message-component/src/Symfony/Component/Message/README.md#adapters). +We will use PHP enqueue and its AMQP adapter for this example: +``` +composer req sroze/enqueue-bridge:dev-master enqueue/amqp-ext +``` + +2. Configure the adapter. +```yaml +# config/packages/enqueue.yaml +enqueue: + transport: + default: 'amqp' + amqp: + host: 'localhost' + port: 5672 + user: 'guest' + pass: 'guest' + vhost: '/' + receive_method: basic_consume + client: ~ +``` + +3. Register your consumer & producer +```yaml +# config/services.yaml +services: + app.amqp_consumer: + class: Sam\Symfony\Bridge\EnqueueMessage\EnqueueConsumer + arguments: + - "@message.transport.default_decoder" + - "@enqueue.transport.amqp.context" + - "messages" # Name of the queue + + app.amqp_producer: + class: Sam\Symfony\Bridge\EnqueueMessage\EnqueueProducer + arguments: + - "@message.transport.default_encoder" + - "@enqueue.transport.amqp.context" + - "messages" # Name of the queue +``` + +4. Route your messages to the consumer +```yaml +# config/packages/framework.yaml +framework: + message: + routing: + 'App\Message\CheckSpamOnPostComments': app.amqp_producer +``` + +You are done. The `CheckSpamOnPostComments` messages will be sent to your local RabbitMq instance. In order to process +them asynchronously, you need to consume the messages pushed in the queue. You can start a worker with the `message:consume` +command: + +```bash +bin/console message:consume --consumer=app.amqp_consumer +``` + +**Note:** if you don't have RabbitMq installed locally but have Docker, run a RabbitMq instance this way: +```sh +docker run -d --hostname rabbit --name rabbit -p 8080:15672 -p 5672:5672 rabbitmq:3-management +``` +The administration console will be accessible at http://localhost:8080 Testing ------- From a8e75da3d801086fb3ab99c17638132453554e05 Mon Sep 17 00:00:00 2001 From: Samuel ROZE Date: Tue, 3 Oct 2017 18:17:47 +0200 Subject: [PATCH 04/10] Enable serializer --- config/packages/framework.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/packages/framework.yaml b/config/packages/framework.yaml index 7dea4ed83..5dfebea1e 100644 --- a/config/packages/framework.yaml +++ b/config/packages/framework.yaml @@ -29,4 +29,5 @@ framework: ide: ~ validation: { enable_annotations: true } form: ~ + serializer: ~ message: ~ From 40cbd15f69fd97c6a02cef7ef46ae3a97ac298df Mon Sep 17 00:00:00 2001 From: Samuel ROZE Date: Tue, 3 Oct 2017 18:22:29 +0200 Subject: [PATCH 05/10] Update style --- .../CheckSpamOnPostCommentsHandler.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/MessageHandler/CheckSpamOnPostCommentsHandler.php b/src/MessageHandler/CheckSpamOnPostCommentsHandler.php index 0546e9dcc..2bc4b9b72 100644 --- a/src/MessageHandler/CheckSpamOnPostCommentsHandler.php +++ b/src/MessageHandler/CheckSpamOnPostCommentsHandler.php @@ -1,5 +1,14 @@ + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + namespace App\MessageHandler; use App\Entity\Comment; @@ -35,7 +44,7 @@ public function __invoke(CheckSpamOnPostComments $message) } } - private function commentIsSpam(Comment $comment) : bool + private function commentIsSpam(Comment $comment): bool { try { $response = $this->httpClient->request('post', sprintf('https://%s.rest.akismet.com/1.1/comment-check', $this->akismetApiKey), [ @@ -51,6 +60,6 @@ private function commentIsSpam(Comment $comment) : bool throw new \RuntimeException(sprintf('Was unable to check spam status of comment #%d', $comment->getId()), $e->getCode(), $e); } - return 'true' == $response->getBody()->getContents(); + return 'true' === $response->getBody()->getContents(); } } From 7a5b550f35b099d6c9143d4c847aa7ae8cde36df Mon Sep 17 00:00:00 2001 From: Samuel ROZE Date: Sat, 7 Oct 2017 17:26:42 +0100 Subject: [PATCH 06/10] Allow comments check to be done outside of HTTP's context --- src/MessageHandler/CheckSpamOnPostCommentsHandler.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/MessageHandler/CheckSpamOnPostCommentsHandler.php b/src/MessageHandler/CheckSpamOnPostCommentsHandler.php index 2bc4b9b72..4f323d3db 100644 --- a/src/MessageHandler/CheckSpamOnPostCommentsHandler.php +++ b/src/MessageHandler/CheckSpamOnPostCommentsHandler.php @@ -49,9 +49,9 @@ private function commentIsSpam(Comment $comment): bool try { $response = $this->httpClient->request('post', sprintf('https://%s.rest.akismet.com/1.1/comment-check', $this->akismetApiKey), [ 'form_params' => [ - 'blog' => $_SERVER['HTTP_ORIGIN'], - 'user_ip' => $_SERVER['REMOTE_ADDR'], - 'user_agent' => $_SERVER['HTTP_USER_AGENT'], + 'blog' => $_SERVER['HTTP_ORIGIN'] ?? 'http://localhost', + 'user_ip' => $_SERVER['REMOTE_ADDR'] ?? null, + 'user_agent' => $_SERVER['HTTP_USER_AGENT'] ?? null, 'comment_content' => $comment->getContent(), 'comment_author' => $comment->getAuthor()->getFullName(), ], From adc665d0bfb7f1de8dadb7851633ad89c66541e3 Mon Sep 17 00:00:00 2001 From: Samuel ROZE Date: Sun, 8 Oct 2017 13:18:35 +0100 Subject: [PATCH 07/10] Add more about Swarrot's setup --- README.md | 96 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 93 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index c64fb426a..caf9e0dca 100644 --- a/README.md +++ b/README.md @@ -72,10 +72,100 @@ terminal. This application allows you to purge comments considered as spam using Akismet's API. While using the "Check comments" button in the backend, this is done synchronously by default. As the processing can be quite slow, it can be nice to -do this processing asynchronously. In order to do so, follow these steps: +do this processing asynchronously. + +Pick a [Message adapter](https://github.com/sroze/symfony/blob/add-message-component/src/Symfony/Component/Message/README.md#adapters) +compatible with the Message component, install it, configure it and route some messages to it. This documentation contains +guides to use Swarrot and Php-Enqueue. + +- [With Swarrot](#with-swarrot) +- [With Php-Enqueue](#with-php-enqueue) + +#### With Swarrot + +1. Install Swarrot's bridge +``` +composer req sroze/swarrot-bridge:dev-master +``` + +2. Configure Swarrot Bundle within your application. +```yaml +# config/packages/swarrot.yaml +swarrot: + default_connection: rabbitmq + connections: + rabbitmq: + host: 'localhost' + port: 5672 + login: 'guest' + password: 'guest' + vhost: '/' + + consumers: + my_consumer: + processor: app.message_processor + middleware_stack: + - configurator: swarrot.processor.signal_handler + - configurator: swarrot.processor.max_messages + extras: + max_messages: 100 + - configurator: swarrot.processor.doctrine_connection + extras: + doctrine_ping: true + - configurator: swarrot.processor.doctrine_object_manager + - configurator: swarrot.processor.exception_catcher + - configurator: swarrot.processor.ack + + messages_types: + my_publisher: + connection: rabbitmq # use the default connection by default + exchange: my_exchange +``` + +**Important note:** Swarrot will not automatically create the exchanges, queues and bindings for you. You need to manually +configure these within RabbitMq (or another connector you use). + +3. Register producer and processor. +```yaml +# config/services.yaml +services: + # ... + + app.message_producer: + class: Sam\Symfony\Bridge\SwarrotMessage\SwarrotProducer + arguments: + - "@swarrot.publisher" + - "@message.transport.default_encoder" + - my_publisher + + app.message_processor: + class: Sam\Symfony\Bridge\SwarrotMessage\SwarrotProcessor + arguments: + - "@message_bus" + - "@message.transport.default_decoder" +``` + +See that the processor is something Swarrot-specific. As Swarrot's power is to consume messages, we won't use the Message +component's command in this context but Swarrot's command. [Via the bundle configuration](https://github.com/sroze/symfony-demo/blob/6afc2c6116466e1d3610abe7491d40035c0bf4b3/config/packages/swarrot.yaml#L14), +we configure Swarrot to use our processor. + +4. Route your messages to the bus +```yaml +# config/packages/framework.yaml + message: + routing: + 'App\Message\CheckSpamOnPostComments': app.message_producer +``` + +5. Consume your messages! +```bash +bin/console swarrot:consume:my_consumer queue_name_you_created +``` + +#### With Php-Enqueue + +1. Install the enqueue bridge and the enqueue AMQP extension. (Note that you can use any of the multiple php-enqueue extensions) -1. Pick and install a [Message adapter](https://github.com/sroze/symfony/blob/add-message-component/src/Symfony/Component/Message/README.md#adapters). -We will use PHP enqueue and its AMQP adapter for this example: ``` composer req sroze/enqueue-bridge:dev-master enqueue/amqp-ext ``` From c7964c6e4fcaac6311ec580adc4a20ff865b2090 Mon Sep 17 00:00:00 2001 From: Samuel ROZE Date: Mon, 25 Dec 2017 20:24:52 +0100 Subject: [PATCH 08/10] Update the dependencies --- composer.json | 12 +- composer.lock | 508 ++++++++++++++++++++++++++++++++++++++++++++++++-- symfony.lock | 36 ++++ 3 files changed, 534 insertions(+), 22 deletions(-) diff --git a/composer.json b/composer.json index 233f2bc21..e0ceeaeca 100644 --- a/composer.json +++ b/composer.json @@ -16,14 +16,16 @@ "symfony/expression-language": "^4.0", "symfony/flex": "^1.0", "symfony/form": "^4.0", - "symfony/framework-bundle": "^4.0", + "symfony/framework-bundle": "dev-add-message-component as 4.0", + "symfony/message": "dev-add-message-component as 4.0", "symfony/monolog-bundle": "^3.1", "symfony/orm-pack": "^1.0", "symfony/polyfill-apcu": "^1.5", "symfony/security-bundle": "^4.0", + "symfony/serializer-pack": "^1.0", "symfony/swiftmailer-bundle": "^3.1", "symfony/translation": "^4.0", - "symfony/validator": "^4.0", + "symfony/validator": "dev-master as 4.0", "symfony/yaml": "^4.0", "twig/extensions": "^1.5", "twig/twig": "^2.4", @@ -72,7 +74,11 @@ "repositories": [ { "type": "vcs", - "url": "https://github.com/sroze/symfony" + "url": "https://github.com/sroze/message" + }, + { + "type": "vcs", + "url": "https://github.com/sroze/framework-bundle" } ], "extra": { diff --git a/composer.lock b/composer.lock index 6e90322bf..587b2c04e 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "8f444fd7a1a9fcc7c1fa46fe58f3e2d3", + "content-hash": "c4fa72916475fc4070f64a7f0874ff94", "packages": [ { "name": "composer/ca-bundle", @@ -1743,6 +1743,158 @@ ], "time": "2017-03-20T13:46:15+00:00" }, + { + "name": "phpdocumentor/reflection-common", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2017-09-11T18:02:19+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "4.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "66465776cfc249844bde6d117abff1d22e06c2da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/66465776cfc249844bde6d117abff1d22e06c2da", + "reference": "66465776cfc249844bde6d117abff1d22e06c2da", + "shasum": "" + }, + "require": { + "php": "^7.0", + "phpdocumentor/reflection-common": "^1.0.0", + "phpdocumentor/type-resolver": "^0.4.0", + "webmozart/assert": "^1.0" + }, + "require-dev": { + "doctrine/instantiator": "~1.0.5", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2017-11-27T17:38:31+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "0.4.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", + "shasum": "" + }, + "require": { + "php": "^5.5 || ^7.0", + "phpdocumentor/reflection-common": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "time": "2017-07-14T14:27:02+00:00" + }, { "name": "psr/cache", "version": "1.0.1", @@ -2950,16 +3102,16 @@ }, { "name": "symfony/framework-bundle", - "version": "v4.0.2", + "version": "dev-add-message-component", "source": { "type": "git", - "url": "https://github.com/symfony/framework-bundle.git", - "reference": "82e45a486a2cbdab5d43512bea10af1681dcd8e2" + "url": "https://github.com/sroze/framework-bundle.git", + "reference": "4ca2f72cbeaf1cf10f219e7a13463b38905f499b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/82e45a486a2cbdab5d43512bea10af1681dcd8e2", - "reference": "82e45a486a2cbdab5d43512bea10af1681dcd8e2", + "url": "https://api.github.com/repos/sroze/framework-bundle/zipball/4ca2f72cbeaf1cf10f219e7a13463b38905f499b", + "reference": "4ca2f72cbeaf1cf10f219e7a13463b38905f499b", "shasum": "" }, "require": { @@ -2987,7 +3139,7 @@ "symfony/serializer": "<3.4", "symfony/stopwatch": "<3.4", "symfony/translation": "<3.4", - "symfony/validator": "<3.4", + "symfony/validator": "<4.1", "symfony/workflow": "<3.4" }, "require-dev": { @@ -3013,7 +3165,7 @@ "symfony/stopwatch": "~3.4|~4.0", "symfony/templating": "~3.4|~4.0", "symfony/translation": "~3.4|~4.0", - "symfony/validator": "~3.4|~4.0", + "symfony/validator": "~4.1", "symfony/var-dumper": "~3.4|~4.0", "symfony/web-link": "~3.4|~4.0", "symfony/workflow": "~3.4|~4.0", @@ -3033,7 +3185,7 @@ "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "4.1-dev" } }, "autoload": { @@ -3044,7 +3196,6 @@ "/Tests/" ] }, - "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -3060,7 +3211,10 @@ ], "description": "Symfony FrameworkBundle", "homepage": "https://symfony.com", - "time": "2017-12-15T01:44:28+00:00" + "support": { + "source": "https://github.com/sroze/framework-bundle/tree/add-message-component" + }, + "time": "2017-12-25T12:07:56+00:00" }, { "name": "symfony/http-foundation", @@ -3333,6 +3487,64 @@ ], "time": "2017-12-14T19:48:22+00:00" }, + { + "name": "symfony/message", + "version": "dev-add-message-component", + "source": { + "type": "git", + "url": "https://github.com/sroze/message.git", + "reference": "3b6a8ed90aca3666863b36bf1ccd03a4bb82067a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sroze/message/zipball/3b6a8ed90aca3666863b36bf1ccd03a4bb82067a", + "reference": "3b6a8ed90aca3666863b36bf1ccd03a4bb82067a", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "require-dev": { + "symfony/serializer": "~3.4|~4.0" + }, + "suggest": { + "sroze/enqueue-bridge": "For using the php-enqueue library as an adapater." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Message\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Message Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/sroze/message/tree/add-message-component", + "issues": "https://github.com/sroze/message/issues" + }, + "time": "2017-12-25T12:07:56+00:00" + }, { "name": "symfony/monolog-bridge", "version": "v4.0.2", @@ -3784,6 +3996,82 @@ ], "time": "2017-12-14T00:19:09+00:00" }, + { + "name": "symfony/property-info", + "version": "v4.0.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/property-info.git", + "reference": "bfb9ba900f348ebce10147c9c795cb880c9d14b1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/property-info/zipball/bfb9ba900f348ebce10147c9c795cb880c9d14b1", + "reference": "bfb9ba900f348ebce10147c9c795cb880c9d14b1", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/inflector": "~3.4|~4.0" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "<3.0||>=3.2.0,<3.2.2", + "phpdocumentor/type-resolver": "<0.2.1", + "symfony/dependency-injection": "<3.4" + }, + "require-dev": { + "doctrine/annotations": "~1.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0", + "symfony/cache": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/serializer": "~3.4|~4.0" + }, + "suggest": { + "phpdocumentor/reflection-docblock": "To use the PHPDoc", + "psr/cache-implementation": "To cache results", + "symfony/doctrine-bridge": "To use Doctrine metadata", + "symfony/serializer": "To use Serializer metadata" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\PropertyInfo\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kévin Dunglas", + "email": "dunglas@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Property Info Component", + "homepage": "https://symfony.com", + "keywords": [ + "doctrine", + "phpdoc", + "property", + "symfony", + "type", + "validator" + ], + "time": "2017-11-07T14:45:01+00:00" + }, { "name": "symfony/routing", "version": "v4.0.2", @@ -4019,6 +4307,115 @@ "homepage": "https://symfony.com", "time": "2017-12-14T22:39:22+00:00" }, + { + "name": "symfony/serializer", + "version": "v4.0.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/serializer.git", + "reference": "dcfc5c5fdea34a1107d90b57240fa514953a0f99" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/serializer/zipball/dcfc5c5fdea34a1107d90b57240fa514953a0f99", + "reference": "dcfc5c5fdea34a1107d90b57240fa514953a0f99", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "conflict": { + "phpdocumentor/type-resolver": "<0.2.1", + "symfony/dependency-injection": "<3.4", + "symfony/property-access": "<3.4", + "symfony/property-info": "<3.4", + "symfony/yaml": "<3.4" + }, + "require-dev": { + "doctrine/annotations": "~1.0", + "doctrine/cache": "~1.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0", + "symfony/cache": "~3.4|~4.0", + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/http-foundation": "~3.4|~4.0", + "symfony/property-access": "~3.4|~4.0", + "symfony/property-info": "~3.4|~4.0", + "symfony/yaml": "~3.4|~4.0" + }, + "suggest": { + "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.", + "doctrine/cache": "For using the default cached annotation reader and metadata cache.", + "psr/cache-implementation": "For using the metadata cache.", + "symfony/config": "For using the XML mapping loader.", + "symfony/http-foundation": "To use the DataUriNormalizer.", + "symfony/property-access": "For using the ObjectNormalizer.", + "symfony/property-info": "To deserialize relations.", + "symfony/yaml": "For using the default YAML mapping loader." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Serializer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Serializer Component", + "homepage": "https://symfony.com", + "time": "2017-12-08T15:46:13+00:00" + }, + { + "name": "symfony/serializer-pack", + "version": "v1.0.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/serializer-pack.git", + "reference": "35cea385ea44d1f40ec12571996bf768fbe409de" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/serializer-pack/zipball/35cea385ea44d1f40ec12571996bf768fbe409de", + "reference": "35cea385ea44d1f40ec12571996bf768fbe409de", + "shasum": "" + }, + "require": { + "doctrine/annotations": "^1.0", + "php": "^7.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0", + "symfony/cache": "^3.3|^4.0", + "symfony/property-access": "^3.3|^4.0", + "symfony/property-info": "^3.3|^4.0", + "symfony/serializer": "^3.3|^4.0" + }, + "type": "symfony-pack", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A pack for the Symfony serializer", + "time": "2017-12-12T01:48:53+00:00" + }, { "name": "symfony/swiftmailer-bundle", "version": "v3.1.6", @@ -4314,16 +4711,16 @@ }, { "name": "symfony/validator", - "version": "v4.0.2", + "version": "dev-master", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "26fc2a1e167ef1193def50f03d39e40456c8ccb9" + "reference": "7c29f0db735428f066c6aaac036d2b6199be0da2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/26fc2a1e167ef1193def50f03d39e40456c8ccb9", - "reference": "26fc2a1e167ef1193def50f03d39e40456c8ccb9", + "url": "https://api.github.com/repos/symfony/validator/zipball/7c29f0db735428f066c6aaac036d2b6199be0da2", + "reference": "7c29f0db735428f066c6aaac036d2b6199be0da2", "shasum": "" }, "require": { @@ -4367,7 +4764,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "4.1-dev" } }, "autoload": { @@ -4394,7 +4791,7 @@ ], "description": "Symfony Validator Component", "homepage": "https://symfony.com", - "time": "2017-12-14T19:48:22+00:00" + "time": "2017-12-14T19:50:39+00:00" }, { "name": "symfony/yaml", @@ -4576,6 +4973,56 @@ ], "time": "2017-09-27T18:10:31+00:00" }, + { + "name": "webmozart/assert", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", + "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2016-11-23T20:04:58+00:00" + }, { "name": "white-october/pagerfanta-bundle", "version": "v1.1.1", @@ -5866,9 +6313,32 @@ "time": "2017-12-12T08:41:51+00:00" } ], - "aliases": [], + "aliases": [ + { + "alias": "4.0", + "alias_normalized": "4.0.0.0", + "version": "dev-add-message-component", + "package": "symfony/framework-bundle" + }, + { + "alias": "4.0", + "alias_normalized": "4.0.0.0", + "version": "dev-add-message-component", + "package": "symfony/message" + }, + { + "alias": "4.0", + "alias_normalized": "4.0.0.0", + "version": "9999999-dev", + "package": "symfony/validator" + } + ], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": { + "symfony/framework-bundle": 20, + "symfony/message": 20, + "symfony/validator": 20 + }, "prefer-stable": false, "prefer-lowest": false, "platform": { diff --git a/symfony.lock b/symfony.lock index 32f79d5f4..e3b41c911 100644 --- a/symfony.lock +++ b/symfony.lock @@ -92,6 +92,15 @@ "gecko-packages/gecko-php-unit": { "version": "v2.2" }, + "guzzlehttp/guzzle": { + "version": "6.3.0" + }, + "guzzlehttp/promises": { + "version": "v1.3.1" + }, + "guzzlehttp/psr7": { + "version": "1.4.2" + }, "jdorn/sql-formatter": { "version": "v1.2.17" }, @@ -113,12 +122,24 @@ "php-cs-fixer/diff": { "version": "v1.2.0" }, + "phpdocumentor/reflection-common": { + "version": "1.0.1" + }, + "phpdocumentor/reflection-docblock": { + "version": "4.2.0" + }, + "phpdocumentor/type-resolver": { + "version": "0.4.0" + }, "psr/cache": { "version": "1.0.1" }, "psr/container": { "version": "1.0.0" }, + "psr/http-message": { + "version": "1.0.1" + }, "psr/log": { "version": "1.0.2" }, @@ -239,6 +260,9 @@ "symfony/intl": { "version": "v3.4.0-beta2" }, + "symfony/message": { + "version": "4.0-dev" + }, "symfony/monolog-bridge": { "version": "v3.4.0-beta2" }, @@ -290,6 +314,9 @@ "symfony/property-access": { "version": "v3.4.0-beta2" }, + "symfony/property-info": { + "version": "v4.0.2" + }, "symfony/routing": { "version": "3.3", "recipe": { @@ -311,6 +338,12 @@ "ref": "85834af1496735f28d831489d12ab1921a875e0d" } }, + "symfony/serializer": { + "version": "v4.0.2" + }, + "symfony/serializer-pack": { + "version": "v1.0.1" + }, "symfony/stopwatch": { "version": "v3.4.0-beta2" }, @@ -383,6 +416,9 @@ "twig/twig": { "version": "v2.4.4" }, + "webmozart/assert": { + "version": "1.2.0" + }, "white-october/pagerfanta-bundle": { "version": "v1.0.8" }, From b9d39a203377ac15f6fcd74bcf6fb473f13386a9 Mon Sep 17 00:00:00 2001 From: Samuel ROZE Date: Mon, 25 Dec 2017 21:35:39 +0100 Subject: [PATCH 09/10] Fix some merge issues and bits and blobs --- config/services.yaml | 10 ++-------- src/Controller/Admin/BlogController.php | 2 +- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/config/services.yaml b/config/services.yaml index 24435da6b..61133300c 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -35,15 +35,9 @@ services: App\EventSubscriber\CommentNotificationSubscriber: $sender: '%app.notifications.email_sender%' - App\EventSubscriber\RedirectToPreferredLocaleSubscriber: - $locales: '%app_locales%' - $defaultLocale: '%locale%' - - # needed for the 'localizeddate' Twig filter - Twig\Extensions\IntlExtension: ~ - # Message handler App\MessageHandler\CheckSpamOnPostCommentsHandler: arguments: $akismetApiKey: '%env(AKISMET_API_KEY)%' - tags: [{name: 'message_handler', handles: 'App\Message\CheckSpamOnPostComments'}] + tags: + - message_handler diff --git a/src/Controller/Admin/BlogController.php b/src/Controller/Admin/BlogController.php index d795733f4..ebbf279d8 100644 --- a/src/Controller/Admin/BlogController.php +++ b/src/Controller/Admin/BlogController.php @@ -202,7 +202,7 @@ public function checkCommentsAction(Request $request, Post $post): Response return $this->redirectToRoute('admin_post_index'); } - $this->get('message_bus')->handle(new CheckSpamOnPostComments($post->getId())); + $this->get('message_bus')->dispatch(new CheckSpamOnPostComments($post->getId())); $this->addFlash('success', 'post.comments_checked'); return $this->redirectToRoute('admin_post_show', ['id' => $post->getId()]); From 2c3ac3ad21b34bbdd0fc61a30e316c3c35d68e30 Mon Sep 17 00:00:00 2001 From: Samuel ROZE Date: Sun, 7 Jan 2018 16:48:23 +0000 Subject: [PATCH 10/10] Remove the "asynchronous message" description --- README.md | 160 ------------------------------------------------------ 1 file changed, 160 deletions(-) diff --git a/README.md b/README.md index 84fcb1cfa..2a9bd132c 100644 --- a/README.md +++ b/README.md @@ -37,166 +37,6 @@ $ php bin/console server:run Alternatively, you can [configure a fully-featured web server][2] like Nginx or Apache to run the application. -### Asynchronous processing - -This application allows you to purge comments considered as spam using Akismet's API. While using the "Check comments" -button in the backend, this is done synchronously by default. As the processing can be quite slow, it can be nice to -do this processing asynchronously. - -Pick a [Message adapter](https://github.com/sroze/symfony/blob/add-message-component/src/Symfony/Component/Message/README.md#adapters) -compatible with the Message component, install it, configure it and route some messages to it. This documentation contains -guides to use Swarrot and Php-Enqueue. - -- [With Swarrot](#with-swarrot) -- [With Php-Enqueue](#with-php-enqueue) - -#### With Swarrot - -1. Install Swarrot's bridge -``` -composer req sroze/swarrot-bridge:dev-master -``` - -2. Configure Swarrot Bundle within your application. -```yaml -# config/packages/swarrot.yaml -swarrot: - default_connection: rabbitmq - connections: - rabbitmq: - host: 'localhost' - port: 5672 - login: 'guest' - password: 'guest' - vhost: '/' - - consumers: - my_consumer: - processor: app.message_processor - middleware_stack: - - configurator: swarrot.processor.signal_handler - - configurator: swarrot.processor.max_messages - extras: - max_messages: 100 - - configurator: swarrot.processor.doctrine_connection - extras: - doctrine_ping: true - - configurator: swarrot.processor.doctrine_object_manager - - configurator: swarrot.processor.exception_catcher - - configurator: swarrot.processor.ack - - messages_types: - my_publisher: - connection: rabbitmq # use the default connection by default - exchange: my_exchange -``` - -**Important note:** Swarrot will not automatically create the exchanges, queues and bindings for you. You need to manually -configure these within RabbitMq (or another connector you use). - -3. Register producer and processor. -```yaml -# config/services.yaml -services: - # ... - - app.message_producer: - class: Sam\Symfony\Bridge\SwarrotMessage\SwarrotProducer - arguments: - - "@swarrot.publisher" - - "@message.transport.default_encoder" - - my_publisher - - app.message_processor: - class: Sam\Symfony\Bridge\SwarrotMessage\SwarrotProcessor - arguments: - - "@message_bus" - - "@message.transport.default_decoder" -``` - -See that the processor is something Swarrot-specific. As Swarrot's power is to consume messages, we won't use the Message -component's command in this context but Swarrot's command. [Via the bundle configuration](https://github.com/sroze/symfony-demo/blob/6afc2c6116466e1d3610abe7491d40035c0bf4b3/config/packages/swarrot.yaml#L14), -we configure Swarrot to use our processor. - -4. Route your messages to the bus -```yaml -# config/packages/framework.yaml - message: - routing: - 'App\Message\CheckSpamOnPostComments': app.message_producer -``` - -5. Consume your messages! -```bash -bin/console swarrot:consume:my_consumer queue_name_you_created -``` - -#### With Php-Enqueue - -1. Install the enqueue bridge and the enqueue AMQP extension. (Note that you can use any of the multiple php-enqueue extensions) - -``` -composer req sroze/enqueue-bridge:dev-master enqueue/amqp-ext -``` - -2. Configure the adapter. -```yaml -# config/packages/enqueue.yaml -enqueue: - transport: - default: 'amqp' - amqp: - host: 'localhost' - port: 5672 - user: 'guest' - pass: 'guest' - vhost: '/' - receive_method: basic_consume - client: ~ -``` - -3. Register your consumer & producer -```yaml -# config/services.yaml -services: - app.amqp_consumer: - class: Sam\Symfony\Bridge\EnqueueMessage\EnqueueConsumer - arguments: - - "@message.transport.default_decoder" - - "@enqueue.transport.amqp.context" - - "messages" # Name of the queue - - app.amqp_producer: - class: Sam\Symfony\Bridge\EnqueueMessage\EnqueueProducer - arguments: - - "@message.transport.default_encoder" - - "@enqueue.transport.amqp.context" - - "messages" # Name of the queue -``` - -4. Route your messages to the consumer -```yaml -# config/packages/framework.yaml -framework: - message: - routing: - 'App\Message\CheckSpamOnPostComments': app.amqp_producer -``` - -You are done. The `CheckSpamOnPostComments` messages will be sent to your local RabbitMq instance. In order to process -them asynchronously, you need to consume the messages pushed in the queue. You can start a worker with the `message:consume` -command: - -```bash -bin/console message:consume --consumer=app.amqp_consumer -``` - -**Note:** if you don't have RabbitMq installed locally but have Docker, run a RabbitMq instance this way: -```sh -docker run -d --hostname rabbit --name rabbit -p 8080:15672 -p 5672:5672 rabbitmq:3-management -``` -The administration console will be accessible at http://localhost:8080 - Testing -------