From 5515c258726f6691cbc09a353c1c58105cdd4fbf Mon Sep 17 00:00:00 2001 From: Olaf Date: Mon, 30 Dec 2019 00:27:20 +0100 Subject: [PATCH 1/9] chore (Symfony) use Symfony 5 + strict typing Update Symfony version to 5 Use strict typing --- Controller/CaptchaController.php | 61 +- DependencyInjection/Configuration.php | 17 +- .../GregwarCaptchaExtension.php | 6 +- Generator/CaptchaGenerator.php | 47 +- Generator/ImageFileHandler.php | 41 +- GregwarCaptchaBundle.php | 2 + Resources/config/services.yml | 11 +- Type/CaptchaType.php | 63 +- Validator/CaptchaValidator.php | 46 +- composer.json | 13 +- composer.lock | 2314 +++++++++++++++++ 11 files changed, 2433 insertions(+), 188 deletions(-) create mode 100644 composer.lock diff --git a/Controller/CaptchaController.php b/Controller/CaptchaController.php index 8d8d83e..d21b93c 100644 --- a/Controller/CaptchaController.php +++ b/Controller/CaptchaController.php @@ -1,10 +1,13 @@ container->getParameter('gregwar_captcha.config'); - $session = $this->get('session'); - $whitelistKey = $options['whitelist_key']; + $this->captchaGenerator = $captchaGenerator; + $this->config = $config; + } + + public function generateCaptchaAction(Request $request, string $key): Response + { + $session = $request->getSession(); + $whitelistKey = $this->config['whitelist_key']; $isOk = false; if ($session->has($whitelistKey)) { @@ -37,21 +42,18 @@ class CaptchaController extends AbstractController } if (!$isOk) { - return $this->error($options); + return $this->error($this->config); } - /* @var \Gregwar\CaptchaBundle\Generator\CaptchaGenerator $generator */ - $generator = $this->container->get('gregwar_captcha.generator'); - $persistedOptions = $session->get($key, array()); - $options = array_merge($options, $persistedOptions); + $options = array_merge($this->config, $persistedOptions); - $phrase = $generator->getPhrase($options); - $generator->setPhrase($phrase); + $phrase = $this->captchaGenerator->getPhrase($options); + $this->captchaGenerator->setPhrase($phrase); $persistedOptions['phrase'] = $phrase; $session->set($key, $persistedOptions); - $response = new Response($generator->generate($options)); + $response = new Response($this->captchaGenerator->generate($options)); $response->headers->set('Content-type', 'image/jpeg'); $response->headers->set('Pragma', 'no-cache'); $response->headers->set('Cache-Control', 'no-cache'); @@ -59,20 +61,11 @@ class CaptchaController extends AbstractController return $response; } - /** - * Returns an empty image with status code 428 Precondition Required - * - * @param array $options - * - * @return Response - */ - protected function error($options) + private function error(array $options): Response { - /* @var \Gregwar\CaptchaBundle\Generator\CaptchaGenerator $generator */ - $generator = $this->container->get('gregwar_captcha.generator'); - $generator->setPhrase(''); + $this->captchaGenerator->setPhrase(''); - $response = new Response($generator->generate($options)); + $response = new Response($this->captchaGenerator->generate($options)); $response->setStatusCode(428); $response->headers->set('Content-type', 'image/jpeg'); $response->headers->set('Pragma', 'no-cache'); diff --git a/DependencyInjection/Configuration.php b/DependencyInjection/Configuration.php index 3683c20..0a75bbd 100644 --- a/DependencyInjection/Configuration.php +++ b/DependencyInjection/Configuration.php @@ -1,5 +1,7 @@ getRootNode(); - } else { - // BC for symfony/config <= 4.1 - $rootNode = $treeBuilder->root('gregwar_captcha'); - } + $rootNode = $treeBuilder->getRootNode(); $rootNode ->addDefaultsIfNotSet() diff --git a/DependencyInjection/GregwarCaptchaExtension.php b/DependencyInjection/GregwarCaptchaExtension.php index 740b3e6..5689a30 100755 --- a/DependencyInjection/GregwarCaptchaExtension.php +++ b/DependencyInjection/GregwarCaptchaExtension.php @@ -1,7 +1,10 @@ load('services.yml'); diff --git a/Generator/CaptchaGenerator.php b/Generator/CaptchaGenerator.php index 58ff58a..a6c98b9 100644 --- a/Generator/CaptchaGenerator.php +++ b/Generator/CaptchaGenerator.php @@ -1,10 +1,11 @@ imageFileHandler = $imageFileHandler; } - /** - * Get the captcha URL, stream, or filename that will go in the image's src attribute - * - * @param array $options - * - * @return array - */ - public function getCaptchaCode(array &$options) + public function getCaptchaCode(array &$options): string { $this->builder->setPhrase($this->getPhrase($options)); @@ -83,20 +69,12 @@ class CaptchaGenerator return 'data:image/jpeg;base64,' . base64_encode($this->generate($options)); } - /** - * Sets the phrase to the builder - */ - public function setPhrase($phrase) + public function setPhrase(string $phrase): void { $this->builder->setPhrase($phrase); } - /** - * @param array $options - * - * @return string - */ - public function generate(array &$options) + public function generate(array &$options): string { $this->builder->setDistortion($options['distortion']); @@ -149,12 +127,7 @@ class CaptchaGenerator return $this->imageFileHandler->saveAsFile($content); } - /** - * @param array $options - * - * @return string - */ - public function getPhrase(array &$options) + public function getPhrase(array &$options): string { // Get the phrase that we'll use for this image if ($options['keep_value'] && isset($options['phrase'])) { diff --git a/Generator/ImageFileHandler.php b/Generator/ImageFileHandler.php index 71dda0f..0a3c407 100644 --- a/Generator/ImageFileHandler.php +++ b/Generator/ImageFileHandler.php @@ -1,5 +1,7 @@ imageFolder = $imageFolder; - $this->webPath = $webPath; - $this->gcFreq = $gcFreq; - $this->expiration = $expiration; + $this->imageFolder = $imageFolder; + $this->webPath= $webPath; + $this->gcFreq = $gcFreq; + $this->expiration = $expiration; } - /** - * Saves the provided image content as a file - * - * @param string $contents - * - * @return string - */ - public function saveAsFile($contents) + public function saveAsFile($contents):string { $this->createFolderIfMissing(); @@ -68,12 +63,7 @@ class ImageFileHandler return '/' . $this->imageFolder . '/' . $filename; } - /** - * Randomly runs garbage collection on the image directory - * - * @return bool - */ - public function collectGarbage() + public function collectGarbage(): bool { if (!mt_rand(1, $this->gcFreq) == 1) { return false; @@ -93,10 +83,7 @@ class ImageFileHandler return true; } - /** - * Creates the folder if it doesn't exist - */ - protected function createFolderIfMissing() + protected function createFolderIfMissing(): void { if (!file_exists($this->webPath . '/' . $this->imageFolder)) { mkdir($this->webPath . '/' . $this->imageFolder, 0755); diff --git a/GregwarCaptchaBundle.php b/GregwarCaptchaBundle.php index 9ad5967..838fc20 100755 --- a/GregwarCaptchaBundle.php +++ b/GregwarCaptchaBundle.php @@ -1,5 +1,7 @@ session = $session; - $this->generator = $generator; - $this->translator = $translator; - $this->options = $options; + $this->session = $session; + $this->generator = $generator; + $this->translator = $translator; + $this->options = $options; } /** @@ -72,8 +64,8 @@ class CaptchaType extends AbstractType $options['bypass_code'], $options['humanity'] ); - $event = \Symfony\Component\HttpKernel\Kernel::VERSION >= 2.3 ? FormEvents::POST_SUBMIT : FormEvents::POST_BIND; - $builder->addEventListener($event, array($validator, 'validate')); + + $builder->addEventListener(FormEvents::POST_SUBMIT, array($validator, 'validate')); } /** @@ -132,36 +124,17 @@ class CaptchaType extends AbstractType $resolver->setDefaults($this->options); } - /** - * {@inheritdoc} - * BC for SF < 2.7 - */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function getParent(): string { - $this->configureOptions($resolver); + return TextType::class; } - /** - * @return string - */ - public function getParent() - { - // Not using ::class to support Symfony 2.8 w/ php>=5.3.9 - return 'Symfony\Component\Form\Extension\Core\Type\TextType'; - } - - /** - * @return string - */ - public function getName() + public function getName(): string { return $this->getBlockPrefix(); } - /** - * @return string - */ - public function getBlockPrefix() + public function getBlockPrefix(): string { return 'captcha'; } diff --git a/Validator/CaptchaValidator.php b/Validator/CaptchaValidator.php index 7ee2a51..20e5e74 100644 --- a/Validator/CaptchaValidator.php +++ b/Validator/CaptchaValidator.php @@ -1,11 +1,13 @@ translator = $translator; $this->session = $session; $this->key = $key; $this->invalidMessage = $invalidMessage; - $this->bypassCode = (string)$bypassCode; + $this->bypassCode = $bypassCode; $this->humanity = $humanity; } - /** - * @param FormEvent $event - */ - public function validate(FormEvent $event) + public function validate(FormEvent $event): void { $form = $event->getForm(); @@ -123,28 +129,16 @@ class CaptchaValidator return $this->session->get($this->key . '_humanity', 0); } - /** - * Updates the humanity - */ - protected function updateHumanity($newValue) + protected function updateHumanity(int $newValue): void { if ($newValue > 0) { $this->session->set($this->key . '_humanity', $newValue); } else { $this->session->remove($this->key . '_humanity'); } - - return null; } - /** - * Process the codes - * - * @param $code - * - * @return string - */ - protected function niceize($code) + protected function niceize(string $code): string { return strtr(strtolower($code), 'oil', '01l'); } @@ -157,7 +151,7 @@ class CaptchaValidator * * @return bool */ - protected function compare($code, $expectedCode) + protected function compare($code, $expectedCode): bool { return ($expectedCode !== null && is_string($expectedCode) && $this->niceize($code) == $this->niceize($expectedCode)); } diff --git a/composer.json b/composer.json index 703267b..3f7fe7a 100644 --- a/composer.json +++ b/composer.json @@ -17,15 +17,20 @@ } ], "require": { - "php": ">=5.3.9", + "php": "^7.2.5", + "ext-gd": "*", "gregwar/captcha": "~1.1", - "symfony/framework-bundle": "~3.0|~4.0|~5.0", - "symfony/form": "~3.0|~4.0|~5.0", - "twig/twig": "^1.40|^2.9|^3" + "symfony/form": "~5.0", + "symfony/framework-bundle": "~5.0", + "symfony/translation": "^5.0", + "twig/twig": "^2.10|^3.0" }, "autoload": { "psr-4": { "Gregwar\\CaptchaBundle\\": "/" } + }, + "config": { + "sort-packages": true } } diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..b7da343 --- /dev/null +++ b/composer.lock @@ -0,0 +1,2314 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "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": "9f686195a59641f539e75c34e3d2e1b2", + "packages": [ + { + "name": "gregwar/captcha", + "version": "v1.1.7", + "source": { + "type": "git", + "url": "https://github.com/Gregwar/Captcha.git", + "reference": "cf953dd79748406e0292cea8c565399681e4d345" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Gregwar/Captcha/zipball/cf953dd79748406e0292cea8c565399681e4d345", + "reference": "cf953dd79748406e0292cea8c565399681e4d345", + "shasum": "" + }, + "require": { + "ext-gd": "*", + "ext-mbstring": "*", + "php": ">=5.3.0", + "symfony/finder": "*" + }, + "require-dev": { + "phpunit/phpunit": "^6.4" + }, + "type": "captcha", + "autoload": { + "psr-4": { + "Gregwar\\": "src/Gregwar" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Passault", + "email": "g.passault@gmail.com", + "homepage": "http://www.gregwar.com/" + }, + { + "name": "Jeremy Livingston", + "email": "jeremy.j.livingston@gmail.com" + } + ], + "description": "Captcha generator", + "homepage": "https://github.com/Gregwar/Captcha", + "keywords": [ + "bot", + "captcha", + "spam" + ], + "time": "2018-08-17T22:57:28+00:00" + }, + { + "name": "psr/cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "time": "2016-08-06T20:24:11+00:00" + }, + { + "name": "psr/container", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2017-02-14T16:28:37+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/log", + "version": "1.1.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801", + "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2019-11-01T11:05:21+00:00" + }, + { + "name": "symfony/cache", + "version": "v5.0.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/cache.git", + "reference": "6e8d978878ae5de705ec9fabbb6011cc18776bc9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/cache/zipball/6e8d978878ae5de705ec9fabbb6011cc18776bc9", + "reference": "6e8d978878ae5de705ec9fabbb6011cc18776bc9", + "shasum": "" + }, + "require": { + "php": "^7.2.5", + "psr/cache": "~1.0", + "psr/log": "~1.0", + "symfony/cache-contracts": "^1.1.7|^2", + "symfony/service-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0" + }, + "conflict": { + "doctrine/dbal": "<2.5", + "symfony/dependency-injection": "<4.4", + "symfony/http-kernel": "<4.4", + "symfony/var-dumper": "<4.4" + }, + "provide": { + "psr/cache-implementation": "1.0", + "psr/simple-cache-implementation": "1.0", + "symfony/cache-implementation": "1.0" + }, + "require-dev": { + "cache/integration-tests": "dev-master", + "doctrine/cache": "~1.6", + "doctrine/dbal": "~2.5", + "predis/predis": "~1.1", + "psr/simple-cache": "^1.0", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/var-dumper": "^4.4|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Cache\\": "" + }, + "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 Cache component with PSR-6, PSR-16, and tags", + "homepage": "https://symfony.com", + "keywords": [ + "caching", + "psr6" + ], + "time": "2019-12-12T13:03:32+00:00" + }, + { + "name": "symfony/cache-contracts", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/cache-contracts.git", + "reference": "23ed8bfc1a4115feca942cb5f1aacdf3dcdf3c16" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/23ed8bfc1a4115feca942cb5f1aacdf3dcdf3c16", + "reference": "23ed8bfc1a4115feca942cb5f1aacdf3dcdf3c16", + "shasum": "" + }, + "require": { + "php": "^7.2.5", + "psr/cache": "^1.0" + }, + "suggest": { + "symfony/cache-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Cache\\": "" + } + }, + "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": "Generic abstractions related to caching", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-11-18T17:27:11+00:00" + }, + { + "name": "symfony/config", + "version": "v5.0.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/config.git", + "reference": "7f930484966350906185ba0a604728f7898b7ba0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/config/zipball/7f930484966350906185ba0a604728f7898b7ba0", + "reference": "7f930484966350906185ba0a604728f7898b7ba0", + "shasum": "" + }, + "require": { + "php": "^7.2.5", + "symfony/filesystem": "^4.4|^5.0", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/finder": "<4.4" + }, + "require-dev": { + "symfony/event-dispatcher": "^4.4|^5.0", + "symfony/finder": "^4.4|^5.0", + "symfony/messenger": "^4.4|^5.0", + "symfony/service-contracts": "^1.1|^2", + "symfony/yaml": "^4.4|^5.0" + }, + "suggest": { + "symfony/yaml": "To use the yaml reference dumper" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Config\\": "" + }, + "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 Config Component", + "homepage": "https://symfony.com", + "time": "2019-12-18T13:50:31+00:00" + }, + { + "name": "symfony/dependency-injection", + "version": "v5.0.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "f9dbfbf487d08f60b1c83220edcd16559d1e40a2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f9dbfbf487d08f60b1c83220edcd16559d1e40a2", + "reference": "f9dbfbf487d08f60b1c83220edcd16559d1e40a2", + "shasum": "" + }, + "require": { + "php": "^7.2.5", + "psr/container": "^1.0", + "symfony/service-contracts": "^1.1.6|^2" + }, + "conflict": { + "symfony/config": "<5.0", + "symfony/finder": "<4.4", + "symfony/proxy-manager-bridge": "<4.4", + "symfony/yaml": "<4.4" + }, + "provide": { + "psr/container-implementation": "1.0", + "symfony/service-implementation": "1.0" + }, + "require-dev": { + "symfony/config": "^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/yaml": "^4.4|^5.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": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\DependencyInjection\\": "" + }, + "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 DependencyInjection Component", + "homepage": "https://symfony.com", + "time": "2019-12-19T16:01:11+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v5.0.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "460863313bd3212d7c38e1b40602cbcfeeeea4a5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/460863313bd3212d7c38e1b40602cbcfeeeea4a5", + "reference": "460863313bd3212d7c38e1b40602cbcfeeeea4a5", + "shasum": "" + }, + "require": { + "php": "^7.2.5", + "psr/log": "^1.0", + "symfony/var-dumper": "^4.4|^5.0" + }, + "require-dev": { + "symfony/http-kernel": "^4.4|^5.0", + "symfony/serializer": "^4.4|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\ErrorHandler\\": "" + }, + "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 ErrorHandler Component", + "homepage": "https://symfony.com", + "time": "2019-12-16T14:48:47+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v5.0.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "7b738a51645e10f864cc25c24d232fb03f37b475" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/7b738a51645e10f864cc25c24d232fb03f37b475", + "reference": "7b738a51645e10f864cc25c24d232fb03f37b475", + "shasum": "" + }, + "require": { + "php": "^7.2.5", + "symfony/event-dispatcher-contracts": "^2" + }, + "conflict": { + "symfony/dependency-injection": "<4.4" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/service-contracts": "^1.1|^2", + "symfony/stopwatch": "^4.4|^5.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "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 EventDispatcher Component", + "homepage": "https://symfony.com", + "time": "2019-11-18T17:27:11+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "af23c2584d4577d54661c434446fb8fbed6025dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/af23c2584d4577d54661c434446fb8fbed6025dd", + "reference": "af23c2584d4577d54661c434446fb8fbed6025dd", + "shasum": "" + }, + "require": { + "php": "^7.2.5", + "psr/event-dispatcher": "^1" + }, + "suggest": { + "symfony/event-dispatcher-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "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": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-11-18T17:27:11+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v5.0.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "1d71f670bc5a07b9ccc97dc44f932177a322d4e6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/1d71f670bc5a07b9ccc97dc44f932177a322d4e6", + "reference": "1d71f670bc5a07b9ccc97dc44f932177a322d4e6", + "shasum": "" + }, + "require": { + "php": "^7.2.5", + "symfony/polyfill-ctype": "~1.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-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": "2019-11-26T23:25:11+00:00" + }, + { + "name": "symfony/finder", + "version": "v5.0.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "17874dd8ab9a19422028ad56172fb294287a701b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/17874dd8ab9a19422028ad56172fb294287a701b", + "reference": "17874dd8ab9a19422028ad56172fb294287a701b", + "shasum": "" + }, + "require": { + "php": "^7.2.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-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": "2019-11-18T17:27:11+00:00" + }, + { + "name": "symfony/form", + "version": "v5.0.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/form.git", + "reference": "c57a9fe108cc7747d4e8dfb770a8066b4e906acc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/form/zipball/c57a9fe108cc7747d4e8dfb770a8066b4e906acc", + "reference": "c57a9fe108cc7747d4e8dfb770a8066b4e906acc", + "shasum": "" + }, + "require": { + "php": "^7.2.5", + "symfony/event-dispatcher": "^4.4|^5.0", + "symfony/intl": "^4.4|^5.0", + "symfony/options-resolver": "^5.0", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0", + "symfony/property-access": "^5.0", + "symfony/service-contracts": "^1.1|^2" + }, + "conflict": { + "phpunit/phpunit": "<5.4.3", + "symfony/console": "<4.4", + "symfony/dependency-injection": "<4.4", + "symfony/doctrine-bridge": "<4.4", + "symfony/framework-bundle": "<4.4", + "symfony/http-kernel": "<4.4", + "symfony/intl": "<4.4", + "symfony/translation": "<4.4", + "symfony/twig-bridge": "<4.4" + }, + "require-dev": { + "doctrine/collections": "~1.0", + "symfony/config": "^4.4|^5.0", + "symfony/console": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/http-kernel": "^4.4|^5.0", + "symfony/security-csrf": "^4.4|^5.0", + "symfony/translation": "^4.4|^5.0", + "symfony/validator": "^4.4|^5.0", + "symfony/var-dumper": "^4.4|^5.0" + }, + "suggest": { + "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": "5.0-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": "2019-12-16T11:08:25+00:00" + }, + { + "name": "symfony/framework-bundle", + "version": "v5.0.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/framework-bundle.git", + "reference": "36e51776b231d8e224da4ce4c60079540acd1c55" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/36e51776b231d8e224da4ce4c60079540acd1c55", + "reference": "36e51776b231d8e224da4ce4c60079540acd1c55", + "shasum": "" + }, + "require": { + "ext-xml": "*", + "php": "^7.2.5", + "symfony/cache": "^4.4|^5.0", + "symfony/config": "^5.0", + "symfony/dependency-injection": "^5.0.1", + "symfony/error-handler": "^4.4.1|^5.0.1", + "symfony/filesystem": "^4.4|^5.0", + "symfony/finder": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/http-kernel": "^5.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/routing": "^5.0" + }, + "conflict": { + "doctrine/persistence": "<1.3", + "phpdocumentor/reflection-docblock": "<3.0", + "phpdocumentor/type-resolver": "<0.2.1", + "phpunit/phpunit": "<5.4.3", + "symfony/asset": "<4.4", + "symfony/browser-kit": "<4.4", + "symfony/console": "<4.4", + "symfony/dom-crawler": "<4.4", + "symfony/dotenv": "<4.4", + "symfony/form": "<4.4", + "symfony/http-client": "<4.4", + "symfony/lock": "<4.4", + "symfony/mailer": "<4.4", + "symfony/messenger": "<4.4", + "symfony/mime": "<4.4", + "symfony/property-info": "<4.4", + "symfony/serializer": "<4.4", + "symfony/stopwatch": "<4.4", + "symfony/translation": "<5.0", + "symfony/twig-bridge": "<4.4", + "symfony/twig-bundle": "<4.4", + "symfony/validator": "<4.4", + "symfony/web-profiler-bundle": "<4.4", + "symfony/workflow": "<4.4" + }, + "require-dev": { + "doctrine/annotations": "~1.7", + "doctrine/cache": "~1.0", + "paragonie/sodium_compat": "^1.8", + "phpdocumentor/reflection-docblock": "^3.0|^4.0", + "symfony/asset": "^4.4|^5.0", + "symfony/browser-kit": "^4.4|^5.0", + "symfony/console": "^4.4|^5.0", + "symfony/css-selector": "^4.4|^5.0", + "symfony/dom-crawler": "^4.4|^5.0", + "symfony/dotenv": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/form": "^4.4|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/lock": "^4.4|^5.0", + "symfony/mailer": "^4.4|^5.0", + "symfony/messenger": "^4.4|^5.0", + "symfony/mime": "^4.4|^5.0", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/process": "^4.4|^5.0", + "symfony/property-info": "^4.4|^5.0", + "symfony/security-csrf": "^4.4|^5.0", + "symfony/security-http": "^4.4|^5.0", + "symfony/serializer": "^4.4|^5.0", + "symfony/stopwatch": "^4.4|^5.0", + "symfony/string": "~5.0.0", + "symfony/translation": "^5.0", + "symfony/twig-bundle": "^4.4|^5.0", + "symfony/validator": "^4.4|^5.0", + "symfony/web-link": "^4.4|^5.0", + "symfony/workflow": "^4.4|^5.0", + "symfony/yaml": "^4.4|^5.0", + "twig/twig": "^2.10|^3.0" + }, + "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": "5.0-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": "2019-12-17T10:33:13+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v5.0.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "5dd7f6be6e62d86ba6f3154cf40e78936367978b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/5dd7f6be6e62d86ba6f3154cf40e78936367978b", + "reference": "5dd7f6be6e62d86ba6f3154cf40e78936367978b", + "shasum": "" + }, + "require": { + "php": "^7.2.5", + "symfony/mime": "^4.4|^5.0", + "symfony/polyfill-mbstring": "~1.1" + }, + "require-dev": { + "predis/predis": "~1.0", + "symfony/expression-language": "^4.4|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-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": "2019-12-19T16:01:11+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v5.0.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "00ce30602f3f690e66a63c327743d7b26c723b2e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/00ce30602f3f690e66a63c327743d7b26c723b2e", + "reference": "00ce30602f3f690e66a63c327743d7b26c723b2e", + "shasum": "" + }, + "require": { + "php": "^7.2.5", + "psr/log": "~1.0", + "symfony/error-handler": "^4.4|^5.0", + "symfony/event-dispatcher": "^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php73": "^1.9" + }, + "conflict": { + "symfony/browser-kit": "<4.4", + "symfony/cache": "<5.0", + "symfony/config": "<5.0", + "symfony/dependency-injection": "<4.4", + "symfony/doctrine-bridge": "<5.0", + "symfony/form": "<5.0", + "symfony/http-client": "<5.0", + "symfony/mailer": "<5.0", + "symfony/messenger": "<5.0", + "symfony/translation": "<5.0", + "symfony/twig-bridge": "<5.0", + "symfony/validator": "<5.0", + "twig/twig": "<2.4" + }, + "provide": { + "psr/log-implementation": "1.0" + }, + "require-dev": { + "psr/cache": "~1.0", + "symfony/browser-kit": "^4.4|^5.0", + "symfony/config": "^5.0", + "symfony/console": "^4.4|^5.0", + "symfony/css-selector": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/dom-crawler": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/finder": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0", + "symfony/routing": "^4.4|^5.0", + "symfony/stopwatch": "^4.4|^5.0", + "symfony/translation": "^4.4|^5.0", + "symfony/translation-contracts": "^1.1|^2", + "twig/twig": "^2.4|^3.0" + }, + "suggest": { + "symfony/browser-kit": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-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": "2019-12-19T18:35:03+00:00" + }, + { + "name": "symfony/inflector", + "version": "v5.0.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/inflector.git", + "reference": "aaeb5e293294070d1b061fa3d7889bac69909320" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/inflector/zipball/aaeb5e293294070d1b061fa3d7889bac69909320", + "reference": "aaeb5e293294070d1b061fa3d7889bac69909320", + "shasum": "" + }, + "require": { + "php": "^7.2.5", + "symfony/polyfill-ctype": "~1.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-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": "2019-11-18T17:27:11+00:00" + }, + { + "name": "symfony/intl", + "version": "v5.0.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/intl.git", + "reference": "41f910d47883c6ab37087ca4a3332e21e1d682f4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/intl/zipball/41f910d47883c6ab37087ca4a3332e21e1d682f4", + "reference": "41f910d47883c6ab37087ca4a3332e21e1d682f4", + "shasum": "" + }, + "require": { + "php": "^7.2.5", + "symfony/polyfill-intl-icu": "~1.0" + }, + "require-dev": { + "symfony/filesystem": "^4.4|^5.0" + }, + "suggest": { + "ext-intl": "to use the component with locales other than \"en\"" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-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": "2019-11-26T23:25:11+00:00" + }, + { + "name": "symfony/mime", + "version": "v5.0.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "0e6a4ced216e49d457eddcefb61132173a876d79" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/0e6a4ced216e49d457eddcefb61132173a876d79", + "reference": "0e6a4ced216e49d457eddcefb61132173a876d79", + "shasum": "" + }, + "require": { + "php": "^7.2.5", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "conflict": { + "symfony/mailer": "<4.4" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10", + "symfony/dependency-injection": "^4.4|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Mime\\": "" + }, + "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": "A library to manipulate MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "time": "2019-11-30T14:12:50+00:00" + }, + { + "name": "symfony/options-resolver", + "version": "v5.0.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/options-resolver.git", + "reference": "1ad3d0ffc00cc1990e5c9c7bb6b81578ec3f5f68" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/1ad3d0ffc00cc1990e5c9c7bb6b81578ec3f5f68", + "reference": "1ad3d0ffc00cc1990e5c9c7bb6b81578ec3f5f68", + "shasum": "" + }, + "require": { + "php": "^7.2.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-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": "2019-11-18T17:27:11+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.13.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", + "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.13-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "time": "2019-11-27T13:56:44+00:00" + }, + { + "name": "symfony/polyfill-intl-icu", + "version": "v1.13.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-icu.git", + "reference": "b3dffd68afa61ca70f2327f2dd9bbeb6aa53d70b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/b3dffd68afa61ca70f2327f2dd9bbeb6aa53d70b", + "reference": "b3dffd68afa61ca70f2327f2dd9bbeb6aa53d70b", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "symfony/intl": "~2.3|~3.0|~4.0|~5.0" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.13-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": "2019-11-27T13:56:44+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.13.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6f9c239e61e1b0c9229a28ff89a812dc449c3d46", + "reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "symfony/polyfill-mbstring": "^1.3", + "symfony/polyfill-php72": "^1.9" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.13-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "time": "2019-11-27T13:56:44+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.13.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f", + "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.13-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": "2019-11-27T14:18:11+00:00" + }, + { + "name": "symfony/polyfill-php72", + "version": "v1.13.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/66fea50f6cb37a35eea048d75a7d99a45b586038", + "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.13-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + }, + "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 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2019-11-27T13:56:44+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.13.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/4b0e2222c55a25b4541305a053013d5647d3a25f", + "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.13-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "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.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2019-11-27T16:25:15+00:00" + }, + { + "name": "symfony/property-access", + "version": "v5.0.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/property-access.git", + "reference": "b597c4f4dffc522bc4ed4bedcef9ed08d3ae3d23" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/property-access/zipball/b597c4f4dffc522bc4ed4bedcef9ed08d3ae3d23", + "reference": "b597c4f4dffc522bc4ed4bedcef9ed08d3ae3d23", + "shasum": "" + }, + "require": { + "php": "^7.2.5", + "symfony/inflector": "^4.4|^5.0" + }, + "require-dev": { + "symfony/cache": "^4.4|^5.0" + }, + "suggest": { + "psr/cache-implementation": "To cache access methods." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-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": "2019-12-10T11:06:55+00:00" + }, + { + "name": "symfony/routing", + "version": "v5.0.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "120c5fa4f4ef5466cbb510ece8126e0007285301" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/120c5fa4f4ef5466cbb510ece8126e0007285301", + "reference": "120c5fa4f4ef5466cbb510ece8126e0007285301", + "shasum": "" + }, + "require": { + "php": "^7.2.5" + }, + "conflict": { + "symfony/config": "<5.0", + "symfony/dependency-injection": "<4.4", + "symfony/yaml": "<4.4" + }, + "require-dev": { + "doctrine/annotations": "~1.2", + "psr/log": "~1.0", + "symfony/config": "^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/yaml": "^4.4|^5.0" + }, + "suggest": { + "doctrine/annotations": "For using the annotation loader", + "symfony/config": "For using the all-in-one router or any loader", + "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": "5.0-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": "2019-12-12T13:03:32+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "144c5e51266b281231e947b51223ba14acf1a749" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/144c5e51266b281231e947b51223ba14acf1a749", + "reference": "144c5e51266b281231e947b51223ba14acf1a749", + "shasum": "" + }, + "require": { + "php": "^7.2.5", + "psr/container": "^1.0" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "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": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-11-18T17:27:11+00:00" + }, + { + "name": "symfony/translation", + "version": "v5.0.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "3ae6fad7a3dc2d99a023f9360184628fc44acbb3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/3ae6fad7a3dc2d99a023f9360184628fc44acbb3", + "reference": "3ae6fad7a3dc2d99a023f9360184628fc44acbb3", + "shasum": "" + }, + "require": { + "php": "^7.2.5", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^2" + }, + "conflict": { + "symfony/config": "<4.4", + "symfony/dependency-injection": "<5.0", + "symfony/http-kernel": "<5.0", + "symfony/twig-bundle": "<5.0", + "symfony/yaml": "<4.4" + }, + "provide": { + "symfony/translation-implementation": "2.0" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "^4.4|^5.0", + "symfony/console": "^4.4|^5.0", + "symfony/dependency-injection": "^5.0", + "symfony/finder": "^4.4|^5.0", + "symfony/http-kernel": "^5.0", + "symfony/intl": "^4.4|^5.0", + "symfony/service-contracts": "^1.1.2|^2", + "symfony/yaml": "^4.4|^5.0" + }, + "suggest": { + "psr/log-implementation": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-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": "2019-12-12T13:03:32+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "8cc682ac458d75557203b2f2f14b0b92e1c744ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/8cc682ac458d75557203b2f2f14b0b92e1c744ed", + "reference": "8cc682ac458d75557203b2f2f14b0b92e1c744ed", + "shasum": "" + }, + "require": { + "php": "^7.2.5" + }, + "suggest": { + "symfony/translation-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + } + }, + "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": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-11-18T17:27:11+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v5.0.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "d7bc61d5d335fa9b1b91e14bb16861e8ca50f53a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/d7bc61d5d335fa9b1b91e14bb16861e8ca50f53a", + "reference": "d7bc61d5d335fa9b1b91e14bb16861e8ca50f53a", + "shasum": "" + }, + "require": { + "php": "^7.2.5", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "phpunit/phpunit": "<5.4.3", + "symfony/console": "<4.4" + }, + "require-dev": { + "ext-iconv": "*", + "symfony/console": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0", + "twig/twig": "^2.4|^3.0" + }, + "suggest": { + "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", + "ext-intl": "To show region name in time zone dump", + "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" + }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-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": "2019-12-18T13:50:31+00:00" + }, + { + "name": "symfony/var-exporter", + "version": "v5.0.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-exporter.git", + "reference": "1b9653e68d5b701bf6d9c91bdd3660078c9f4f28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/1b9653e68d5b701bf6d9c91bdd3660078c9f4f28", + "reference": "1b9653e68d5b701bf6d9c91bdd3660078c9f4f28", + "shasum": "" + }, + "require": { + "php": "^7.2.5" + }, + "require-dev": { + "symfony/var-dumper": "^4.4|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\VarExporter\\": "" + }, + "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": "A blend of var_export() + serialize() to turn any serializable data structure to plain PHP code", + "homepage": "https://symfony.com", + "keywords": [ + "clone", + "construct", + "export", + "hydrate", + "instantiate", + "serialize" + ], + "time": "2019-12-01T08:48:26+00:00" + }, + { + "name": "twig/twig", + "version": "v3.0.1", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "28f856a4c57eeb24485916e8a68403f41a133616" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/28f856a4c57eeb24485916e8a68403f41a133616", + "reference": "28f856a4c57eeb24485916e8a68403f41a133616", + "shasum": "" + }, + "require": { + "php": "^7.2.5", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "^1.3" + }, + "require-dev": { + "psr/container": "^1.0", + "symfony/phpunit-bridge": "^4.4|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "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": "Twig Team", + "role": "Contributors" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + } + ], + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "https://twig.symfony.com", + "keywords": [ + "templating" + ], + "time": "2019-12-28T07:17:28+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": "^7.2.5", + "ext-gd": "*" + }, + "platform-dev": [] +} From 61a8561dd60e64afeb1d00770abdaafd2cf44608 Mon Sep 17 00:00:00 2001 From: Olaf Date: Fri, 3 Jan 2020 00:04:18 +0100 Subject: [PATCH 2/9] fix (Captcha) allow null value for bypassCode --- Validator/CaptchaValidator.php | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/Validator/CaptchaValidator.php b/Validator/CaptchaValidator.php index 20e5e74..4bab9a5 100644 --- a/Validator/CaptchaValidator.php +++ b/Validator/CaptchaValidator.php @@ -49,20 +49,12 @@ class CaptchaValidator */ private $translator; - /** - * @param TranslatorInterface $translator - * @param SessionInterface $session - * @param string $key - * @param string $invalidMessage - * @param string $bypassCode - * @param int $humanity - */ public function __construct( TranslatorInterface $translator, SessionInterface $session, string $key, string $invalidMessage, - string $bypassCode, + ?string $bypassCode, int $humanity ) { $this->translator = $translator; @@ -146,9 +138,8 @@ class CaptchaValidator /** * Run a match comparison on the provided code and the expected code * - * @param $code - * @param $expectedCode - * + * @param string $code + * @param string|null $expectedCode * @return bool */ protected function compare($code, $expectedCode): bool From 60c0e04366d221aa109c4daba2e37c727b417261 Mon Sep 17 00:00:00 2001 From: Olaf Date: Fri, 3 Jan 2020 00:05:31 +0100 Subject: [PATCH 3/9] Delete composer.lock --- composer.lock | 2314 ------------------------------------------------- 1 file changed, 2314 deletions(-) delete mode 100644 composer.lock diff --git a/composer.lock b/composer.lock deleted file mode 100644 index b7da343..0000000 --- a/composer.lock +++ /dev/null @@ -1,2314 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "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": "9f686195a59641f539e75c34e3d2e1b2", - "packages": [ - { - "name": "gregwar/captcha", - "version": "v1.1.7", - "source": { - "type": "git", - "url": "https://github.com/Gregwar/Captcha.git", - "reference": "cf953dd79748406e0292cea8c565399681e4d345" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Gregwar/Captcha/zipball/cf953dd79748406e0292cea8c565399681e4d345", - "reference": "cf953dd79748406e0292cea8c565399681e4d345", - "shasum": "" - }, - "require": { - "ext-gd": "*", - "ext-mbstring": "*", - "php": ">=5.3.0", - "symfony/finder": "*" - }, - "require-dev": { - "phpunit/phpunit": "^6.4" - }, - "type": "captcha", - "autoload": { - "psr-4": { - "Gregwar\\": "src/Gregwar" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Grégoire Passault", - "email": "g.passault@gmail.com", - "homepage": "http://www.gregwar.com/" - }, - { - "name": "Jeremy Livingston", - "email": "jeremy.j.livingston@gmail.com" - } - ], - "description": "Captcha generator", - "homepage": "https://github.com/Gregwar/Captcha", - "keywords": [ - "bot", - "captcha", - "spam" - ], - "time": "2018-08-17T22:57:28+00:00" - }, - { - "name": "psr/cache", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Cache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for caching libraries", - "keywords": [ - "cache", - "psr", - "psr-6" - ], - "time": "2016-08-06T20:24:11+00:00" - }, - { - "name": "psr/container", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], - "time": "2017-02-14T16:28:37+00:00" - }, - { - "name": "psr/event-dispatcher", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/event-dispatcher.git", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", - "shasum": "" - }, - "require": { - "php": ">=7.2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\EventDispatcher\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Standard interfaces for event handling.", - "keywords": [ - "events", - "psr", - "psr-14" - ], - "time": "2019-01-08T18:20:26+00:00" - }, - { - "name": "psr/log", - "version": "1.1.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801", - "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "time": "2019-11-01T11:05:21+00:00" - }, - { - "name": "symfony/cache", - "version": "v5.0.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/cache.git", - "reference": "6e8d978878ae5de705ec9fabbb6011cc18776bc9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/6e8d978878ae5de705ec9fabbb6011cc18776bc9", - "reference": "6e8d978878ae5de705ec9fabbb6011cc18776bc9", - "shasum": "" - }, - "require": { - "php": "^7.2.5", - "psr/cache": "~1.0", - "psr/log": "~1.0", - "symfony/cache-contracts": "^1.1.7|^2", - "symfony/service-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0" - }, - "conflict": { - "doctrine/dbal": "<2.5", - "symfony/dependency-injection": "<4.4", - "symfony/http-kernel": "<4.4", - "symfony/var-dumper": "<4.4" - }, - "provide": { - "psr/cache-implementation": "1.0", - "psr/simple-cache-implementation": "1.0", - "symfony/cache-implementation": "1.0" - }, - "require-dev": { - "cache/integration-tests": "dev-master", - "doctrine/cache": "~1.6", - "doctrine/dbal": "~2.5", - "predis/predis": "~1.1", - "psr/simple-cache": "^1.0", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/var-dumper": "^4.4|^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Cache\\": "" - }, - "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 Cache component with PSR-6, PSR-16, and tags", - "homepage": "https://symfony.com", - "keywords": [ - "caching", - "psr6" - ], - "time": "2019-12-12T13:03:32+00:00" - }, - { - "name": "symfony/cache-contracts", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/cache-contracts.git", - "reference": "23ed8bfc1a4115feca942cb5f1aacdf3dcdf3c16" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/23ed8bfc1a4115feca942cb5f1aacdf3dcdf3c16", - "reference": "23ed8bfc1a4115feca942cb5f1aacdf3dcdf3c16", - "shasum": "" - }, - "require": { - "php": "^7.2.5", - "psr/cache": "^1.0" - }, - "suggest": { - "symfony/cache-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Cache\\": "" - } - }, - "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": "Generic abstractions related to caching", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "time": "2019-11-18T17:27:11+00:00" - }, - { - "name": "symfony/config", - "version": "v5.0.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/config.git", - "reference": "7f930484966350906185ba0a604728f7898b7ba0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/7f930484966350906185ba0a604728f7898b7ba0", - "reference": "7f930484966350906185ba0a604728f7898b7ba0", - "shasum": "" - }, - "require": { - "php": "^7.2.5", - "symfony/filesystem": "^4.4|^5.0", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "symfony/finder": "<4.4" - }, - "require-dev": { - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/messenger": "^4.4|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/yaml": "^4.4|^5.0" - }, - "suggest": { - "symfony/yaml": "To use the yaml reference dumper" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Config\\": "" - }, - "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 Config Component", - "homepage": "https://symfony.com", - "time": "2019-12-18T13:50:31+00:00" - }, - { - "name": "symfony/dependency-injection", - "version": "v5.0.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/dependency-injection.git", - "reference": "f9dbfbf487d08f60b1c83220edcd16559d1e40a2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f9dbfbf487d08f60b1c83220edcd16559d1e40a2", - "reference": "f9dbfbf487d08f60b1c83220edcd16559d1e40a2", - "shasum": "" - }, - "require": { - "php": "^7.2.5", - "psr/container": "^1.0", - "symfony/service-contracts": "^1.1.6|^2" - }, - "conflict": { - "symfony/config": "<5.0", - "symfony/finder": "<4.4", - "symfony/proxy-manager-bridge": "<4.4", - "symfony/yaml": "<4.4" - }, - "provide": { - "psr/container-implementation": "1.0", - "symfony/service-implementation": "1.0" - }, - "require-dev": { - "symfony/config": "^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.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": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\DependencyInjection\\": "" - }, - "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 DependencyInjection Component", - "homepage": "https://symfony.com", - "time": "2019-12-19T16:01:11+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v5.0.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "460863313bd3212d7c38e1b40602cbcfeeeea4a5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/460863313bd3212d7c38e1b40602cbcfeeeea4a5", - "reference": "460863313bd3212d7c38e1b40602cbcfeeeea4a5", - "shasum": "" - }, - "require": { - "php": "^7.2.5", - "psr/log": "^1.0", - "symfony/var-dumper": "^4.4|^5.0" - }, - "require-dev": { - "symfony/http-kernel": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "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 ErrorHandler Component", - "homepage": "https://symfony.com", - "time": "2019-12-16T14:48:47+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v5.0.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "7b738a51645e10f864cc25c24d232fb03f37b475" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/7b738a51645e10f864cc25c24d232fb03f37b475", - "reference": "7b738a51645e10f864cc25c24d232fb03f37b475", - "shasum": "" - }, - "require": { - "php": "^7.2.5", - "symfony/event-dispatcher-contracts": "^2" - }, - "conflict": { - "symfony/dependency-injection": "<4.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^4.4|^5.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "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 EventDispatcher Component", - "homepage": "https://symfony.com", - "time": "2019-11-18T17:27:11+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "af23c2584d4577d54661c434446fb8fbed6025dd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/af23c2584d4577d54661c434446fb8fbed6025dd", - "reference": "af23c2584d4577d54661c434446fb8fbed6025dd", - "shasum": "" - }, - "require": { - "php": "^7.2.5", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" - } - }, - "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": "Generic abstractions related to dispatching event", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "time": "2019-11-18T17:27:11+00:00" - }, - { - "name": "symfony/filesystem", - "version": "v5.0.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "1d71f670bc5a07b9ccc97dc44f932177a322d4e6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/1d71f670bc5a07b9ccc97dc44f932177a322d4e6", - "reference": "1d71f670bc5a07b9ccc97dc44f932177a322d4e6", - "shasum": "" - }, - "require": { - "php": "^7.2.5", - "symfony/polyfill-ctype": "~1.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-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": "2019-11-26T23:25:11+00:00" - }, - { - "name": "symfony/finder", - "version": "v5.0.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "17874dd8ab9a19422028ad56172fb294287a701b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/17874dd8ab9a19422028ad56172fb294287a701b", - "reference": "17874dd8ab9a19422028ad56172fb294287a701b", - "shasum": "" - }, - "require": { - "php": "^7.2.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-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": "2019-11-18T17:27:11+00:00" - }, - { - "name": "symfony/form", - "version": "v5.0.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/form.git", - "reference": "c57a9fe108cc7747d4e8dfb770a8066b4e906acc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/c57a9fe108cc7747d4e8dfb770a8066b4e906acc", - "reference": "c57a9fe108cc7747d4e8dfb770a8066b4e906acc", - "shasum": "" - }, - "require": { - "php": "^7.2.5", - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/intl": "^4.4|^5.0", - "symfony/options-resolver": "^5.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0", - "symfony/property-access": "^5.0", - "symfony/service-contracts": "^1.1|^2" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<4.4", - "symfony/dependency-injection": "<4.4", - "symfony/doctrine-bridge": "<4.4", - "symfony/framework-bundle": "<4.4", - "symfony/http-kernel": "<4.4", - "symfony/intl": "<4.4", - "symfony/translation": "<4.4", - "symfony/twig-bridge": "<4.4" - }, - "require-dev": { - "doctrine/collections": "~1.0", - "symfony/config": "^4.4|^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/http-kernel": "^4.4|^5.0", - "symfony/security-csrf": "^4.4|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/validator": "^4.4|^5.0", - "symfony/var-dumper": "^4.4|^5.0" - }, - "suggest": { - "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": "5.0-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": "2019-12-16T11:08:25+00:00" - }, - { - "name": "symfony/framework-bundle", - "version": "v5.0.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/framework-bundle.git", - "reference": "36e51776b231d8e224da4ce4c60079540acd1c55" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/36e51776b231d8e224da4ce4c60079540acd1c55", - "reference": "36e51776b231d8e224da4ce4c60079540acd1c55", - "shasum": "" - }, - "require": { - "ext-xml": "*", - "php": "^7.2.5", - "symfony/cache": "^4.4|^5.0", - "symfony/config": "^5.0", - "symfony/dependency-injection": "^5.0.1", - "symfony/error-handler": "^4.4.1|^5.0.1", - "symfony/filesystem": "^4.4|^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/http-kernel": "^5.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/routing": "^5.0" - }, - "conflict": { - "doctrine/persistence": "<1.3", - "phpdocumentor/reflection-docblock": "<3.0", - "phpdocumentor/type-resolver": "<0.2.1", - "phpunit/phpunit": "<5.4.3", - "symfony/asset": "<4.4", - "symfony/browser-kit": "<4.4", - "symfony/console": "<4.4", - "symfony/dom-crawler": "<4.4", - "symfony/dotenv": "<4.4", - "symfony/form": "<4.4", - "symfony/http-client": "<4.4", - "symfony/lock": "<4.4", - "symfony/mailer": "<4.4", - "symfony/messenger": "<4.4", - "symfony/mime": "<4.4", - "symfony/property-info": "<4.4", - "symfony/serializer": "<4.4", - "symfony/stopwatch": "<4.4", - "symfony/translation": "<5.0", - "symfony/twig-bridge": "<4.4", - "symfony/twig-bundle": "<4.4", - "symfony/validator": "<4.4", - "symfony/web-profiler-bundle": "<4.4", - "symfony/workflow": "<4.4" - }, - "require-dev": { - "doctrine/annotations": "~1.7", - "doctrine/cache": "~1.0", - "paragonie/sodium_compat": "^1.8", - "phpdocumentor/reflection-docblock": "^3.0|^4.0", - "symfony/asset": "^4.4|^5.0", - "symfony/browser-kit": "^4.4|^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/css-selector": "^4.4|^5.0", - "symfony/dom-crawler": "^4.4|^5.0", - "symfony/dotenv": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/form": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/lock": "^4.4|^5.0", - "symfony/mailer": "^4.4|^5.0", - "symfony/messenger": "^4.4|^5.0", - "symfony/mime": "^4.4|^5.0", - "symfony/polyfill-intl-icu": "~1.0", - "symfony/process": "^4.4|^5.0", - "symfony/property-info": "^4.4|^5.0", - "symfony/security-csrf": "^4.4|^5.0", - "symfony/security-http": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0", - "symfony/stopwatch": "^4.4|^5.0", - "symfony/string": "~5.0.0", - "symfony/translation": "^5.0", - "symfony/twig-bundle": "^4.4|^5.0", - "symfony/validator": "^4.4|^5.0", - "symfony/web-link": "^4.4|^5.0", - "symfony/workflow": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0", - "twig/twig": "^2.10|^3.0" - }, - "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": "5.0-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": "2019-12-17T10:33:13+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v5.0.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "5dd7f6be6e62d86ba6f3154cf40e78936367978b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/5dd7f6be6e62d86ba6f3154cf40e78936367978b", - "reference": "5dd7f6be6e62d86ba6f3154cf40e78936367978b", - "shasum": "" - }, - "require": { - "php": "^7.2.5", - "symfony/mime": "^4.4|^5.0", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/expression-language": "^4.4|^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-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": "2019-12-19T16:01:11+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v5.0.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "00ce30602f3f690e66a63c327743d7b26c723b2e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/00ce30602f3f690e66a63c327743d7b26c723b2e", - "reference": "00ce30602f3f690e66a63c327743d7b26c723b2e", - "shasum": "" - }, - "require": { - "php": "^7.2.5", - "psr/log": "~1.0", - "symfony/error-handler": "^4.4|^5.0", - "symfony/event-dispatcher": "^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php73": "^1.9" - }, - "conflict": { - "symfony/browser-kit": "<4.4", - "symfony/cache": "<5.0", - "symfony/config": "<5.0", - "symfony/dependency-injection": "<4.4", - "symfony/doctrine-bridge": "<5.0", - "symfony/form": "<5.0", - "symfony/http-client": "<5.0", - "symfony/mailer": "<5.0", - "symfony/messenger": "<5.0", - "symfony/translation": "<5.0", - "symfony/twig-bridge": "<5.0", - "symfony/validator": "<5.0", - "twig/twig": "<2.4" - }, - "provide": { - "psr/log-implementation": "1.0" - }, - "require-dev": { - "psr/cache": "~1.0", - "symfony/browser-kit": "^4.4|^5.0", - "symfony/config": "^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/css-selector": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/dom-crawler": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", - "symfony/routing": "^4.4|^5.0", - "symfony/stopwatch": "^4.4|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/translation-contracts": "^1.1|^2", - "twig/twig": "^2.4|^3.0" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-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": "2019-12-19T18:35:03+00:00" - }, - { - "name": "symfony/inflector", - "version": "v5.0.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/inflector.git", - "reference": "aaeb5e293294070d1b061fa3d7889bac69909320" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/inflector/zipball/aaeb5e293294070d1b061fa3d7889bac69909320", - "reference": "aaeb5e293294070d1b061fa3d7889bac69909320", - "shasum": "" - }, - "require": { - "php": "^7.2.5", - "symfony/polyfill-ctype": "~1.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-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": "2019-11-18T17:27:11+00:00" - }, - { - "name": "symfony/intl", - "version": "v5.0.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/intl.git", - "reference": "41f910d47883c6ab37087ca4a3332e21e1d682f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/41f910d47883c6ab37087ca4a3332e21e1d682f4", - "reference": "41f910d47883c6ab37087ca4a3332e21e1d682f4", - "shasum": "" - }, - "require": { - "php": "^7.2.5", - "symfony/polyfill-intl-icu": "~1.0" - }, - "require-dev": { - "symfony/filesystem": "^4.4|^5.0" - }, - "suggest": { - "ext-intl": "to use the component with locales other than \"en\"" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-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": "2019-11-26T23:25:11+00:00" - }, - { - "name": "symfony/mime", - "version": "v5.0.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "0e6a4ced216e49d457eddcefb61132173a876d79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/0e6a4ced216e49d457eddcefb61132173a876d79", - "reference": "0e6a4ced216e49d457eddcefb61132173a876d79", - "shasum": "" - }, - "require": { - "php": "^7.2.5", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0" - }, - "conflict": { - "symfony/mailer": "<4.4" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10", - "symfony/dependency-injection": "^4.4|^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Mime\\": "" - }, - "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": "A library to manipulate MIME messages", - "homepage": "https://symfony.com", - "keywords": [ - "mime", - "mime-type" - ], - "time": "2019-11-30T14:12:50+00:00" - }, - { - "name": "symfony/options-resolver", - "version": "v5.0.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/options-resolver.git", - "reference": "1ad3d0ffc00cc1990e5c9c7bb6b81578ec3f5f68" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/1ad3d0ffc00cc1990e5c9c7bb6b81578ec3f5f68", - "reference": "1ad3d0ffc00cc1990e5c9c7bb6b81578ec3f5f68", - "shasum": "" - }, - "require": { - "php": "^7.2.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-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": "2019-11-18T17:27:11+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.13.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", - "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.13-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "time": "2019-11-27T13:56:44+00:00" - }, - { - "name": "symfony/polyfill-intl-icu", - "version": "v1.13.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "b3dffd68afa61ca70f2327f2dd9bbeb6aa53d70b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/b3dffd68afa61ca70f2327f2dd9bbeb6aa53d70b", - "reference": "b3dffd68afa61ca70f2327f2dd9bbeb6aa53d70b", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "symfony/intl": "~2.3|~3.0|~4.0|~5.0" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.13-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": "2019-11-27T13:56:44+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.13.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6f9c239e61e1b0c9229a28ff89a812dc449c3d46", - "reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "symfony/polyfill-mbstring": "^1.3", - "symfony/polyfill-php72": "^1.9" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.13-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Laurent Bassin", - "email": "laurent@bassin.info" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "idn", - "intl", - "polyfill", - "portable", - "shim" - ], - "time": "2019-11-27T13:56:44+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.13.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f", - "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.13-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": "2019-11-27T14:18:11+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.13.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/66fea50f6cb37a35eea048d75a7d99a45b586038", - "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.13-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - }, - "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 7.2+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2019-11-27T13:56:44+00:00" - }, - { - "name": "symfony/polyfill-php73", - "version": "v1.13.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/4b0e2222c55a25b4541305a053013d5647d3a25f", - "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.13-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, - "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.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2019-11-27T16:25:15+00:00" - }, - { - "name": "symfony/property-access", - "version": "v5.0.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/property-access.git", - "reference": "b597c4f4dffc522bc4ed4bedcef9ed08d3ae3d23" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/b597c4f4dffc522bc4ed4bedcef9ed08d3ae3d23", - "reference": "b597c4f4dffc522bc4ed4bedcef9ed08d3ae3d23", - "shasum": "" - }, - "require": { - "php": "^7.2.5", - "symfony/inflector": "^4.4|^5.0" - }, - "require-dev": { - "symfony/cache": "^4.4|^5.0" - }, - "suggest": { - "psr/cache-implementation": "To cache access methods." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-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": "2019-12-10T11:06:55+00:00" - }, - { - "name": "symfony/routing", - "version": "v5.0.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "120c5fa4f4ef5466cbb510ece8126e0007285301" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/120c5fa4f4ef5466cbb510ece8126e0007285301", - "reference": "120c5fa4f4ef5466cbb510ece8126e0007285301", - "shasum": "" - }, - "require": { - "php": "^7.2.5" - }, - "conflict": { - "symfony/config": "<5.0", - "symfony/dependency-injection": "<4.4", - "symfony/yaml": "<4.4" - }, - "require-dev": { - "doctrine/annotations": "~1.2", - "psr/log": "~1.0", - "symfony/config": "^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0" - }, - "suggest": { - "doctrine/annotations": "For using the annotation loader", - "symfony/config": "For using the all-in-one router or any loader", - "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": "5.0-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": "2019-12-12T13:03:32+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "144c5e51266b281231e947b51223ba14acf1a749" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/144c5e51266b281231e947b51223ba14acf1a749", - "reference": "144c5e51266b281231e947b51223ba14acf1a749", - "shasum": "" - }, - "require": { - "php": "^7.2.5", - "psr/container": "^1.0" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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": "Generic abstractions related to writing services", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "time": "2019-11-18T17:27:11+00:00" - }, - { - "name": "symfony/translation", - "version": "v5.0.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "3ae6fad7a3dc2d99a023f9360184628fc44acbb3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/3ae6fad7a3dc2d99a023f9360184628fc44acbb3", - "reference": "3ae6fad7a3dc2d99a023f9360184628fc44acbb3", - "shasum": "" - }, - "require": { - "php": "^7.2.5", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2" - }, - "conflict": { - "symfony/config": "<4.4", - "symfony/dependency-injection": "<5.0", - "symfony/http-kernel": "<5.0", - "symfony/twig-bundle": "<5.0", - "symfony/yaml": "<4.4" - }, - "provide": { - "symfony/translation-implementation": "2.0" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "^4.4|^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/dependency-injection": "^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/http-kernel": "^5.0", - "symfony/intl": "^4.4|^5.0", - "symfony/service-contracts": "^1.1.2|^2", - "symfony/yaml": "^4.4|^5.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-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": "2019-12-12T13:03:32+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "8cc682ac458d75557203b2f2f14b0b92e1c744ed" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/8cc682ac458d75557203b2f2f14b0b92e1c744ed", - "reference": "8cc682ac458d75557203b2f2f14b0b92e1c744ed", - "shasum": "" - }, - "require": { - "php": "^7.2.5" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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": "Generic abstractions related to translation", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "time": "2019-11-18T17:27:11+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v5.0.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "d7bc61d5d335fa9b1b91e14bb16861e8ca50f53a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/d7bc61d5d335fa9b1b91e14bb16861e8ca50f53a", - "reference": "d7bc61d5d335fa9b1b91e14bb16861e8ca50f53a", - "shasum": "" - }, - "require": { - "php": "^7.2.5", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<4.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", - "twig/twig": "^2.4|^3.0" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "bin": [ - "Resources/bin/var-dump-server" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-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": "2019-12-18T13:50:31+00:00" - }, - { - "name": "symfony/var-exporter", - "version": "v5.0.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-exporter.git", - "reference": "1b9653e68d5b701bf6d9c91bdd3660078c9f4f28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/1b9653e68d5b701bf6d9c91bdd3660078c9f4f28", - "reference": "1b9653e68d5b701bf6d9c91bdd3660078c9f4f28", - "shasum": "" - }, - "require": { - "php": "^7.2.5" - }, - "require-dev": { - "symfony/var-dumper": "^4.4|^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\VarExporter\\": "" - }, - "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": "A blend of var_export() + serialize() to turn any serializable data structure to plain PHP code", - "homepage": "https://symfony.com", - "keywords": [ - "clone", - "construct", - "export", - "hydrate", - "instantiate", - "serialize" - ], - "time": "2019-12-01T08:48:26+00:00" - }, - { - "name": "twig/twig", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/twigphp/Twig.git", - "reference": "28f856a4c57eeb24485916e8a68403f41a133616" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/28f856a4c57eeb24485916e8a68403f41a133616", - "reference": "28f856a4c57eeb24485916e8a68403f41a133616", - "shasum": "" - }, - "require": { - "php": "^7.2.5", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-mbstring": "^1.3" - }, - "require-dev": { - "psr/container": "^1.0", - "symfony/phpunit-bridge": "^4.4|^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "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": "Twig Team", - "role": "Contributors" - }, - { - "name": "Armin Ronacher", - "email": "armin.ronacher@active-4.com", - "role": "Project Founder" - } - ], - "description": "Twig, the flexible, fast, and secure template language for PHP", - "homepage": "https://twig.symfony.com", - "keywords": [ - "templating" - ], - "time": "2019-12-28T07:17:28+00:00" - } - ], - "packages-dev": [], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": [], - "prefer-stable": false, - "prefer-lowest": false, - "platform": { - "php": "^7.2.5", - "ext-gd": "*" - }, - "platform-dev": [] -} From 2ed4f749543044037df0621dfea88b081506a13e Mon Sep 17 00:00:00 2001 From: Olaf Date: Fri, 3 Jan 2020 00:09:09 +0100 Subject: [PATCH 4/9] chore (ECS) add easy coding standard --- composer.json | 3 ++ ecs.yaml | 138 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 141 insertions(+) create mode 100644 ecs.yaml diff --git a/composer.json b/composer.json index 3f7fe7a..fa638b0 100644 --- a/composer.json +++ b/composer.json @@ -32,5 +32,8 @@ }, "config": { "sort-packages": true + }, + "require-dev": { + "symplify/easy-coding-standard": "^7.1" } } diff --git a/ecs.yaml b/ecs.yaml new file mode 100644 index 0000000..3c977fc --- /dev/null +++ b/ecs.yaml @@ -0,0 +1,138 @@ +parameters: + exclude_files: + - 'vendor/*' + - 'LICENSE' + - 'README.md' + +services: + # PSR1 + PhpCsFixer\Fixer\Basic\EncodingFixer: ~ + PhpCsFixer\Fixer\PhpTag\FullOpeningTagFixer: ~ + + PhpCsFixer\Fixer\NamespaceNotation\BlankLineAfterNamespaceFixer: ~ + PhpCsFixer\Fixer\ControlStructure\ElseifFixer: ~ + PhpCsFixer\Fixer\FunctionNotation\FunctionDeclarationFixer: ~ + PhpCsFixer\Fixer\Whitespace\IndentationTypeFixer: ~ + PhpCsFixer\Fixer\Whitespace\LineEndingFixer: ~ + PhpCsFixer\Fixer\Casing\ConstantCaseFixer: ~ + PhpCsFixer\Fixer\Casing\LowercaseKeywordsFixer: ~ + PhpCsFixer\Fixer\FunctionNotation\MethodArgumentSpaceFixer: + ensure_fully_multiline: true + PhpCsFixer\Fixer\ControlStructure\NoBreakCommentFixer: ~ + PhpCsFixer\Fixer\PhpTag\NoClosingTagFixer: ~ + PhpCsFixer\Fixer\FunctionNotation\NoSpacesAfterFunctionNameFixer: ~ + PhpCsFixer\Fixer\Whitespace\NoSpacesInsideParenthesisFixer: ~ + PhpCsFixer\Fixer\Whitespace\NoTrailingWhitespaceFixer: ~ + PhpCsFixer\Fixer\Comment\NoTrailingWhitespaceInCommentFixer: ~ + PhpCsFixer\Fixer\Whitespace\SingleBlankLineAtEofFixer: ~ + PhpCsFixer\Fixer\ClassNotation\SingleClassElementPerStatementFixer: + elements: + - 'property' + PhpCsFixer\Fixer\Import\SingleImportPerStatementFixer: ~ + PhpCsFixer\Fixer\Import\SingleLineAfterImportsFixer: ~ + PhpCsFixer\Fixer\ControlStructure\SwitchCaseSemicolonToColonFixer: ~ + PhpCsFixer\Fixer\ControlStructure\SwitchCaseSpaceFixer: ~ + PhpCsFixer\Fixer\ClassNotation\VisibilityRequiredFixer: ~ + + PhpCsFixer\Fixer\Basic\BracesFixer: + allow_single_line_closure: true + PhpCsFixer\Fixer\PhpTag\BlankLineAfterOpeningTagFixer: ~ + PhpCsFixer\Fixer\Operator\ConcatSpaceFixer: + spacing: none + PhpCsFixer\Fixer\Operator\NewWithBracesFixer: ~ + PhpCsFixer\Fixer\Phpdoc\PhpdocAlignFixer: + tags: + - method + - param + - property + - return + - throws + - type + - var + PhpCsFixer\Fixer\Operator\BinaryOperatorSpacesFixer: ~ + PhpCsFixer\Fixer\Operator\IncrementStyleFixer: ~ + PhpCsFixer\Fixer\Operator\UnaryOperatorSpacesFixer: ~ + PhpCsFixer\Fixer\Whitespace\BlankLineBeforeStatementFixer: ~ + PhpCsFixer\Fixer\CastNotation\CastSpacesFixer: ~ + PhpCsFixer\Fixer\LanguageConstruct\DeclareEqualNormalizeFixer: ~ + PhpCsFixer\Fixer\FunctionNotation\FunctionTypehintSpaceFixer: ~ + PhpCsFixer\Fixer\Comment\SingleLineCommentStyleFixer: + comment_types: + - hash + PhpCsFixer\Fixer\ControlStructure\IncludeFixer: ~ + PhpCsFixer\Fixer\CastNotation\LowercaseCastFixer: ~ + PhpCsFixer\Fixer\ClassNotation\ClassAttributesSeparationFixer: + elements: + - method + PhpCsFixer\Fixer\Casing\NativeFunctionCasingFixer: ~ + PhpCsFixer\Fixer\ClassNotation\NoBlankLinesAfterClassOpeningFixer: ~ + PhpCsFixer\Fixer\Phpdoc\NoBlankLinesAfterPhpdocFixer: ~ + PhpCsFixer\Fixer\Comment\NoEmptyCommentFixer: ~ + PhpCsFixer\Fixer\Phpdoc\NoEmptyPhpdocFixer: ~ + PhpCsFixer\Fixer\Phpdoc\PhpdocSeparationFixer: ~ + PhpCsFixer\Fixer\Semicolon\NoEmptyStatementFixer: ~ + PhpCsFixer\Fixer\Whitespace\NoExtraBlankLinesFixer: + tokens: + - curly_brace_block + - extra + - parenthesis_brace_block + - square_brace_block + - throw + - use + PhpCsFixer\Fixer\NamespaceNotation\NoLeadingNamespaceWhitespaceFixer: ~ + PhpCsFixer\Fixer\ArrayNotation\NoMultilineWhitespaceAroundDoubleArrowFixer: ~ + PhpCsFixer\Fixer\CastNotation\NoShortBoolCastFixer: ~ + PhpCsFixer\Fixer\Semicolon\NoSinglelineWhitespaceBeforeSemicolonsFixer: ~ + PhpCsFixer\Fixer\Whitespace\NoSpacesAroundOffsetFixer: ~ + PhpCsFixer\Fixer\ControlStructure\NoTrailingCommaInListCallFixer: ~ + PhpCsFixer\Fixer\ArrayNotation\NoTrailingCommaInSinglelineArrayFixer: ~ + PhpCsFixer\Fixer\ArrayNotation\TrailingCommaInMultilineArrayFixer: ~ + PhpCsFixer\Fixer\ControlStructure\NoUnneededControlParenthesesFixer: ~ + PhpCsFixer\Fixer\ArrayNotation\NoWhitespaceBeforeCommaInArrayFixer: ~ + PhpCsFixer\Fixer\Whitespace\NoWhitespaceInBlankLineFixer: ~ + PhpCsFixer\Fixer\ArrayNotation\NormalizeIndexBraceFixer: ~ + PhpCsFixer\Fixer\Operator\ObjectOperatorWithoutWhitespaceFixer: ~ + PhpCsFixer\Fixer\Phpdoc\PhpdocAnnotationWithoutDotFixer: ~ + PhpCsFixer\Fixer\Phpdoc\PhpdocIndentFixer: ~ + PhpCsFixer\Fixer\Phpdoc\PhpdocInlineTagFixer: ~ + PhpCsFixer\Fixer\Phpdoc\PhpdocNoAccessFixer: ~ + PhpCsFixer\Fixer\Phpdoc\PhpdocNoEmptyReturnFixer: ~ + PhpCsFixer\Fixer\Phpdoc\PhpdocNoPackageFixer: ~ + PhpCsFixer\Fixer\Phpdoc\PhpdocNoUselessInheritdocFixer: ~ + PhpCsFixer\Fixer\Phpdoc\PhpdocReturnSelfReferenceFixer: ~ + PhpCsFixer\Fixer\Phpdoc\PhpdocScalarFixer: ~ + PhpCsFixer\Fixer\Phpdoc\PhpdocSingleLineVarSpacingFixer: ~ + PhpCsFixer\Fixer\Phpdoc\PhpdocSummaryFixer: ~ + PhpCsFixer\Fixer\Phpdoc\PhpdocToCommentFixer: ~ + PhpCsFixer\Fixer\Phpdoc\PhpdocTrimFixer: ~ + PhpCsFixer\Fixer\Phpdoc\PhpdocTypesFixer: ~ + PhpCsFixer\Fixer\Phpdoc\PhpdocVarWithoutNameFixer: ~ + PhpCsFixer\Fixer\FunctionNotation\ReturnTypeDeclarationFixer: ~ + PhpCsFixer\Fixer\ClassNotation\SelfAccessorFixer: ~ + PhpCsFixer\Fixer\CastNotation\ShortScalarCastFixer: ~ + PhpCsFixer\Fixer\StringNotation\SingleQuoteFixer: ~ + PhpCsFixer\Fixer\Semicolon\SpaceAfterSemicolonFixer: ~ + PhpCsFixer\Fixer\Operator\StandardizeNotEqualsFixer: ~ + PhpCsFixer\Fixer\Operator\TernaryOperatorSpacesFixer: ~ + PhpCsFixer\Fixer\ArrayNotation\TrimArraySpacesFixer: ~ + PhpCsFixer\Fixer\ArrayNotation\WhitespaceAfterCommaInArrayFixer: ~ + PhpCsFixer\Fixer\ClassNotation\ClassDefinitionFixer: + singleLine: true + PhpCsFixer\Fixer\Casing\MagicConstantCasingFixer: ~ + PhpCsFixer\Fixer\Alias\NoMixedEchoPrintFixer: + use: echo + PhpCsFixer\Fixer\Import\NoLeadingImportSlashFixer: ~ + PhpCsFixer\Fixer\Import\NoUnusedImportsFixer: ~ + PhpCsFixer\Fixer\PhpUnit\PhpUnitFqcnAnnotationFixer: ~ + PhpCsFixer\Fixer\Phpdoc\PhpdocNoAliasTagFixer: ~ + PhpCsFixer\Fixer\ClassNotation\ProtectedToPrivateFixer: ~ + PhpCsFixer\Fixer\NamespaceNotation\SingleBlankLineBeforeNamespaceFixer: ~ + + # new since PHP-CS-Fixer 2.6 + PhpCsFixer\Fixer\ControlStructure\NoUnneededCurlyBracesFixer: ~ + PhpCsFixer\Fixer\ClassNotation\NoUnneededFinalMethodFixer: ~ + PhpCsFixer\Fixer\Semicolon\SemicolonAfterInstructionFixer: ~ + PhpCsFixer\Fixer\ControlStructure\YodaStyleFixer: ~ + + # new since 2.11 + PhpCsFixer\Fixer\Operator\StandardizeIncrementFixer: ~ From 478c64633e250119302a7eb62b0fe77f5dbb46a6 Mon Sep 17 00:00:00 2001 From: Olaf Date: Fri, 3 Jan 2020 00:12:44 +0100 Subject: [PATCH 5/9] fix (ECS) apply coding standard --- Controller/CaptchaController.php | 2 +- .../GregwarCaptchaExtension.php | 5 +- Generator/CaptchaGenerator.php | 31 ++++++----- Generator/ImageFileHandler.php | 34 +++++++----- Type/CaptchaType.php | 20 +++---- Validator/CaptchaValidator.php | 55 +++++++++++-------- 6 files changed, 80 insertions(+), 67 deletions(-) diff --git a/Controller/CaptchaController.php b/Controller/CaptchaController.php index d21b93c..d3c5751 100644 --- a/Controller/CaptchaController.php +++ b/Controller/CaptchaController.php @@ -10,7 +10,7 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; /** - * Generates a captcha via a URL + * Generates a captcha via a URL. * * @author Jeremy Livingston */ diff --git a/DependencyInjection/GregwarCaptchaExtension.php b/DependencyInjection/GregwarCaptchaExtension.php index 5689a30..060fff8 100755 --- a/DependencyInjection/GregwarCaptchaExtension.php +++ b/DependencyInjection/GregwarCaptchaExtension.php @@ -11,15 +11,16 @@ use Symfony\Component\DependencyInjection\Loader\YamlFileLoader; use Symfony\Component\Config\FileLocator; /** - * Extension used to load the configuration, set parameters, and initialize the captcha view + * Extension used to load the configuration, set parameters, and initialize the captcha view. * * @author Gregwar */ class GregwarCaptchaExtension extends Extension { /** - * @param array $configs + * @param array $configs * @param ContainerBuilder $container + * * @throws Exception */ public function load(array $configs, ContainerBuilder $container): void diff --git a/Generator/CaptchaGenerator.php b/Generator/CaptchaGenerator.php index a6c98b9..08b33dc 100644 --- a/Generator/CaptchaGenerator.php +++ b/Generator/CaptchaGenerator.php @@ -7,12 +7,11 @@ namespace Gregwar\CaptchaBundle\Generator; use Gregwar\Captcha\CaptchaBuilder; use Gregwar\Captcha\PhraseBuilder; use Symfony\Component\Routing\RouterInterface; - use Gregwar\Captcha\CaptchaBuilderInterface; use Gregwar\Captcha\PhraseBuilderInterface; /** - * Uses configuration parameters to call the services that generate captcha images + * Uses configuration parameters to call the services that generate captcha images. * * @author Gregwar * @author Jeremy Livingston @@ -32,10 +31,10 @@ class CaptchaGenerator protected $imageFileHandler; /** - * @param RouterInterface $router + * @param RouterInterface $router * @param CaptchaBuilderInterface $builder - * @param PhraseBuilderInterface $phraseBuilder - * @param ImageFileHandler $imageFileHandler + * @param PhraseBuilderInterface $phraseBuilder + * @param ImageFileHandler $imageFileHandler */ public function __construct( RouterInterface $router, @@ -43,10 +42,10 @@ class CaptchaGenerator PhraseBuilderInterface $phraseBuilder, ImageFileHandler $imageFileHandler ) { - $this->router = $router; - $this->builder = $builder; - $this->phraseBuilder = $phraseBuilder; - $this->imageFileHandler = $imageFileHandler; + $this->router = $router; + $this->builder = $builder; + $this->phraseBuilder = $phraseBuilder; + $this->imageFileHandler = $imageFileHandler; } public function getCaptchaCode(array &$options): string @@ -62,11 +61,13 @@ class CaptchaGenerator // Returns the image generation URL if ($options['as_url']) { - return $this->router->generate('gregwar_captcha.generate_captcha', - array('key' => $options['session_key'], 'n' => md5(microtime(true).mt_rand()))); + return $this->router->generate( + 'gregwar_captcha.generate_captcha', + array('key' => $options['session_key'], 'n' => md5(microtime(true).mt_rand())) + ); } - return 'data:image/jpeg;base64,' . base64_encode($this->generate($options)); + return 'data:image/jpeg;base64,'.base64_encode($this->generate($options)); } public function setPhrase(string $phrase): void @@ -82,7 +83,7 @@ class CaptchaGenerator $this->builder->setMaxBehindLines($options['max_behind_lines']); if (isset($options['text_color']) && $options['text_color']) { - if (count($options['text_color']) !== 3) { + if (3 !== count($options['text_color'])) { throw new \RuntimeException('text_color should be an array of r, g and b'); } @@ -91,7 +92,7 @@ class CaptchaGenerator } if (isset($options['background_color']) && $options['background_color']) { - if (count($options['background_color']) !== 3) { + if (3 !== count($options['background_color'])) { throw new \RuntimeException('background_color should be an array of r, g and b'); } @@ -136,7 +137,7 @@ class CaptchaGenerator $phrase = $this->phraseBuilder->build($options['length'], $options['charset']); $options['phrase'] = $phrase; } - + return $phrase; } } diff --git a/Generator/ImageFileHandler.php b/Generator/ImageFileHandler.php index 0a3c407..616d6f2 100644 --- a/Generator/ImageFileHandler.php +++ b/Generator/ImageFileHandler.php @@ -7,7 +7,7 @@ namespace Gregwar\CaptchaBundle\Generator; use Symfony\Component\Finder\Finder; /** - * Handles actions related to captcha image files including saving and garbage collection + * Handles actions related to captcha image files including saving and garbage collection. * * @author Gregwar * @author Jeremy Livingston @@ -15,25 +15,29 @@ use Symfony\Component\Finder\Finder; class ImageFileHandler { /** - * Name of folder for captcha images + * Name of folder for captcha images. + * * @var string */ protected $imageFolder; /** - * Absolute path to public web folder + * Absolute path to public web folder. + * * @var string */ protected $webPath; /** - * Frequency of garbage collection in fractions of 1 + * Frequency of garbage collection in fractions of 1. + * * @var int */ protected $gcFreq; /** - * Maximum age of images in minutes + * Maximum age of images in minutes. + * * @var int */ protected $expiration; @@ -47,25 +51,25 @@ class ImageFileHandler public function __construct(string $imageFolder, string $webPath, string $gcFreq, string $expiration) { $this->imageFolder = $imageFolder; - $this->webPath= $webPath; + $this->webPath = $webPath; $this->gcFreq = $gcFreq; $this->expiration = $expiration; } - public function saveAsFile($contents):string + public function saveAsFile($contents): string { $this->createFolderIfMissing(); - $filename = md5(uniqid()) . '.jpg'; - $filePath = $this->webPath . '/' . $this->imageFolder . '/' . $filename; + $filename = md5(uniqid()).'.jpg'; + $filePath = $this->webPath.'/'.$this->imageFolder.'/'.$filename; imagejpeg($contents, $filePath, 15); - return '/' . $this->imageFolder . '/' . $filename; + return '/'.$this->imageFolder.'/'.$filename; } public function collectGarbage(): bool { - if (!mt_rand(1, $this->gcFreq) == 1) { + if (1 == !mt_rand(1, $this->gcFreq)) { return false; } @@ -73,10 +77,10 @@ class ImageFileHandler $finder = new Finder(); $criteria = sprintf('<= now - %s minutes', $this->expiration); - $finder->in($this->webPath . '/' . $this->imageFolder) + $finder->in($this->webPath.'/'.$this->imageFolder) ->date($criteria); - foreach($finder->files() as $file) { + foreach ($finder->files() as $file) { unlink($file->getPathname()); } @@ -85,8 +89,8 @@ class ImageFileHandler protected function createFolderIfMissing(): void { - if (!file_exists($this->webPath . '/' . $this->imageFolder)) { - mkdir($this->webPath . '/' . $this->imageFolder, 0755); + if (!file_exists($this->webPath.'/'.$this->imageFolder)) { + mkdir($this->webPath.'/'.$this->imageFolder, 0755); } } } diff --git a/Type/CaptchaType.php b/Type/CaptchaType.php index 13d270b..8e659ea 100644 --- a/Type/CaptchaType.php +++ b/Type/CaptchaType.php @@ -17,7 +17,7 @@ use Gregwar\CaptchaBundle\Validator\CaptchaValidator; use Gregwar\CaptchaBundle\Generator\CaptchaGenerator; /** - * Captcha type + * Captcha type. * * @author Gregwar */ @@ -78,7 +78,7 @@ class CaptchaType extends AbstractType } $sessionKey = sprintf('%s%s', self::SESSION_KEY_PREFIX, $options['session_key']); - $isHuman = false; + $isHuman = false; if ($options['humanity'] > 0) { $humanityKey = sprintf('%s_humanity', $sessionKey); @@ -97,18 +97,18 @@ class CaptchaType extends AbstractType } $view->vars = array_merge($view->vars, array( - 'captcha_width' => $options['width'], - 'captcha_height' => $options['height'], - 'reload' => $options['reload'], - 'image_id' => uniqid('captcha_'), - 'captcha_code' => $this->generator->getCaptchaCode($options), - 'value' => '', - 'is_human' => $isHuman + 'captcha_width' => $options['width'], + 'captcha_height' => $options['height'], + 'reload' => $options['reload'], + 'image_id' => uniqid('captcha_'), + 'captcha_code' => $this->generator->getCaptchaCode($options), + 'value' => '', + 'is_human' => $isHuman, )); $persistOptions = array(); foreach (array('phrase', 'width', 'height', 'distortion', 'length', - 'quality', 'background_color', 'background_images', 'text_color') as $key) { + 'quality', 'background_color', 'background_images', 'text_color', ) as $key) { $persistOptions[$key] = $options[$key]; } diff --git a/Validator/CaptchaValidator.php b/Validator/CaptchaValidator.php index 4bab9a5..cdabc8e 100644 --- a/Validator/CaptchaValidator.php +++ b/Validator/CaptchaValidator.php @@ -10,7 +10,7 @@ use Symfony\Component\Form\FormEvent; use Symfony\Contracts\Translation\TranslatorInterface; /** - * Captcha validator + * Captcha validator. * * @author Gregwar */ @@ -20,31 +20,36 @@ class CaptchaValidator private $session; /** - * Session key to store the code + * Session key to store the code. + * * @var string */ private $key; /** - * Error message text for non-matching submissions + * Error message text for non-matching submissions. + * * @var string */ private $invalidMessage; /** - * Configuration parameter used to bypass a required code match + * Configuration parameter used to bypass a required code match. + * * @var string */ private $bypassCode; /** - * Number of form that the user can submit without captcha + * Number of form that the user can submit without captcha. + * * @var int */ private $humanity; /** - * Translator + * Translator. + * * @var TranslatorInterface */ private $translator; @@ -57,12 +62,12 @@ class CaptchaValidator ?string $bypassCode, int $humanity ) { - $this->translator = $translator; - $this->session = $session; - $this->key = $key; - $this->invalidMessage = $invalidMessage; - $this->bypassCode = $bypassCode; - $this->humanity = $humanity; + $this->translator = $translator; + $this->session = $session; + $this->key = $key; + $this->invalidMessage = $invalidMessage; + $this->bypassCode = $bypassCode; + $this->humanity = $humanity; } public function validate(FormEvent $event): void @@ -75,12 +80,13 @@ class CaptchaValidator if ($this->humanity > 0) { $humanity = $this->getHumanity(); if ($humanity > 0) { - $this->updateHumanity($humanity-1); + $this->updateHumanity($humanity - 1); + return; } } - if (!($code !== null && is_string($code) && ($this->compare($code, $expectedCode) || $this->compare($code, $this->bypassCode)))) { + if (!(null !== $code && is_string($code) && ($this->compare($code, $expectedCode) || $this->compare($code, $this->bypassCode)))) { $form->addError(new FormError($this->translator->trans($this->invalidMessage, array(), 'validators'))); } else { if ($this->humanity > 0) { @@ -90,13 +96,13 @@ class CaptchaValidator $this->session->remove($this->key); - if ($this->session->has($this->key . '_fingerprint')) { - $this->session->remove($this->key . '_fingerprint'); + if ($this->session->has($this->key.'_fingerprint')) { + $this->session->remove($this->key.'_fingerprint'); } } /** - * Retrieve the expected CAPTCHA code + * Retrieve the expected CAPTCHA code. * * @return mixed|null */ @@ -112,21 +118,21 @@ class CaptchaValidator } /** - * Retrieve the humanity + * Retrieve the humanity. * * @return mixed|null */ protected function getHumanity() { - return $this->session->get($this->key . '_humanity', 0); + return $this->session->get($this->key.'_humanity', 0); } protected function updateHumanity(int $newValue): void { if ($newValue > 0) { - $this->session->set($this->key . '_humanity', $newValue); + $this->session->set($this->key.'_humanity', $newValue); } else { - $this->session->remove($this->key . '_humanity'); + $this->session->remove($this->key.'_humanity'); } } @@ -136,14 +142,15 @@ class CaptchaValidator } /** - * Run a match comparison on the provided code and the expected code + * Run a match comparison on the provided code and the expected code. * - * @param string $code + * @param string $code * @param string|null $expectedCode + * * @return bool */ protected function compare($code, $expectedCode): bool { - return ($expectedCode !== null && is_string($expectedCode) && $this->niceize($code) == $this->niceize($expectedCode)); + return null !== $expectedCode && is_string($expectedCode) && $this->niceize($code) == $this->niceize($expectedCode); } } From 2b62be4af154beb4311e0e21200168a0ef274732 Mon Sep 17 00:00:00 2001 From: Olaf Date: Fri, 3 Jan 2020 00:42:56 +0100 Subject: [PATCH 6/9] fix (Symfony) use Symfony 5 web_path --- DependencyInjection/Configuration.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DependencyInjection/Configuration.php b/DependencyInjection/Configuration.php index 0a75bbd..ab4b23c 100644 --- a/DependencyInjection/Configuration.php +++ b/DependencyInjection/Configuration.php @@ -27,7 +27,7 @@ class Configuration implements ConfigurationInterface ->scalarNode('as_url')->defaultValue(false)->end() ->scalarNode('reload')->defaultValue(false)->end() ->scalarNode('image_folder')->defaultValue('captcha')->end() - ->scalarNode('web_path')->defaultValue('%kernel.root_dir%/../web')->end() + ->scalarNode('web_path')->defaultValue('%kernel.project_dir%/public')->end() ->scalarNode('gc_freq')->defaultValue(100)->end() ->scalarNode('expiration')->defaultValue(60)->end() ->scalarNode('quality')->defaultValue(50)->end() From 2012808bc605471992a1c281750bbf1026a2dff6 Mon Sep 17 00:00:00 2001 From: Olaf Date: Fri, 3 Jan 2020 00:43:31 +0100 Subject: [PATCH 7/9] docs (Readme) update README.md --- README.md | 100 ++++++++++++------------------------------------------ 1 file changed, 21 insertions(+), 79 deletions(-) diff --git a/README.md b/README.md index ec9397a..dcbd7ec 100644 --- a/README.md +++ b/README.md @@ -11,106 +11,45 @@ It uses [gregwar/captcha](https://github.com/Gregwar/Captcha) as captcha generat Compatibility with Symfony ========================== -If you are using Symfony `< 2.8`, you should use version `1.*` +| CaptchaBundle | Symfony | +|:---------------:|:-------:| +| 3.* | 5.* | +| 2.* | \>= 2.8 | +| 1.* | < 2.8 | -If you are using Symfony `>= 2.8`, you should use version `2.*` Installation ============ ### Step 1: Download the GregwarCaptchaBundle -Ultimately, the GregwarCaptchaBundle files should be downloaded to the -'vendor/bundles/Gregwar/CaptchaBundle' directory. - -You can accomplish this several ways, depending on your personal preference. -The first method is the standard Symfony method. - -***Using Composer*** - -Use composer require to download and install the package. +Use composer require to download and install the package. +At the end of the installation you can automaticly create the configuration thanks to the Symfony recipe. ``` bash composer require gregwar/captcha-bundle ``` -***Using the vendors script*** - -Add the following lines to your `deps` file: - -``` - [GregwarCaptchaBundle] - git=http://github.com/Gregwar/CaptchaBundle.git - target=/bundles/Gregwar/CaptchaBundle - version=origin/2.0 <- add this if you are using Symfony 2.0 -``` - -Now, run the vendors script to download the bundle: - -``` bash -$ php bin/vendors install -``` - -***Using submodules*** - -If you prefer instead to use git submodules, then run the following: - -``` bash -$ git submodule add git://github.com/Gregwar/CaptchaBundle.git vendor/bundles/Gregwar/CaptchaBundle -$ git submodule update --init -``` - -### Step 2: Configure the Autoloader - -If you use composer, you can skip this step. - -Now you will need to add the `Gregwar` namespace to your autoloader: - -``` php -registerNamespaces(array( - // ... - 'Gregwar' => __DIR__.'/../vendor/bundles', -)); -``` -### Step 3: Enable the bundle - -Finally, enable the bundle in the kernel: - -```php -add('captcha', CaptchaType::class); // That's all ! - // If you're using php<5.5, you can use instead: - $builder->add('captcha', 'Gregwar\CaptchaBundle\Type\CaptchaType'); // ... ``` @@ -123,7 +62,7 @@ Options You can define the following configuration options globally: * **image_folder**: name of folder for captcha images relative to public web folder in case **as_file** is set to true (default="captcha") -* **web_path**: absolute path to public web folder (default="%kernel.root_dir%/../web") +* **web_path**: absolute path to public web folder (default='%kernel.project_dir%/public') * **gc_freq**: frequency of garbage collection in fractions of 1 (default=100) * **expiration**: maximum lifetime of captcha image files in minutes (default=60) @@ -155,7 +94,7 @@ number of lines depends on the size of the image). (default=null) Example : -```php +``` php From 3691a30240fc77252fc683a6206fe1a57b382e3c Mon Sep 17 00:00:00 2001 From: Olaf Date: Fri, 3 Jan 2020 01:01:41 +0100 Subject: [PATCH 8/9] chore (Packages) allow Symfony 4 and PHP 7.1 --- composer.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/composer.json b/composer.json index fa638b0..d4351e7 100644 --- a/composer.json +++ b/composer.json @@ -17,12 +17,12 @@ } ], "require": { - "php": "^7.2.5", + "php": "^7.1.3", "ext-gd": "*", "gregwar/captcha": "~1.1", - "symfony/form": "~5.0", - "symfony/framework-bundle": "~5.0", - "symfony/translation": "^5.0", + "symfony/form": "~4.0|~5.0", + "symfony/framework-bundle": "~4.0|~5.0", + "symfony/translation": "~4.0|^5.0", "twig/twig": "^2.10|^3.0" }, "autoload": { @@ -34,6 +34,6 @@ "sort-packages": true }, "require-dev": { - "symplify/easy-coding-standard": "^7.1" + "symplify/easy-coding-standard": "^6.1" } } From 459a108ee613870eba8f30e9fc3c35dd083c1319 Mon Sep 17 00:00:00 2001 From: Olaf Date: Fri, 3 Jan 2020 01:07:49 +0100 Subject: [PATCH 9/9] docs (Readme) update README.md --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index dcbd7ec..5cc45be 100644 --- a/README.md +++ b/README.md @@ -11,11 +11,11 @@ It uses [gregwar/captcha](https://github.com/Gregwar/Captcha) as captcha generat Compatibility with Symfony ========================== -| CaptchaBundle | Symfony | -|:---------------:|:-------:| -| 3.* | 5.* | -| 2.* | \>= 2.8 | -| 1.* | < 2.8 | +| CaptchaBundle | Symfony | PHP | +|:---------------:|:---------:|:-------:| +| 3.* | 4.* - 5.* | 7.1 > | +| 2.* | 2.8 - 3.* | 5.3.9 > | +| 1.* | 2.1 - 2.7 | 5.3.0 > | Installation