diff --git a/.ebextensions/50_php.config b/.ebextensions/50_php.config index d2ac557..37dbd18 100644 --- a/.ebextensions/50_php.config +++ b/.ebextensions/50_php.config @@ -12,6 +12,7 @@ option_settings: packages: yum: php71-imap: [] + php71-pecl-redis: [] files: "/etc/php.d/z_project.ini": @@ -74,3 +75,6 @@ container_commands: # A restart of apache is not typically necessary. # 52_restart_httpd: # command: sudo service httpd restart + 53_redis_configure: + command: bash scripts/redis-start.sh + ignoreErrors: true \ No newline at end of file diff --git a/.ebextensions/60_io.config b/.ebextensions/60_io.config index f9a89fb..04ed1e7 100644 --- a/.ebextensions/60_io.config +++ b/.ebextensions/60_io.config @@ -73,8 +73,6 @@ container_commands: ln -sf /efs/mautic/app/config/local.php mautic/app/config/local.php rm -rf /tmp/imports ln -sf /efs/mautic/imports /tmp - rm -rf mautic/app/cache/prod/data/shared_dashboard - ln -sf /efs/mautic/app/cache/data/shared_dashboard mautic/app/cache/prod/data # Override all EFS permissions as a precaution. At large scale this step may need to be removed. 66_io_efs_permissions: leader_only: true diff --git a/.ebextensions/70_mautic.config b/.ebextensions/70_mautic.config index f1b4cbf..d40d7b2 100644 --- a/.ebextensions/70_mautic.config +++ b/.ebextensions/70_mautic.config @@ -1,9 +1,16 @@ # General commands for Mautic setup. container_commands: - # Intentionally avoid warmup as it causes a number of issues. + # Intentionally clear cache to ensure there are no obvious code issues, then recreate required cache folders. 70_mautic_cache_clear: - command: rm -rf ./mautic/app/cache/ ; console cache:clear --no-interaction --no-warmup -vvv - ignoreErrors: true + command: | + rm -rf mautic/app/cache/ + console cache:clear --no-interaction --no-warmup -vvv + mkdir -p mautic/app/cache/prod/data + chown -R webapp:webapp mautic/app/cache + chmod -R ug+wx mautic/app/cache + # Link the shared dashboard EFS mount after a cache clear. + 71_mautic_efs_shared_dashboard: + command: ln -sf /efs/mautic/app/cache/data/shared_dashboard mautic/app/cache/prod/data # Installation will only take place if the environment variable MAUTIC_INSTALL is 1. 71_mautic_install: command: bash scripts/mautic-install.sh diff --git a/.ebextensions/80_cron_start.config b/.ebextensions/80_cron_start.config index dea2929..1ae8755 100644 --- a/.ebextensions/80_cron_start.config +++ b/.ebextensions/80_cron_start.config @@ -25,7 +25,7 @@ files: # SEGMENTS # To keep the segments current. # Run up to 3 batches of 300 contacts per segment, then move on to the next. - */10 * * * * root cronloop mautic:segments:update --max-contacts=5000 --batch-limit=1000 --quiet >/dev/null 2>&1 + */10 * * * * root cronloop mautic:segments:update --max-contacts=10000 --batch-limit=10000 --quiet >/dev/null 2>&1 # CAMPAIGNS # To keep campaigns updated with applicable contacts. @@ -56,8 +56,7 @@ files: # IMPORTS # To run imports in offline processing. - # Import only 900 at a time for memory limit reduction and loop when done for speed. - */10 * * * * root cronloop mautic:import --limit=300 --quiet >/dev/null 2>&1 + * * * * * root if [ ! -d /tmp/imports ]; then sudo ln -sf /efs/mautic/imports /tmp ; fi ; console mautic:import --quiet >/dev/null 2>&1 # IP Lookup # Update maxmind databse at 9am on first Tuesday of each month on all instances. diff --git a/.ebextensions/90_cron_custom.config b/.ebextensions/90_cron_custom.config index ccb0281..dfdc067 100644 --- a/.ebextensions/90_cron_custom.config +++ b/.ebextensions/90_cron_custom.config @@ -38,4 +38,8 @@ files: # DASHBOARD WARM # Caches dashboard widgets so that the login is faster for the most active users. - */30 * * * * root cron mautic:dashboard:warm >/dev/null 2>&1 \ No newline at end of file + */5 * * * * root cron mautic:dashboard:warm >/dev/null 2>&1 + + # SEGEMNT UPDATER + # Updates high volume segments at regular intervals + */10 * * * * root /bin/bash /var/app/current/scripts/mautic-segment-worker.sh >/dev/null 2>&1 diff --git a/README.md b/README.md index e4a47a4..4987d40 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,7 @@ while maintaining HIPAA & PCI compliance. Other helpful services such as CloudFl #### Optional: + REDIS_HOST - Set to the path of your Redis server/cluster to use Redis for session storage. Helps avoid CSRF errors when scaling. See https://github.com/phpredis/phpredis MAUTIC_INSTALL - Set to "1" to initialize mautic for the first/cold deployment only! MAUTIC_WORKERS - Number of concurrent campaign trigger workers to run on the leading instance. - Instead of MAUTIC_WORKERS, we reccomend using the following 3 variables now to better control your timing. diff --git a/composer.json b/composer.json index fe199d7..584b8fe 100644 --- a/composer.json +++ b/composer.json @@ -4,7 +4,8 @@ "description": "Mautic Open Source Distribution - Modified for scalability", "license": "GPL-3.0-only", "require": { - "mautic/core": "dev-master#d27414a2044fed72ecbb39d88ed6a8d80b4fe9eb" + "mautic/core": "dev-master#f6aa213482047108968ed9766a2eda7c8e94d615", + "aws/aws-sdk-php": "3.36" }, "repositories": [ { diff --git a/composer.lock b/composer.lock index 46d9919..bfc070e 100644 --- a/composer.lock +++ b/composer.lock @@ -4,47 +4,64 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "ce40c5e79c01b2ce0de8cc61bbe624f8", + "content-hash": "7e7b2413b9cdb3e1f5f03e60f995ddd7", "packages": [ { "name": "aws/aws-sdk-php", - "version": "2.8.31", + "version": "3.36.0", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "64fa4b07f056e338a5f0f29eece75babaa83af68" + "reference": "69321675769dd3e3d00a94bfdc747bd3a5b75b3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/64fa4b07f056e338a5f0f29eece75babaa83af68", - "reference": "64fa4b07f056e338a5f0f29eece75babaa83af68", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/69321675769dd3e3d00a94bfdc747bd3a5b75b3b", + "reference": "69321675769dd3e3d00a94bfdc747bd3a5b75b3b", "shasum": "" }, "require": { - "guzzle/guzzle": "~3.7", - "php": ">=5.3.3" + "ext-json": "*", + "ext-pcre": "*", + "ext-simplexml": "*", + "ext-spl": "*", + "guzzlehttp/guzzle": "^5.3.1|^6.2.1", + "guzzlehttp/promises": "~1.0", + "guzzlehttp/psr7": "^1.4.1", + "mtdowling/jmespath.php": "~2.2", + "php": ">=5.5" }, "require-dev": { - "doctrine/cache": "~1.0", + "andrewsville/php-token-reflection": "^1.4", + "aws/aws-php-sns-message-validator": "~1.0", + "behat/behat": "~3.0", + "doctrine/cache": "~1.4", + "ext-dom": "*", "ext-openssl": "*", - "monolog/monolog": "~1.4", - "phpunit/phpunit": "~4.0", - "phpunit/phpunit-mock-objects": "2.3.1", - "symfony/yaml": "~2.1" + "nette/neon": "^2.3", + "phpunit/phpunit": "^4.8.35|^5.4.0", + "psr/cache": "^1.0" }, "suggest": { - "doctrine/cache": "Adds support for caching of credentials and responses", - "ext-apc": "Allows service description opcode caching, request and response caching, and credentials caching", - "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages", - "monolog/monolog": "Adds support for logging HTTP requests and responses", - "symfony/yaml": "Eases the ability to write manifests for creating jobs in AWS Import/Export" + "aws/aws-php-sns-message-validator": "To validate incoming SNS notifications", + "doctrine/cache": "To use the DoctrineCacheAdapter", + "ext-curl": "To send requests using cURL", + "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages" }, "type": "library", - "autoload": { - "psr-0": { - "Aws": "src/" + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" } }, + "autoload": { + "psr-4": { + "Aws\\": "src/" + }, + "files": [ + "src/functions.php" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ "Apache-2.0" @@ -67,7 +84,7 @@ "s3", "sdk" ], - "time": "2016-07-25T18:03:20+00:00" + "time": "2017-09-01T22:52:38+00:00" }, { "name": "clue/stream-filter", @@ -123,16 +140,16 @@ }, { "name": "composer/ca-bundle", - "version": "1.1.0", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "943b2c4fcad1ef178d16a713c2468bf7e579c288" + "reference": "8afa52cd417f4ec417b4bfe86b68106538a87660" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/943b2c4fcad1ef178d16a713c2468bf7e579c288", - "reference": "943b2c4fcad1ef178d16a713c2468bf7e579c288", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/8afa52cd417f4ec417b4bfe86b68106538a87660", + "reference": "8afa52cd417f4ec417b4bfe86b68106538a87660", "shasum": "" }, "require": { @@ -141,7 +158,7 @@ "php": "^5.3.2 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5", "psr/log": "^1.0", "symfony/process": "^2.5 || ^3.0 || ^4.0" }, @@ -175,7 +192,7 @@ "ssl", "tls" ], - "time": "2017-11-29T09:37:33+00:00" + "time": "2018-10-18T06:09:13+00:00" }, { "name": "debril/rss-atom-bundle", @@ -372,20 +389,20 @@ }, { "name": "doctrine/collections", - "version": "v1.4.0", + "version": "v1.5.0", "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "1a4fb7e902202c33cce8c55989b945612943c2ba" + "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/1a4fb7e902202c33cce8c55989b945612943c2ba", - "reference": "1a4fb7e902202c33cce8c55989b945612943c2ba", + "url": "https://api.github.com/repos/doctrine/collections/zipball/a01ee38fcd999f34d9bfbcee59dbda5105449cbf", + "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.1" }, "require-dev": { "doctrine/coding-standard": "~0.1@dev", @@ -435,7 +452,7 @@ "collections", "iterator" ], - "time": "2017-01-03T10:49:41+00:00" + "time": "2017-07-22T10:37:32+00:00" }, { "name": "doctrine/common", @@ -719,43 +736,43 @@ "orm", "persistence" ], - "time": "2017-10-04T22:58:25+00:00" + "time": "2017-10-11T19:48:03+00:00" }, { "name": "doctrine/doctrine-cache-bundle", - "version": "1.3.2", + "version": "1.3.5", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineCacheBundle.git", - "reference": "9baecbd6bfdd1123b0cf8c1b88fee0170a84ddd1" + "reference": "5514c90d9fb595e1095e6d66ebb98ce9ef049927" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/9baecbd6bfdd1123b0cf8c1b88fee0170a84ddd1", - "reference": "9baecbd6bfdd1123b0cf8c1b88fee0170a84ddd1", + "url": "https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/5514c90d9fb595e1095e6d66ebb98ce9ef049927", + "reference": "5514c90d9fb595e1095e6d66ebb98ce9ef049927", "shasum": "" }, "require": { "doctrine/cache": "^1.4.2", "doctrine/inflector": "~1.0", "php": ">=5.3.2", - "symfony/doctrine-bridge": "~2.2|~3.0|~4.0" + "symfony/doctrine-bridge": "~2.7|~3.3|~4.0" }, "require-dev": { "instaclick/coding-standard": "~1.1", "instaclick/object-calisthenics-sniffs": "dev-master", "instaclick/symfony2-coding-standard": "dev-remaster", - "phpunit/phpunit": "~4", + "phpunit/phpunit": "~4.8.36|~5.6|~6.5|~7.0", "predis/predis": "~0.8", "satooshi/php-coveralls": "^1.0", "squizlabs/php_codesniffer": "~1.5", - "symfony/console": "~2.2|~3.0|~4.0", - "symfony/finder": "~2.2|~3.0|~4.0", - "symfony/framework-bundle": "~2.2|~3.0|~4.0", - "symfony/phpunit-bridge": "~2.7|~3.0|~4.0", - "symfony/security-acl": "~2.3|~3.0", - "symfony/validator": "~2.2|~3.0|~4.0", - "symfony/yaml": "~2.2|~3.0|~4.0" + "symfony/console": "~2.7|~3.3|~4.0", + "symfony/finder": "~2.7|~3.3|~4.0", + "symfony/framework-bundle": "~2.7|~3.3|~4.0", + "symfony/phpunit-bridge": "~2.7|~3.3|~4.0", + "symfony/security-acl": "~2.7|~3.3", + "symfony/validator": "~2.7|~3.3|~4.0", + "symfony/yaml": "~2.7|~3.3|~4.0" }, "suggest": { "symfony/security-acl": "For using this bundle to cache ACLs" @@ -769,7 +786,10 @@ "autoload": { "psr-4": { "Doctrine\\Bundle\\DoctrineCacheBundle\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -802,12 +822,12 @@ } ], "description": "Symfony Bundle for Doctrine Cache", - "homepage": "http://www.doctrine-project.org", + "homepage": "https://www.doctrine-project.org", "keywords": [ "cache", "caching" ], - "time": "2017-09-29T14:39:10+00:00" + "time": "2018-11-09T06:25:35+00:00" }, { "name": "doctrine/doctrine-fixtures-bundle", @@ -926,33 +946,33 @@ }, { "name": "doctrine/inflector", - "version": "v1.1.0", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "90b2128806bfde671b6952ab8bea493942c1fdae" + "reference": "5527a48b7313d15261292c149e55e26eae771b0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae", - "reference": "90b2128806bfde671b6952ab8bea493942c1fdae", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a", + "reference": "5527a48b7313d15261292c149e55e26eae771b0a", "shasum": "" }, "require": { - "php": ">=5.3.2" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "4.*" + "phpunit/phpunit": "^6.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "1.3.x-dev" } }, "autoload": { - "psr-0": { - "Doctrine\\Common\\Inflector\\": "lib/" + "psr-4": { + "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" } }, "notification-url": "https://packagist.org/downloads/", @@ -989,36 +1009,36 @@ "singularize", "string" ], - "time": "2015-11-06T14:35:42+00:00" + "time": "2018-01-09T20:05:19+00:00" }, { "name": "doctrine/instantiator", - "version": "1.0.5", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", "shasum": "" }, "require": { - "php": ">=5.3,<8.0-DEV" + "php": "^7.1" }, "require-dev": { "athletic/athletic": "~0.1.8", "ext-pdo": "*", "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0" + "phpunit/phpunit": "^6.2.3", + "squizlabs/php_codesniffer": "^3.0.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { @@ -1043,7 +1063,7 @@ "constructor", "instantiate" ], - "time": "2015-06-14T21:17:01+00:00" + "time": "2017-07-22T11:58:36+00:00" }, { "name": "doctrine/lexer", @@ -1243,45 +1263,6 @@ ], "time": "2017-12-17T02:57:51+00:00" }, - { - "name": "dropbox/dropbox-sdk", - "version": "v1.1.7", - "source": { - "type": "git", - "url": "https://github.com/dropbox/dropbox-sdk-php.git", - "reference": "0f1a178ca9c0271bca6426dde8f5a2241578deae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dropbox/dropbox-sdk-php/zipball/0f1a178ca9c0271bca6426dde8f5a2241578deae", - "reference": "0f1a178ca9c0271bca6426dde8f5a2241578deae", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "php": ">= 5.3" - }, - "require-dev": { - "apigen/apigen": "4.1.2", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "2.0.0RC3" - }, - "type": "library", - "autoload": { - "psr-0": { - "Dropbox": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Dropbox SDK for PHP", - "keywords": [ - "dropbox" - ], - "time": "2016-08-08T23:48:49+00:00" - }, { "name": "egeloen/ordered-form", "version": "3.0.0", @@ -1602,25 +1583,24 @@ }, { "name": "geoip2/geoip2", - "version": "v2.8.0", + "version": "v2.9.0", "source": { "type": "git", "url": "https://github.com/maxmind/GeoIP2-php.git", - "reference": "63b0d87d47ee8c9431bff70244401db5ced82bd9" + "reference": "a807fbf65212eef5d8d2db1a1b31082b53633d77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maxmind/GeoIP2-php/zipball/63b0d87d47ee8c9431bff70244401db5ced82bd9", - "reference": "63b0d87d47ee8c9431bff70244401db5ced82bd9", + "url": "https://api.github.com/repos/maxmind/GeoIP2-php/zipball/a807fbf65212eef5d8d2db1a1b31082b53633d77", + "reference": "a807fbf65212eef5d8d2db1a1b31082b53633d77", "shasum": "" }, "require": { "maxmind-db/reader": "~1.0", - "maxmind/web-service-common": "~0.4", + "maxmind/web-service-common": "~0.5", "php": ">=5.4" }, "require-dev": { - "apigen/apigen": "*", "friendsofphp/php-cs-fixer": "2.*", "phpunit/phpunit": "4.*", "squizlabs/php_codesniffer": "3.*" @@ -1651,20 +1631,20 @@ "geolocation", "maxmind" ], - "time": "2018-01-18T21:30:24+00:00" + "time": "2018-04-10T15:32:59+00:00" }, { "name": "giggsey/libphonenumber-for-php", - "version": "8.8.11", + "version": "8.10.2", "source": { "type": "git", "url": "https://github.com/giggsey/libphonenumber-for-php.git", - "reference": "919d24a13ff772b6af07d0f3ffefe8963cfb635c" + "reference": "a71f260c2efce10ded8af030a20fa13edfb0e9be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/giggsey/libphonenumber-for-php/zipball/919d24a13ff772b6af07d0f3ffefe8963cfb635c", - "reference": "919d24a13ff772b6af07d0f3ffefe8963cfb635c", + "url": "https://api.github.com/repos/giggsey/libphonenumber-for-php/zipball/a71f260c2efce10ded8af030a20fa13edfb0e9be", + "reference": "a71f260c2efce10ded8af030a20fa13edfb0e9be", "shasum": "" }, "require": { @@ -1677,8 +1657,8 @@ "pear/pear_exception": "^1.0", "pear/versioncontrol_git": "^0.5", "phing/phing": "^2.7", - "phpunit/phpunit": "^4.8|^5.0", - "satooshi/php-coveralls": "^1.0", + "php-coveralls/php-coveralls": "^1.0|^2.0", + "phpunit/phpunit": "^4.8.36|^5.0", "symfony/console": "^2.8|^3.0" }, "type": "library", @@ -1719,20 +1699,20 @@ "phonenumber", "validation" ], - "time": "2018-02-07T11:27:18+00:00" + "time": "2018-12-06T10:42:08+00:00" }, { "name": "giggsey/locale", - "version": "1.4", + "version": "1.6", "source": { "type": "git", "url": "https://github.com/giggsey/Locale.git", - "reference": "e351a72ad6af6b41b690efdeffe1138fe5cc8b9c" + "reference": "da6845720b5d104d319d7e84576f54e44dd9e4f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/giggsey/Locale/zipball/e351a72ad6af6b41b690efdeffe1138fe5cc8b9c", - "reference": "e351a72ad6af6b41b690efdeffe1138fe5cc8b9c", + "url": "https://api.github.com/repos/giggsey/Locale/zipball/da6845720b5d104d319d7e84576f54e44dd9e4f5", + "reference": "da6845720b5d104d319d7e84576f54e44dd9e4f5", "shasum": "" }, "require": { @@ -1745,10 +1725,10 @@ "phing/phing": "~2.7", "phpunit/phpunit": "^4.8|^5.0", "satooshi/php-coveralls": "^1.0", - "symfony/console": "^2.8|^3.0", - "symfony/filesystem": "^2.8|^3.0", - "symfony/finder": "^2.8|^3.0", - "symfony/process": "^2.8|^3.0" + "symfony/console": "^2.8|^3.0|^4.0", + "symfony/filesystem": "^2.8|^3.0|^4.0", + "symfony/finder": "^2.8|^3.0|^4.0", + "symfony/process": "^2.8|^3.0|^4.0" }, "type": "library", "autoload": { @@ -1768,7 +1748,7 @@ } ], "description": "Locale functions required by libphonenumber-for-php", - "time": "2017-11-01T21:34:27+00:00" + "time": "2018-10-18T07:17:52+00:00" }, { "name": "guzzle/guzzle", @@ -1868,16 +1848,16 @@ }, { "name": "guzzlehttp/guzzle", - "version": "6.3.0", + "version": "6.3.3", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699" + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/f4db5a78a5ea468d4831de7f0bf9d9415e348699", - "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba", + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba", "shasum": "" }, "require": { @@ -1887,7 +1867,7 @@ }, "require-dev": { "ext-curl": "*", - "phpunit/phpunit": "^4.0 || ^5.0", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", "psr/log": "^1.0" }, "suggest": { @@ -1896,7 +1876,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "6.2-dev" + "dev-master": "6.3-dev" } }, "autoload": { @@ -1929,7 +1909,7 @@ "rest", "web service" ], - "time": "2017-06-22T18:50:49+00:00" + "time": "2018-04-22T15:46:56+00:00" }, { "name": "guzzlehttp/promises", @@ -1984,32 +1964,33 @@ }, { "name": "guzzlehttp/psr7", - "version": "1.4.2", + "version": "1.5.2", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c" + "reference": "9f83dded91781a01c63574e387eaa769be769115" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c", - "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/9f83dded91781a01c63574e387eaa769be769115", + "reference": "9f83dded91781a01c63574e387eaa769be769115", "shasum": "" }, "require": { "php": ">=5.4.0", - "psr/http-message": "~1.0" + "psr/http-message": "~1.0", + "ralouphie/getallheaders": "^2.0.5" }, "provide": { "psr/http-message-implementation": "1.0" }, "require-dev": { - "phpunit/phpunit": "~4.0" + "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "1.5-dev" } }, "autoload": { @@ -2039,13 +2020,14 @@ "keywords": [ "http", "message", + "psr-7", "request", "response", "stream", "uri", "url" ], - "time": "2017-03-20T17:10:46+00:00" + "time": "2018-12-04T20:46:45+00:00" }, { "name": "ip2location/ip2location-php", @@ -2131,21 +2113,24 @@ }, { "name": "jbroadway/urlify", - "version": "1.1.0-stable", + "version": "1.1.2-stable", "source": { "type": "git", "url": "https://github.com/jbroadway/urlify.git", - "reference": "99bb78cd9002d0e9ce479bb81635eb665e37e981" + "reference": "78118277ba31189fef18323bb78e9c1b89254dcc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jbroadway/urlify/zipball/99bb78cd9002d0e9ce479bb81635eb665e37e981", - "reference": "99bb78cd9002d0e9ce479bb81635eb665e37e981", + "url": "https://api.github.com/repos/jbroadway/urlify/zipball/78118277ba31189fef18323bb78e9c1b89254dcc", + "reference": "78118277ba31189fef18323bb78e9c1b89254dcc", "shasum": "" }, "require": { "php": ">=5.3.0" }, + "require-dev": { + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5" + }, "type": "library", "extra": { "branch-alias": { @@ -2159,7 +2144,7 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD" + "BSD-3-Clause-Clear" ], "authors": [ { @@ -2181,7 +2166,7 @@ "url", "urlify" ], - "time": "2017-01-03T20:12:54+00:00" + "time": "2018-12-08T15:51:20+00:00" }, { "name": "jdorn/sql-formatter", @@ -2235,16 +2220,16 @@ }, { "name": "jms/metadata", - "version": "1.6.0", + "version": "1.7.0", "source": { "type": "git", "url": "https://github.com/schmittjoh/metadata.git", - "reference": "6a06970a10e0a532fb52d3959547123b84a3b3ab" + "reference": "e5854ab1aa643623dc64adde718a8eec32b957a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/metadata/zipball/6a06970a10e0a532fb52d3959547123b84a3b3ab", - "reference": "6a06970a10e0a532fb52d3959547123b84a3b3ab", + "url": "https://api.github.com/repos/schmittjoh/metadata/zipball/e5854ab1aa643623dc64adde718a8eec32b957a8", + "reference": "e5854ab1aa643623dc64adde718a8eec32b957a8", "shasum": "" }, "require": { @@ -2267,9 +2252,13 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "Apache-2.0" + "MIT" ], "authors": [ + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" + }, { "name": "Johannes M. Schmitt", "email": "schmittjoh@gmail.com" @@ -2282,7 +2271,7 @@ "xml", "yaml" ], - "time": "2016-12-05T10:18:33+00:00" + "time": "2018-10-26T12:40:10+00:00" }, { "name": "jms/parser-lib", @@ -2321,22 +2310,22 @@ }, { "name": "jms/serializer", - "version": "1.11.0", + "version": "1.13.0", "source": { "type": "git", "url": "https://github.com/schmittjoh/serializer.git", - "reference": "e7c53477ff55c21d1b1db7d062edc050a24f465f" + "reference": "00863e1d55b411cc33ad3e1de09a4c8d3aae793c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/e7c53477ff55c21d1b1db7d062edc050a24f465f", - "reference": "e7c53477ff55c21d1b1db7d062edc050a24f465f", + "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/00863e1d55b411cc33ad3e1de09a4c8d3aae793c", + "reference": "00863e1d55b411cc33ad3e1de09a4c8d3aae793c", "shasum": "" }, "require": { "doctrine/annotations": "^1.0", "doctrine/instantiator": "^1.0.3", - "jms/metadata": "~1.1", + "jms/metadata": "^1.3", "jms/parser-lib": "1.*", "php": "^5.5|^7.0", "phpcollection/phpcollection": "~0.1", @@ -2370,7 +2359,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.11-dev" + "dev-1.x": "1.13-dev" } }, "autoload": { @@ -2380,7 +2369,7 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "Apache-2.0" + "MIT" ], "authors": [ { @@ -2401,7 +2390,7 @@ "serialization", "xml" ], - "time": "2018-02-04T17:48:54+00:00" + "time": "2018-07-25T13:58:54+00:00" }, { "name": "jms/serializer-bundle", @@ -2645,31 +2634,40 @@ }, { "name": "joomla/uri", - "version": "1.1.1", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/joomla-framework/uri.git", - "reference": "980e532e4235bb8f1ada15b28822abbeb171da3f" + "reference": "848a31dc895a9c8c9d7ea67571d6a4dd634a9dc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/joomla-framework/uri/zipball/980e532e4235bb8f1ada15b28822abbeb171da3f", - "reference": "980e532e4235bb8f1ada15b28822abbeb171da3f", + "url": "https://api.github.com/repos/joomla-framework/uri/zipball/848a31dc895a9c8c9d7ea67571d6a4dd634a9dc1", + "reference": "848a31dc895a9c8c9d7ea67571d6a4dd634a9dc1", "shasum": "" }, "require": { - "php": ">=5.3.10" + "php": "^5.3.10|~7.0" + }, + "require-dev": { + "joomla/coding-standards": "~2.0@alpha", + "joomla/test": "~1.0", + "phpunit/phpunit": "^4.8.35|^5.4.3|~6.0" }, "type": "joomla-package", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, "autoload": { "psr-4": { - "Joomla\\Uri\\": "src/", - "Joomla\\Uri\\Tests\\": "Tests/" + "Joomla\\Uri\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "GPL-2.0+" + "GPL-2.0-or-later" ], "description": "Joomla Uri Package", "homepage": "https://github.com/joomla-framework/uri", @@ -2678,7 +2676,7 @@ "joomla", "uri" ], - "time": "2014-02-09T02:57:17+00:00" + "time": "2018-07-01T00:12:15+00:00" }, { "name": "knplabs/gaufrette", @@ -2750,7 +2748,7 @@ "homepage": "http://github.com/knplabs/Gaufrette/contributors" }, { - "name": "KNPLabs Team", + "name": "KnpLabs Team", "homepage": "http://knplabs.com" } ], @@ -2888,55 +2886,39 @@ "time": "2017-12-24T16:32:39+00:00" }, { - "name": "league/flysystem", - "version": "1.0.47", + "name": "leezy/pheanstalk-bundle", + "version": "3.3.0", "source": { "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "a11e4a75f256bdacf99d20780ce42d3b8272975c" + "url": "https://github.com/armetiz/LeezyPheanstalkBundle.git", + "reference": "76056c91c4021356b1bd4870f6bcd30d612d358d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/a11e4a75f256bdacf99d20780ce42d3b8272975c", - "reference": "a11e4a75f256bdacf99d20780ce42d3b8272975c", + "url": "https://api.github.com/repos/armetiz/LeezyPheanstalkBundle/zipball/76056c91c4021356b1bd4870f6bcd30d612d358d", + "reference": "76056c91c4021356b1bd4870f6bcd30d612d358d", "shasum": "" }, "require": { - "ext-fileinfo": "*", - "php": ">=5.5.9" - }, - "conflict": { - "league/flysystem-sftp": "<1.0.6" + "pda/pheanstalk": "~3.0", + "php": ">=5.5.9", + "psr/log": "~1.0", + "symfony/console": "~2.5|~3.0|^4.0", + "symfony/framework-bundle": "~2.5|~3.0|^4.0" }, "require-dev": { - "phpspec/phpspec": "^3.4", - "phpunit/phpunit": "^5.7.10" - }, - "suggest": { - "ext-fileinfo": "Required for MimeType", - "ext-ftp": "Allows you to use FTP server storage", - "ext-openssl": "Allows you to use FTPS server storage", - "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", - "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", - "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", - "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", - "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", - "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", - "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", - "league/flysystem-webdav": "Allows you to use WebDAV storage", - "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", - "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", - "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" + "phpunit/phpunit": "~4.0|~5.0", + "phpunit/phpunit-mock-objects": "2.3.0|~3.4" }, - "type": "library", + "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "3.x-dev" } }, "autoload": { "psr-4": { - "League\\Flysystem\\": "src/" + "Leezy\\PheanstalkBundle\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2945,64 +2927,60 @@ ], "authors": [ { - "name": "Frank de Jonge", - "email": "info@frenky.net" + "name": "Thomas Tourlourat", + "email": "thomas@tourlourat.com", + "homepage": "http://www.armetiz.info" } ], - "description": "Filesystem abstraction: Many filesystems, one API.", + "description": "The LeezyPheanstalkBundle is a Symfony2 Bundle that provides a command line interface for manage the Beanstalkd workqueue server & a pheanstalk integration.", + "homepage": "https://github.com/armetiz/LeezyPheanstalkBundle", "keywords": [ - "Cloud Files", - "WebDAV", - "abstraction", - "aws", - "cloud", - "copy.com", - "dropbox", - "file systems", - "files", - "filesystem", - "filesystems", - "ftp", - "rackspace", - "remote", - "s3", - "sftp", - "storage" + "asynchronous", + "beanstalkd", + "bundle", + "messaging", + "pheanstalk", + "queueing", + "symfony" ], - "time": "2018-09-14T15:30:29+00:00" + "time": "2018-03-02T15:28:52+00:00" }, { - "name": "league/flysystem-aws-s3-v2", - "version": "1.0.3", + "name": "lightsaml/lightsaml", + "version": "1.4.1", "source": { "type": "git", - "url": "https://github.com/thephpleague/flysystem-aws-s3-v2.git", - "reference": "e464a35e34abed572c76b76aa2f278d178e141c6" + "url": "https://github.com/lightSAML/lightSAML.git", + "reference": "377f04d1fb25f2fb2e72dabeff10b336f1cbe4c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v2/zipball/e464a35e34abed572c76b76aa2f278d178e141c6", - "reference": "e464a35e34abed572c76b76aa2f278d178e141c6", + "url": "https://api.github.com/repos/lightSAML/lightSAML/zipball/377f04d1fb25f2fb2e72dabeff10b336f1cbe4c5", + "reference": "377f04d1fb25f2fb2e72dabeff10b336f1cbe4c5", "shasum": "" }, "require": { - "aws/aws-sdk-php": "~2.7", - "league/flysystem": "~1.0", - "php": ">=5.4.0" + "php": ">=5.6", + "robrichards/xmlseclibs": "~2.0|~3.0|~4.0", + "symfony/event-dispatcher": "~2.3|~3.0|~4.0", + "symfony/http-foundation": "~2.3|~3.0|~4.0" }, "require-dev": { - "mockery/mockery": "0.9.*", - "phpunit/phpunit": "~4.0" + "monolog/monolog": "~1.3", + "phpunit/phpunit": ">=5.7", + "pimple/pimple": "~3.0", + "symfony/css-selector": "~2.3|~3.0|~4.0", + "symfony/dom-crawler": "~2.3|~3.0|~4.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } + "suggest": { + "lightsaml/sp-bundle": "Symfony 2 SP security bundle", + "lightsaml/symfony-bridge": "Symfony 2 build container bridge" }, + "type": "library", "autoload": { - "psr-4": { - "League\\Flysystem\\AwsS3v2\\": "src/" + "psr-0": { + "LightSaml\\Tests\\": "tests/", + "LightSaml\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3011,252 +2989,51 @@ ], "authors": [ { - "name": "Frank de Jonge", - "email": "info@frenky.net" + "name": "Milos Tomic", + "email": "tmilos@gmail.com", + "homepage": "https://github.com/tmilos/", + "role": "Developer" } ], - "description": "Flysystem adapter for AWS S3 SDK v2", - "time": "2015-10-15T15:55:48+00:00" + "description": "Light SAML 2.0 PHP library", + "homepage": "https://www.lightsaml.com/", + "keywords": [ + "SAML 2.0", + "Single Logout", + "Single SignOn", + "library", + "lightSAML", + "php" + ], + "time": "2018-05-28T11:21:22+00:00" }, { - "name": "league/flysystem-dropbox", - "version": "1.0.4", + "name": "lightsaml/sp-bundle", + "version": "1.0.5", "source": { "type": "git", - "url": "https://github.com/thephpleague/flysystem-dropbox.git", - "reference": "939f91ca00d0255d9b3aa313e191480d00f09382" + "url": "https://github.com/lightSAML/SpBundle.git", + "reference": "2cb00e7bbfdb68c6eb7117cf1a35756e9cbddbe7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-dropbox/zipball/939f91ca00d0255d9b3aa313e191480d00f09382", - "reference": "939f91ca00d0255d9b3aa313e191480d00f09382", + "url": "https://api.github.com/repos/lightSAML/SpBundle/zipball/2cb00e7bbfdb68c6eb7117cf1a35756e9cbddbe7", + "reference": "2cb00e7bbfdb68c6eb7117cf1a35756e9cbddbe7", "shasum": "" }, "require": { - "dropbox/dropbox-sdk": "~1.1", - "league/flysystem": "~1.0", - "php": ">=5.4.0" + "lightsaml/symfony-bridge": "~1.0", + "php": ">=5.5.1", + "symfony/framework-bundle": "~2.3|~3.0", + "symfony/security-bundle": "~2.3|~3.0" }, "require-dev": { - "phpunit/phpunit": "~4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } + "phpunit/phpunit": "~4.6", + "satooshi/php-coveralls": "~0.6", + "symfony/monolog-bundle": "~2.3|~3.0", + "symfony/symfony": "~2.3|~3.0" }, - "autoload": { - "psr-4": { - "League\\Flysystem\\Dropbox\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Frank de Jonge", - "email": "info@frenky.net" - } - ], - "description": "Flysystem adapter for Dropbox", - "abandoned": "spatie/flysystem-dropbox", - "time": "2016-04-25T18:51:39+00:00" - }, - { - "name": "league/flysystem-sftp", - "version": "1.0.16", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem-sftp.git", - "reference": "322839636847e0dba0f714e9ad0db813d65efcf2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-sftp/zipball/322839636847e0dba0f714e9ad0db813d65efcf2", - "reference": "322839636847e0dba0f714e9ad0db813d65efcf2", - "shasum": "" - }, - "require": { - "league/flysystem": "~1.0", - "php": ">=5.6.0", - "phpseclib/phpseclib": "~2.0" - }, - "require-dev": { - "mockery/mockery": "0.9.*", - "phpunit/phpunit": "^5.7.25" - }, - "type": "library", - "autoload": { - "psr-4": { - "League\\Flysystem\\Sftp\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Frank de Jonge", - "email": "info@frenky.net" - } - ], - "description": "Flysystem adapter for SFTP", - "time": "2018-07-08T21:01:51+00:00" - }, - { - "name": "leezy/pheanstalk-bundle", - "version": "3.2.3", - "source": { - "type": "git", - "url": "https://github.com/armetiz/LeezyPheanstalkBundle.git", - "reference": "3944f5d43e10dec476a5e4f6ae16ade03b5693e4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/armetiz/LeezyPheanstalkBundle/zipball/3944f5d43e10dec476a5e4f6ae16ade03b5693e4", - "reference": "3944f5d43e10dec476a5e4f6ae16ade03b5693e4", - "shasum": "" - }, - "require": { - "pda/pheanstalk": "~3.0", - "php": ">=5.5.9", - "psr/log": "~1.0", - "symfony/console": "~2.5|~3.0", - "symfony/framework-bundle": "~2.5|~3.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.0", - "phpunit/phpunit-mock-objects": "2.3.0" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Leezy\\PheanstalkBundle\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Thomas Tourlourat", - "email": "thomas@tourlourat.com", - "homepage": "http://www.armetiz.info" - } - ], - "description": "The LeezyPheanstalkBundle is a Symfony2 Bundle that provides a command line interface for manage the Beanstalkd workqueue server & a pheanstalk integration.", - "homepage": "https://github.com/armetiz/LeezyPheanstalkBundle", - "keywords": [ - "asynchronous", - "beanstalkd", - "bundle", - "messaging", - "pheanstalk", - "queueing", - "symfony" - ], - "time": "2017-12-12T13:53:05+00:00" - }, - { - "name": "lightsaml/lightsaml", - "version": "1.3.3", - "source": { - "type": "git", - "url": "https://github.com/lightSAML/lightSAML.git", - "reference": "44447a7022b9165dfa46ec21d96f26f01813e5ea" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/lightSAML/lightSAML/zipball/44447a7022b9165dfa46ec21d96f26f01813e5ea", - "reference": "44447a7022b9165dfa46ec21d96f26f01813e5ea", - "shasum": "" - }, - "require": { - "php": ">=5.5.1", - "robrichards/xmlseclibs": "~2.0|~3.0", - "symfony/event-dispatcher": "~2.3|~3.0", - "symfony/http-foundation": "~2.3|~3.0" - }, - "require-dev": { - "monolog/monolog": "~1.3", - "phpunit/phpunit": "~4.5", - "pimple/pimple": "~3.0", - "satooshi/php-coveralls": "~0.6", - "symfony/css-selector": "~2.3", - "symfony/dom-crawler": "~2.3" - }, - "suggest": { - "lightsaml/sp-bundle": "Symfony 2 SP security bundle", - "lightsaml/symfony-bridge": "Symfony 2 build container bridge" - }, - "type": "library", - "autoload": { - "psr-0": { - "LightSaml\\Tests\\": "tests/", - "LightSaml\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Milos Tomic", - "email": "tmilos@gmail.com", - "homepage": "https://github.com/tmilos/", - "role": "Developer" - } - ], - "description": "Light SAML 2.0 PHP library", - "homepage": "https://www.lightsaml.com/", - "keywords": [ - "SAML 2.0", - "Single Logout", - "Single SignOn", - "library", - "lightSAML", - "php" - ], - "time": "2017-12-18T06:32:51+00:00" - }, - { - "name": "lightsaml/sp-bundle", - "version": "1.0.5", - "source": { - "type": "git", - "url": "https://github.com/lightSAML/SpBundle.git", - "reference": "2cb00e7bbfdb68c6eb7117cf1a35756e9cbddbe7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/lightSAML/SpBundle/zipball/2cb00e7bbfdb68c6eb7117cf1a35756e9cbddbe7", - "reference": "2cb00e7bbfdb68c6eb7117cf1a35756e9cbddbe7", - "shasum": "" - }, - "require": { - "lightsaml/symfony-bridge": "~1.0", - "php": ">=5.5.1", - "symfony/framework-bundle": "~2.3|~3.0", - "symfony/security-bundle": "~2.3|~3.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.6", - "satooshi/php-coveralls": "~0.6", - "symfony/monolog-bundle": "~2.3|~3.0", - "symfony/symfony": "~2.3|~3.0" - }, - "type": "symfony-bundle", + "type": "symfony-bundle", "autoload": { "psr-0": { "LightSaml\\SpBundle\\Tests\\": "tests/", @@ -3281,28 +3058,32 @@ }, { "name": "lightsaml/symfony-bridge", - "version": "1.0.4", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/lightSAML/SymfonyBridgeBundle.git", - "reference": "01ad843a0bafc5268bda65e49a9be3c0c57e2381" + "reference": "8d3120825032a7468e894d0ae68630f21cd6035b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lightSAML/SymfonyBridgeBundle/zipball/01ad843a0bafc5268bda65e49a9be3c0c57e2381", - "reference": "01ad843a0bafc5268bda65e49a9be3c0c57e2381", + "url": "https://api.github.com/repos/lightSAML/SymfonyBridgeBundle/zipball/8d3120825032a7468e894d0ae68630f21cd6035b", + "reference": "8d3120825032a7468e894d0ae68630f21cd6035b", "shasum": "" }, "require": { "lightsaml/lightsaml": "~1.1", "php": ">=5.5.1", - "symfony/dependency-injection": "~2.3|~3.0", - "symfony/framework-bundle": "~2.3|~3.0", - "symfony/yaml": "~2.3|~3.0" + "symfony/dependency-injection": "~2.7|~3.0|~4.0", + "symfony/framework-bundle": "~2.7|~3.0|~4.0", + "symfony/yaml": "~2.7|~3.0|~4.0" }, "require-dev": { - "phpunit/phpunit": "~4.5", - "satooshi/php-coveralls": "~0.6" + "php-coveralls/php-coveralls": "~2.0", + "phpunit/phpunit": "^5.7", + "symfony/browser-kit": "~2.7|~3.0|~4.0", + "symfony/filesystem": "~2.7|~3.0|~4.0", + "symfony/finder": "~2.7|~3.0|~4.0", + "symfony/routing": "~2.7|~3.0|~4.0" }, "suggest": { "lightsaml/lightsamp-idp": "If you will be using IDP LightSAML services" @@ -3328,42 +3109,7 @@ ], "description": "Light SAML Symfony bridge bundle", "homepage": "http://www.lightsaml.com", - "time": "2016-11-18T15:11:05+00:00" - }, - { - "name": "mautic/composer-plugin", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/mautic/composer-plugin.git", - "reference": "27d2474ae8e39d30d28908d6f818e71fe32b8443" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mautic/composer-plugin/zipball/27d2474ae8e39d30d28908d6f818e71fe32b8443", - "reference": "27d2474ae8e39d30d28908d6f818e71fe32b8443", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.0" - }, - "require-dev": { - "composer/composer": "^1.5" - }, - "type": "composer-plugin", - "extra": { - "class": "Mautic\\Composer\\InstallerPlugin" - }, - "autoload": { - "psr-4": { - "Mautic\\Composer\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "time": "2017-12-10T22:16:22+00:00" + "time": "2018-05-23T08:11:59+00:00" }, { "name": "mautic/core", @@ -3371,27 +3117,27 @@ "source": { "type": "git", "url": "https://github.com/mautic/mautic.git", - "reference": "d27414a2044fed72ecbb39d88ed6a8d80b4fe9eb" + "reference": "f6aa213482047108968ed9766a2eda7c8e94d615" }, "require": { "mnsami/composer-custom-directory-installer": "1.1.*", "wikimedia/composer-merge-plugin": "dev-master" }, "type": "library", - "time": "2018-10-10T12:17:49+00:00" + "time": "2018-12-05T12:56:48+00:00" }, { "name": "maxmind-db/reader", - "version": "v1.2.0", + "version": "v1.4.0", "source": { "type": "git", "url": "https://github.com/maxmind/MaxMind-DB-Reader-php.git", - "reference": "1647820dfbcb552222fb5feb3a8387e2636394c9" + "reference": "2f1086e38939e808cc23b17daa469da094af9125" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maxmind/MaxMind-DB-Reader-php/zipball/1647820dfbcb552222fb5feb3a8387e2636394c9", - "reference": "1647820dfbcb552222fb5feb3a8387e2636394c9", + "url": "https://api.github.com/repos/maxmind/MaxMind-DB-Reader-php/zipball/2f1086e38939e808cc23b17daa469da094af9125", + "reference": "2f1086e38939e808cc23b17daa469da094af9125", "shasum": "" }, "require": { @@ -3399,7 +3145,7 @@ }, "require-dev": { "friendsofphp/php-cs-fixer": "2.*", - "phpunit/phpunit": "4.*", + "phpunit/phpunit": "4.* || 5.*", "satooshi/php-coveralls": "1.0.*", "squizlabs/php_codesniffer": "3.*" }, @@ -3434,7 +3180,7 @@ "geolocation", "maxmind" ], - "time": "2017-01-19T23:49:38+00:00" + "time": "2018-11-20T16:04:10+00:00" }, { "name": "maxmind/web-service-common", @@ -3606,16 +3352,16 @@ }, { "name": "monolog/monolog", - "version": "1.23.0", + "version": "1.24.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4" + "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd8c787753b3a2ad11bc60c063cff1358a32a3b4", - "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", + "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", "shasum": "" }, "require": { @@ -3680,7 +3426,7 @@ "logging", "psr-3" ], - "time": "2017-06-19T01:22:40+00:00" + "time": "2018-11-05T09:00:11+00:00" }, { "name": "mrclay/minify", @@ -3723,50 +3469,59 @@ "time": "2014-03-12T12:54:23+00:00" }, { - "name": "mustache/mustache", - "version": "v2.12.0", + "name": "mtdowling/jmespath.php", + "version": "2.4.0", "source": { "type": "git", - "url": "https://github.com/bobthecow/mustache.php.git", - "reference": "fe8fe72e9d580591854de404cc59a1b83ca4d19e" + "url": "https://github.com/jmespath/jmespath.php.git", + "reference": "adcc9531682cf87dfda21e1fd5d0e7a41d292fac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/mustache.php/zipball/fe8fe72e9d580591854de404cc59a1b83ca4d19e", - "reference": "fe8fe72e9d580591854de404cc59a1b83ca4d19e", + "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/adcc9531682cf87dfda21e1fd5d0e7a41d292fac", + "reference": "adcc9531682cf87dfda21e1fd5d0e7a41d292fac", "shasum": "" }, "require": { - "php": ">=5.2.4" + "php": ">=5.4.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "~1.11", - "phpunit/phpunit": "~3.7|~4.0|~5.0" + "phpunit/phpunit": "~4.0" }, + "bin": [ + "bin/jp.php" + ], "type": "library", - "autoload": { - "psr-0": { - "Mustache": "src/" + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" } }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], + "autoload": { + "psr-4": { + "JmesPath\\": "src/" + }, + "files": [ + "src/JmesPath.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], "authors": [ { - "name": "Justin Hileman", - "email": "justin@justinhileman.info", - "homepage": "http://justinhileman.com" + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" } ], - "description": "A Mustache implementation in PHP.", - "homepage": "https://github.com/bobthecow/mustache.php", + "description": "Declaratively specify how to extract elements from a JSON document", "keywords": [ - "mustache", - "templating" + "json", + "jsonpath" ], - "time": "2017-07-11T12:54:05+00:00" + "time": "2016-12-03T22:08:25+00:00" }, { "name": "mustangostang/spyc", @@ -3819,36 +3574,42 @@ "time": "2017-02-24T16:06:33+00:00" }, { - "name": "namshi/cuzzle", - "version": "2.0.3", + "name": "noxlogic/ratelimit-bundle", + "version": "1.11.1", + "target-dir": "Noxlogic/RateLimitBundle", "source": { "type": "git", - "url": "https://github.com/namshi/cuzzle.git", - "reference": "89849bb9c729a3d8aabf94c0b66e77c7df38abda" + "url": "https://github.com/jaytaph/RateLimitBundle.git", + "reference": "df677add8b0e155cc47e90814b80e34ae2d47415" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/namshi/cuzzle/zipball/89849bb9c729a3d8aabf94c0b66e77c7df38abda", - "reference": "89849bb9c729a3d8aabf94c0b66e77c7df38abda", + "url": "https://api.github.com/repos/jaytaph/RateLimitBundle/zipball/df677add8b0e155cc47e90814b80e34ae2d47415", + "reference": "df677add8b0e155cc47e90814b80e34ae2d47415", "shasum": "" }, "require": { - "guzzlehttp/guzzle": "^6.0", - "php": ">=5.5.0", - "psr/log": "^1.0" + "sensio/framework-extra-bundle": "^2.3|^3.0|^4.0|^5.0", + "symfony/framework-bundle": "^2.3|^3.0|^4.0" }, "require-dev": { - "phpunit/phpunit": "^4.2.2" + "doctrine/cache": "^1.5", + "friendsofsymfony/oauth-server-bundle": "^1.5", + "phpunit/phpunit": "^4.8|^5.0", + "predis/predis": "^0.8|^1.1", + "psr/cache": "^1.0", + "psr/simple-cache": "^1.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } + "suggest": { + "doctrine/doctrine-cache-bundle": "Use Doctrine Cache as a storage engine.", + "friendsofsymfony/oauth-server-bundle": "Throttle using OAuth access tokens.", + "leaseweb/memcache-bundle": "Use Memcache as a storage engine.", + "snc/redis-bundle": "Use Redis as a storage engine." }, + "type": "symfony-bundle", "autoload": { - "psr-4": { - "Namshi\\Cuzzle\\": "src/" + "psr-0": { + "Noxlogic\\RateLimitBundle": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -3857,16 +3618,17 @@ ], "authors": [ { - "name": "Nikita Nefedov", - "email": "inefedor@gmail.com" - }, - { - "name": "cirpo", - "email": "alessandro.cinelli@gmail.com" + "name": "Joshua Thijssen", + "email": "jthijssen@noxlogic.nl" } ], - "description": "Get the cURL shell command from a Guzzle request", - "time": "2016-11-23T08:01:36+00:00" + "description": "This bundle provides functionality to limit calls to actions based on rate limits", + "keywords": [ + "api", + "rest", + "x-rate-limit" + ], + "time": "2018-07-02T12:33:43+00:00" }, { "name": "oneup/uploader-bundle", @@ -3945,16 +3707,16 @@ }, { "name": "paragonie/random_compat", - "version": "v2.0.11", + "version": "v2.0.17", "source": { "type": "git", "url": "https://github.com/paragonie/random_compat.git", - "reference": "5da4d3c796c275c55f057af5a643ae297d96b4d8" + "reference": "29af24f25bab834fcbb38ad2a69fa93b867e070d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/5da4d3c796c275c55f057af5a643ae297d96b4d8", - "reference": "5da4d3c796c275c55f057af5a643ae297d96b4d8", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/29af24f25bab834fcbb38ad2a69fa93b867e070d", + "reference": "29af24f25bab834fcbb38ad2a69fa93b867e070d", "shasum": "" }, "require": { @@ -3986,23 +3748,24 @@ "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", "keywords": [ "csprng", + "polyfill", "pseudorandom", "random" ], - "time": "2017-09-27T21:40:39+00:00" + "time": "2018-07-04T16:31:37+00:00" }, { "name": "pda/pheanstalk", - "version": "v3.1.0", + "version": "v3.2.1", "source": { "type": "git", "url": "https://github.com/pda/pheanstalk.git", - "reference": "430e77c551479aad0c6ada0450ee844cf656a18b" + "reference": "57b6e76f1b06ca798e739a8dee92c2dac04fd170" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pda/pheanstalk/zipball/430e77c551479aad0c6ada0450ee844cf656a18b", - "reference": "430e77c551479aad0c6ada0450ee844cf656a18b", + "url": "https://api.github.com/repos/pda/pheanstalk/zipball/57b6e76f1b06ca798e739a8dee92c2dac04fd170", + "reference": "57b6e76f1b06ca798e739a8dee92c2dac04fd170", "shasum": "" }, "require": { @@ -4014,7 +3777,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -4039,26 +3802,26 @@ "keywords": [ "beanstalkd" ], - "time": "2015-08-07T21:42:41+00:00" + "time": "2018-09-19T12:16:28+00:00" }, { "name": "php-amqplib/php-amqplib", - "version": "v2.7.2", + "version": "v2.8.1", "source": { "type": "git", "url": "https://github.com/php-amqplib/php-amqplib.git", - "reference": "dfd3694a86f1a7394d3693485259d4074a6ec79b" + "reference": "84449ffd3f5a7466bbee3946facb3746ff11f075" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/dfd3694a86f1a7394d3693485259d4074a6ec79b", - "reference": "dfd3694a86f1a7394d3693485259d4074a6ec79b", + "url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/84449ffd3f5a7466bbee3946facb3746ff11f075", + "reference": "84449ffd3f5a7466bbee3946facb3746ff11f075", "shasum": "" }, "require": { "ext-bcmath": "*", - "ext-mbstring": "*", - "php": ">=5.3.0" + "ext-sockets": "*", + "php": ">=5.4.0" }, "replace": { "videlalvaro/php-amqplib": "self.version" @@ -4069,13 +3832,10 @@ "scrutinizer/ocular": "^1.1", "squizlabs/php_codesniffer": "^2.5" }, - "suggest": { - "ext-sockets": "Use AMQPSocketConnection" - }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.7-dev" + "dev-master": "2.8-dev" } }, "autoload": { @@ -4101,6 +3861,11 @@ "name": "Raúl Araya", "email": "nubeiro@gmail.com", "role": "Maintainer" + }, + { + "name": "Luke Bakken", + "email": "luke@bakken.io", + "role": "Maintainer" } ], "description": "Formerly videlalvaro/php-amqplib. This library is a pure PHP implementation of the AMQP protocol. It's been tested against RabbitMQ.", @@ -4110,20 +3875,20 @@ "queue", "rabbitmq" ], - "time": "2018-02-11T19:28:00+00:00" + "time": "2018-11-13T09:35:17+00:00" }, { "name": "php-amqplib/rabbitmq-bundle", - "version": "v1.14.2", + "version": "v1.14.4", "source": { "type": "git", "url": "https://github.com/php-amqplib/RabbitMqBundle.git", - "reference": "6c0407c69b3ddb05294c67cd5acd14b73670554b" + "reference": "cf67adaa4e306d8e9cb6855a72d79263b425ded8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-amqplib/RabbitMqBundle/zipball/6c0407c69b3ddb05294c67cd5acd14b73670554b", - "reference": "6c0407c69b3ddb05294c67cd5acd14b73670554b", + "url": "https://api.github.com/repos/php-amqplib/RabbitMqBundle/zipball/cf67adaa4e306d8e9cb6855a72d79263b425ded8", + "reference": "cf67adaa4e306d8e9cb6855a72d79263b425ded8", "shasum": "" }, "require": { @@ -4176,9 +3941,12 @@ "Symfony2", "message", "queue", - "rabbitmq" + "rabbitmq", + "symfony", + "symfony3", + "symfony4" ], - "time": "2017-12-08T12:54:50+00:00" + "time": "2018-05-02T13:12:32+00:00" }, { "name": "php-http/discovery", @@ -4360,21 +4128,21 @@ }, { "name": "php-http/message", - "version": "1.6.0", + "version": "1.7.2", "source": { "type": "git", "url": "https://github.com/php-http/message.git", - "reference": "2edd63bae5f52f79363c5f18904b05ce3a4b7253" + "reference": "b159ffe570dffd335e22ef0b91a946eacb182fa1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/message/zipball/2edd63bae5f52f79363c5f18904b05ce3a4b7253", - "reference": "2edd63bae5f52f79363c5f18904b05ce3a4b7253", + "url": "https://api.github.com/repos/php-http/message/zipball/b159ffe570dffd335e22ef0b91a946eacb182fa1", + "reference": "b159ffe570dffd335e22ef0b91a946eacb182fa1", "shasum": "" }, "require": { - "clue/stream-filter": "^1.3", - "php": ">=5.4", + "clue/stream-filter": "^1.4", + "php": "^5.4 || ^7.0", "php-http/message-factory": "^1.0.2", "psr/http-message": "^1.0" }, @@ -4428,7 +4196,7 @@ "message", "psr-7" ], - "time": "2017-07-05T06:40:53+00:00" + "time": "2018-11-01T09:32:41+00:00" }, { "name": "php-http/message-factory", @@ -4686,98 +4454,6 @@ ], "time": "2015-07-25T16:39:46+00:00" }, - { - "name": "phpseclib/phpseclib", - "version": "2.0.11", - "source": { - "type": "git", - "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "7053f06f91b3de78e143d430e55a8f7889efc08b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/7053f06f91b3de78e143d430e55a8f7889efc08b", - "reference": "7053f06f91b3de78e143d430e55a8f7889efc08b", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phing/phing": "~2.7", - "phpunit/phpunit": "^4.8.35|^5.7|^6.0", - "sami/sami": "~2.0", - "squizlabs/php_codesniffer": "~2.0" - }, - "suggest": { - "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.", - "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.", - "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.", - "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations." - }, - "type": "library", - "autoload": { - "files": [ - "phpseclib/bootstrap.php" - ], - "psr-4": { - "phpseclib\\": "phpseclib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jim Wigginton", - "email": "terrafrost@php.net", - "role": "Lead Developer" - }, - { - "name": "Patrick Monnerat", - "email": "pm@datasphere.ch", - "role": "Developer" - }, - { - "name": "Andreas Fischer", - "email": "bantu@phpbb.com", - "role": "Developer" - }, - { - "name": "Hans-Jürgen Petrich", - "email": "petrich@tronic-media.com", - "role": "Developer" - }, - { - "name": "Graham Campbell", - "email": "graham@alt-three.com", - "role": "Developer" - } - ], - "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.", - "homepage": "http://phpseclib.sourceforge.net", - "keywords": [ - "BigInteger", - "aes", - "asn.1", - "asn1", - "blowfish", - "crypto", - "cryptography", - "encryption", - "rsa", - "security", - "sftp", - "signature", - "signing", - "ssh", - "twofish", - "x.509", - "x509" - ], - "time": "2018-04-15T16:55:05+00:00" - }, { "name": "piwik/device-detector", "version": "3.7.8", @@ -4927,16 +4603,16 @@ }, { "name": "psr/log", - "version": "1.0.2", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" + "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", + "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", "shasum": "" }, "require": { @@ -4970,20 +4646,20 @@ "psr", "psr-3" ], - "time": "2016-10-10T12:19:37+00:00" + "time": "2018-11-20T15:27:04+00:00" }, { "name": "psr/simple-cache", - "version": "1.0.0", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/php-fig/simple-cache.git", - "reference": "753fa598e8f3b9966c886fe13f370baa45ef0e24" + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/753fa598e8f3b9966c886fe13f370baa45ef0e24", - "reference": "753fa598e8f3b9966c886fe13f370baa45ef0e24", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", "shasum": "" }, "require": { @@ -5018,7 +4694,7 @@ "psr-16", "simple-cache" ], - "time": "2017-01-02T13:31:39+00:00" + "time": "2017-10-23T01:57:42+00:00" }, { "name": "rackspace/php-opencloud", @@ -5085,23 +4761,64 @@ ], "time": "2015-03-16T23:57:58+00:00" }, + { + "name": "ralouphie/getallheaders", + "version": "2.0.5", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/5601c8a83fbba7ef674a7369456d12f1e0d0eafa", + "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "require-dev": { + "phpunit/phpunit": "~3.7.0", + "satooshi/php-coveralls": ">=1.0" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "time": "2016-02-11T07:05:27+00:00" + }, { "name": "ramsey/uuid", - "version": "3.7.3", + "version": "3.8.0", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "44abcdad877d9a46685a3a4d221e3b2c4b87cb76" + "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/44abcdad877d9a46685a3a4d221e3b2c4b87cb76", - "reference": "44abcdad877d9a46685a3a4d221e3b2c4b87cb76", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/d09ea80159c1929d75b3f9c60504d613aeb4a1e3", + "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3", "shasum": "" }, "require": { - "paragonie/random_compat": "^1.0|^2.0", - "php": "^5.4 || ^7.0" + "paragonie/random_compat": "^1.0|^2.0|9.99.99", + "php": "^5.4 || ^7.0", + "symfony/polyfill-ctype": "^1.8" }, "replace": { "rhumsaa/uuid": "self.version" @@ -5109,16 +4826,17 @@ "require-dev": { "codeception/aspect-mock": "^1.0 | ~2.0.0", "doctrine/annotations": "~1.2.0", - "goaop/framework": "1.0.0-alpha.2 | ^1.0 | ^2.1", + "goaop/framework": "1.0.0-alpha.2 | ^1.0 | ~2.1.0", "ircmaxell/random-lib": "^1.1", "jakub-onderka/php-parallel-lint": "^0.9.0", "mockery/mockery": "^0.9.9", "moontoast/math": "^1.1", "php-mock/php-mock-phpunit": "^0.3|^1.1", - "phpunit/phpunit": "^4.7|^5.0", + "phpunit/phpunit": "^4.7|^5.0|^6.5", "squizlabs/php_codesniffer": "^2.3" }, "suggest": { + "ext-ctype": "Provides support for PHP Ctype functions", "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", "ircmaxell/random-lib": "Provides RandomLib for use with the RandomLibAdapter", @@ -5163,28 +4881,26 @@ "identifier", "uuid" ], - "time": "2018-01-20T00:28:24+00:00" + "time": "2018-07-19T23:38:55+00:00" }, { "name": "robrichards/xmlseclibs", - "version": "3.0.1", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/robrichards/xmlseclibs.git", - "reference": "d937712f70f93a584eb0299ccd87dc6374003781" + "reference": "406c68ac9124db033d079284b719958b829cb830" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/robrichards/xmlseclibs/zipball/d937712f70f93a584eb0299ccd87dc6374003781", - "reference": "d937712f70f93a584eb0299ccd87dc6374003781", + "url": "https://api.github.com/repos/robrichards/xmlseclibs/zipball/406c68ac9124db033d079284b719958b829cb830", + "reference": "406c68ac9124db033d079284b719958b829cb830", "shasum": "" }, "require": { + "ext-openssl": "*", "php": ">= 5.4" }, - "suggest": { - "ext-openssl": "OpenSSL extension" - }, "type": "library", "autoload": { "psr-4": { @@ -5203,20 +4919,20 @@ "xml", "xmldsig" ], - "time": "2017-08-31T09:27:07+00:00" + "time": "2018-11-15T11:59:02+00:00" }, { "name": "sendgrid/php-http-client", - "version": "3.8.0", + "version": "3.9.6", "source": { "type": "git", "url": "https://github.com/sendgrid/php-http-client.git", - "reference": "929018c62b7fcd99b3b356216ae75fff4d47b5a1" + "reference": "e9a04d949ee2d19938ab83dc100933a3b41a8ec7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sendgrid/php-http-client/zipball/929018c62b7fcd99b3b356216ae75fff4d47b5a1", - "reference": "929018c62b7fcd99b3b356216ae75fff4d47b5a1", + "url": "https://api.github.com/repos/sendgrid/php-http-client/zipball/e9a04d949ee2d19938ab83dc100933a3b41a8ec7", + "reference": "e9a04d949ee2d19938ab83dc100933a3b41a8ec7", "shasum": "" }, "require": { @@ -5255,20 +4971,20 @@ "rest", "sendgrid" ], - "time": "2017-09-13T16:52:38+00:00" + "time": "2018-04-10T18:06:08+00:00" }, { "name": "sendgrid/sendgrid", - "version": "6.0.0", + "version": "6.2.0", "source": { "type": "git", "url": "https://github.com/sendgrid/sendgrid-php.git", - "reference": "8db454e4b5674b545c207a162b64202b0d63259b" + "reference": "4d500a972739ef2c596299f3ad822dd231aab4df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sendgrid/sendgrid-php/zipball/8db454e4b5674b545c207a162b64202b0d63259b", - "reference": "8db454e4b5674b545c207a162b64202b0d63259b", + "url": "https://api.github.com/repos/sendgrid/sendgrid-php/zipball/4d500a972739ef2c596299f3ad822dd231aab4df", + "reference": "4d500a972739ef2c596299f3ad822dd231aab4df", "shasum": "" }, "require": { @@ -5279,14 +4995,16 @@ "sendgrid/sendgrid-php": "*" }, "require-dev": { - "phpunit/phpunit": "4.*", + "phpunit/phpunit": "^5.7.9 || ^6.4.3", "squizlabs/php_codesniffer": "2.*" }, "type": "library", "autoload": { "files": [ "lib/SendGrid.php", - "lib/helpers/mail/Mail.php" + "lib/helpers/mail/Mail.php", + "lib/helpers/contacts/Recipients.php", + "lib/helpers/stats/Stats.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -5301,25 +5019,25 @@ "send", "sendgrid" ], - "time": "2017-07-01T04:30:16+00:00" + "time": "2018-03-29T00:08:28+00:00" }, { "name": "sensio/distribution-bundle", - "version": "v5.0.21", + "version": "v5.0.23", "source": { "type": "git", "url": "https://github.com/sensiolabs/SensioDistributionBundle.git", - "reference": "eb6266b3b472e4002538610b28a0a04bcf94891a" + "reference": "088b116a0e27faa0e1a7384dd4f3f6a9d5a8a3b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/eb6266b3b472e4002538610b28a0a04bcf94891a", - "reference": "eb6266b3b472e4002538610b28a0a04bcf94891a", + "url": "https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/088b116a0e27faa0e1a7384dd4f3f6a9d5a8a3b6", + "reference": "088b116a0e27faa0e1a7384dd4f3f6a9d5a8a3b6", "shasum": "" }, "require": { "php": ">=5.3.9", - "sensiolabs/security-checker": "~3.0|~4.0", + "sensiolabs/security-checker": "~5.0", "symfony/class-loader": "~2.3|~3.0", "symfony/config": "~2.3|~3.0", "symfony/dependency-injection": "~2.3|~3.0", @@ -5353,24 +5071,80 @@ "configuration", "distribution" ], - "time": "2017-08-25T16:55:44+00:00" + "time": "2018-10-25T15:26:23+00:00" + }, + { + "name": "sensio/framework-extra-bundle", + "version": "v3.0.12", + "source": { + "type": "git", + "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git", + "reference": "3e8936fe13aa4086644977d334d8fcd275f50357" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/3e8936fe13aa4086644977d334d8fcd275f50357", + "reference": "3e8936fe13aa4086644977d334d8fcd275f50357", + "shasum": "" + }, + "require": { + "doctrine/common": "~2.2", + "symfony/framework-bundle": "~2.3|~3.0" + }, + "require-dev": { + "symfony/expression-language": "~2.4|~3.0", + "symfony/security-bundle": "~2.4|~3.0" + }, + "suggest": { + "symfony/expression-language": "", + "symfony/psr-http-message-bridge": "To use the PSR-7 converters", + "symfony/security-bundle": "" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Sensio\\Bundle\\FrameworkExtraBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "This bundle provides a way to configure your controllers with annotations", + "keywords": [ + "annotations", + "controllers" + ], + "time": "2015-12-18T17:39:27+00:00" }, { "name": "sensiolabs/security-checker", - "version": "v4.1.7", + "version": "v5.0.2", "source": { "type": "git", "url": "https://github.com/sensiolabs/security-checker.git", - "reference": "d539ccba2b4dce515de04f16b7ed7ae5b9eeb434" + "reference": "728f9fb0fe815003b3bcfd331d33106c0d8a6b1e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/d539ccba2b4dce515de04f16b7ed7ae5b9eeb434", - "reference": "d539ccba2b4dce515de04f16b7ed7ae5b9eeb434", + "url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/728f9fb0fe815003b3bcfd331d33106c0d8a6b1e", + "reference": "728f9fb0fe815003b3bcfd331d33106c0d8a6b1e", "shasum": "" }, "require": { "composer/ca-bundle": "^1.0", + "php": ">=5.5.9", "symfony/console": "~2.7|~3.0|~4.0" }, "bin": [ @@ -5379,12 +5153,12 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.1-dev" + "dev-master": "5.0-dev" } }, "autoload": { - "psr-0": { - "SensioLabs\\Security": "" + "psr-4": { + "SensioLabs\\Security\\": "SensioLabs/Security" } }, "notification-url": "https://packagist.org/downloads/", @@ -5398,20 +5172,20 @@ } ], "description": "A security checker for your composer.lock", - "time": "2018-01-11T05:54:03+00:00" + "time": "2018-12-10T06:08:43+00:00" }, { "name": "simshaun/recurr", - "version": "v3.0.5", + "version": "v3.1", "source": { "type": "git", "url": "https://github.com/simshaun/recurr.git", - "reference": "bff55c3baa5ab905c8f49c325daa6e9fcfccbfc1" + "reference": "9aa6f01382ced5d2a18addd27799dc0065916af0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simshaun/recurr/zipball/bff55c3baa5ab905c8f49c325daa6e9fcfccbfc1", - "reference": "bff55c3baa5ab905c8f49c325daa6e9fcfccbfc1", + "url": "https://api.github.com/repos/simshaun/recurr/zipball/9aa6f01382ced5d2a18addd27799dc0065916af0", + "reference": "9aa6f01382ced5d2a18addd27799dc0065916af0", "shasum": "" }, "require": { @@ -5453,43 +5227,44 @@ "recurring", "rrule" ], - "time": "2018-01-17T18:53:01+00:00" + "time": "2018-11-08T20:53:11+00:00" }, { "name": "sonata-project/exporter", - "version": "1.8.0", + "version": "1.9.1", "source": { "type": "git", "url": "https://github.com/sonata-project/exporter.git", - "reference": "f8bc03c2da72deeafd5d27f7cb558faeef8620d9" + "reference": "6dbea3379447f672f46fccd7e29210cc1246aea9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sonata-project/exporter/zipball/f8bc03c2da72deeafd5d27f7cb558faeef8620d9", - "reference": "f8bc03c2da72deeafd5d27f7cb558faeef8620d9", + "url": "https://api.github.com/repos/sonata-project/exporter/zipball/6dbea3379447f672f46fccd7e29210cc1246aea9", + "reference": "6dbea3379447f672f46fccd7e29210cc1246aea9", "shasum": "" }, "require": { "php": "^5.6 || ^7.0" }, "require-dev": { - "doctrine/dbal": "^2.2", + "doctrine/dbal": "^2.5", + "doctrine/orm": "^2.4.5", "matthiasnoback/symfony-config-test": "^2.0", "matthiasnoback/symfony-dependency-injection-test": "^1.0", "propel/propel1": "^1.6", - "sllh/php-cs-fixer-styleci-bridge": "^2.0", + "symfony/config": "^2.8 || ^3.2 || ^4.0", "symfony/dependency-injection": "^2.8 || ^3.2 || ^4.0", "symfony/http-foundation": "^2.8 || ^3.2 || ^4.0", "symfony/http-kernel": "^2.8 || ^3.2 || ^4.0", - "symfony/phpunit-bridge": "^3.3 || ^4.0", + "symfony/phpunit-bridge": "^4.0", "symfony/property-access": "^2.8 || ^3.2 || ^4.0", "symfony/routing": "^2.8 || ^3.2 || ^4.0" }, "suggest": { "ext-curl": "*", "propel/propel1": "^1.6", - "symfony/property-access": "^2.3 || ^3.0 || ^4.0", - "symfony/routing": "^2.3 || ^3.0 || ^4.0" + "symfony/property-access": "To be able to export from database entities", + "symfony/routing": "To be able to export the routes of a Symfony app" }, "type": "library", "extra": { @@ -5522,7 +5297,7 @@ "export", "xls" ], - "time": "2017-11-30T13:30:20+00:00" + "time": "2018-07-04T16:52:00+00:00" }, { "name": "sparkpost/sparkpost", @@ -5620,22 +5395,22 @@ }, { "name": "stack/run", - "version": "v1.0.1", + "version": "v1.1.0", "source": { "type": "git", "url": "https://github.com/stackphp/run.git", - "reference": "a1bc94ee4493aa0988dffd89b6b8a6cdcdb3c905" + "reference": "ca5b0b958c024940c72eadead646e19ad1889d29" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/stackphp/run/zipball/a1bc94ee4493aa0988dffd89b6b8a6cdcdb3c905", - "reference": "a1bc94ee4493aa0988dffd89b6b8a6cdcdb3c905", + "url": "https://api.github.com/repos/stackphp/run/zipball/ca5b0b958c024940c72eadead646e19ad1889d29", + "reference": "ca5b0b958c024940c72eadead646e19ad1889d29", "shasum": "" }, "require": { "php": ">=5.3.0", - "symfony/http-foundation": "~2.1", - "symfony/http-kernel": "~2.1" + "symfony/http-foundation": "~2.7|~3.0|~4.0", + "symfony/http-kernel": "~2.7|~3.0|~4.0" }, "require-dev": { "stack/callable-http-kernel": "~1.0@dev" @@ -5643,7 +5418,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "1.1-dev" } }, "autoload": { @@ -5658,28 +5433,27 @@ "authors": [ { "name": "Igor Wiedler", - "email": "igor@wiedler.ch", - "homepage": "http://wiedler.ch/igor/" + "email": "igor@wiedler.ch" } ], "description": "Shortcut function for handling HttpKernel front-controller boilerplate.", "keywords": [ "stack" ], - "time": "2013-10-25T14:31:28+00:00" + "time": "2018-02-20T10:28:14+00:00" }, { "name": "swiftmailer/swiftmailer", - "version": "v5.4.9", + "version": "v5.4.12", "source": { "type": "git", "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "7ffc1ea296ed14bf8260b6ef11b80208dbadba91" + "reference": "181b89f18a90f8925ef805f950d47a7190e9b950" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/7ffc1ea296ed14bf8260b6ef11b80208dbadba91", - "reference": "7ffc1ea296ed14bf8260b6ef11b80208dbadba91", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/181b89f18a90f8925ef805f950d47a7190e9b950", + "reference": "181b89f18a90f8925ef805f950d47a7190e9b950", "shasum": "" }, "require": { @@ -5720,20 +5494,20 @@ "mail", "mailer" ], - "time": "2018-01-23T07:37:21+00:00" + "time": "2018-07-31T09:26:32+00:00" }, { "name": "symfony/asset", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/asset.git", - "reference": "e2e5ce3ce4f7db7d9a25bd59c68676dd76c8cd53" + "reference": "63950b69e47b0f54c1cb70a54523007a8c8f8409" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/e2e5ce3ce4f7db7d9a25bd59c68676dd76c8cd53", - "reference": "e2e5ce3ce4f7db7d9a25bd59c68676dd76c8cd53", + "url": "https://api.github.com/repos/symfony/asset/zipball/63950b69e47b0f54c1cb70a54523007a8c8f8409", + "reference": "63950b69e47b0f54c1cb70a54523007a8c8f8409", "shasum": "" }, "require": { @@ -5775,20 +5549,20 @@ ], "description": "Symfony Asset Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:36:31+00:00" + "time": "2018-11-11T11:18:13+00:00" }, { "name": "symfony/browser-kit", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "e49a78bcf09ba2e6d03e63e80211f889c037add5" + "reference": "b507697225f32a76a9d333d0766fb46353e9d00d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/e49a78bcf09ba2e6d03e63e80211f889c037add5", - "reference": "e49a78bcf09ba2e6d03e63e80211f889c037add5", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/b507697225f32a76a9d333d0766fb46353e9d00d", + "reference": "b507697225f32a76a9d333d0766fb46353e9d00d", "shasum": "" }, "require": { @@ -5832,20 +5606,20 @@ ], "description": "Symfony BrowserKit Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:36:31+00:00" + "time": "2018-11-26T06:55:10+00:00" }, { "name": "symfony/cache", - "version": "v3.4.4", + "version": "v3.4.20", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "8dee9ec2c9824c3f4039960d679a6689ee1cbdc1" + "reference": "d31c2a1b80029d885307db47405daeffafcda759" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/8dee9ec2c9824c3f4039960d679a6689ee1cbdc1", - "reference": "8dee9ec2c9824c3f4039960d679a6689ee1cbdc1", + "url": "https://api.github.com/repos/symfony/cache/zipball/d31c2a1b80029d885307db47405daeffafcda759", + "reference": "d31c2a1b80029d885307db47405daeffafcda759", "shasum": "" }, "require": { @@ -5902,20 +5676,20 @@ "caching", "psr6" ], - "time": "2018-01-18T22:16:57+00:00" + "time": "2018-12-06T10:54:02+00:00" }, { "name": "symfony/class-loader", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/class-loader.git", - "reference": "f87f46e5e1bf31382a65966795fa2d4dd7e2b300" + "reference": "8194721a1e2768cfb95079581889c41eec7a5959" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/class-loader/zipball/f87f46e5e1bf31382a65966795fa2d4dd7e2b300", - "reference": "f87f46e5e1bf31382a65966795fa2d4dd7e2b300", + "url": "https://api.github.com/repos/symfony/class-loader/zipball/8194721a1e2768cfb95079581889c41eec7a5959", + "reference": "8194721a1e2768cfb95079581889c41eec7a5959", "shasum": "" }, "require": { @@ -5955,25 +5729,26 @@ ], "description": "Symfony ClassLoader Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:36:31+00:00" + "time": "2018-11-11T11:18:13+00:00" }, { "name": "symfony/config", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "17605ff58313d9fe94e507620a399721fc347b6d" + "reference": "7dd5f5040dc04c118d057fb5886563963eb70011" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/17605ff58313d9fe94e507620a399721fc347b6d", - "reference": "17605ff58313d9fe94e507620a399721fc347b6d", + "url": "https://api.github.com/repos/symfony/config/zipball/7dd5f5040dc04c118d057fb5886563963eb70011", + "reference": "7dd5f5040dc04c118d057fb5886563963eb70011", "shasum": "" }, "require": { "php": ">=5.3.9", - "symfony/filesystem": "~2.3|~3.0.0" + "symfony/filesystem": "~2.3|~3.0.0", + "symfony/polyfill-ctype": "~1.8" }, "require-dev": { "symfony/yaml": "~2.7|~3.0.0" @@ -6011,20 +5786,20 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2018-01-21T19:03:25+00:00" + "time": "2018-11-26T09:38:12+00:00" }, { "name": "symfony/console", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "162ca7d0ea597599967aa63b23418e747da0896b" + "reference": "cbcf4b5e233af15cd2bbd50dee1ccc9b7927dc12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/162ca7d0ea597599967aa63b23418e747da0896b", - "reference": "162ca7d0ea597599967aa63b23418e747da0896b", + "url": "https://api.github.com/repos/symfony/console/zipball/cbcf4b5e233af15cd2bbd50dee1ccc9b7927dc12", + "reference": "cbcf4b5e233af15cd2bbd50dee1ccc9b7927dc12", "shasum": "" }, "require": { @@ -6038,7 +5813,7 @@ "symfony/process": "~2.1|~3.0.0" }, "suggest": { - "psr/log": "For using the console logger", + "psr/log-implementation": "For using the console logger", "symfony/event-dispatcher": "", "symfony/process": "" }, @@ -6072,20 +5847,20 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2018-01-29T08:54:45+00:00" + "time": "2018-11-20T15:55:20+00:00" }, { "name": "symfony/debug", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "35e36287fc0fdc8a08f70efcd4865ae6d8a6ee55" + "reference": "74251c8d50dd3be7c4ce0c7b862497cdc641a5d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/35e36287fc0fdc8a08f70efcd4865ae6d8a6ee55", - "reference": "35e36287fc0fdc8a08f70efcd4865ae6d8a6ee55", + "url": "https://api.github.com/repos/symfony/debug/zipball/74251c8d50dd3be7c4ce0c7b862497cdc641a5d0", + "reference": "74251c8d50dd3be7c4ce0c7b862497cdc641a5d0", "shasum": "" }, "require": { @@ -6129,20 +5904,20 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2018-01-18T22:12:33+00:00" + "time": "2018-11-11T11:18:13+00:00" }, { "name": "symfony/dependency-injection", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "91ad61e6f140b050eba4aa39bc52eece713f2a71" + "reference": "a2f40df187f0053bc361bcea3b27ff2b85744d9f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/91ad61e6f140b050eba4aa39bc52eece713f2a71", - "reference": "91ad61e6f140b050eba4aa39bc52eece713f2a71", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/a2f40df187f0053bc361bcea3b27ff2b85744d9f", + "reference": "a2f40df187f0053bc361bcea3b27ff2b85744d9f", "shasum": "" }, "require": { @@ -6192,25 +5967,26 @@ ], "description": "Symfony DependencyInjection Component", "homepage": "https://symfony.com", - "time": "2018-01-29T08:55:23+00:00" + "time": "2018-11-11T11:18:13+00:00" }, { "name": "symfony/doctrine-bridge", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "b0d1f0a7046fb4422e7879515001e4ee92666106" + "reference": "b3a1a048020bea1ea69d31e35c01e2d927fa3ba8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/b0d1f0a7046fb4422e7879515001e4ee92666106", - "reference": "b0d1f0a7046fb4422e7879515001e4ee92666106", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/b3a1a048020bea1ea69d31e35c01e2d927fa3ba8", + "reference": "b3a1a048020bea1ea69d31e35c01e2d927fa3ba8", "shasum": "" }, "require": { "doctrine/common": "~2.4", "php": ">=5.3.9", + "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { @@ -6226,7 +6002,7 @@ "symfony/http-kernel": "~2.2|~3.0.0", "symfony/property-access": "~2.3|~3.0.0", "symfony/property-info": "~2.8|3.0", - "symfony/security": "~2.2|~3.0.0", + "symfony/security": "^2.8.31|^3.3.13", "symfony/stopwatch": "~2.2|~3.0.0", "symfony/translation": "^2.0.5|~3.0.0", "symfony/validator": "~2.7.25|^2.8.18|~3.2.5" @@ -6269,24 +6045,25 @@ ], "description": "Symfony Doctrine Bridge", "homepage": "https://symfony.com", - "time": "2018-01-03T07:36:31+00:00" + "time": "2018-11-26T09:36:25+00:00" }, { "name": "symfony/dom-crawler", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "31ff8f1d7a3de4b43b35ff821e6e223d81a8988b" + "reference": "2cdc7d3909eea6f982a6298d2e9ab7db01b6403c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/31ff8f1d7a3de4b43b35ff821e6e223d81a8988b", - "reference": "31ff8f1d7a3de4b43b35ff821e6e223d81a8988b", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/2cdc7d3909eea6f982a6298d2e9ab7db01b6403c", + "reference": "2cdc7d3909eea6f982a6298d2e9ab7db01b6403c", "shasum": "" }, "require": { "php": ">=5.3.9", + "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { @@ -6325,20 +6102,20 @@ ], "description": "Symfony DomCrawler Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:36:31+00:00" + "time": "2018-11-24T22:30:19+00:00" }, { "name": "symfony/dotenv", - "version": "v3.4.4", + "version": "v3.4.20", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "66265f80c0f585cd6aec3fbdfc4ffdf7a0d75992" + "reference": "154e3f7054d53a14747303844657e905c8acca51" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/66265f80c0f585cd6aec3fbdfc4ffdf7a0d75992", - "reference": "66265f80c0f585cd6aec3fbdfc4ffdf7a0d75992", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/154e3f7054d53a14747303844657e905c8acca51", + "reference": "154e3f7054d53a14747303844657e905c8acca51", "shasum": "" }, "require": { @@ -6382,20 +6159,20 @@ "env", "environment" ], - "time": "2018-01-03T17:14:19+00:00" + "time": "2018-11-14T22:14:12+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "d64be24fc1eba62f9daace8a8918f797fc8e87cc" + "reference": "a77e974a5fecb4398833b0709210e3d5e334ffb0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d64be24fc1eba62f9daace8a8918f797fc8e87cc", - "reference": "d64be24fc1eba62f9daace8a8918f797fc8e87cc", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a77e974a5fecb4398833b0709210e3d5e334ffb0", + "reference": "a77e974a5fecb4398833b0709210e3d5e334ffb0", "shasum": "" }, "require": { @@ -6442,20 +6219,20 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:36:31+00:00" + "time": "2018-11-21T14:20:20+00:00" }, { "name": "symfony/expression-language", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "422bf02386ab46f615d1d784b771599357461d73" + "reference": "fa9be1b831859b56d244137fabbfd01a46dbdb36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/422bf02386ab46f615d1d784b771599357461d73", - "reference": "422bf02386ab46f615d1d784b771599357461d73", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/fa9be1b831859b56d244137fabbfd01a46dbdb36", + "reference": "fa9be1b831859b56d244137fabbfd01a46dbdb36", "shasum": "" }, "require": { @@ -6491,24 +6268,25 @@ ], "description": "Symfony ExpressionLanguage Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:36:31+00:00" + "time": "2018-11-11T11:18:13+00:00" }, { "name": "symfony/filesystem", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "1f4e8351e0196562f5e8ec584baeceeb8e2e92f6" + "reference": "7ae46872dad09dffb7fe1e93a0937097339d0080" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/1f4e8351e0196562f5e8ec584baeceeb8e2e92f6", - "reference": "1f4e8351e0196562f5e8ec584baeceeb8e2e92f6", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/7ae46872dad09dffb7fe1e93a0937097339d0080", + "reference": "7ae46872dad09dffb7fe1e93a0937097339d0080", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": ">=5.3.9", + "symfony/polyfill-ctype": "~1.8" }, "type": "library", "extra": { @@ -6540,20 +6318,20 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:36:31+00:00" + "time": "2018-11-11T11:18:13+00:00" }, { "name": "symfony/finder", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "9786ccb6a1f94a89ae18fc6a1b68de1f070823ed" + "reference": "1444eac52273e345d9b95129bf914639305a9ba4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/9786ccb6a1f94a89ae18fc6a1b68de1f070823ed", - "reference": "9786ccb6a1f94a89ae18fc6a1b68de1f070823ed", + "url": "https://api.github.com/repos/symfony/finder/zipball/1444eac52273e345d9b95129bf914639305a9ba4", + "reference": "1444eac52273e345d9b95129bf914639305a9ba4", "shasum": "" }, "require": { @@ -6589,20 +6367,20 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2018-01-29T08:54:45+00:00" + "time": "2018-11-11T11:18:13+00:00" }, { "name": "symfony/form", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "b88b4b6c206201673cda2b919300e825bfda4cdc" + "reference": "74382a47aa97496d181fbb598822fdfb9e1744e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/b88b4b6c206201673cda2b919300e825bfda4cdc", - "reference": "b88b4b6c206201673cda2b919300e825bfda4cdc", + "url": "https://api.github.com/repos/symfony/form/zipball/74382a47aa97496d181fbb598822fdfb9e1744e4", + "reference": "74382a47aa97496d181fbb598822fdfb9e1744e4", "shasum": "" }, "require": { @@ -6610,6 +6388,7 @@ "symfony/event-dispatcher": "~2.1|~3.0.0", "symfony/intl": "~2.7.25|^2.8.18|~3.2.5", "symfony/options-resolver": "~2.6", + "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", "symfony/property-access": "~2.3|~3.0.0" }, @@ -6624,7 +6403,7 @@ "symfony/dependency-injection": "~2.7|~3.0.0", "symfony/http-foundation": "~2.2|~3.0.0", "symfony/http-kernel": "~2.4|~3.0.0", - "symfony/security-csrf": "~2.4|~3.0.0", + "symfony/security-csrf": "^2.8.31|^3.3.13", "symfony/translation": "^2.0.5|~3.0.0", "symfony/validator": "^2.8.18|~3.2.5" }, @@ -6664,20 +6443,20 @@ ], "description": "Symfony Form Component", "homepage": "https://symfony.com", - "time": "2018-01-29T08:58:04+00:00" + "time": "2018-12-06T11:12:46+00:00" }, { "name": "symfony/framework-bundle", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "b831299d17f8c5b23945a0c09da7804af9295186" + "reference": "6a7bb97cd22df9d1a123314b4c694e99f6944c8b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/b831299d17f8c5b23945a0c09da7804af9295186", - "reference": "b831299d17f8c5b23945a0c09da7804af9295186", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/6a7bb97cd22df9d1a123314b4c694e99f6944c8b", + "reference": "6a7bb97cd22df9d1a123314b4c694e99f6944c8b", "shasum": "" }, "require": { @@ -6688,7 +6467,7 @@ "symfony/asset": "~2.7|~3.0.0", "symfony/class-loader": "~2.1|~3.0.0", "symfony/config": "~2.8", - "symfony/dependency-injection": "~2.8", + "symfony/dependency-injection": "~2.8.41", "symfony/event-dispatcher": "~2.8|~3.0.0", "symfony/filesystem": "~2.3|~3.0.0", "symfony/finder": "^2.0.5|~3.0.0", @@ -6696,10 +6475,10 @@ "symfony/http-kernel": "^2.8.22", "symfony/polyfill-mbstring": "~1.0", "symfony/routing": "^2.8.17", - "symfony/security-core": "~2.6.13|~2.7.9|~2.8|~3.0.0", - "symfony/security-csrf": "~2.6|~3.0.0", + "symfony/security-core": "^2.8.41|^3.3.17", + "symfony/security-csrf": "^2.8.31|^3.3.13", "symfony/stopwatch": "~2.3|~3.0.0", - "symfony/templating": "~2.1|~3.0.0", + "symfony/templating": "~2.7|~3.0.0", "symfony/translation": "~2.8" }, "conflict": { @@ -6717,7 +6496,6 @@ "symfony/polyfill-intl-icu": "~1.0", "symfony/process": "^2.0.5|~3.0.0", "symfony/property-info": "~2.8|~3.0.0", - "symfony/security": "~2.6|~3.0.0", "symfony/validator": "~2.5|~3.0.0", "symfony/yaml": "^2.0.5|~3.0.0", "twig/twig": "~1.34|~2.4" @@ -6761,20 +6539,20 @@ ], "description": "Symfony FrameworkBundle", "homepage": "https://symfony.com", - "time": "2018-01-29T08:54:45+00:00" + "time": "2018-11-12T07:14:53+00:00" }, { "name": "symfony/http-foundation", - "version": "v2.8.44", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "10f660d43087b2198c3789bebbd587d20ec6e956" + "reference": "d0ab719bedc9fc6748a95b2dcb04137292a27b92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/10f660d43087b2198c3789bebbd587d20ec6e956", - "reference": "10f660d43087b2198c3789bebbd587d20ec6e956", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/d0ab719bedc9fc6748a95b2dcb04137292a27b92", + "reference": "d0ab719bedc9fc6748a95b2dcb04137292a27b92", "shasum": "" }, "require": { @@ -6816,20 +6594,20 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2018-08-01T13:47:49+00:00" + "time": "2018-11-25T11:27:05+00:00" }, { "name": "symfony/http-kernel", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "af74cd947d63ae1294aed71b9456f2a04f7f6d45" + "reference": "3df0207d4c973eb9c91b38a608aef4654dc256fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/af74cd947d63ae1294aed71b9456f2a04f7f6d45", - "reference": "af74cd947d63ae1294aed71b9456f2a04f7f6d45", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/3df0207d4c973eb9c91b38a608aef4654dc256fa", + "reference": "3df0207d4c973eb9c91b38a608aef4654dc256fa", "shasum": "" }, "require": { @@ -6837,7 +6615,8 @@ "psr/log": "~1.0", "symfony/debug": "^2.6.2", "symfony/event-dispatcher": "^2.6.7|~3.0.0", - "symfony/http-foundation": "~2.7.36|~2.8.29|~3.1.6" + "symfony/http-foundation": "~2.7.36|~2.8.29|~3.1.6", + "symfony/polyfill-ctype": "~1.8" }, "conflict": { "symfony/config": "<2.7", @@ -6899,20 +6678,20 @@ ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", - "time": "2018-01-29T10:48:12+00:00" + "time": "2018-12-06T14:45:07+00:00" }, { "name": "symfony/intl", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "847da8b0460d6119e571982037093df43aed9b21" + "reference": "7c332001c3c3557c136eba4908f642dca41769de" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/847da8b0460d6119e571982037093df43aed9b21", - "reference": "847da8b0460d6119e571982037093df43aed9b21", + "url": "https://api.github.com/repos/symfony/intl/zipball/7c332001c3c3557c136eba4908f642dca41769de", + "reference": "7c332001c3c3557c136eba4908f642dca41769de", "shasum": "" }, "require": { @@ -6975,20 +6754,20 @@ "l10n", "localization" ], - "time": "2018-01-03T07:36:31+00:00" + "time": "2018-11-11T11:18:13+00:00" }, { "name": "symfony/monolog-bridge", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "6d35ada626c9a465c823fa8ab5be18b884f907e7" + "reference": "7ab6803ee6d42a63b854041911f45b1a5974fae2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/6d35ada626c9a465c823fa8ab5be18b884f907e7", - "reference": "6d35ada626c9a465c823fa8ab5be18b884f907e7", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/7ab6803ee6d42a63b854041911f45b1a5974fae2", + "reference": "7ab6803ee6d42a63b854041911f45b1a5974fae2", "shasum": "" }, "require": { @@ -7038,45 +6817,48 @@ ], "description": "Symfony Monolog Bridge", "homepage": "https://symfony.com", - "time": "2018-01-03T07:36:31+00:00" + "time": "2018-11-11T11:18:13+00:00" }, { "name": "symfony/monolog-bundle", - "version": "v2.12.1", + "version": "v3.3.1", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bundle.git", - "reference": "b0146bdca7ba2a65f3bbe7010423c7393b29ec3f" + "reference": "572e143afc03419a75ab002c80a2fd99299195ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/b0146bdca7ba2a65f3bbe7010423c7393b29ec3f", - "reference": "b0146bdca7ba2a65f3bbe7010423c7393b29ec3f", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/572e143afc03419a75ab002c80a2fd99299195ff", + "reference": "572e143afc03419a75ab002c80a2fd99299195ff", "shasum": "" }, "require": { - "monolog/monolog": "~1.18", - "php": ">=5.3.2", - "symfony/config": "~2.3|~3.0", - "symfony/dependency-injection": "~2.3|~3.0", - "symfony/http-kernel": "~2.3|~3.0", - "symfony/monolog-bridge": "~2.3|~3.0" + "monolog/monolog": "~1.22", + "php": ">=5.6", + "symfony/config": "~2.7|~3.3|~4.0", + "symfony/dependency-injection": "~2.7|~3.4.10|^4.0.10", + "symfony/http-kernel": "~2.7|~3.3|~4.0", + "symfony/monolog-bridge": "~2.7|~3.3|~4.0" }, "require-dev": { - "phpunit/phpunit": "^4.8", - "symfony/console": "~2.3|~3.0", - "symfony/yaml": "~2.3|~3.0" + "symfony/console": "~2.7|~3.3|~4.0", + "symfony/phpunit-bridge": "^3.3|^4.0", + "symfony/yaml": "~2.7|~3.3|~4.0" }, "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "2.x-dev" + "dev-master": "3.x-dev" } }, "autoload": { "psr-4": { "Symfony\\Bundle\\MonologBundle\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7098,20 +6880,20 @@ "log", "logging" ], - "time": "2017-01-02T19:04:26+00:00" + "time": "2018-11-04T09:58:13+00:00" }, { "name": "symfony/options-resolver", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "7b627d71e038f65c58702ad2540d0452cf53cf67" + "reference": "7aaab725bb58f0e18aa12c61bdadd4793ab4c32b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/7b627d71e038f65c58702ad2540d0452cf53cf67", - "reference": "7b627d71e038f65c58702ad2540d0452cf53cf67", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/7aaab725bb58f0e18aa12c61bdadd4793ab4c32b", + "reference": "7aaab725bb58f0e18aa12c61bdadd4793ab4c32b", "shasum": "" }, "require": { @@ -7152,20 +6934,20 @@ "configuration", "options" ], - "time": "2018-01-03T07:36:31+00:00" + "time": "2018-11-11T11:18:13+00:00" }, { "name": "symfony/polyfill-apcu", - "version": "v1.7.0", + "version": "v1.10.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-apcu.git", - "reference": "e8ae2136ddb53dea314df56fcd88e318ab936c00" + "reference": "19e1b73bf255265ad0b568f81766ae2a3266d8d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/e8ae2136ddb53dea314df56fcd88e318ab936c00", - "reference": "e8ae2136ddb53dea314df56fcd88e318ab936c00", + "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/19e1b73bf255265ad0b568f81766ae2a3266d8d2", + "reference": "19e1b73bf255265ad0b568f81766ae2a3266d8d2", "shasum": "" }, "require": { @@ -7174,7 +6956,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -7208,20 +6990,78 @@ "portable", "shim" ], - "time": "2018-01-30T19:27:44+00:00" + "time": "2018-08-06T14:22:27+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.10.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + }, + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "time": "2018-08-06T14:22:27+00:00" }, { "name": "symfony/polyfill-intl-icu", - "version": "v1.7.0", + "version": "v1.10.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "254919c03761d46c29291616576ed003f10e91c1" + "reference": "f22a90256d577c7ef7efad8df1f0201663d57644" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/254919c03761d46c29291616576ed003f10e91c1", - "reference": "254919c03761d46c29291616576ed003f10e91c1", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/f22a90256d577c7ef7efad8df1f0201663d57644", + "reference": "f22a90256d577c7ef7efad8df1f0201663d57644", "shasum": "" }, "require": { @@ -7234,7 +7074,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -7266,20 +7106,20 @@ "portable", "shim" ], - "time": "2018-01-30T19:27:44+00:00" + "time": "2018-08-06T14:22:27+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.7.0", + "version": "v1.10.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b" + "reference": "c79c051f5b3a46be09205c73b80b346e4153e494" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/78be803ce01e55d3491c1397cf1c64beb9c1b63b", - "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494", + "reference": "c79c051f5b3a46be09205c73b80b346e4153e494", "shasum": "" }, "require": { @@ -7291,7 +7131,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -7325,20 +7165,20 @@ "portable", "shim" ], - "time": "2018-01-30T19:27:44+00:00" + "time": "2018-09-21T13:07:52+00:00" }, { "name": "symfony/polyfill-php54", - "version": "v1.7.0", + "version": "v1.10.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php54.git", - "reference": "84e2b616c197ef400c6d0556a0606cee7c9e21d5" + "reference": "412977e090c6a8472dc39d50d1beb7d59495a965" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php54/zipball/84e2b616c197ef400c6d0556a0606cee7c9e21d5", - "reference": "84e2b616c197ef400c6d0556a0606cee7c9e21d5", + "url": "https://api.github.com/repos/symfony/polyfill-php54/zipball/412977e090c6a8472dc39d50d1beb7d59495a965", + "reference": "412977e090c6a8472dc39d50d1beb7d59495a965", "shasum": "" }, "require": { @@ -7347,7 +7187,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -7383,20 +7223,20 @@ "portable", "shim" ], - "time": "2018-01-30T19:27:44+00:00" + "time": "2018-08-06T14:22:27+00:00" }, { "name": "symfony/polyfill-php55", - "version": "v1.7.0", + "version": "v1.10.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php55.git", - "reference": "168371cb3dfb10e0afde96e7c2688be02470d143" + "reference": "42a4c00a347625ac8853c3358c47eeadc7fd4e96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php55/zipball/168371cb3dfb10e0afde96e7c2688be02470d143", - "reference": "168371cb3dfb10e0afde96e7c2688be02470d143", + "url": "https://api.github.com/repos/symfony/polyfill-php55/zipball/42a4c00a347625ac8853c3358c47eeadc7fd4e96", + "reference": "42a4c00a347625ac8853c3358c47eeadc7fd4e96", "shasum": "" }, "require": { @@ -7406,7 +7246,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -7439,20 +7279,20 @@ "portable", "shim" ], - "time": "2018-01-30T19:27:44+00:00" + "time": "2018-10-31T12:13:01+00:00" }, { "name": "symfony/polyfill-php56", - "version": "v1.7.0", + "version": "v1.10.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php56.git", - "reference": "ebc999ce5f14204c5150b9bd15f8f04e621409d8" + "reference": "ff208829fe1aa48ab9af356992bb7199fed551af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/ebc999ce5f14204c5150b9bd15f8f04e621409d8", - "reference": "ebc999ce5f14204c5150b9bd15f8f04e621409d8", + "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/ff208829fe1aa48ab9af356992bb7199fed551af", + "reference": "ff208829fe1aa48ab9af356992bb7199fed551af", "shasum": "" }, "require": { @@ -7462,7 +7302,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -7495,30 +7335,30 @@ "portable", "shim" ], - "time": "2018-01-30T19:27:44+00:00" + "time": "2018-09-21T06:26:08+00:00" }, { "name": "symfony/polyfill-php70", - "version": "v1.7.0", + "version": "v1.10.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "3532bfcd8f933a7816f3a0a59682fc404776600f" + "reference": "6b88000cdd431cd2e940caa2cb569201f3f84224" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/3532bfcd8f933a7816f3a0a59682fc404776600f", - "reference": "3532bfcd8f933a7816f3a0a59682fc404776600f", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/6b88000cdd431cd2e940caa2cb569201f3f84224", + "reference": "6b88000cdd431cd2e940caa2cb569201f3f84224", "shasum": "" }, "require": { - "paragonie/random_compat": "~1.0|~2.0", + "paragonie/random_compat": "~1.0|~2.0|~9.99", "php": ">=5.3.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -7554,20 +7394,20 @@ "portable", "shim" ], - "time": "2018-01-30T19:27:44+00:00" + "time": "2018-09-21T06:26:08+00:00" }, { "name": "symfony/polyfill-util", - "version": "v1.7.0", + "version": "v1.10.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-util.git", - "reference": "e17c808ec4228026d4f5a8832afa19be85979563" + "reference": "3b58903eae668d348a7126f999b0da0f2f93611c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/e17c808ec4228026d4f5a8832afa19be85979563", - "reference": "e17c808ec4228026d4f5a8832afa19be85979563", + "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/3b58903eae668d348a7126f999b0da0f2f93611c", + "reference": "3b58903eae668d348a7126f999b0da0f2f93611c", "shasum": "" }, "require": { @@ -7576,7 +7416,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -7606,20 +7446,20 @@ "polyfill", "shim" ], - "time": "2018-01-31T18:08:44+00:00" + "time": "2018-09-30T16:36:12+00:00" }, { "name": "symfony/process", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "905efe90024caa75a2fc93f54e14b26f2a099d96" + "reference": "c3591a09c78639822b0b290d44edb69bf9f05dc8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/905efe90024caa75a2fc93f54e14b26f2a099d96", - "reference": "905efe90024caa75a2fc93f54e14b26f2a099d96", + "url": "https://api.github.com/repos/symfony/process/zipball/c3591a09c78639822b0b290d44edb69bf9f05dc8", + "reference": "c3591a09c78639822b0b290d44edb69bf9f05dc8", "shasum": "" }, "require": { @@ -7655,24 +7495,25 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2018-01-29T08:54:45+00:00" + "time": "2018-11-11T11:18:13+00:00" }, { "name": "symfony/property-access", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "05996f4a198ddb898de707adc2df9501d55d047d" + "reference": "c8f10191183be9bb0d5a1b8364d3891f1bde07b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/05996f4a198ddb898de707adc2df9501d55d047d", - "reference": "05996f4a198ddb898de707adc2df9501d55d047d", + "url": "https://api.github.com/repos/symfony/property-access/zipball/c8f10191183be9bb0d5a1b8364d3891f1bde07b6", + "reference": "c8f10191183be9bb0d5a1b8364d3891f1bde07b6", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": ">=5.3.9", + "symfony/polyfill-ctype": "~1.8" }, "type": "library", "extra": { @@ -7715,20 +7556,20 @@ "property path", "reflection" ], - "time": "2018-01-03T07:36:31+00:00" + "time": "2018-11-11T11:18:13+00:00" }, { "name": "symfony/routing", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "627ea100720dac15d8165648caac57456dda84aa" + "reference": "8b0df6869d1997baafff6a1541826eac5a03d067" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/627ea100720dac15d8165648caac57456dda84aa", - "reference": "627ea100720dac15d8165648caac57456dda84aa", + "url": "https://api.github.com/repos/symfony/routing/zipball/8b0df6869d1997baafff6a1541826eac5a03d067", + "reference": "8b0df6869d1997baafff6a1541826eac5a03d067", "shasum": "" }, "require": { @@ -7739,7 +7580,6 @@ }, "require-dev": { "doctrine/annotations": "~1.0", - "doctrine/common": "~2.2", "psr/log": "~1.0", "symfony/config": "~2.7|~3.0.0", "symfony/expression-language": "~2.4|~3.0.0", @@ -7790,20 +7630,20 @@ "uri", "url" ], - "time": "2018-01-16T18:00:04+00:00" + "time": "2018-11-20T15:55:20+00:00" }, { "name": "symfony/security", - "version": "v2.8.45", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/security.git", - "reference": "2a1c4c71e944cfa94fc0f41d9a99837021060e1c" + "reference": "107bda1aee01e4b3dc46452d18ae4049bd4fa3f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security/zipball/2a1c4c71e944cfa94fc0f41d9a99837021060e1c", - "reference": "2a1c4c71e944cfa94fc0f41d9a99837021060e1c", + "url": "https://api.github.com/repos/symfony/security/zipball/107bda1aee01e4b3dc46452d18ae4049bd4fa3f6", + "reference": "107bda1aee01e4b3dc46452d18ae4049bd4fa3f6", "shasum": "" }, "require": { @@ -7854,7 +7694,10 @@ "Symfony\\Component\\Security\\": "" }, "exclude-from-classmap": [ - "/Tests/" + "/Core/Tests/", + "/Csrf/Tests/", + "/Guard/Tests/", + "/Http/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -7873,7 +7716,7 @@ ], "description": "Symfony Security Component", "homepage": "https://symfony.com", - "time": "2018-08-11T11:15:56+00:00" + "time": "2018-12-06T11:12:46+00:00" }, { "name": "symfony/security-acl", @@ -7938,16 +7781,16 @@ }, { "name": "symfony/security-bundle", - "version": "v2.8.45", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "a34e30addf491a71bbf3d616626fbb0968d7dfc3" + "reference": "4590b89b5e9b04944988f9d3b8c866abc7ff9423" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/a34e30addf491a71bbf3d616626fbb0968d7dfc3", - "reference": "a34e30addf491a71bbf3d616626fbb0968d7dfc3", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/4590b89b5e9b04944988f9d3b8c866abc7ff9423", + "reference": "4590b89b5e9b04944988f9d3b8c866abc7ff9423", "shasum": "" }, "require": { @@ -8006,20 +7849,20 @@ ], "description": "Symfony SecurityBundle", "homepage": "https://symfony.com", - "time": "2018-08-01T18:49:49+00:00" + "time": "2018-11-11T11:18:13+00:00" }, { "name": "symfony/stopwatch", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "57021208ad9830f8f8390c1a9d7bb390f32be89e" + "reference": "752586c80af8a85aeb74d1ae8202411c68836663" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/57021208ad9830f8f8390c1a9d7bb390f32be89e", - "reference": "57021208ad9830f8f8390c1a9d7bb390f32be89e", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/752586c80af8a85aeb74d1ae8202411c68836663", + "reference": "752586c80af8a85aeb74d1ae8202411c68836663", "shasum": "" }, "require": { @@ -8055,7 +7898,7 @@ ], "description": "Symfony Stopwatch Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:36:31+00:00" + "time": "2018-11-11T11:18:13+00:00" }, { "name": "symfony/swiftmailer-bundle", @@ -8114,30 +7957,31 @@ ], "description": "Symfony SwiftmailerBundle", "homepage": "http://symfony.com", - "time": "2017-07-22T07:18:13+00:00" + "time": "2017-10-19T01:06:41+00:00" }, { "name": "symfony/templating", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/templating.git", - "reference": "6e0975833f731a0b112d3c598572d5fc9c6cc0bb" + "reference": "7e64705b32855ebce87eff8cc5fbe6bf240c8e44" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/templating/zipball/6e0975833f731a0b112d3c598572d5fc9c6cc0bb", - "reference": "6e0975833f731a0b112d3c598572d5fc9c6cc0bb", + "url": "https://api.github.com/repos/symfony/templating/zipball/7e64705b32855ebce87eff8cc5fbe6bf240c8e44", + "reference": "7e64705b32855ebce87eff8cc5fbe6bf240c8e44", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": ">=5.3.9", + "symfony/polyfill-ctype": "~1.8" }, "require-dev": { "psr/log": "~1.0" }, "suggest": { - "psr/log": "For using debug logging in loaders" + "psr/log-implementation": "For using debug logging in loaders" }, "type": "library", "extra": { @@ -8169,7 +8013,7 @@ ], "description": "Symfony Templating Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:36:31+00:00" + "time": "2018-11-20T15:55:20+00:00" }, { "name": "symfony/translation", @@ -8318,16 +8162,16 @@ }, { "name": "symfony/twig-bundle", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "20505fbf6cabe797cdb01f3e720bb16c76871439" + "reference": "e74af27dbe64dd4e5e7e3dfc9bcf480253b76c80" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/20505fbf6cabe797cdb01f3e720bb16c76871439", - "reference": "20505fbf6cabe797cdb01f3e720bb16c76871439", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/e74af27dbe64dd4e5e7e3dfc9bcf480253b76c80", + "reference": "e74af27dbe64dd4e5e7e3dfc9bcf480253b76c80", "shasum": "" }, "require": { @@ -8335,6 +8179,7 @@ "symfony/asset": "~2.7|~3.0.0", "symfony/http-foundation": "~2.5|~3.0.0", "symfony/http-kernel": "~2.7.23|^2.8.16", + "symfony/polyfill-ctype": "~1.8", "symfony/twig-bridge": "~2.7|~3.0.0", "twig/twig": "~1.34|~2.4" }, @@ -8380,24 +8225,25 @@ ], "description": "Symfony TwigBundle", "homepage": "https://symfony.com", - "time": "2018-01-29T08:54:45+00:00" + "time": "2018-11-11T11:18:13+00:00" }, { "name": "symfony/validator", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "71f4e46ff4ca3c8fee09cc1a3a1b90a06cde5e2a" + "reference": "d5d2090bba3139d8ddb79959fbf516e87238fe3a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/71f4e46ff4ca3c8fee09cc1a3a1b90a06cde5e2a", - "reference": "71f4e46ff4ca3c8fee09cc1a3a1b90a06cde5e2a", + "url": "https://api.github.com/repos/symfony/validator/zipball/d5d2090bba3139d8ddb79959fbf516e87238fe3a", + "reference": "d5d2090bba3139d8ddb79959fbf516e87238fe3a", "shasum": "" }, "require": { "php": ">=5.3.9", + "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", "symfony/translation": "~2.4|~3.0.0" }, @@ -8453,24 +8299,25 @@ ], "description": "Symfony Validator Component", "homepage": "https://symfony.com", - "time": "2018-01-29T08:54:45+00:00" + "time": "2018-11-14T14:06:48+00:00" }, { "name": "symfony/yaml", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "be720fcfae4614df204190d57795351059946a77" + "reference": "02c1859112aa779d9ab394ae4f3381911d84052b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/be720fcfae4614df204190d57795351059946a77", - "reference": "be720fcfae4614df204190d57795351059946a77", + "url": "https://api.github.com/repos/symfony/yaml/zipball/02c1859112aa779d9ab394ae4f3381911d84052b", + "reference": "02c1859112aa779d9ab394ae4f3381911d84052b", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": ">=5.3.9", + "symfony/polyfill-ctype": "~1.8" }, "type": "library", "extra": { @@ -8502,544 +8349,1160 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:36:31+00:00" + "time": "2018-11-11T11:18:13+00:00" }, { - "name": "thedmsgroup/mautic-api-services-bundle", - "version": "dev-master", + "name": "twig/twig", + "version": "v2.5.0", "source": { "type": "git", - "url": "https://github.com/TheDMSGroup/mautic-api-services.git", - "reference": "7cebb2338946c353386841d5e96d0f499998b297" + "url": "https://github.com/twigphp/Twig.git", + "reference": "6a5f676b77a90823c2d4eaf76137b771adf31323" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TheDMSGroup/mautic-api-services/zipball/7cebb2338946c353386841d5e96d0f499998b297", - "reference": "7cebb2338946c353386841d5e96d0f499998b297", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/6a5f676b77a90823c2d4eaf76137b771adf31323", + "reference": "6a5f676b77a90823c2d4eaf76137b771adf31323", "shasum": "" }, "require": { - "mautic/composer-plugin": "^1.0" + "php": "^7.0", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "~1.0" + }, + "require-dev": { + "psr/container": "^1.0", + "symfony/debug": "^2.7", + "symfony/phpunit-bridge": "^3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "autoload": { + "psr-0": { + "Twig_": "lib/" + }, + "psr-4": { + "Twig\\": "src/" + } }, - "type": "mautic-plugin", "notification-url": "https://packagist.org/downloads/", "license": [ - "GPL-3.0-only" + "BSD-3-Clause" ], "authors": [ { - "name": "Scott Shipman", - "email": "scottshipmang@gmail.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + }, + { + "name": "Twig Team", + "homepage": "https://twig.symfony.com/contributors", + "role": "Contributors" } ], - "description": "Extends Mautic API for configurable service calls.", + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "https://twig.symfony.com", "keywords": [ - "Marketing Automation", - "Mautic", - "marketing", - "plugin" + "templating" ], - "time": "2018-08-14T12:58:15+00:00" + "time": "2018-07-13T07:18:09+00:00" }, { - "name": "thedmsgroup/mautic-campaign-watch-bundle", - "version": "dev-master", + "name": "twilio/sdk", + "version": "4.12.1", "source": { "type": "git", - "url": "https://github.com/TheDMSGroup/mautic-campaign-watch.git", - "reference": "8b2e47ee7f50031ff30809baba59e72df5cbf8be" + "url": "https://github.com/twilio/twilio-php.git", + "reference": "0a88c48262fbee1c3841f721f46439d3de450b95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TheDMSGroup/mautic-campaign-watch/zipball/8b2e47ee7f50031ff30809baba59e72df5cbf8be", - "reference": "8b2e47ee7f50031ff30809baba59e72df5cbf8be", + "url": "https://api.github.com/repos/twilio/twilio-php/zipball/0a88c48262fbee1c3841f721f46439d3de450b95", + "reference": "0a88c48262fbee1c3841f721f46439d3de450b95", "shasum": "" }, "require": { - "mautic/composer-plugin": "^1.0" + "php": ">=5.2.1" + }, + "require-dev": { + "mockery/mockery": ">=0.7.2", + "phpunit/phpunit": "4.5.*" + }, + "type": "library", + "autoload": { + "files": [ + "Services/Twilio.php" + ] }, - "type": "mautic-plugin", "notification-url": "https://packagist.org/downloads/", "license": [ - "GPL-3.0-only" + "MIT" ], "authors": [ { - "name": "Heath Dutton", - "email": "heathdutton@gmail.com" + "name": "Kevin Burke", + "email": "kevin@twilio.com" + }, + { + "name": "Kyle Conroy", + "email": "kyle+pear@twilio.com" } ], - "description": "Visual improvements for campaigns.", + "description": "A PHP wrapper for Twilio's API", + "homepage": "http://github.com/twilio/twilio-php", "keywords": [ - "Marketing Automation", - "Mautic", - "marketing", - "plugin" + "api", + "sms", + "twilio" ], - "time": "2018-10-11T15:39:19+00:00" + "time": "2017-11-17T22:59:03+00:00" }, { - "name": "thedmsgroup/mautic-contact-client-bundle", + "name": "wikimedia/composer-merge-plugin", "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/TheDMSGroup/mautic-contact-client.git", - "reference": "637d7c75f71579d3a08bec68ac2e58e4866c3551" + "url": "https://github.com/wikimedia/composer-merge-plugin.git", + "reference": "73e4ed4fa66167823cb9bfc65fdd5fd6019722b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TheDMSGroup/mautic-contact-client/zipball/637d7c75f71579d3a08bec68ac2e58e4866c3551", - "reference": "637d7c75f71579d3a08bec68ac2e58e4866c3551", + "url": "https://api.github.com/repos/wikimedia/composer-merge-plugin/zipball/73e4ed4fa66167823cb9bfc65fdd5fd6019722b6", + "reference": "73e4ed4fa66167823cb9bfc65fdd5fd6019722b6", "shasum": "" }, "require": { - "league/flysystem": "^1.0", - "league/flysystem-aws-s3-v2": "^1.0", - "league/flysystem-dropbox": "^1.0", - "league/flysystem-sftp": "^1.0", - "mautic/composer-plugin": "^1.0", - "mustache/mustache": "^2.12", - "namshi/cuzzle": "^2.0" + "composer-plugin-api": "^1.0", + "php": ">=5.3.2" + }, + "require-dev": { + "composer/composer": "~1.0.0", + "jakub-onderka/php-parallel-lint": "~0.8", + "phpunit/phpunit": "~4.8|~5.0", + "squizlabs/php_codesniffer": "~2.1.0" + }, + "type": "composer-plugin", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + }, + "class": "Wikimedia\\Composer\\MergePlugin" + }, + "autoload": { + "psr-4": { + "Wikimedia\\Composer\\": "src/" + } }, - "type": "mautic-plugin", "notification-url": "https://packagist.org/downloads/", "license": [ - "GPL-3.0-only" + "MIT" ], "authors": [ { - "name": "Heath Dutton", - "email": "heathdutton@gmail.com" + "name": "Bryan Davis", + "email": "bd808@wikimedia.org" } ], - "description": "Create custom integrations without writing code.", - "keywords": [ - "Marketing Automation", - "Mautic", - "marketing", - "plugin" - ], - "time": "2018-10-18T16:42:24+00:00" + "description": "Composer plugin to merge multiple composer.json files", + "time": "2018-01-10T05:07:51+00:00" }, { - "name": "thedmsgroup/mautic-contact-ledger-bundle", - "version": "dev-master", + "name": "willdurand/jsonp-callback-validator", + "version": "v1.1.0", "source": { "type": "git", - "url": "https://github.com/TheDMSGroup/mautic-contact-ledger.git", - "reference": "1feb9321ad507ad2701e7e1874290f6f933cd907" + "url": "https://github.com/willdurand/JsonpCallbackValidator.git", + "reference": "1a7d388bb521959e612ef50c5c7b1691b097e909" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TheDMSGroup/mautic-contact-ledger/zipball/1feb9321ad507ad2701e7e1874290f6f933cd907", - "reference": "1feb9321ad507ad2701e7e1874290f6f933cd907", + "url": "https://api.github.com/repos/willdurand/JsonpCallbackValidator/zipball/1a7d388bb521959e612ef50c5c7b1691b097e909", + "reference": "1a7d388bb521959e612ef50c5c7b1691b097e909", "shasum": "" }, "require": { - "mautic/composer-plugin": "^1.0" + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "~3.7" + }, + "type": "library", + "autoload": { + "psr-0": { + "JsonpCallbackValidator": "src/" + } }, - "type": "mautic-plugin", "notification-url": "https://packagist.org/downloads/", "license": [ - "GPL-3.0-only" + "MIT" ], "authors": [ { - "name": "Nicholai Bush", - "email": "nicholaibush@yahoo.com" + "name": "William Durand", + "email": "william.durand1@gmail.com", + "homepage": "http://www.willdurand.fr" } ], - "description": "Historical accounting for contacts", - "keywords": [ - "Marketing Automation", - "Mautic", - "marketing", - "plugin" - ], - "time": "2018-10-30T04:44:41+00:00" + "description": "JSONP callback validator.", + "time": "2014-01-20T22:35:06+00:00" }, { - "name": "thedmsgroup/mautic-contact-source-bundle", - "version": "dev-master", + "name": "willdurand/negotiation", + "version": "1.5.0", "source": { "type": "git", - "url": "https://github.com/TheDMSGroup/mautic-contact-source.git", - "reference": "5d98d63070ddcd2ae55bd8610eb24407971729f8" + "url": "https://github.com/willdurand/Negotiation.git", + "reference": "2a59f2376557303e3fa91465ab691abb82945edf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TheDMSGroup/mautic-contact-source/zipball/5d98d63070ddcd2ae55bd8610eb24407971729f8", - "reference": "5d98d63070ddcd2ae55bd8610eb24407971729f8", + "url": "https://api.github.com/repos/willdurand/Negotiation/zipball/2a59f2376557303e3fa91465ab691abb82945edf", + "reference": "2a59f2376557303e3fa91465ab691abb82945edf", "shasum": "" }, "require": { - "mautic/composer-plugin": "^1.0" + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5-dev" + } + }, + "autoload": { + "psr-4": { + "Negotiation\\": "src/Negotiation" + } }, - "type": "mautic-plugin", "notification-url": "https://packagist.org/downloads/", "license": [ - "GPL-3.0-only" + "MIT" ], "authors": [ { - "name": "Heath Dutton", - "email": "heathdutton@gmail.com" + "name": "William Durand", + "email": "william.durand1@gmail.com" } ], - "description": "Creates API endpoints for receiving contacts from external sources.", + "description": "Content Negotiation tools for PHP provided as a standalone library.", + "homepage": "http://williamdurand.fr/Negotiation/", "keywords": [ - "Marketing Automation", - "Mautic", - "marketing", - "plugin" + "accept", + "content", + "format", + "header", + "negotiation" ], - "time": "2018-10-29T19:33:08+00:00" + "time": "2015-10-01T07:42:40+00:00" }, { - "name": "thedmsgroup/mautic-dashboard-warm-bundle", - "version": "dev-master", + "name": "willdurand/oauth-server-bundle", + "version": "0.0.2", "source": { "type": "git", - "url": "https://github.com/TheDMSGroup/mautic-dashboard-warm.git", - "reference": "39876a88a158e62916f716cfa49ed8663293752e" + "url": "https://github.com/mautic/BazingaOAuthServerBundle.git", + "reference": "f7685479cdc35114cc4e6219313f57f5c72a5ee6" + }, + "require": { + "php": ">=5.3.3", + "symfony/console": "~2.3", + "symfony/framework-bundle": "~2.3", + "symfony/security-bundle": "~2.3" + }, + "require-dev": { + "doctrine/doctrine-bundle": "1.3.*@dev", + "willdurand/propel-typehintable-behavior": "@dev" + }, + "suggest": { + "willdurand/propel-typehintable-behavior": "Needed when using the propel implementation" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Bazinga\\OAuthServerBundle\\": "" + } + }, + "license": [ + "MIT" + ], + "authors": [ + { + "name": "William Durand", + "email": "william.durand1@gmail.com" + } + ], + "description": "Server side implementation of the OAuth 1.0 protocol based on RFC 5849", + "keywords": [ + "api", + "oauth", + "server" + ], + "time": "2018-10-12T15:31:56+00:00" + } + ], + "packages-dev": [ + { + "name": "babdev/transifex", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/BabDev/Transifex-API.git", + "reference": "01177cbc67d56d56f3eda5c93c8863f39c080a42" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TheDMSGroup/mautic-dashboard-warm/zipball/39876a88a158e62916f716cfa49ed8663293752e", - "reference": "39876a88a158e62916f716cfa49ed8663293752e", + "url": "https://api.github.com/repos/BabDev/Transifex-API/zipball/01177cbc67d56d56f3eda5c93c8863f39c080a42", + "reference": "01177cbc67d56d56f3eda5c93c8863f39c080a42", "shasum": "" }, "require": { - "mautic/composer-plugin": "^1.0" + "joomla/http": "~1.1", + "php": "^5.3.10|~7.0" + }, + "require-dev": { + "joomla/test": "~1.0", + "phpunit/phpunit": "~4.8|>=5.0 <5.4", + "squizlabs/php_codesniffer": "~1.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "BabDev\\Transifex\\": "src/" + } }, - "type": "mautic-plugin", "notification-url": "https://packagist.org/downloads/", "license": [ - "GPL-3.0-only" + "GPL-2.0+" ], "authors": [ { - "name": "Heath Dutton", - "email": "heathdutton@gmail.com" + "name": "Michael Babker", + "homepage": "https://www.babdev.com" } ], - "description": "Improves the performance of the dashboard by sharing/extending/warming caches.", + "description": "The Transifex API Package is a wrapper of the Transifex API available for PHP developers", + "homepage": "https://github.com/BabDev/Transifex-API", "keywords": [ - "Marketing Automation", - "Mautic", - "marketing", - "plugin" + "php", + "transifex" ], - "time": "2018-10-31T13:00:33+00:00" + "time": "2016-06-10T02:57:54+00:00" }, { - "name": "thedmsgroup/mautic-eb-custom", - "version": "dev-master", + "name": "behat/gherkin", + "version": "v4.5.1", "source": { "type": "git", - "url": "https://github.com/thedmsgroup/mautic-eb-custom.git", - "reference": "538863d68f3f434a03644300bcab7526a2abc53f" + "url": "https://github.com/Behat/Gherkin.git", + "reference": "74ac03d52c5e23ad8abd5c5cce4ab0e8dc1b530a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Behat/Gherkin/zipball/74ac03d52c5e23ad8abd5c5cce4ab0e8dc1b530a", + "reference": "74ac03d52c5e23ad8abd5c5cce4ab0e8dc1b530a", + "shasum": "" }, "require": { - "mnsami/composer-custom-directory-installer": "1.1.*" + "php": ">=5.3.1" + }, + "require-dev": { + "phpunit/phpunit": "~4.5|~5", + "symfony/phpunit-bridge": "~2.7|~3", + "symfony/yaml": "~2.3|~3" + }, + "suggest": { + "symfony/yaml": "If you want to parse features, represented in YAML files" }, "type": "library", - "time": "2018-07-03T17:04:35+00:00" + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, + "autoload": { + "psr-0": { + "Behat\\Gherkin": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Gherkin DSL parser for PHP 5.3", + "homepage": "http://behat.org/", + "keywords": [ + "BDD", + "Behat", + "Cucumber", + "DSL", + "gherkin", + "parser" + ], + "time": "2017-08-30T11:04:43+00:00" }, { - "name": "thedmsgroup/mautic-enhancer-bundle", - "version": "dev-master", + "name": "codeception/codeception", + "version": "2.5.1", "source": { "type": "git", - "url": "https://github.com/TheDMSGroup/mautic-enhancer.git", - "reference": "6053414b659e93fabb7a9c8659a3ea45bb789081" + "url": "https://github.com/Codeception/Codeception.git", + "reference": "e0a658c64e98811a6fd4f6aa7c3222e0609066a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TheDMSGroup/mautic-enhancer/zipball/6053414b659e93fabb7a9c8659a3ea45bb789081", - "reference": "6053414b659e93fabb7a9c8659a3ea45bb789081", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/e0a658c64e98811a6fd4f6aa7c3222e0609066a9", + "reference": "e0a658c64e98811a6fd4f6aa7c3222e0609066a9", "shasum": "" }, "require": { + "behat/gherkin": "^4.4.0", + "codeception/phpunit-wrapper": "^6.0.9|^7.0.6", + "codeception/stub": "^2.0", "ext-curl": "*", - "ext-dom": "*", "ext-json": "*", - "ext-simplexml": "*", - "league/flysystem": "^1.0", - "league/flysystem-sftp": "^1.0", - "mautic/composer-plugin": "^1.0" + "ext-mbstring": "*", + "facebook/webdriver": ">=1.1.3 <2.0", + "guzzlehttp/guzzle": ">=4.1.4 <7.0", + "guzzlehttp/psr7": "~1.0", + "php": ">=5.6.0 <8.0", + "symfony/browser-kit": ">=2.7 <5.0", + "symfony/console": ">=2.7 <5.0", + "symfony/css-selector": ">=2.7 <5.0", + "symfony/dom-crawler": ">=2.7 <5.0", + "symfony/event-dispatcher": ">=2.7 <5.0", + "symfony/finder": ">=2.7 <5.0", + "symfony/yaml": ">=2.7 <5.0" + }, + "require-dev": { + "codeception/specify": "~0.3", + "facebook/graph-sdk": "~5.3", + "flow/jsonpath": "~0.2", + "monolog/monolog": "~1.8", + "pda/pheanstalk": "~3.0", + "php-amqplib/php-amqplib": "~2.4", + "predis/predis": "^1.0", + "squizlabs/php_codesniffer": "~2.0", + "symfony/process": ">=2.7 <5.0", + "vlucas/phpdotenv": "^2.4.0" + }, + "suggest": { + "aws/aws-sdk-php": "For using AWS Auth in REST module and Queue module", + "codeception/phpbuiltinserver": "Start and stop PHP built-in web server for your tests", + "codeception/specify": "BDD-style code blocks", + "codeception/verify": "BDD-style assertions", + "flow/jsonpath": "For using JSONPath in REST module", + "league/factory-muffin": "For DataFactory module", + "league/factory-muffin-faker": "For Faker support in DataFactory module", + "phpseclib/phpseclib": "for SFTP option in FTP Module", + "stecman/symfony-console-completion": "For BASH autocompletion", + "symfony/phpunit-bridge": "For phpunit-bridge support" + }, + "bin": [ + "codecept" + ], + "type": "library", + "extra": { + "branch-alias": [] + }, + "autoload": { + "psr-4": { + "Codeception\\": "src/Codeception", + "Codeception\\Extension\\": "ext" + } }, - "type": "mautic-plugin", "notification-url": "https://packagist.org/downloads/", "license": [ - "GPL-3.0-only" + "MIT" ], "authors": [ { - "name": "Nicholai Bush", - "email": "nicholaibush@yahoo.com" - }, - { - "name": "Scott Shipman", - "email": "K.scott.shipman@gmail.com" + "name": "Michael Bodnarchuk", + "email": "davert@mail.ua", + "homepage": "http://codegyre.com" } ], - "description": "Various contact enhancer integrations for Mautic.", + "description": "BDD-style testing framework", + "homepage": "http://codeception.com/", "keywords": [ - "Marketing Automation", - "Mautic", - "marketing", - "plugin" + "BDD", + "TDD", + "acceptance testing", + "functional testing", + "unit testing" ], - "time": "2018-10-29T15:45:52+00:00" + "time": "2018-10-29T21:23:19+00:00" }, { - "name": "thedmsgroup/mautic-extended-field-bundle", - "version": "dev-master", + "name": "codeception/phpunit-wrapper", + "version": "6.0.12", "source": { "type": "git", - "url": "https://github.com/TheDMSGroup/mautic-extended-field.git", - "reference": "34a365cd67da2f4578c060863b6f8d877b79d074" + "url": "https://github.com/Codeception/phpunit-wrapper.git", + "reference": "de922c760dfddf8a33c4a066efcd0cd93576d957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TheDMSGroup/mautic-extended-field/zipball/34a365cd67da2f4578c060863b6f8d877b79d074", - "reference": "34a365cd67da2f4578c060863b6f8d877b79d074", + "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/de922c760dfddf8a33c4a066efcd0cd93576d957", + "reference": "de922c760dfddf8a33c4a066efcd0cd93576d957", "shasum": "" }, "require": { - "mautic/composer-plugin": "^1.0" + "phpunit/php-code-coverage": ">=4.0.4 <6.0", + "phpunit/phpunit": ">=5.7.27 <7.0", + "sebastian/comparator": ">=1.2.4 <3.0", + "sebastian/diff": ">=1.4 <4.0" + }, + "replace": { + "codeception/phpunit-wrapper": "*" + }, + "require-dev": { + "codeception/specify": "*", + "vlucas/phpdotenv": "^2.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Codeception\\PHPUnit\\": "src\\" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Davert", + "email": "davert.php@resend.cc" + } + ], + "description": "PHPUnit classes used by Codeception", + "time": "2018-09-12T20:19:47+00:00" + }, + { + "name": "codeception/stub", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/Codeception/Stub.git", + "reference": "f50bc271f392a2836ff80690ce0c058efe1ae03e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/Stub/zipball/f50bc271f392a2836ff80690ce0c058efe1ae03e", + "reference": "f50bc271f392a2836ff80690ce0c058efe1ae03e", + "shasum": "" + }, + "require": { + "phpunit/phpunit": ">=4.8 <8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Codeception\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Flexible Stub wrapper for PHPUnit's Mock Builder", + "time": "2018-07-26T11:55:37+00:00" + }, + { + "name": "composer/semver", + "version": "1.4.2", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/c7cb9a2095a074d131b65a8a0cd294479d785573", + "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.5 || ^5.0.5", + "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "time": "2016-08-30T16:08:34+00:00" + }, + { + "name": "composer/xdebug-handler", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "dc523135366eb68f22268d069ea7749486458562" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/dc523135366eb68f22268d069ea7749486458562", + "reference": "dc523135366eb68f22268d069ea7749486458562", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0", + "psr/log": "^1.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without xdebug.", + "keywords": [ + "Xdebug", + "performance" + ], + "time": "2018-11-29T10:59:02+00:00" + }, + { + "name": "dropbox/dropbox-sdk", + "version": "v1.1.7", + "source": { + "type": "git", + "url": "https://github.com/dropbox/dropbox-sdk-php.git", + "reference": "0f1a178ca9c0271bca6426dde8f5a2241578deae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dropbox/dropbox-sdk-php/zipball/0f1a178ca9c0271bca6426dde8f5a2241578deae", + "reference": "0f1a178ca9c0271bca6426dde8f5a2241578deae", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "php": ">= 5.3" + }, + "require-dev": { + "apigen/apigen": "4.1.2", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "2.0.0RC3" + }, + "type": "library", + "autoload": { + "psr-0": { + "Dropbox": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Dropbox SDK for PHP", + "keywords": [ + "dropbox" + ], + "time": "2016-08-08T23:48:49+00:00" + }, + { + "name": "facebook/webdriver", + "version": "1.6.0", + "source": { + "type": "git", + "url": "https://github.com/facebook/php-webdriver.git", + "reference": "bd8c740097eb9f2fc3735250fc1912bc811a954e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/facebook/php-webdriver/zipball/bd8c740097eb9f2fc3735250fc1912bc811a954e", + "reference": "bd8c740097eb9f2fc3735250fc1912bc811a954e", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "ext-zip": "*", + "php": "^5.6 || ~7.0", + "symfony/process": "^2.8 || ^3.1 || ^4.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.0", + "jakub-onderka/php-parallel-lint": "^0.9.2", + "php-coveralls/php-coveralls": "^2.0", + "php-mock/php-mock-phpunit": "^1.1", + "phpunit/phpunit": "^5.7", + "sebastian/environment": "^1.3.4 || ^2.0 || ^3.0", + "squizlabs/php_codesniffer": "^2.6", + "symfony/var-dumper": "^3.3 || ^4.0" + }, + "suggest": { + "ext-SimpleXML": "For Firefox profile creation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-community": "1.5-dev" + } + }, + "autoload": { + "psr-4": { + "Facebook\\WebDriver\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "description": "A PHP client for Selenium WebDriver", + "homepage": "https://github.com/facebook/php-webdriver", + "keywords": [ + "facebook", + "php", + "selenium", + "webdriver" + ], + "time": "2018-05-16T17:37:13+00:00" + }, + { + "name": "friendsofphp/php-cs-fixer", + "version": "v2.2.20", + "source": { + "type": "git", + "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", + "reference": "f1631f0747ad2a9dd3de8d7873b71f6573f8d0c2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/f1631f0747ad2a9dd3de8d7873b71f6573f8d0c2", + "reference": "f1631f0747ad2a9dd3de8d7873b71f6573f8d0c2", + "shasum": "" + }, + "require": { + "composer/semver": "^1.4", + "composer/xdebug-handler": "^1.0", + "doctrine/annotations": "^1.2", + "ext-json": "*", + "ext-tokenizer": "*", + "php": "^5.3.6 || >=7.0 <7.3", + "sebastian/diff": "^1.4", + "symfony/console": "^2.4 || ^3.0 || ^4.0", + "symfony/event-dispatcher": "^2.1 || ^3.0 || ^4.0", + "symfony/filesystem": "^2.4 || ^3.0 || ^4.0", + "symfony/finder": "^2.2 || ^3.0 || ^4.0", + "symfony/options-resolver": "^2.6 || ^3.0 || ^4.0", + "symfony/polyfill-php54": "^1.0", + "symfony/polyfill-php55": "^1.3", + "symfony/polyfill-php70": "^1.0", + "symfony/polyfill-php72": "^1.4", + "symfony/process": "^2.3 || ^3.0 || ^4.0", + "symfony/stopwatch": "^2.5 || ^3.0 || ^4.0" + }, + "conflict": { + "hhvm": "<3.18" + }, + "require-dev": { + "johnkary/phpunit-speedtrap": "^1.0.1 || ^2.0 || ^3.0", + "justinrainbow/json-schema": "^5.0", + "keradus/cli-executor": "^1.1", + "mikey179/vfsstream": "^1.6", + "php-coveralls/php-coveralls": "^1.0.2", + "phpunit/phpunit": "^4.8.35 || ^5.4.3", + "symfony/phpunit-bridge": "^3.2.2 || ^4.0" + }, + "suggest": { + "ext-mbstring": "For handling non-UTF8 characters in cache signature.", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "For IsIdenticalString constraint.", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "For XmlMatchesXsd constraint.", + "symfony/polyfill-mbstring": "When enabling `ext-mbstring` is not possible." + }, + "bin": [ + "php-cs-fixer" + ], + "type": "application", + "autoload": { + "psr-4": { + "PhpCsFixer\\": "src/" + }, + "classmap": [ + "tests/Test/AbstractFixerTestCase.php", + "tests/Test/AbstractIntegrationCaseFactory.php", + "tests/Test/AbstractIntegrationTestCase.php", + "tests/Test/IntegrationCase.php", + "tests/Test/IntegrationCaseFactory.php", + "tests/Test/IntegrationCaseFactoryInterface.php", + "tests/Test/InternalIntegrationCaseFactory.php", + "tests/TestCase.php" + ] }, - "type": "mautic-plugin", "notification-url": "https://packagist.org/downloads/", "license": [ - "GPL-3.0-only" + "MIT" ], "authors": [ { - "name": "Heath Dutton", - "email": "heathdutton@gmail.com" - }, - { - "name": "Nicholai Bush", - "email": "nicholaibush@yahoo.com" + "name": "Dariusz Rumiński", + "email": "dariusz.ruminski@gmail.com" }, { - "name": "Scott Shipman", - "email": "K.scott.shipman@gmail.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], - "description": "Extends custom fields for scalability and HIPAA/PCI compliance.", - "keywords": [ - "Marketing Automation", - "Mautic", - "marketing", - "plugin" - ], - "time": "2018-10-09T18:49:57+00:00" + "description": "A tool to automatically fix PHP code style", + "time": "2018-06-02T17:26:04+00:00" }, { - "name": "thedmsgroup/mautic-health-bundle", - "version": "dev-master", + "name": "league/flysystem", + "version": "1.0.49", "source": { "type": "git", - "url": "https://github.com/TheDMSGroup/mautic-health.git", - "reference": "b5a861427dfd89262d1078e348212c286e417596" + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "a63cc83d8a931b271be45148fa39ba7156782ffd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TheDMSGroup/mautic-health/zipball/b5a861427dfd89262d1078e348212c286e417596", - "reference": "b5a861427dfd89262d1078e348212c286e417596", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/a63cc83d8a931b271be45148fa39ba7156782ffd", + "reference": "a63cc83d8a931b271be45148fa39ba7156782ffd", "shasum": "" }, "require": { - "mautic/composer-plugin": "^1.0" + "ext-fileinfo": "*", + "php": ">=5.5.9" + }, + "conflict": { + "league/flysystem-sftp": "<1.0.6" + }, + "require-dev": { + "phpspec/phpspec": "^3.4", + "phpunit/phpunit": "^5.7.10" + }, + "suggest": { + "ext-fileinfo": "Required for MimeType", + "ext-ftp": "Allows you to use FTP server storage", + "ext-openssl": "Allows you to use FTPS server storage", + "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", + "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", + "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", + "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", + "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", + "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", + "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", + "league/flysystem-webdav": "Allows you to use WebDAV storage", + "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", + "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", + "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Flysystem\\": "src/" + } }, - "type": "mautic-plugin", "notification-url": "https://packagist.org/downloads/", "license": [ - "GPL-3.0-only" + "MIT" ], "authors": [ { - "name": "Heath Dutton", - "email": "heathdutton@gmail.com" + "name": "Frank de Jonge", + "email": "info@frenky.net" } ], - "description": "Checks the health of the Mautic instance.", + "description": "Filesystem abstraction: Many filesystems, one API.", "keywords": [ - "Marketing Automation", - "Mautic", - "marketing", - "plugin" + "Cloud Files", + "WebDAV", + "abstraction", + "aws", + "cloud", + "copy.com", + "dropbox", + "file systems", + "files", + "filesystem", + "filesystems", + "ftp", + "rackspace", + "remote", + "s3", + "sftp", + "storage" ], - "time": "2018-10-04T19:14:14+00:00" + "time": "2018-11-23T23:41:29+00:00" }, { - "name": "thedmsgroup/mautic-segment-extras-bundle", - "version": "dev-master", + "name": "league/flysystem-aws-s3-v3", + "version": "1.0.21", "source": { "type": "git", - "url": "https://github.com/TheDMSGroup/mautic-segment-extras.git", - "reference": "edd0566aa54c3ebdb7db916236bb4cf6dffbd5b3" + "url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git", + "reference": "43523fec10a831ea48bedb3277e3f3fa218f4e49" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TheDMSGroup/mautic-segment-extras/zipball/edd0566aa54c3ebdb7db916236bb4cf6dffbd5b3", - "reference": "edd0566aa54c3ebdb7db916236bb4cf6dffbd5b3", + "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/43523fec10a831ea48bedb3277e3f3fa218f4e49", + "reference": "43523fec10a831ea48bedb3277e3f3fa218f4e49", "shasum": "" }, "require": { - "mautic/composer-plugin": "^1.0" + "aws/aws-sdk-php": "^3.0.0", + "league/flysystem": "^1.0.40", + "php": ">=5.5.0" + }, + "require-dev": { + "henrikbjorn/phpspec-code-coverage": "~1.0.1", + "phpspec/phpspec": "^2.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Flysystem\\AwsS3v3\\": "src/" + } }, - "type": "mautic-plugin", "notification-url": "https://packagist.org/downloads/", "license": [ - "GPL-3.0-only" + "MIT" ], "authors": [ { - "name": "Scott Shipman", - "email": "scottshipmang@gmail.com" + "name": "Frank de Jonge", + "email": "info@frenky.net" } ], - "description": "Extends Mautic Lead Bundle's Lead List (Segment) functionality.", - "keywords": [ - "Marketing Automation", - "Mautic", - "marketing", - "plugin" - ], - "time": "2018-10-29T17:34:16+00:00" + "description": "Flysystem adapter for the AWS S3 SDK v3.x", + "time": "2018-10-08T07:53:55+00:00" }, { - "name": "thedmsgroup/mautic-usstate-normalizer-bundle", - "version": "dev-master", + "name": "league/flysystem-dropbox", + "version": "1.0.4", "source": { "type": "git", - "url": "https://github.com/TheDMSGroup/mautic-usstate-normalizer.git", - "reference": "fe46346ed597146ac9aadb86dfadbe115bbef2d6" + "url": "https://github.com/thephpleague/flysystem-dropbox.git", + "reference": "939f91ca00d0255d9b3aa313e191480d00f09382" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TheDMSGroup/mautic-usstate-normalizer/zipball/fe46346ed597146ac9aadb86dfadbe115bbef2d6", - "reference": "fe46346ed597146ac9aadb86dfadbe115bbef2d6", + "url": "https://api.github.com/repos/thephpleague/flysystem-dropbox/zipball/939f91ca00d0255d9b3aa313e191480d00f09382", + "reference": "939f91ca00d0255d9b3aa313e191480d00f09382", "shasum": "" }, "require": { - "mautic/composer-plugin": "^1.0" + "dropbox/dropbox-sdk": "~1.1", + "league/flysystem": "~1.0", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Flysystem\\Dropbox\\": "src/" + } }, - "type": "mautic-plugin", "notification-url": "https://packagist.org/downloads/", "license": [ - "GPL-3.0-only" + "MIT" ], "authors": [ { - "name": "Nicholai Bush", - "email": "nicholaibush@yahoo.com" + "name": "Frank de Jonge", + "email": "info@frenky.net" } ], - "description": "Normalize US States to their abbreviations", - "keywords": [ - "Marketing Automation", - "Mautic", - "marketing", - "plugin" - ], - "time": "2018-07-26T19:02:53+00:00" + "description": "Flysystem adapter for Dropbox", + "abandoned": "spatie/flysystem-dropbox", + "time": "2016-04-25T18:51:39+00:00" }, { - "name": "twig/twig", - "version": "v1.35.0", + "name": "league/flysystem-sftp", + "version": "1.0.17", "source": { "type": "git", - "url": "https://github.com/twigphp/Twig.git", - "reference": "daa657073e55b0a78cce8fdd22682fddecc6385f" + "url": "https://github.com/thephpleague/flysystem-sftp.git", + "reference": "49e216f1074b42e3ff344809e700672c2a3264ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/daa657073e55b0a78cce8fdd22682fddecc6385f", - "reference": "daa657073e55b0a78cce8fdd22682fddecc6385f", + "url": "https://api.github.com/repos/thephpleague/flysystem-sftp/zipball/49e216f1074b42e3ff344809e700672c2a3264ed", + "reference": "49e216f1074b42e3ff344809e700672c2a3264ed", "shasum": "" }, "require": { - "php": ">=5.3.3" + "league/flysystem": "~1.0", + "php": ">=5.6.0", + "phpseclib/phpseclib": "~2.0" }, "require-dev": { - "psr/container": "^1.0", - "symfony/debug": "~2.7", - "symfony/phpunit-bridge": "~3.3@dev" + "mockery/mockery": "0.9.*", + "phpunit/phpunit": "^5.7.25" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.35-dev" - } - }, "autoload": { - "psr-0": { - "Twig_": "lib/" - }, "psr-4": { - "Twig\\": "src/" + "League\\Flysystem\\Sftp\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, - { - "name": "Armin Ronacher", - "email": "armin.ronacher@active-4.com", - "role": "Project Founder" - }, - { - "name": "Twig Team", - "homepage": "http://twig.sensiolabs.org/contributors", - "role": "Contributors" + "name": "Frank de Jonge", + "email": "info@frenky.net" } ], - "description": "Twig, the flexible, fast, and secure template language for PHP", - "homepage": "http://twig.sensiolabs.org", - "keywords": [ - "templating" - ], - "time": "2017-09-27T18:06:46+00:00" + "description": "Flysystem adapter for SFTP", + "time": "2018-10-14T21:07:28+00:00" }, { - "name": "twilio/sdk", - "version": "4.12.1", + "name": "liip/functional-test-bundle", + "version": "1.10.0", "source": { "type": "git", - "url": "https://github.com/twilio/twilio-php.git", - "reference": "0a88c48262fbee1c3841f721f46439d3de450b95" + "url": "https://github.com/liip/LiipFunctionalTestBundle.git", + "reference": "cbfa26d5d2ccbf8fd5350c90a77c448f3a630ff8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twilio/twilio-php/zipball/0a88c48262fbee1c3841f721f46439d3de450b95", - "reference": "0a88c48262fbee1c3841f721f46439d3de450b95", + "url": "https://api.github.com/repos/liip/LiipFunctionalTestBundle/zipball/cbfa26d5d2ccbf8fd5350c90a77c448f3a630ff8", + "reference": "cbfa26d5d2ccbf8fd5350c90a77c448f3a630ff8", "shasum": "" }, "require": { - "php": ">=5.2.1" + "doctrine/common": "~2.0", + "php": "^5.6|^7.0", + "symfony/browser-kit": "^2.7|^3.0", + "symfony/framework-bundle": "^2.7|^3.0" + }, + "conflict": { + "phpunit/phpunit": ">=7" + }, + "require-dev": { + "brianium/paratest": "~0.12.0|~0.13.2", + "doctrine/data-fixtures": "1.2.2", + "doctrine/doctrine-fixtures-bundle": "~2.3", + "doctrine/orm": "~2.5", + "doctrine/phpcr-bundle": "~1.3", + "doctrine/phpcr-odm": "~1.3", + "hautelook/alice-bundle": "~0.2|~1.2", + "jackalope/jackalope-doctrine-dbal": "1.1.*|1.2.*", + "nelmio/alice": "~1.7|~2.0", + "phpunit/phpunit": "^4.8.35|^5.7|^6.1", + "symfony/assetic-bundle": "^2.7|^3.0", + "symfony/console": "^2.7|^3.0", + "symfony/monolog-bundle": "^2.7|^3.0", + "symfony/phpunit-bridge": "^2.7|^3.0", + "symfony/symfony": "^2.7.1|^3.3", + "twig/twig": "~1.12|~2.0" + }, + "suggest": { + "brianium/paratest": "Required when using paratest to parallelize tests", + "doctrine/dbal": "Required when using the fixture loading functionality with an ORM and SQLite", + "doctrine/doctrine-fixtures-bundle": "Required when using the fixture loading functionality", + "doctrine/orm": "Required when using the fixture loading functionality with an ORM and SQLite", + "hautelook/alice-bundle": "Required when using loadFixtureFiles functionality with custom providers", + "nelmio/alice": "Required when using loadFixtureFiles functionality" }, - "require-dev": { - "mockery/mockery": ">=0.7.2", - "phpunit/phpunit": "4.5.*" + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } }, - "type": "library", "autoload": { - "files": [ - "Services/Twilio.php" - ] + "psr-4": { + "Liip\\FunctionalTestBundle\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -9047,96 +9510,80 @@ ], "authors": [ { - "name": "Kevin Burke", - "email": "kevin@twilio.com" + "name": "Liip AG", + "homepage": "http://www.liip.ch/" }, { - "name": "Kyle Conroy", - "email": "kyle+pear@twilio.com" + "name": "Community contributions", + "homepage": "https://github.com/liip/LiipFunctionalTestBundle/contributors" } ], - "description": "A PHP wrapper for Twilio's API", - "homepage": "http://github.com/twilio/twilio-php", + "description": "This bundles provides additional functional test-cases for Symfony2 applications", "keywords": [ - "api", - "sms", - "twilio" + "Symfony2" ], - "time": "2017-11-17T22:59:03+00:00" + "time": "2018-08-10T18:22:42+00:00" }, { - "name": "wikimedia/composer-merge-plugin", - "version": "dev-master", + "name": "mautic/composer-plugin", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/wikimedia/composer-merge-plugin.git", - "reference": "73e4ed4fa66167823cb9bfc65fdd5fd6019722b6" + "url": "https://github.com/mautic/composer-plugin.git", + "reference": "27d2474ae8e39d30d28908d6f818e71fe32b8443" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wikimedia/composer-merge-plugin/zipball/73e4ed4fa66167823cb9bfc65fdd5fd6019722b6", - "reference": "73e4ed4fa66167823cb9bfc65fdd5fd6019722b6", + "url": "https://api.github.com/repos/mautic/composer-plugin/zipball/27d2474ae8e39d30d28908d6f818e71fe32b8443", + "reference": "27d2474ae8e39d30d28908d6f818e71fe32b8443", "shasum": "" }, "require": { - "composer-plugin-api": "^1.0", - "php": ">=5.3.2" + "composer-plugin-api": "^1.0" }, "require-dev": { - "composer/composer": "~1.0.0", - "jakub-onderka/php-parallel-lint": "~0.8", - "phpunit/phpunit": "~4.8|~5.0", - "squizlabs/php_codesniffer": "~2.1.0" + "composer/composer": "^1.5" }, "type": "composer-plugin", "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - }, - "class": "Wikimedia\\Composer\\MergePlugin" + "class": "Mautic\\Composer\\InstallerPlugin" }, "autoload": { "psr-4": { - "Wikimedia\\Composer\\": "src/" + "Mautic\\Composer\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Bryan Davis", - "email": "bd808@wikimedia.org" - } - ], - "description": "Composer plugin to merge multiple composer.json files", - "time": "2018-01-10T05:07:51+00:00" + "time": "2017-12-10T22:16:22+00:00" }, { - "name": "willdurand/jsonp-callback-validator", - "version": "v1.1.0", + "name": "mustache/mustache", + "version": "v2.12.0", "source": { "type": "git", - "url": "https://github.com/willdurand/JsonpCallbackValidator.git", - "reference": "1a7d388bb521959e612ef50c5c7b1691b097e909" + "url": "https://github.com/bobthecow/mustache.php.git", + "reference": "fe8fe72e9d580591854de404cc59a1b83ca4d19e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/willdurand/JsonpCallbackValidator/zipball/1a7d388bb521959e612ef50c5c7b1691b097e909", - "reference": "1a7d388bb521959e612ef50c5c7b1691b097e909", + "url": "https://api.github.com/repos/bobthecow/mustache.php/zipball/fe8fe72e9d580591854de404cc59a1b83ca4d19e", + "reference": "fe8fe72e9d580591854de404cc59a1b83ca4d19e", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=5.2.4" }, "require-dev": { - "phpunit/phpunit": "~3.7" + "friendsofphp/php-cs-fixer": "~1.11", + "phpunit/phpunit": "~3.7|~4.0|~5.0" }, "type": "library", "autoload": { "psr-0": { - "JsonpCallbackValidator": "src/" + "Mustache": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -9145,195 +9592,207 @@ ], "authors": [ { - "name": "William Durand", - "email": "william.durand1@gmail.com", - "homepage": "http://www.willdurand.fr" + "name": "Justin Hileman", + "email": "justin@justinhileman.info", + "homepage": "http://justinhileman.com" } ], - "description": "JSONP callback validator.", - "time": "2014-01-20T22:35:06+00:00" + "description": "A Mustache implementation in PHP.", + "homepage": "https://github.com/bobthecow/mustache.php", + "keywords": [ + "mustache", + "templating" + ], + "time": "2017-07-11T12:54:05+00:00" }, { - "name": "willdurand/negotiation", - "version": "1.5.0", + "name": "myclabs/deep-copy", + "version": "1.8.1", "source": { "type": "git", - "url": "https://github.com/willdurand/Negotiation.git", - "reference": "2a59f2376557303e3fa91465ab691abb82945edf" + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/willdurand/Negotiation/zipball/2a59f2376557303e3fa91465ab691abb82945edf", - "reference": "2a59f2376557303e3fa91465ab691abb82945edf", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": "^7.1" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } + "replace": { + "myclabs/deep-copy": "self.version" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" }, + "type": "library", "autoload": { "psr-4": { - "Negotiation\\": "src/Negotiation" - } + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "William Durand", - "email": "william.durand1@gmail.com" - } - ], - "description": "Content Negotiation tools for PHP provided as a standalone library.", - "homepage": "http://williamdurand.fr/Negotiation/", + "description": "Create deep copies (clones) of your objects", "keywords": [ - "accept", - "content", - "format", - "header", - "negotiation" + "clone", + "copy", + "duplicate", + "object", + "object graph" ], - "time": "2015-10-01T07:42:40+00:00" + "time": "2018-06-11T23:09:50+00:00" }, { - "name": "willdurand/oauth-server-bundle", - "version": "dev-master", + "name": "namshi/cuzzle", + "version": "2.0.3", "source": { "type": "git", - "url": "https://github.com/mautic/BazingaOAuthServerBundle.git", - "reference": "d4d2e94bb69c20ae4a5fc136c0fe40253368787e" + "url": "https://github.com/namshi/cuzzle.git", + "reference": "89849bb9c729a3d8aabf94c0b66e77c7df38abda" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/namshi/cuzzle/zipball/89849bb9c729a3d8aabf94c0b66e77c7df38abda", + "reference": "89849bb9c729a3d8aabf94c0b66e77c7df38abda", + "shasum": "" }, "require": { - "php": ">=5.3.3", - "symfony/console": "~2.3", - "symfony/framework-bundle": "~2.3", - "symfony/security-bundle": "~2.3" + "guzzlehttp/guzzle": "^6.0", + "php": ">=5.5.0", + "psr/log": "^1.0" }, "require-dev": { - "doctrine/doctrine-bundle": "1.3.*@dev", - "willdurand/propel-typehintable-behavior": "@dev" + "phpunit/phpunit": "^4.2.2" }, - "suggest": { - "willdurand/propel-typehintable-behavior": "Needed when using the propel implementation" + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } }, - "type": "symfony-bundle", "autoload": { "psr-4": { - "Bazinga\\OAuthServerBundle\\": "" + "Namshi\\Cuzzle\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { - "name": "William Durand", - "email": "william.durand1@gmail.com" + "name": "Nikita Nefedov", + "email": "inefedor@gmail.com" + }, + { + "name": "cirpo", + "email": "alessandro.cinelli@gmail.com" } ], - "description": "Server side implementation of the OAuth 1.0 protocol based on RFC 5849", - "keywords": [ - "api", - "oauth", - "server" - ], - "time": "2017-05-10T00:39:21+00:00" - } - ], - "packages-dev": [ + "description": "Get the cURL shell command from a Guzzle request", + "time": "2016-11-23T08:01:36+00:00" + }, { - "name": "babdev/transifex", - "version": "1.3.0", + "name": "phpdocumentor/reflection-common", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/BabDev/Transifex-API.git", - "reference": "01177cbc67d56d56f3eda5c93c8863f39c080a42" + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/BabDev/Transifex-API/zipball/01177cbc67d56d56f3eda5c93c8863f39c080a42", - "reference": "01177cbc67d56d56f3eda5c93c8863f39c080a42", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", "shasum": "" }, "require": { - "joomla/http": "~1.1", - "php": "^5.3.10|~7.0" + "php": ">=5.5" }, "require-dev": { - "joomla/test": "~1.0", - "phpunit/phpunit": "~4.8|>=5.0 <5.4", - "squizlabs/php_codesniffer": "~1.5" + "phpunit/phpunit": "^4.6" }, "type": "library", "extra": { "branch-alias": { - "dev-1.x": "1.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { - "BabDev\\Transifex\\": "src/" + "phpDocumentor\\Reflection\\": [ + "src" + ] } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "GPL-2.0+" + "MIT" ], "authors": [ { - "name": "Michael Babker", - "homepage": "https://www.babdev.com" + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" } ], - "description": "The Transifex API Package is a wrapper of the Transifex API available for PHP developers", - "homepage": "https://github.com/BabDev/Transifex-API", + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", "keywords": [ - "php", - "transifex" + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" ], - "time": "2016-06-10T02:57:54+00:00" + "time": "2017-09-11T18:02:19+00:00" }, { - "name": "behat/gherkin", - "version": "v4.4.5", + "name": "phpdocumentor/reflection-docblock", + "version": "4.3.0", "source": { "type": "git", - "url": "https://github.com/Behat/Gherkin.git", - "reference": "5c14cff4f955b17d20d088dec1bde61c0539ec74" + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "94fd0001232e47129dd3504189fa1c7225010d08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Behat/Gherkin/zipball/5c14cff4f955b17d20d088dec1bde61c0539ec74", - "reference": "5c14cff4f955b17d20d088dec1bde61c0539ec74", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", + "reference": "94fd0001232e47129dd3504189fa1c7225010d08", "shasum": "" }, "require": { - "php": ">=5.3.1" + "php": "^7.0", + "phpdocumentor/reflection-common": "^1.0.0", + "phpdocumentor/type-resolver": "^0.4.0", + "webmozart/assert": "^1.0" }, "require-dev": { - "phpunit/phpunit": "~4.5|~5", - "symfony/phpunit-bridge": "~2.7|~3", - "symfony/yaml": "~2.3|~3" - }, - "suggest": { - "symfony/yaml": "If you want to parse features, represented in YAML files" + "doctrine/instantiator": "~1.0.5", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^6.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.4-dev" + "dev-master": "4.x-dev" } }, "autoload": { - "psr-0": { - "Behat\\Gherkin": "src/" + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] } }, "notification-url": "https://packagist.org/downloads/", @@ -9342,93 +9801,46 @@ ], "authors": [ { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" + "name": "Mike van Riel", + "email": "me@mikevanriel.com" } ], - "description": "Gherkin DSL parser for PHP 5.3", - "homepage": "http://behat.org/", - "keywords": [ - "BDD", - "Behat", - "Cucumber", - "DSL", - "gherkin", - "parser" - ], - "time": "2016-10-30T11:50:56+00:00" + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2017-11-30T07:14:17+00:00" }, { - "name": "codeception/codeception", - "version": "2.3.8", + "name": "phpdocumentor/type-resolver", + "version": "0.4.0", "source": { "type": "git", - "url": "https://github.com/Codeception/Codeception.git", - "reference": "43eade17a8cd68e9cde401e8585b09d11d41b12d" + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Codeception/zipball/43eade17a8cd68e9cde401e8585b09d11d41b12d", - "reference": "43eade17a8cd68e9cde401e8585b09d11d41b12d", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", "shasum": "" }, "require": { - "behat/gherkin": "~4.4.0", - "codeception/stub": "^1.0", - "ext-json": "*", - "ext-mbstring": "*", - "facebook/webdriver": ">=1.1.3 <2.0", - "guzzlehttp/guzzle": ">=4.1.4 <7.0", - "guzzlehttp/psr7": "~1.0", - "php": ">=5.4.0 <8.0", - "phpunit/php-code-coverage": ">=2.2.4 <6.0", - "phpunit/phpunit": ">=4.8.28 <5.0.0 || >=5.6.3 <7.0", - "sebastian/comparator": ">1.1 <3.0", - "sebastian/diff": ">=1.4 <3.0", - "symfony/browser-kit": ">=2.7 <5.0", - "symfony/console": ">=2.7 <5.0", - "symfony/css-selector": ">=2.7 <5.0", - "symfony/dom-crawler": ">=2.7 <5.0", - "symfony/event-dispatcher": ">=2.7 <5.0", - "symfony/finder": ">=2.7 <5.0", - "symfony/yaml": ">=2.7 <5.0" + "php": "^5.5 || ^7.0", + "phpdocumentor/reflection-common": "^1.0" }, "require-dev": { - "codeception/specify": "~0.3", - "facebook/graph-sdk": "~5.3", - "flow/jsonpath": "~0.2", - "monolog/monolog": "~1.8", - "pda/pheanstalk": "~3.0", - "php-amqplib/php-amqplib": "~2.4", - "predis/predis": "^1.0", - "squizlabs/php_codesniffer": "~2.0", - "symfony/process": ">=2.7 <5.0", - "vlucas/phpdotenv": "^2.4.0" - }, - "suggest": { - "aws/aws-sdk-php": "For using AWS Auth in REST module and Queue module", - "codeception/phpbuiltinserver": "Start and stop PHP built-in web server for your tests", - "codeception/specify": "BDD-style code blocks", - "codeception/verify": "BDD-style assertions", - "flow/jsonpath": "For using JSONPath in REST module", - "league/factory-muffin": "For DataFactory module", - "league/factory-muffin-faker": "For Faker support in DataFactory module", - "phpseclib/phpseclib": "for SFTP option in FTP Module", - "stecman/symfony-console-completion": "For BASH autocompletion", - "symfony/phpunit-bridge": "For phpunit-bridge support" + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" }, - "bin": [ - "codecept" - ], "type": "library", "extra": { - "branch-alias": [] + "branch-alias": { + "dev-master": "1.0.x-dev" + } }, "autoload": { "psr-4": { - "Codeception\\": "src\\Codeception", - "Codeception\\Extension\\": "ext" + "phpDocumentor\\Reflection\\": [ + "src/" + ] } }, "notification-url": "https://packagist.org/downloads/", @@ -9437,85 +9849,138 @@ ], "authors": [ { - "name": "Michael Bodnarchuk", - "email": "davert@mail.ua", - "homepage": "http://codegyre.com" + "name": "Mike van Riel", + "email": "me@mikevanriel.com" } ], - "description": "BDD-style testing framework", - "homepage": "http://codeception.com/", - "keywords": [ - "BDD", - "TDD", - "acceptance testing", - "functional testing", - "unit testing" - ], - "time": "2018-01-27T22:47:33+00:00" + "time": "2017-07-14T14:27:02+00:00" }, { - "name": "codeception/stub", - "version": "1.0.1", + "name": "phpseclib/phpseclib", + "version": "2.0.12", "source": { "type": "git", - "url": "https://github.com/Codeception/Stub.git", - "reference": "673ea54cdd7141e0a5138ad78aaa60751912f573" + "url": "https://github.com/phpseclib/phpseclib.git", + "reference": "8814dc7841db159daed0b32c2b08fb7e03c6afe7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Stub/zipball/673ea54cdd7141e0a5138ad78aaa60751912f573", - "reference": "673ea54cdd7141e0a5138ad78aaa60751912f573", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/8814dc7841db159daed0b32c2b08fb7e03c6afe7", + "reference": "8814dc7841db159daed0b32c2b08fb7e03c6afe7", "shasum": "" }, "require": { - "phpunit/phpunit-mock-objects": "^2.3|^3.0|^4.0|^5.0" + "php": ">=5.3.3" }, "require-dev": { - "phpunit/phpunit": "^4.8|^5.0|^6.0|^7.0" + "phing/phing": "~2.7", + "phpunit/phpunit": "^4.8.35|^5.7|^6.0", + "sami/sami": "~2.0", + "squizlabs/php_codesniffer": "~2.0" + }, + "suggest": { + "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.", + "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.", + "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.", + "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations." }, "type": "library", "autoload": { + "files": [ + "phpseclib/bootstrap.php" + ], "psr-4": { - "Codeception\\": "src/" + "phpseclib\\": "phpseclib/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Flexible Stub wrapper for PHPUnit's Mock Builder", - "time": "2018-01-27T00:37:17+00:00" + "authors": [ + { + "name": "Jim Wigginton", + "email": "terrafrost@php.net", + "role": "Lead Developer" + }, + { + "name": "Patrick Monnerat", + "email": "pm@datasphere.ch", + "role": "Developer" + }, + { + "name": "Andreas Fischer", + "email": "bantu@phpbb.com", + "role": "Developer" + }, + { + "name": "Hans-Jürgen Petrich", + "email": "petrich@tronic-media.com", + "role": "Developer" + }, + { + "name": "Graham Campbell", + "email": "graham@alt-three.com", + "role": "Developer" + } + ], + "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.", + "homepage": "http://phpseclib.sourceforge.net", + "keywords": [ + "BigInteger", + "aes", + "asn.1", + "asn1", + "blowfish", + "crypto", + "cryptography", + "encryption", + "rsa", + "security", + "sftp", + "signature", + "signing", + "ssh", + "twofish", + "x.509", + "x509" + ], + "time": "2018-11-04T05:45:48+00:00" }, { - "name": "composer/semver", - "version": "1.4.2", + "name": "phpspec/prophecy", + "version": "1.8.0", "source": { "type": "git", - "url": "https://github.com/composer/semver.git", - "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573" + "url": "https://github.com/phpspec/prophecy.git", + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/c7cb9a2095a074d131b65a8a0cd294479d785573", - "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0" + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", + "sebastian/comparator": "^1.1|^2.0|^3.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0" }, "require-dev": { - "phpunit/phpunit": "^4.5 || ^5.0.5", - "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" + "phpspec/phpspec": "^2.5|^3.2", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "1.8.x-dev" } }, "autoload": { - "psr-4": { - "Composer\\Semver\\": "src" + "psr-0": { + "Prophecy\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -9524,620 +9989,649 @@ ], "authors": [ { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" }, { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" } ], - "description": "Semver library that offers utilities, version constraint parsing and validation.", + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", "keywords": [ - "semantic", - "semver", - "validation", - "versioning" + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2018-08-05T17:53:17+00:00" + }, + { + "name": "phpstan/phpstan-shim", + "version": "0.9.2", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan-shim.git", + "reference": "e4720fb2916be05de02869780072253e7e0e8a75" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan-shim/zipball/e4720fb2916be05de02869780072253e7e0e8a75", + "reference": "e4720fb2916be05de02869780072253e7e0e8a75", + "shasum": "" + }, + "require": { + "php": "~7.0" + }, + "replace": { + "phpstan/phpstan": "self.version" + }, + "bin": [ + "phpstan", + "phpstan.phar" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.9-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" ], - "time": "2016-08-30T16:08:34+00:00" + "description": "PHPStan Phar distribution", + "time": "2018-01-28T14:29:27+00:00" }, { - "name": "facebook/webdriver", - "version": "1.5.0", + "name": "phpunit/dbunit", + "version": "2.0.3", "source": { "type": "git", - "url": "https://github.com/facebook/php-webdriver.git", - "reference": "86b5ca2f67173c9d34340845dd690149c886a605" + "url": "https://github.com/sebastianbergmann/dbunit.git", + "reference": "5c35d74549c21ba55d0ea74ba89d191a51f8cf25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/facebook/php-webdriver/zipball/86b5ca2f67173c9d34340845dd690149c886a605", - "reference": "86b5ca2f67173c9d34340845dd690149c886a605", + "url": "https://api.github.com/repos/sebastianbergmann/dbunit/zipball/5c35d74549c21ba55d0ea74ba89d191a51f8cf25", + "reference": "5c35d74549c21ba55d0ea74ba89d191a51f8cf25", "shasum": "" }, "require": { - "ext-curl": "*", - "ext-zip": "*", - "php": "^5.6 || ~7.0", - "symfony/process": "^2.8 || ^3.1 || ^4.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.0", - "guzzle/guzzle": "^3.4.1", - "php-coveralls/php-coveralls": "^1.0.2", - "php-mock/php-mock-phpunit": "^1.1", - "phpunit/phpunit": "^5.7", - "sebastian/environment": "^1.3.4 || ^2.0 || ^3.0", - "squizlabs/php_codesniffer": "^2.6", - "symfony/var-dumper": "^3.3 || ^4.0" + "ext-pdo": "*", + "ext-simplexml": "*", + "php": "^5.4 || ^7.0", + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0", + "symfony/yaml": "^2.1 || ^3.0" }, + "bin": [ + "dbunit" + ], "type": "library", "extra": { "branch-alias": { - "dev-community": "1.5-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { - "psr-4": { - "Facebook\\WebDriver\\": "lib/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "Apache-2.0" + "BSD-3-Clause" ], - "description": "A PHP client for Selenium WebDriver", - "homepage": "https://github.com/facebook/php-webdriver", + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "DbUnit port for PHP/PHPUnit to support database interaction testing.", + "homepage": "https://github.com/sebastianbergmann/dbunit/", "keywords": [ - "facebook", - "php", - "selenium", - "webdriver" + "database", + "testing", + "xunit" ], - "time": "2017-11-15T11:08:09+00:00" + "abandoned": true, + "time": "2016-12-02T14:39:14+00:00" }, { - "name": "friendsofphp/php-cs-fixer", - "version": "v2.2.16", + "name": "phpunit/php-code-coverage", + "version": "4.0.8", "source": { "type": "git", - "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", - "reference": "f67918efb38a186c6c731e46e52eab4fee329a49" + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/f67918efb38a186c6c731e46e52eab4fee329a49", - "reference": "f67918efb38a186c6c731e46e52eab4fee329a49", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d", + "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d", "shasum": "" }, "require": { - "composer/semver": "^1.4", - "doctrine/annotations": "^1.2", - "ext-json": "*", - "ext-tokenizer": "*", - "gecko-packages/gecko-php-unit": "^2.0", - "php": "^5.3.6 || >=7.0 <7.3", - "sebastian/diff": "^1.4", - "symfony/console": "^2.4 || ^3.0 || ^4.0", - "symfony/event-dispatcher": "^2.1 || ^3.0 || ^4.0", - "symfony/filesystem": "^2.4 || ^3.0 || ^4.0", - "symfony/finder": "^2.2 || ^3.0 || ^4.0", - "symfony/options-resolver": "^2.6 || ^3.0 || ^4.0", - "symfony/polyfill-php54": "^1.0", - "symfony/polyfill-php55": "^1.3", - "symfony/polyfill-php70": "^1.0", - "symfony/polyfill-php72": "^1.4", - "symfony/process": "^2.3 || ^3.0 || ^4.0", - "symfony/stopwatch": "^2.5 || ^3.0 || ^4.0" - }, - "conflict": { - "hhvm": "<3.18" + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^5.6 || ^7.0", + "phpunit/php-file-iterator": "^1.3", + "phpunit/php-text-template": "^1.2", + "phpunit/php-token-stream": "^1.4.2 || ^2.0", + "sebastian/code-unit-reverse-lookup": "^1.0", + "sebastian/environment": "^1.3.2 || ^2.0", + "sebastian/version": "^1.0 || ^2.0" }, "require-dev": { - "johnkary/phpunit-speedtrap": "^1.0.1", - "justinrainbow/json-schema": "^5.0", - "keradus/cli-executor": "^1.0", - "mikey179/vfsstream": "^1.6", - "php-coveralls/php-coveralls": "^1.0.2", - "phpunit/phpunit": "^4.8.35 || ^5.4.3", - "symfony/phpunit-bridge": "^3.2.2 || ^4.0" + "ext-xdebug": "^2.1.4", + "phpunit/phpunit": "^5.7" }, "suggest": { - "ext-mbstring": "For handling non-UTF8 characters in cache signature.", - "symfony/polyfill-mbstring": "When enabling `ext-mbstring` is not possible." + "ext-xdebug": "^2.5.1" }, - "bin": [ - "php-cs-fixer" - ], - "type": "application", + "type": "library", "extra": { "branch-alias": { - "dev-master": "2.2-dev" + "dev-master": "4.0.x-dev" } }, "autoload": { - "psr-4": { - "PhpCsFixer\\": "src/" - }, "classmap": [ - "tests/Test/AbstractFixerTestCase.php", - "tests/Test/AbstractIntegrationCaseFactory.php", - "tests/Test/AbstractIntegrationTestCase.php", - "tests/Test/IntegrationCase.php", - "tests/Test/IntegrationCaseFactory.php", - "tests/Test/IntegrationCaseFactoryInterface.php", - "tests/Test/InternalIntegrationCaseFactory.php", - "tests/TestCase.php" + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Dariusz Rumiński", - "email": "dariusz.ruminski@gmail.com" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" } ], - "description": "A tool to automatically fix PHP code style", - "time": "2018-02-03T08:20:15+00:00" + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2017-04-02T07:44:40+00:00" }, { - "name": "gecko-packages/gecko-php-unit", - "version": "v2.2.1", + "name": "phpunit/php-file-iterator", + "version": "1.4.5", "source": { "type": "git", - "url": "https://github.com/GeckoPackages/GeckoPHPUnit.git", - "reference": "a06beb80f63645140c251cfd757ba94a4a540be5" + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GeckoPackages/GeckoPHPUnit/zipball/a06beb80f63645140c251cfd757ba94a4a540be5", - "reference": "a06beb80f63645140c251cfd757ba94a4a540be5", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", "shasum": "" }, "require": { - "php": "^5.3.6 || ^7.0" - }, - "conflict": { - "phpunit/phpunit": ">=6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.4.3" - }, - "suggest": { - "ext-dom": "When testing with xml.", - "ext-libxml": "When testing with xml.", - "phpunit/phpunit": "This is an extension for PHPUnit so make sure you have that in some way." + "php": ">=5.3.3" }, "type": "library", - "autoload": { - "psr-4": { - "GeckoPackages\\PHPUnit\\": "src/PHPUnit" + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } ], - "description": "Additional PHPUnit asserts and constraints.", - "homepage": "https://github.com/GeckoPackages", + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", "keywords": [ - "extension", "filesystem", - "phpunit" + "iterator" ], - "time": "2018-02-05T09:26:06+00:00" + "time": "2017-11-27T13:52:08+00:00" }, { - "name": "liip/functional-test-bundle", - "version": "1.9.3", + "name": "phpunit/php-text-template", + "version": "1.2.1", "source": { "type": "git", - "url": "https://github.com/liip/LiipFunctionalTestBundle.git", - "reference": "80329104370eabebc10df69c15e98f585773884d" + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/liip/LiipFunctionalTestBundle/zipball/80329104370eabebc10df69c15e98f585773884d", - "reference": "80329104370eabebc10df69c15e98f585773884d", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", "shasum": "" }, "require": { - "doctrine/common": "~2.0", - "php": "^5.6|^7.0", - "symfony/browser-kit": "^2.7|^3.0|^4.0", - "symfony/framework-bundle": "^2.7|^3.0|^4.0" - }, - "require-dev": { - "brianium/paratest": "~0.12.0|~0.13.2", - "doctrine/data-fixtures": "1.2.2", - "doctrine/doctrine-fixtures-bundle": "~2.3", - "doctrine/orm": "~2.5", - "doctrine/phpcr-bundle": "~1.3", - "doctrine/phpcr-odm": "~1.3", - "hautelook/alice-bundle": "~0.2|~1.2", - "jackalope/jackalope-doctrine-dbal": "1.1.*|1.2.*", - "nelmio/alice": "~1.7|~2.0", - "phpunit/phpunit": "^4.8.35|^5.7|^6.1", - "symfony/assetic-bundle": "^2.7|^3.0|^4.0", - "symfony/console": "^2.7|^3.0|^4.0", - "symfony/monolog-bundle": "^2.7|^3.0|^4.0", - "symfony/phpunit-bridge": "^2.7|^3.0|^4.0", - "symfony/symfony": "^2.7.1|^3.3|^4.0", - "twig/twig": "~1.12|~2.0" - }, - "suggest": { - "brianium/paratest": "Required when using paratest to parallelize tests", - "doctrine/dbal": "Required when using the fixture loading functionality with an ORM and SQLite", - "doctrine/doctrine-fixtures-bundle": "Required when using the fixture loading functionality", - "doctrine/orm": "Required when using the fixture loading functionality with an ORM and SQLite", - "hautelook/alice-bundle": "Required when using loadFixtureFiles functionality with custom providers", - "nelmio/alice": "Required when using loadFixtureFiles functionality", - "symfony/framework-bundle": "To use assertStatusCode and assertValidationErrors ~2.5" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } + "php": ">=5.3.3" }, + "type": "library", "autoload": { - "psr-4": { - "Liip\\FunctionalTestBundle\\": "" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Liip AG", - "homepage": "http://www.liip.ch/" - }, - { - "name": "Community contributions", - "homepage": "https://github.com/liip/LiipFunctionalTestBundle/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "This bundles provides additional functional test-cases for Symfony2 applications", + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", "keywords": [ - "Symfony2" + "template" ], - "time": "2018-02-02T23:34:47+00:00" + "time": "2015-06-21T13:50:34+00:00" }, - { - "name": "myclabs/deep-copy", - "version": "1.7.0", + { + "name": "phpunit/php-timer", + "version": "1.0.9", "source": { "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^5.3.3 || ^7.0" }, "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^4.1" + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, - "files": [ - "src/DeepCopy/deep_copy.php" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], - "description": "Create deep copies (clones) of your objects", + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" + "timer" ], - "time": "2017-04-12T18:52:22+00:00" + "time": "2017-02-26T11:10:40+00:00" }, { - "name": "phpdocumentor/reflection-common", - "version": "1.0.1", + "name": "phpunit/php-token-stream", + "version": "2.0.2", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "791198a2c6254db10131eecfe8c06670700904db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", + "reference": "791198a2c6254db10131eecfe8c06670700904db", "shasum": "" }, "require": { - "php": ">=5.5" + "ext-tokenizer": "*", + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "^4.6" + "phpunit/phpunit": "^6.2.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0-dev" } }, "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src" - ] - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" + "tokenizer" ], - "time": "2017-09-11T18:02:19+00:00" + "time": "2017-11-27T05:48:46+00:00" }, { - "name": "phpdocumentor/reflection-docblock", - "version": "3.3.2", + "name": "phpunit/phpunit", + "version": "5.7.27", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2" + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bf329f6c1aadea3299f08ee804682b7c45b326a2", - "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c", + "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c", "shasum": "" }, "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "~1.3", "php": "^5.6 || ^7.0", - "phpdocumentor/reflection-common": "^1.0.0", - "phpdocumentor/type-resolver": "^0.4.0", - "webmozart/assert": "^1.0" + "phpspec/prophecy": "^1.6.2", + "phpunit/php-code-coverage": "^4.0.4", + "phpunit/php-file-iterator": "~1.4", + "phpunit/php-text-template": "~1.2", + "phpunit/php-timer": "^1.0.6", + "phpunit/phpunit-mock-objects": "^3.2", + "sebastian/comparator": "^1.2.4", + "sebastian/diff": "^1.4.3", + "sebastian/environment": "^1.3.4 || ^2.0", + "sebastian/exporter": "~2.0", + "sebastian/global-state": "^1.1", + "sebastian/object-enumerator": "~2.0", + "sebastian/resource-operations": "~1.0", + "sebastian/version": "^1.0.6|^2.0.1", + "symfony/yaml": "~2.1|~3.0|~4.0" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "3.0.2" }, "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^4.4" + "ext-pdo": "*" + }, + "suggest": { + "ext-xdebug": "*", + "phpunit/php-invoker": "~1.1" }, + "bin": [ + "phpunit" + ], "type": "library", - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] + "extra": { + "branch-alias": { + "dev-master": "5.7.x-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2017-11-10T14:09:06+00:00" + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2018-02-01T05:50:59+00:00" }, { - "name": "phpdocumentor/type-resolver", - "version": "0.4.0", + "name": "phpunit/phpunit-mock-objects", + "version": "3.4.4", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "a23b761686d50a560cc56233b9ecf49597cc9118" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118", + "reference": "a23b761686d50a560cc56233b9ecf49597cc9118", "shasum": "" }, "require": { - "php": "^5.5 || ^7.0", - "phpdocumentor/reflection-common": "^1.0" + "doctrine/instantiator": "^1.0.2", + "php": "^5.6 || ^7.0", + "phpunit/php-text-template": "^1.2", + "sebastian/exporter": "^1.2 || ^2.0" + }, + "conflict": { + "phpunit/phpunit": "<5.4.0" }, "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^5.2||^4.8.24" + "phpunit/phpunit": "^5.4" + }, + "suggest": { + "ext-soap": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "3.2.x-dev" } }, "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" } ], - "time": "2017-07-14T14:27:02+00:00" + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ], + "time": "2017-06-30T09:13:00+00:00" }, { - "name": "phpspec/prophecy", - "version": "1.7.4", + "name": "phpunit/phpunit-selenium", + "version": "3.0.3", "source": { "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "9f901e29c93dae4aa77c0bb161df4276f9c9a1be" + "url": "https://github.com/giorgiosironi/phpunit-selenium.git", + "reference": "343ba4e389ad97046c78fb2c7111e199795e7a80" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/9f901e29c93dae4aa77c0bb161df4276f9c9a1be", - "reference": "9f901e29c93dae4aa77c0bb161df4276f9c9a1be", + "url": "https://api.github.com/repos/giorgiosironi/phpunit-selenium/zipball/343ba4e389ad97046c78fb2c7111e199795e7a80", + "reference": "343ba4e389ad97046c78fb2c7111e199795e7a80", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", - "sebastian/comparator": "^1.1|^2.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0" + "ext-curl": "*", + "ext-dom": "*", + "php": ">=5.6", + "phpunit/phpunit": "~5.0", + "sebastian/comparator": "~1.0" }, "require-dev": { - "phpspec/phpspec": "^2.5|^3.2", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" + "phing/phing": "2.*" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.7.x-dev" - } - }, "autoload": { - "psr-0": { - "Prophecy\\": "src/" - } + "classmap": [ + "PHPUnit/" + ] }, "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "" + ], "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" + "name": "Giorgio Sironi", + "email": "info@giorgiosironi.com", + "role": "developer" + }, + { + "name": "Ivan Kurnosov", + "email": "zerkms@zerkms.com", + "role": "developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "original developer" }, { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" + "name": "Paul Briton", + "role": "developer" } ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", + "description": "Selenium Server integration for PHPUnit", + "homepage": "http://www.phpunit.de/", "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" + "phpunit", + "selenium", + "testing", + "xunit" ], - "time": "2018-02-11T18:49:29+00:00" + "time": "2017-01-23T22:12:35+00:00" }, { - "name": "phpstan/phpstan-shim", - "version": "0.9.2", + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/phpstan/phpstan-shim.git", - "reference": "e4720fb2916be05de02869780072253e7e0e8a75" + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-shim/zipball/e4720fb2916be05de02869780072253e7e0e8a75", - "reference": "e4720fb2916be05de02869780072253e7e0e8a75", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", "shasum": "" }, "require": { - "php": "~7.0" + "php": "^5.6 || ^7.0" }, - "replace": { - "phpstan/phpstan": "self.version" + "require-dev": { + "phpunit/phpunit": "^5.7 || ^6.0" }, - "bin": [ - "phpstan", - "phpstan.phar" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "0.9-dev" + "dev-master": "1.0.x-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], - "description": "PHPStan Phar distribution", - "time": "2018-01-28T14:29:27+00:00" + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "time": "2017-03-04T06:30:41+00:00" }, { - "name": "phpunit/dbunit", - "version": "2.0.3", + "name": "sebastian/comparator", + "version": "1.2.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/dbunit.git", - "reference": "5c35d74549c21ba55d0ea74ba89d191a51f8cf25" + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/dbunit/zipball/5c35d74549c21ba55d0ea74ba89d191a51f8cf25", - "reference": "5c35d74549c21ba55d0ea74ba89d191a51f8cf25", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", "shasum": "" }, "require": { - "ext-pdo": "*", - "ext-simplexml": "*", - "php": "^5.4 || ^7.0", - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0", - "symfony/yaml": "^2.1 || ^3.0" + "php": ">=5.3.3", + "sebastian/diff": "~1.2", + "sebastian/exporter": "~1.2 || ~2.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" }, - "bin": [ - "dbunit" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { @@ -10150,57 +10644,56 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "DbUnit port for PHP/PHPUnit to support database interaction testing.", - "homepage": "https://github.com/sebastianbergmann/dbunit/", + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "http://www.github.com/sebastianbergmann/comparator", "keywords": [ - "database", - "testing", - "xunit" + "comparator", + "compare", + "equality" ], - "time": "2016-12-02T14:39:14+00:00" + "time": "2017-01-29T09:50:25+00:00" }, { - "name": "phpunit/php-code-coverage", - "version": "4.0.8", + "name": "sebastian/diff", + "version": "1.4.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d" + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d", - "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", + "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-xmlwriter": "*", - "php": "^5.6 || ^7.0", - "phpunit/php-file-iterator": "^1.3", - "phpunit/php-text-template": "^1.2", - "phpunit/php-token-stream": "^1.4.2 || ^2.0", - "sebastian/code-unit-reverse-lookup": "^1.0", - "sebastian/environment": "^1.3.2 || ^2.0", - "sebastian/version": "^1.0 || ^2.0" + "php": "^5.3.3 || ^7.0" }, "require-dev": { - "ext-xdebug": "^2.1.4", - "phpunit/phpunit": "^5.7" - }, - "suggest": { - "ext-xdebug": "^2.5.1" + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0.x-dev" + "dev-master": "1.4-dev" } }, "autoload": { @@ -10213,42 +10706,46 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ - "coverage", - "testing", - "xunit" + "diff" ], - "time": "2017-04-02T07:44:40+00:00" + "time": "2017-05-22T07:24:03+00:00" }, { - "name": "phpunit/php-file-iterator", - "version": "1.4.5", + "name": "sebastian/environment", + "version": "2.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -10263,36 +10760,46 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", "keywords": [ - "filesystem", - "iterator" + "Xdebug", + "environment", + "hhvm" ], - "time": "2017-11-27T13:52:08+00:00" + "time": "2016-11-26T07:53:53+00:00" }, { - "name": "phpunit/php-text-template", - "version": "1.2.1", + "name": "sebastian/exporter", + "version": "2.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", + "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.3.3", + "sebastian/recursion-context": "~2.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "~4.4" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -10303,38 +10810,57 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" } ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", "keywords": [ - "template" + "export", + "exporter" ], - "time": "2015-06-21T13:50:34+00:00" + "time": "2016-11-19T08:54:04+00:00" }, { - "name": "phpunit/php-timer", - "version": "1.0.9", + "name": "sebastian/global-state", + "version": "1.1.1", "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": ">=5.3.3" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "phpunit/phpunit": "~4.2" + }, + "suggest": { + "ext-uopz": "*" }, "type": "library", "extra": { @@ -10354,42 +10880,41 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", "keywords": [ - "timer" + "global state" ], - "time": "2017-02-26T11:10:40+00:00" + "time": "2015-10-12T03:26:01+00:00" }, { - "name": "phpunit/php-token-stream", - "version": "1.4.12", + "name": "sebastian/object-enumerator", + "version": "2.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16" + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16", - "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7", + "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "php": ">=5.3.3" + "php": ">=5.6", + "sebastian/recursion-context": "~2.0" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "phpunit/phpunit": "~5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -10407,68 +10932,34 @@ "email": "sebastian@phpunit.de" } ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "time": "2017-12-04T08:55:13+00:00" + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "time": "2017-02-18T15:18:39+00:00" }, { - "name": "phpunit/phpunit", - "version": "5.7.27", + "name": "sebastian/recursion-context", + "version": "2.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c" + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c", - "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a", + "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "myclabs/deep-copy": "~1.3", - "php": "^5.6 || ^7.0", - "phpspec/prophecy": "^1.6.2", - "phpunit/php-code-coverage": "^4.0.4", - "phpunit/php-file-iterator": "~1.4", - "phpunit/php-text-template": "~1.2", - "phpunit/php-timer": "^1.0.6", - "phpunit/phpunit-mock-objects": "^3.2", - "sebastian/comparator": "^1.2.4", - "sebastian/diff": "^1.4.3", - "sebastian/environment": "^1.3.4 || ^2.0", - "sebastian/exporter": "~2.0", - "sebastian/global-state": "^1.1", - "sebastian/object-enumerator": "~2.0", - "sebastian/resource-operations": "~1.0", - "sebastian/version": "^1.0.6|^2.0.1", - "symfony/yaml": "~2.1|~3.0|~4.0" - }, - "conflict": { - "phpdocumentor/reflection-docblock": "3.0.2" + "php": ">=5.3.3" }, "require-dev": { - "ext-pdo": "*" - }, - "suggest": { - "ext-xdebug": "*", - "phpunit/php-invoker": "~1.1" + "phpunit/phpunit": "~4.4" }, - "bin": [ - "phpunit" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "5.7.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -10481,54 +10972,44 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" } ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "time": "2018-02-01T05:50:59+00:00" + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2016-11-19T07:33:16+00:00" }, { - "name": "phpunit/phpunit-mock-objects", - "version": "3.4.4", + "name": "sebastian/resource-operations", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "a23b761686d50a560cc56233b9ecf49597cc9118" + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118", - "reference": "a23b761686d50a560cc56233b9ecf49597cc9118", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.6 || ^7.0", - "phpunit/php-text-template": "^1.2", - "sebastian/exporter": "^1.2 || ^2.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.4" - }, - "suggest": { - "ext-soap": "*" + "php": ">=5.6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { @@ -10543,916 +11024,836 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" - ], - "time": "2017-06-30T09:13:00+00:00" + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "time": "2015-07-28T20:34:47+00:00" }, { - "name": "phpunit/phpunit-selenium", - "version": "3.0.3", + "name": "sebastian/version", + "version": "2.0.1", "source": { "type": "git", - "url": "https://github.com/giorgiosironi/phpunit-selenium.git", - "reference": "343ba4e389ad97046c78fb2c7111e199795e7a80" + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/giorgiosironi/phpunit-selenium/zipball/343ba4e389ad97046c78fb2c7111e199795e7a80", - "reference": "343ba4e389ad97046c78fb2c7111e199795e7a80", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", "shasum": "" }, "require": { - "ext-curl": "*", - "ext-dom": "*", - "php": ">=5.6", - "phpunit/phpunit": "~5.0", - "sebastian/comparator": "~1.0" - }, - "require-dev": { - "phing/phing": "2.*" + "php": ">=5.6" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { "classmap": [ - "PHPUnit/" + "src/" ] }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], "license": [ "BSD-3-Clause" ], "authors": [ - { - "name": "Giorgio Sironi", - "email": "info@giorgiosironi.com", - "role": "developer" - }, - { - "name": "Ivan Kurnosov", - "email": "zerkms@zerkms.com", - "role": "developer" - }, { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "original developer" - }, - { - "name": "Paul Briton", - "role": "developer" + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Selenium Server integration for PHPUnit", - "homepage": "http://www.phpunit.de/", - "keywords": [ - "phpunit", - "selenium", - "testing", - "xunit" - ], - "time": "2017-01-23T22:12:35+00:00" + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2016-10-03T07:35:21+00:00" }, { - "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.1", + "name": "sensio/generator-bundle", + "version": "v3.1.7", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + "url": "https://github.com/sensiolabs/SensioGeneratorBundle.git", + "reference": "28cbaa244bd0816fd8908b93f90380bcd7b67a65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "url": "https://api.github.com/repos/sensiolabs/SensioGeneratorBundle/zipball/28cbaa244bd0816fd8908b93f90380bcd7b67a65", + "reference": "28cbaa244bd0816fd8908b93f90380bcd7b67a65", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "symfony/console": "~2.7|~3.0", + "symfony/framework-bundle": "~2.7|~3.0", + "symfony/process": "~2.7|~3.0", + "symfony/yaml": "~2.7|~3.0", + "twig/twig": "^1.28.2|^2.0" }, "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.0" + "doctrine/orm": "~2.4", + "symfony/doctrine-bridge": "~2.7|~3.0", + "symfony/filesystem": "~2.7|~3.0", + "symfony/phpunit-bridge": "^3.3" }, - "type": "library", + "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "3.1.x-dev" } }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Sensio\\Bundle\\GeneratorBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "time": "2017-03-04T06:30:41+00:00" + "description": "This bundle generates code for you", + "time": "2017-12-07T15:36:41+00:00" }, { - "name": "sebastian/comparator", - "version": "1.2.4", + "name": "symfony/css-selector", + "version": "v4.2.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" + "url": "https://github.com/symfony/css-selector.git", + "reference": "aa9fa526ba1b2ec087ffdfb32753803d999fcfcd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/aa9fa526ba1b2ec087ffdfb32753803d999fcfcd", + "reference": "aa9fa526ba1b2ec087ffdfb32753803d999fcfcd", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/diff": "~1.2", - "sebastian/exporter": "~1.2 || ~2.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" + "php": "^7.1.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "4.2-dev" } }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" }, { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "http://www.github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "time": "2017-01-29T09:50:25+00:00" + "description": "Symfony CssSelector Component", + "homepage": "https://symfony.com", + "time": "2018-11-11T19:52:12+00:00" }, { - "name": "sebastian/diff", - "version": "1.4.3", + "name": "symfony/polyfill-php72", + "version": "v1.10.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9050816e2ca34a8e916c3a0ae8b9c2fccf68b631", + "reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "php": ">=5.3.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "1.9-dev" } }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + }, + "files": [ + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", "keywords": [ - "diff" + "compatibility", + "polyfill", + "portable", + "shim" ], - "time": "2017-05-22T07:24:03+00:00" + "time": "2018-09-21T13:07:52+00:00" }, { - "name": "sebastian/environment", - "version": "2.0.0", + "name": "symfony/var-dumper", + "version": "v3.4.20", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" + "url": "https://github.com/symfony/var-dumper.git", + "reference": "6867713afe6c50ade2f34ed6435563b065a52145" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac", - "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6867713afe6c50ade2f34ed6435563b065a52145", + "reference": "6867713afe6c50ade2f34ed6435563b065a52145", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" }, "require-dev": { - "phpunit/phpunit": "^5.0" + "ext-iconv": "*", + "twig/twig": "~1.34|~2.4" + }, + "suggest": { + "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", + "ext-intl": "To show region name in time zone dump", + "ext-symfony_debug": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.4-dev" } }, "autoload": { - "classmap": [ - "src/" + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", + "description": "Symfony mechanism for exploring and dumping PHP variables", + "homepage": "https://symfony.com", "keywords": [ - "Xdebug", - "environment", - "hhvm" + "debug", + "dump" ], - "time": "2016-11-26T07:53:53+00:00" + "time": "2018-11-20T16:10:26+00:00" }, { - "name": "sebastian/exporter", - "version": "2.0.0", + "name": "symfony/web-profiler-bundle", + "version": "v2.8.49", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4" + "url": "https://github.com/symfony/web-profiler-bundle.git", + "reference": "3aeef1328e46e83f7e8822f8a5093faa8ee776c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", - "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/3aeef1328e46e83f7e8822f8a5093faa8ee776c2", + "reference": "3aeef1328e46e83f7e8822f8a5093faa8ee776c2", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/recursion-context": "~2.0" + "php": ">=5.3.9", + "symfony/http-kernel": "~2.4|~3.0.0", + "symfony/routing": "~2.2|~3.0.0", + "symfony/twig-bridge": "~2.7|~3.0.0", + "twig/twig": "~1.34|~2.4" }, "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "~4.4" + "symfony/config": "~2.2|~3.0.0", + "symfony/console": "~2.3|~3.0.0", + "symfony/dependency-injection": "~2.2|~3.0.0", + "symfony/stopwatch": "~2.2|~3.0.0" }, - "type": "library", + "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "2.8-dev" } }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Bundle\\WebProfilerBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony WebProfilerBundle", + "homepage": "https://symfony.com", + "time": "2018-11-11T11:18:13+00:00" + }, + { + "name": "thedmsgroup/mautic-api-services-bundle", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/TheDMSGroup/mautic-api-services.git", + "reference": "7cebb2338946c353386841d5e96d0f499998b297" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/TheDMSGroup/mautic-api-services/zipball/7cebb2338946c353386841d5e96d0f499998b297", + "reference": "7cebb2338946c353386841d5e96d0f499998b297", + "shasum": "" + }, + "require": { + "mautic/composer-plugin": "^1.0" + }, + "type": "mautic-plugin", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-3.0-only" + ], + "authors": [ { - "name": "Adam Harvey", - "email": "aharvey@php.net" + "name": "Scott Shipman", + "email": "scottshipmang@gmail.com" } ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", + "description": "Extends Mautic API for configurable service calls.", "keywords": [ - "export", - "exporter" + "Marketing Automation", + "Mautic", + "marketing", + "plugin" ], - "time": "2016-11-19T08:54:04+00:00" + "time": "2018-08-14T12:58:15+00:00" }, { - "name": "sebastian/global-state", - "version": "1.1.1", + "name": "thedmsgroup/mautic-campaign-watch-bundle", + "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" + "url": "https://github.com/TheDMSGroup/mautic-campaign-watch.git", + "reference": "8b2e47ee7f50031ff30809baba59e72df5cbf8be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", + "url": "https://api.github.com/repos/TheDMSGroup/mautic-campaign-watch/zipball/8b2e47ee7f50031ff30809baba59e72df5cbf8be", + "reference": "8b2e47ee7f50031ff30809baba59e72df5cbf8be", "shasum": "" }, "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.2" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] + "mautic/composer-plugin": "^1.0" }, + "type": "mautic-plugin", "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "GPL-3.0-only" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Heath Dutton", + "email": "heathdutton@gmail.com" } ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", + "description": "Visual improvements for campaigns.", "keywords": [ - "global state" + "Marketing Automation", + "Mautic", + "marketing", + "plugin" ], - "time": "2015-10-12T03:26:01+00:00" + "time": "2018-10-11T15:39:19+00:00" }, { - "name": "sebastian/object-enumerator", - "version": "2.0.1", + "name": "thedmsgroup/mautic-contact-client-bundle", + "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7" + "url": "https://github.com/TheDMSGroup/mautic-contact-client.git", + "reference": "5c2e6f18fb56409bf0e0e5e3cddbe72e34126a6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7", - "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7", + "url": "https://api.github.com/repos/TheDMSGroup/mautic-contact-client/zipball/5c2e6f18fb56409bf0e0e5e3cddbe72e34126a6a", + "reference": "5c2e6f18fb56409bf0e0e5e3cddbe72e34126a6a", "shasum": "" }, "require": { - "php": ">=5.6", - "sebastian/recursion-context": "~2.0" - }, - "require-dev": { - "phpunit/phpunit": "~5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] + "league/flysystem": "^1.0", + "league/flysystem-aws-s3-v3": "^1.0", + "league/flysystem-dropbox": "^1.0", + "league/flysystem-sftp": "^1.0", + "mautic/composer-plugin": "^1.0", + "mustache/mustache": "^2.12", + "namshi/cuzzle": "^2.0" }, + "type": "mautic-plugin", "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "GPL-3.0-only" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Heath Dutton", + "email": "heathdutton@gmail.com" } ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2017-02-18T15:18:39+00:00" + "description": "Create custom integrations without writing code.", + "keywords": [ + "Marketing Automation", + "Mautic", + "marketing", + "plugin" + ], + "time": "2018-12-10T15:50:24+00:00" }, { - "name": "sebastian/recursion-context", - "version": "2.0.0", + "name": "thedmsgroup/mautic-contact-ledger-bundle", + "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a" + "url": "https://github.com/TheDMSGroup/mautic-contact-ledger.git", + "reference": "b5f796fea3bc9d6d3acc3b34157bf026d2a228ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a", - "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a", + "url": "https://api.github.com/repos/TheDMSGroup/mautic-contact-ledger/zipball/b5f796fea3bc9d6d3acc3b34157bf026d2a228ba", + "reference": "b5f796fea3bc9d6d3acc3b34157bf026d2a228ba", "shasum": "" }, "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] + "mautic/composer-plugin": "^1.0" }, + "type": "mautic-plugin", "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "GPL-3.0-only" ], "authors": [ { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" + "name": "Nicholai Bush", + "email": "nicholaibush@yahoo.com" } ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2016-11-19T07:33:16+00:00" + "description": "Historical accounting for contacts", + "keywords": [ + "Marketing Automation", + "Mautic", + "marketing", + "plugin" + ], + "time": "2018-12-03T15:51:24+00:00" }, { - "name": "sebastian/resource-operations", - "version": "1.0.0", + "name": "thedmsgroup/mautic-contact-source-bundle", + "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" + "url": "https://github.com/TheDMSGroup/mautic-contact-source.git", + "reference": "4b423137f9591fabbf122c43a4ae4977c1d61a95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "url": "https://api.github.com/repos/TheDMSGroup/mautic-contact-source/zipball/4b423137f9591fabbf122c43a4ae4977c1d61a95", + "reference": "4b423137f9591fabbf122c43a4ae4977c1d61a95", "shasum": "" }, "require": { - "php": ">=5.6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] + "mautic/composer-plugin": "^1.0" }, + "type": "mautic-plugin", "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "GPL-3.0-only" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Heath Dutton", + "email": "heathdutton@gmail.com" } ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2015-07-28T20:34:47+00:00" + "description": "Creates API endpoints for receiving contacts from external sources.", + "keywords": [ + "Marketing Automation", + "Mautic", + "marketing", + "plugin" + ], + "time": "2018-12-11T15:51:55+00:00" }, { - "name": "sebastian/version", - "version": "2.0.1", + "name": "thedmsgroup/mautic-dashboard-warm-bundle", + "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + "url": "https://github.com/TheDMSGroup/mautic-dashboard-warm.git", + "reference": "75e0558192f478127d4080099042eff1e0297557" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "url": "https://api.github.com/repos/TheDMSGroup/mautic-dashboard-warm/zipball/75e0558192f478127d4080099042eff1e0297557", + "reference": "75e0558192f478127d4080099042eff1e0297557", "shasum": "" }, "require": { - "php": ">=5.6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] + "mautic/composer-plugin": "^1.0" }, + "type": "mautic-plugin", "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "GPL-3.0-only" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Heath Dutton", + "email": "heathdutton@gmail.com" } ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "time": "2016-10-03T07:35:21+00:00" + "description": "Improves the performance of the dashboard by sharing/extending/warming caches.", + "keywords": [ + "Marketing Automation", + "Mautic", + "marketing", + "plugin" + ], + "time": "2018-11-27T17:35:44+00:00" }, { - "name": "sensio/generator-bundle", - "version": "v3.1.7", + "name": "thedmsgroup/mautic-enhancer-bundle", + "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/sensiolabs/SensioGeneratorBundle.git", - "reference": "28cbaa244bd0816fd8908b93f90380bcd7b67a65" + "url": "https://github.com/TheDMSGroup/mautic-enhancer.git", + "reference": "144391007de0af2fb679f064e97f76d74283b649" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sensiolabs/SensioGeneratorBundle/zipball/28cbaa244bd0816fd8908b93f90380bcd7b67a65", - "reference": "28cbaa244bd0816fd8908b93f90380bcd7b67a65", + "url": "https://api.github.com/repos/TheDMSGroup/mautic-enhancer/zipball/144391007de0af2fb679f064e97f76d74283b649", + "reference": "144391007de0af2fb679f064e97f76d74283b649", "shasum": "" }, "require": { - "symfony/console": "~2.7|~3.0", - "symfony/framework-bundle": "~2.7|~3.0", - "symfony/process": "~2.7|~3.0", - "symfony/yaml": "~2.7|~3.0", - "twig/twig": "^1.28.2|^2.0" - }, - "require-dev": { - "doctrine/orm": "~2.4", - "symfony/doctrine-bridge": "~2.7|~3.0", - "symfony/filesystem": "~2.7|~3.0", - "symfony/phpunit-bridge": "^3.3" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "3.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Sensio\\Bundle\\GeneratorBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "ext-curl": "*", + "ext-dom": "*", + "ext-json": "*", + "ext-simplexml": "*", + "league/flysystem": "^1.0", + "league/flysystem-sftp": "^1.0", + "mautic/composer-plugin": "^1.0" }, + "type": "mautic-plugin", "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "GPL-3.0-only" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicholai Bush", + "email": "nicholaibush@yahoo.com" + }, + { + "name": "Scott Shipman", + "email": "K.scott.shipman@gmail.com" } ], - "description": "This bundle generates code for you", - "time": "2017-12-07T15:36:41+00:00" + "description": "Various contact enhancer integrations for Mautic.", + "keywords": [ + "Marketing Automation", + "Mautic", + "marketing", + "plugin" + ], + "time": "2018-11-14T14:12:16+00:00" }, { - "name": "symfony/css-selector", - "version": "v3.4.4", + "name": "thedmsgroup/mautic-extended-field-bundle", + "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "e66394bc7610e69279bfdb3ab11b4fe65403f556" + "url": "https://github.com/TheDMSGroup/mautic-extended-field.git", + "reference": "84e8bcb13028aff08ca7a42c05bae1d0a8b3f586" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/e66394bc7610e69279bfdb3ab11b4fe65403f556", - "reference": "e66394bc7610e69279bfdb3ab11b4fe65403f556", + "url": "https://api.github.com/repos/TheDMSGroup/mautic-extended-field/zipball/84e8bcb13028aff08ca7a42c05bae1d0a8b3f586", + "reference": "84e8bcb13028aff08ca7a42c05bae1d0a8b3f586", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\CssSelector\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "mautic/composer-plugin": "^1.0" }, + "type": "mautic-plugin", "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "GPL-3.0-only" ], "authors": [ { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" + "name": "Heath Dutton", + "email": "heathdutton@gmail.com" }, { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicholai Bush", + "email": "nicholaibush@yahoo.com" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Scott Shipman", + "email": "K.scott.shipman@gmail.com" } ], - "description": "Symfony CssSelector Component", - "homepage": "https://symfony.com", - "time": "2018-01-03T07:37:34+00:00" + "description": "Extends custom fields for scalability and HIPAA/PCI compliance.", + "keywords": [ + "Marketing Automation", + "Mautic", + "marketing", + "plugin" + ], + "time": "2018-12-11T14:34:34+00:00" }, { - "name": "symfony/polyfill-php72", - "version": "v1.7.0", + "name": "thedmsgroup/mautic-health-bundle", + "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "8eca20c8a369e069d4f4c2ac9895144112867422" + "url": "https://github.com/TheDMSGroup/mautic-health.git", + "reference": "b5a861427dfd89262d1078e348212c286e417596" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/8eca20c8a369e069d4f4c2ac9895144112867422", - "reference": "8eca20c8a369e069d4f4c2ac9895144112867422", + "url": "https://api.github.com/repos/TheDMSGroup/mautic-health/zipball/b5a861427dfd89262d1078e348212c286e417596", + "reference": "b5a861427dfd89262d1078e348212c286e417596", "shasum": "" }, "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.7-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - }, - "files": [ - "bootstrap.php" - ] + "mautic/composer-plugin": "^1.0" }, + "type": "mautic-plugin", "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "GPL-3.0-only" ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Heath Dutton", + "email": "heathdutton@gmail.com" } ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", - "homepage": "https://symfony.com", + "description": "Checks the health of the Mautic instance.", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "Marketing Automation", + "Mautic", + "marketing", + "plugin" ], - "time": "2018-01-31T17:43:24+00:00" + "time": "2018-10-04T19:14:14+00:00" }, { - "name": "symfony/var-dumper", - "version": "v3.4.4", + "name": "thedmsgroup/mautic-media-bundle", + "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "472a9849930cf21f73abdb02240f17cf5b5bd1a7" + "url": "https://github.com/TheDMSGroup/mautic-media.git", + "reference": "fae8b9c2fb8d271eb685a0a86768ff0c54250c9d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/472a9849930cf21f73abdb02240f17cf5b5bd1a7", - "reference": "472a9849930cf21f73abdb02240f17cf5b5bd1a7", + "url": "https://api.github.com/repos/TheDMSGroup/mautic-media/zipball/fae8b9c2fb8d271eb685a0a86768ff0c54250c9d", + "reference": "fae8b9c2fb8d271eb685a0a86768ff0c54250c9d", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" - }, - "require-dev": { - "ext-iconv": "*", - "twig/twig": "~1.34|~2.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "ext-symfony_debug": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "files": [ - "Resources/functions/dump.php" - ], - "psr-4": { - "Symfony\\Component\\VarDumper\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "mautic/composer-plugin": "^1.0" }, + "type": "mautic-plugin", "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "GPL-3.0-only" ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Heath Dutton", + "email": "heathdutton@gmail.com" } ], - "description": "Symfony mechanism for exploring and dumping PHP variables", - "homepage": "https://symfony.com", + "description": "Pulls cost data from media advertising services.", "keywords": [ - "debug", - "dump" + "Marketing Automation", + "Mautic", + "marketing", + "plugin" ], - "time": "2018-01-29T09:03:43+00:00" + "time": "2018-12-11T17:50:03+00:00" }, { - "name": "symfony/web-profiler-bundle", - "version": "v2.8.34", + "name": "thedmsgroup/mautic-segment-extras-bundle", + "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "344fd9da9942523054d145d85a939c5196fce5ac" + "url": "https://github.com/TheDMSGroup/mautic-segment-extras.git", + "reference": "11246df27e8440cb030f9ff9ba1e0bc35b4f21b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/344fd9da9942523054d145d85a939c5196fce5ac", - "reference": "344fd9da9942523054d145d85a939c5196fce5ac", + "url": "https://api.github.com/repos/TheDMSGroup/mautic-segment-extras/zipball/11246df27e8440cb030f9ff9ba1e0bc35b4f21b6", + "reference": "11246df27e8440cb030f9ff9ba1e0bc35b4f21b6", "shasum": "" }, "require": { - "php": ">=5.3.9", - "symfony/http-kernel": "~2.4|~3.0.0", - "symfony/routing": "~2.2|~3.0.0", - "symfony/twig-bridge": "~2.7|~3.0.0", - "twig/twig": "~1.34|~2.4" - }, - "require-dev": { - "symfony/config": "~2.2|~3.0.0", - "symfony/console": "~2.3|~3.0.0", - "symfony/dependency-injection": "~2.2|~3.0.0", - "symfony/stopwatch": "~2.2|~3.0.0" + "mautic/composer-plugin": "^1.0" }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" + "type": "mautic-plugin", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-3.0-only" + ], + "authors": [ + { + "name": "Scott Shipman", + "email": "scottshipmang@gmail.com" } + ], + "description": "Extends Mautic Lead Bundle's Lead List (Segment) functionality.", + "keywords": [ + "Marketing Automation", + "Mautic", + "marketing", + "plugin" + ], + "time": "2018-11-12T14:19:41+00:00" + }, + { + "name": "thedmsgroup/mautic-usstate-normalizer-bundle", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/TheDMSGroup/mautic-usstate-normalizer.git", + "reference": "fe46346ed597146ac9aadb86dfadbe115bbef2d6" }, - "autoload": { - "psr-4": { - "Symfony\\Bundle\\WebProfilerBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/TheDMSGroup/mautic-usstate-normalizer/zipball/fe46346ed597146ac9aadb86dfadbe115bbef2d6", + "reference": "fe46346ed597146ac9aadb86dfadbe115bbef2d6", + "shasum": "" + }, + "require": { + "mautic/composer-plugin": "^1.0" }, + "type": "mautic-plugin", "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "GPL-3.0-only" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Nicholai Bush", + "email": "nicholaibush@yahoo.com" } ], - "description": "Symfony WebProfilerBundle", - "homepage": "https://symfony.com", - "time": "2018-01-07T17:01:19+00:00" + "description": "Normalize US States to their abbreviations", + "keywords": [ + "Marketing Automation", + "Mautic", + "marketing", + "plugin" + ], + "time": "2018-07-26T19:02:53+00:00" }, { "name": "webfactory/exceptions-bundle", - "version": "4.3.0", + "version": "4.4.0", "source": { "type": "git", "url": "https://github.com/webfactory/exceptions-bundle.git", - "reference": "21520dcb9eabe1359a888b7dce556b93e2e89cef" + "reference": "6cfd28eefc7d48cd3921f8b6e3f9115239c5e08e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webfactory/exceptions-bundle/zipball/21520dcb9eabe1359a888b7dce556b93e2e89cef", - "reference": "21520dcb9eabe1359a888b7dce556b93e2e89cef", + "url": "https://api.github.com/repos/webfactory/exceptions-bundle/zipball/6cfd28eefc7d48cd3921f8b6e3f9115239c5e08e", + "reference": "6cfd28eefc7d48cd3921f8b6e3f9115239c5e08e", "shasum": "" }, "require": { - "symfony/twig-bundle": "~2.2" + "symfony/twig-bundle": "^2.2||^3.0" }, "require-dev": { "phpunit/phpunit": "~4.0", - "symfony/framework-bundle": "~2.2" + "symfony/framework-bundle": "^2.2||^3.0" }, "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-default": "3.1.x-dev" - } - }, "autoload": { "psr-4": { "Webfactory\\Bundle\\ExceptionsBundle\\": "" @@ -11470,9 +11871,9 @@ "role": "Developer" } ], - "description": "A simple controller to display error pages during development plus some building blocks for more user-friendly error pages.", - "homepage": "http://inside.webfactory.de/de/blog/symfony2-exception-handling-and-custom-error-pages-explained.html", - "time": "2016-01-19T14:46:51+00:00" + "description": "Building blocks for more user-friendly error pages, plus a simple controller to display error pages during development (helpful prior to Symfony 2.6.3)", + "homepage": "https://www.webfactory.de/blog/symfony2-exception-handling-and-custom-error-pages-explained", + "time": "2018-10-01T15:25:51+00:00" }, { "name": "webmozart/assert", @@ -11528,29 +11929,12 @@ "aliases": [], "minimum-stability": "dev", "stability-flags": { - "mautic/core": 20, - "willdurand/oauth-server-bundle": 20, - "thedmsgroup/mautic-eb-custom": 20, - "thedmsgroup/mautic-extended-field-bundle": 20, - "thedmsgroup/mautic-contact-client-bundle": 20, - "thedmsgroup/mautic-contact-ledger-bundle": 20, - "thedmsgroup/mautic-contact-source-bundle": 20, - "thedmsgroup/mautic-enhancer-bundle": 20, - "thedmsgroup/mautic-usstate-normalizer-bundle": 20, - "thedmsgroup/mautic-health-bundle": 20, - "thedmsgroup/mautic-api-services-bundle": 20, - "thedmsgroup/mautic-campaign-watch-bundle": 20, - "thedmsgroup/mautic-dashboard-warm-bundle": 20, - "thedmsgroup/mautic-segment-extras-bundle": 20 + "mautic/core": 20 }, "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": ">=5.6.19 <7.2", - "ext-curl": "*", - "ext-dom": "*", - "ext-json": "*", - "ext-simplexml": "*" + "php": ">=5.6.19 <7.3" }, "platform-dev": [] } diff --git a/composer.lock.dev b/composer.lock.dev index d7d1a58..68b9cc8 100644 --- a/composer.lock.dev +++ b/composer.lock.dev @@ -4,47 +4,64 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "ce40c5e79c01b2ce0de8cc61bbe624f8", + "content-hash": "7e7b2413b9cdb3e1f5f03e60f995ddd7", "packages": [ { "name": "aws/aws-sdk-php", - "version": "2.8.31", + "version": "3.36.0", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "64fa4b07f056e338a5f0f29eece75babaa83af68" + "reference": "69321675769dd3e3d00a94bfdc747bd3a5b75b3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/64fa4b07f056e338a5f0f29eece75babaa83af68", - "reference": "64fa4b07f056e338a5f0f29eece75babaa83af68", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/69321675769dd3e3d00a94bfdc747bd3a5b75b3b", + "reference": "69321675769dd3e3d00a94bfdc747bd3a5b75b3b", "shasum": "" }, "require": { - "guzzle/guzzle": "~3.7", - "php": ">=5.3.3" + "ext-json": "*", + "ext-pcre": "*", + "ext-simplexml": "*", + "ext-spl": "*", + "guzzlehttp/guzzle": "^5.3.1|^6.2.1", + "guzzlehttp/promises": "~1.0", + "guzzlehttp/psr7": "^1.4.1", + "mtdowling/jmespath.php": "~2.2", + "php": ">=5.5" }, "require-dev": { - "doctrine/cache": "~1.0", + "andrewsville/php-token-reflection": "^1.4", + "aws/aws-php-sns-message-validator": "~1.0", + "behat/behat": "~3.0", + "doctrine/cache": "~1.4", + "ext-dom": "*", "ext-openssl": "*", - "monolog/monolog": "~1.4", - "phpunit/phpunit": "~4.0", - "phpunit/phpunit-mock-objects": "2.3.1", - "symfony/yaml": "~2.1" + "nette/neon": "^2.3", + "phpunit/phpunit": "^4.8.35|^5.4.0", + "psr/cache": "^1.0" }, "suggest": { - "doctrine/cache": "Adds support for caching of credentials and responses", - "ext-apc": "Allows service description opcode caching, request and response caching, and credentials caching", - "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages", - "monolog/monolog": "Adds support for logging HTTP requests and responses", - "symfony/yaml": "Eases the ability to write manifests for creating jobs in AWS Import/Export" + "aws/aws-php-sns-message-validator": "To validate incoming SNS notifications", + "doctrine/cache": "To use the DoctrineCacheAdapter", + "ext-curl": "To send requests using cURL", + "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages" }, "type": "library", - "autoload": { - "psr-0": { - "Aws": "src/" + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" } }, + "autoload": { + "psr-4": { + "Aws\\": "src/" + }, + "files": [ + "src/functions.php" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ "Apache-2.0" @@ -67,7 +84,7 @@ "s3", "sdk" ], - "time": "2016-07-25T18:03:20+00:00" + "time": "2017-09-01T22:52:38+00:00" }, { "name": "clue/stream-filter", @@ -123,16 +140,16 @@ }, { "name": "composer/ca-bundle", - "version": "1.1.0", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "943b2c4fcad1ef178d16a713c2468bf7e579c288" + "reference": "8afa52cd417f4ec417b4bfe86b68106538a87660" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/943b2c4fcad1ef178d16a713c2468bf7e579c288", - "reference": "943b2c4fcad1ef178d16a713c2468bf7e579c288", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/8afa52cd417f4ec417b4bfe86b68106538a87660", + "reference": "8afa52cd417f4ec417b4bfe86b68106538a87660", "shasum": "" }, "require": { @@ -141,7 +158,7 @@ "php": "^5.3.2 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5", "psr/log": "^1.0", "symfony/process": "^2.5 || ^3.0 || ^4.0" }, @@ -175,7 +192,7 @@ "ssl", "tls" ], - "time": "2017-11-29T09:37:33+00:00" + "time": "2018-10-18T06:09:13+00:00" }, { "name": "debril/rss-atom-bundle", @@ -372,20 +389,20 @@ }, { "name": "doctrine/collections", - "version": "v1.4.0", + "version": "v1.5.0", "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "1a4fb7e902202c33cce8c55989b945612943c2ba" + "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/1a4fb7e902202c33cce8c55989b945612943c2ba", - "reference": "1a4fb7e902202c33cce8c55989b945612943c2ba", + "url": "https://api.github.com/repos/doctrine/collections/zipball/a01ee38fcd999f34d9bfbcee59dbda5105449cbf", + "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.1" }, "require-dev": { "doctrine/coding-standard": "~0.1@dev", @@ -435,7 +452,7 @@ "collections", "iterator" ], - "time": "2017-01-03T10:49:41+00:00" + "time": "2017-07-22T10:37:32+00:00" }, { "name": "doctrine/common", @@ -719,43 +736,43 @@ "orm", "persistence" ], - "time": "2017-10-04T22:58:25+00:00" + "time": "2017-10-11T19:48:03+00:00" }, { "name": "doctrine/doctrine-cache-bundle", - "version": "1.3.2", + "version": "1.3.5", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineCacheBundle.git", - "reference": "9baecbd6bfdd1123b0cf8c1b88fee0170a84ddd1" + "reference": "5514c90d9fb595e1095e6d66ebb98ce9ef049927" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/9baecbd6bfdd1123b0cf8c1b88fee0170a84ddd1", - "reference": "9baecbd6bfdd1123b0cf8c1b88fee0170a84ddd1", + "url": "https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/5514c90d9fb595e1095e6d66ebb98ce9ef049927", + "reference": "5514c90d9fb595e1095e6d66ebb98ce9ef049927", "shasum": "" }, "require": { "doctrine/cache": "^1.4.2", "doctrine/inflector": "~1.0", "php": ">=5.3.2", - "symfony/doctrine-bridge": "~2.2|~3.0|~4.0" + "symfony/doctrine-bridge": "~2.7|~3.3|~4.0" }, "require-dev": { "instaclick/coding-standard": "~1.1", "instaclick/object-calisthenics-sniffs": "dev-master", "instaclick/symfony2-coding-standard": "dev-remaster", - "phpunit/phpunit": "~4", + "phpunit/phpunit": "~4.8.36|~5.6|~6.5|~7.0", "predis/predis": "~0.8", "satooshi/php-coveralls": "^1.0", "squizlabs/php_codesniffer": "~1.5", - "symfony/console": "~2.2|~3.0|~4.0", - "symfony/finder": "~2.2|~3.0|~4.0", - "symfony/framework-bundle": "~2.2|~3.0|~4.0", - "symfony/phpunit-bridge": "~2.7|~3.0|~4.0", - "symfony/security-acl": "~2.3|~3.0", - "symfony/validator": "~2.2|~3.0|~4.0", - "symfony/yaml": "~2.2|~3.0|~4.0" + "symfony/console": "~2.7|~3.3|~4.0", + "symfony/finder": "~2.7|~3.3|~4.0", + "symfony/framework-bundle": "~2.7|~3.3|~4.0", + "symfony/phpunit-bridge": "~2.7|~3.3|~4.0", + "symfony/security-acl": "~2.7|~3.3", + "symfony/validator": "~2.7|~3.3|~4.0", + "symfony/yaml": "~2.7|~3.3|~4.0" }, "suggest": { "symfony/security-acl": "For using this bundle to cache ACLs" @@ -769,7 +786,10 @@ "autoload": { "psr-4": { "Doctrine\\Bundle\\DoctrineCacheBundle\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -802,12 +822,12 @@ } ], "description": "Symfony Bundle for Doctrine Cache", - "homepage": "http://www.doctrine-project.org", + "homepage": "https://www.doctrine-project.org", "keywords": [ "cache", "caching" ], - "time": "2017-09-29T14:39:10+00:00" + "time": "2018-11-09T06:25:35+00:00" }, { "name": "doctrine/doctrine-fixtures-bundle", @@ -926,33 +946,33 @@ }, { "name": "doctrine/inflector", - "version": "v1.1.0", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "90b2128806bfde671b6952ab8bea493942c1fdae" + "reference": "5527a48b7313d15261292c149e55e26eae771b0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae", - "reference": "90b2128806bfde671b6952ab8bea493942c1fdae", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a", + "reference": "5527a48b7313d15261292c149e55e26eae771b0a", "shasum": "" }, "require": { - "php": ">=5.3.2" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "4.*" + "phpunit/phpunit": "^6.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "1.3.x-dev" } }, "autoload": { - "psr-0": { - "Doctrine\\Common\\Inflector\\": "lib/" + "psr-4": { + "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" } }, "notification-url": "https://packagist.org/downloads/", @@ -989,36 +1009,36 @@ "singularize", "string" ], - "time": "2015-11-06T14:35:42+00:00" + "time": "2018-01-09T20:05:19+00:00" }, { "name": "doctrine/instantiator", - "version": "1.0.5", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", "shasum": "" }, "require": { - "php": ">=5.3,<8.0-DEV" + "php": "^7.1" }, "require-dev": { "athletic/athletic": "~0.1.8", "ext-pdo": "*", "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0" + "phpunit/phpunit": "^6.2.3", + "squizlabs/php_codesniffer": "^3.0.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { @@ -1043,7 +1063,7 @@ "constructor", "instantiate" ], - "time": "2015-06-14T21:17:01+00:00" + "time": "2017-07-22T11:58:36+00:00" }, { "name": "doctrine/lexer", @@ -1602,25 +1622,24 @@ }, { "name": "geoip2/geoip2", - "version": "v2.8.0", + "version": "v2.9.0", "source": { "type": "git", "url": "https://github.com/maxmind/GeoIP2-php.git", - "reference": "63b0d87d47ee8c9431bff70244401db5ced82bd9" + "reference": "a807fbf65212eef5d8d2db1a1b31082b53633d77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maxmind/GeoIP2-php/zipball/63b0d87d47ee8c9431bff70244401db5ced82bd9", - "reference": "63b0d87d47ee8c9431bff70244401db5ced82bd9", + "url": "https://api.github.com/repos/maxmind/GeoIP2-php/zipball/a807fbf65212eef5d8d2db1a1b31082b53633d77", + "reference": "a807fbf65212eef5d8d2db1a1b31082b53633d77", "shasum": "" }, "require": { "maxmind-db/reader": "~1.0", - "maxmind/web-service-common": "~0.4", + "maxmind/web-service-common": "~0.5", "php": ">=5.4" }, "require-dev": { - "apigen/apigen": "*", "friendsofphp/php-cs-fixer": "2.*", "phpunit/phpunit": "4.*", "squizlabs/php_codesniffer": "3.*" @@ -1651,20 +1670,20 @@ "geolocation", "maxmind" ], - "time": "2018-01-18T21:30:24+00:00" + "time": "2018-04-10T15:32:59+00:00" }, { "name": "giggsey/libphonenumber-for-php", - "version": "8.8.11", + "version": "8.10.2", "source": { "type": "git", "url": "https://github.com/giggsey/libphonenumber-for-php.git", - "reference": "919d24a13ff772b6af07d0f3ffefe8963cfb635c" + "reference": "a71f260c2efce10ded8af030a20fa13edfb0e9be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/giggsey/libphonenumber-for-php/zipball/919d24a13ff772b6af07d0f3ffefe8963cfb635c", - "reference": "919d24a13ff772b6af07d0f3ffefe8963cfb635c", + "url": "https://api.github.com/repos/giggsey/libphonenumber-for-php/zipball/a71f260c2efce10ded8af030a20fa13edfb0e9be", + "reference": "a71f260c2efce10ded8af030a20fa13edfb0e9be", "shasum": "" }, "require": { @@ -1677,8 +1696,8 @@ "pear/pear_exception": "^1.0", "pear/versioncontrol_git": "^0.5", "phing/phing": "^2.7", - "phpunit/phpunit": "^4.8|^5.0", - "satooshi/php-coveralls": "^1.0", + "php-coveralls/php-coveralls": "^1.0|^2.0", + "phpunit/phpunit": "^4.8.36|^5.0", "symfony/console": "^2.8|^3.0" }, "type": "library", @@ -1719,20 +1738,20 @@ "phonenumber", "validation" ], - "time": "2018-02-07T11:27:18+00:00" + "time": "2018-12-06T10:42:08+00:00" }, { "name": "giggsey/locale", - "version": "1.4", + "version": "1.6", "source": { "type": "git", "url": "https://github.com/giggsey/Locale.git", - "reference": "e351a72ad6af6b41b690efdeffe1138fe5cc8b9c" + "reference": "da6845720b5d104d319d7e84576f54e44dd9e4f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/giggsey/Locale/zipball/e351a72ad6af6b41b690efdeffe1138fe5cc8b9c", - "reference": "e351a72ad6af6b41b690efdeffe1138fe5cc8b9c", + "url": "https://api.github.com/repos/giggsey/Locale/zipball/da6845720b5d104d319d7e84576f54e44dd9e4f5", + "reference": "da6845720b5d104d319d7e84576f54e44dd9e4f5", "shasum": "" }, "require": { @@ -1745,10 +1764,10 @@ "phing/phing": "~2.7", "phpunit/phpunit": "^4.8|^5.0", "satooshi/php-coveralls": "^1.0", - "symfony/console": "^2.8|^3.0", - "symfony/filesystem": "^2.8|^3.0", - "symfony/finder": "^2.8|^3.0", - "symfony/process": "^2.8|^3.0" + "symfony/console": "^2.8|^3.0|^4.0", + "symfony/filesystem": "^2.8|^3.0|^4.0", + "symfony/finder": "^2.8|^3.0|^4.0", + "symfony/process": "^2.8|^3.0|^4.0" }, "type": "library", "autoload": { @@ -1768,7 +1787,7 @@ } ], "description": "Locale functions required by libphonenumber-for-php", - "time": "2017-11-01T21:34:27+00:00" + "time": "2018-10-18T07:17:52+00:00" }, { "name": "guzzle/guzzle", @@ -1868,16 +1887,16 @@ }, { "name": "guzzlehttp/guzzle", - "version": "6.3.0", + "version": "6.3.3", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699" + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/f4db5a78a5ea468d4831de7f0bf9d9415e348699", - "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba", + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba", "shasum": "" }, "require": { @@ -1887,7 +1906,7 @@ }, "require-dev": { "ext-curl": "*", - "phpunit/phpunit": "^4.0 || ^5.0", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", "psr/log": "^1.0" }, "suggest": { @@ -1896,7 +1915,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "6.2-dev" + "dev-master": "6.3-dev" } }, "autoload": { @@ -1929,7 +1948,7 @@ "rest", "web service" ], - "time": "2017-06-22T18:50:49+00:00" + "time": "2018-04-22T15:46:56+00:00" }, { "name": "guzzlehttp/promises", @@ -1984,32 +2003,33 @@ }, { "name": "guzzlehttp/psr7", - "version": "1.4.2", + "version": "1.5.2", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c" + "reference": "9f83dded91781a01c63574e387eaa769be769115" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c", - "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/9f83dded91781a01c63574e387eaa769be769115", + "reference": "9f83dded91781a01c63574e387eaa769be769115", "shasum": "" }, "require": { "php": ">=5.4.0", - "psr/http-message": "~1.0" + "psr/http-message": "~1.0", + "ralouphie/getallheaders": "^2.0.5" }, "provide": { "psr/http-message-implementation": "1.0" }, "require-dev": { - "phpunit/phpunit": "~4.0" + "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "1.5-dev" } }, "autoload": { @@ -2039,13 +2059,14 @@ "keywords": [ "http", "message", + "psr-7", "request", "response", "stream", "uri", "url" ], - "time": "2017-03-20T17:10:46+00:00" + "time": "2018-12-04T20:46:45+00:00" }, { "name": "ip2location/ip2location-php", @@ -2131,21 +2152,24 @@ }, { "name": "jbroadway/urlify", - "version": "1.1.0-stable", + "version": "1.1.2-stable", "source": { "type": "git", "url": "https://github.com/jbroadway/urlify.git", - "reference": "99bb78cd9002d0e9ce479bb81635eb665e37e981" + "reference": "78118277ba31189fef18323bb78e9c1b89254dcc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jbroadway/urlify/zipball/99bb78cd9002d0e9ce479bb81635eb665e37e981", - "reference": "99bb78cd9002d0e9ce479bb81635eb665e37e981", + "url": "https://api.github.com/repos/jbroadway/urlify/zipball/78118277ba31189fef18323bb78e9c1b89254dcc", + "reference": "78118277ba31189fef18323bb78e9c1b89254dcc", "shasum": "" }, "require": { "php": ">=5.3.0" }, + "require-dev": { + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5" + }, "type": "library", "extra": { "branch-alias": { @@ -2159,7 +2183,7 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD" + "BSD-3-Clause-Clear" ], "authors": [ { @@ -2181,7 +2205,7 @@ "url", "urlify" ], - "time": "2017-01-03T20:12:54+00:00" + "time": "2018-12-08T15:51:20+00:00" }, { "name": "jdorn/sql-formatter", @@ -2235,16 +2259,16 @@ }, { "name": "jms/metadata", - "version": "1.6.0", + "version": "1.7.0", "source": { "type": "git", "url": "https://github.com/schmittjoh/metadata.git", - "reference": "6a06970a10e0a532fb52d3959547123b84a3b3ab" + "reference": "e5854ab1aa643623dc64adde718a8eec32b957a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/metadata/zipball/6a06970a10e0a532fb52d3959547123b84a3b3ab", - "reference": "6a06970a10e0a532fb52d3959547123b84a3b3ab", + "url": "https://api.github.com/repos/schmittjoh/metadata/zipball/e5854ab1aa643623dc64adde718a8eec32b957a8", + "reference": "e5854ab1aa643623dc64adde718a8eec32b957a8", "shasum": "" }, "require": { @@ -2267,9 +2291,13 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "Apache-2.0" + "MIT" ], "authors": [ + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" + }, { "name": "Johannes M. Schmitt", "email": "schmittjoh@gmail.com" @@ -2282,7 +2310,7 @@ "xml", "yaml" ], - "time": "2016-12-05T10:18:33+00:00" + "time": "2018-10-26T12:40:10+00:00" }, { "name": "jms/parser-lib", @@ -2321,22 +2349,22 @@ }, { "name": "jms/serializer", - "version": "1.11.0", + "version": "1.13.0", "source": { "type": "git", "url": "https://github.com/schmittjoh/serializer.git", - "reference": "e7c53477ff55c21d1b1db7d062edc050a24f465f" + "reference": "00863e1d55b411cc33ad3e1de09a4c8d3aae793c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/e7c53477ff55c21d1b1db7d062edc050a24f465f", - "reference": "e7c53477ff55c21d1b1db7d062edc050a24f465f", + "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/00863e1d55b411cc33ad3e1de09a4c8d3aae793c", + "reference": "00863e1d55b411cc33ad3e1de09a4c8d3aae793c", "shasum": "" }, "require": { "doctrine/annotations": "^1.0", "doctrine/instantiator": "^1.0.3", - "jms/metadata": "~1.1", + "jms/metadata": "^1.3", "jms/parser-lib": "1.*", "php": "^5.5|^7.0", "phpcollection/phpcollection": "~0.1", @@ -2370,7 +2398,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.11-dev" + "dev-1.x": "1.13-dev" } }, "autoload": { @@ -2380,7 +2408,7 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "Apache-2.0" + "MIT" ], "authors": [ { @@ -2401,7 +2429,7 @@ "serialization", "xml" ], - "time": "2018-02-04T17:48:54+00:00" + "time": "2018-07-25T13:58:54+00:00" }, { "name": "jms/serializer-bundle", @@ -2645,31 +2673,40 @@ }, { "name": "joomla/uri", - "version": "1.1.1", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/joomla-framework/uri.git", - "reference": "980e532e4235bb8f1ada15b28822abbeb171da3f" + "reference": "848a31dc895a9c8c9d7ea67571d6a4dd634a9dc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/joomla-framework/uri/zipball/980e532e4235bb8f1ada15b28822abbeb171da3f", - "reference": "980e532e4235bb8f1ada15b28822abbeb171da3f", + "url": "https://api.github.com/repos/joomla-framework/uri/zipball/848a31dc895a9c8c9d7ea67571d6a4dd634a9dc1", + "reference": "848a31dc895a9c8c9d7ea67571d6a4dd634a9dc1", "shasum": "" }, "require": { - "php": ">=5.3.10" + "php": "^5.3.10|~7.0" + }, + "require-dev": { + "joomla/coding-standards": "~2.0@alpha", + "joomla/test": "~1.0", + "phpunit/phpunit": "^4.8.35|^5.4.3|~6.0" }, "type": "joomla-package", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, "autoload": { "psr-4": { - "Joomla\\Uri\\": "src/", - "Joomla\\Uri\\Tests\\": "Tests/" + "Joomla\\Uri\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "GPL-2.0+" + "GPL-2.0-or-later" ], "description": "Joomla Uri Package", "homepage": "https://github.com/joomla-framework/uri", @@ -2678,7 +2715,7 @@ "joomla", "uri" ], - "time": "2014-02-09T02:57:17+00:00" + "time": "2018-07-01T00:12:15+00:00" }, { "name": "knplabs/gaufrette", @@ -2750,7 +2787,7 @@ "homepage": "http://github.com/knplabs/Gaufrette/contributors" }, { - "name": "KNPLabs Team", + "name": "KnpLabs Team", "homepage": "http://knplabs.com" } ], @@ -2889,16 +2926,16 @@ }, { "name": "league/flysystem", - "version": "1.0.47", + "version": "1.0.49", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "a11e4a75f256bdacf99d20780ce42d3b8272975c" + "reference": "a63cc83d8a931b271be45148fa39ba7156782ffd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/a11e4a75f256bdacf99d20780ce42d3b8272975c", - "reference": "a11e4a75f256bdacf99d20780ce42d3b8272975c", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/a63cc83d8a931b271be45148fa39ba7156782ffd", + "reference": "a63cc83d8a931b271be45148fa39ba7156782ffd", "shasum": "" }, "require": { @@ -2969,30 +3006,30 @@ "sftp", "storage" ], - "time": "2018-09-14T15:30:29+00:00" + "time": "2018-11-23T23:41:29+00:00" }, { - "name": "league/flysystem-aws-s3-v2", - "version": "1.0.3", + "name": "league/flysystem-aws-s3-v3", + "version": "1.0.21", "source": { "type": "git", - "url": "https://github.com/thephpleague/flysystem-aws-s3-v2.git", - "reference": "e464a35e34abed572c76b76aa2f278d178e141c6" + "url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git", + "reference": "43523fec10a831ea48bedb3277e3f3fa218f4e49" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v2/zipball/e464a35e34abed572c76b76aa2f278d178e141c6", - "reference": "e464a35e34abed572c76b76aa2f278d178e141c6", + "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/43523fec10a831ea48bedb3277e3f3fa218f4e49", + "reference": "43523fec10a831ea48bedb3277e3f3fa218f4e49", "shasum": "" }, "require": { - "aws/aws-sdk-php": "~2.7", - "league/flysystem": "~1.0", - "php": ">=5.4.0" + "aws/aws-sdk-php": "^3.0.0", + "league/flysystem": "^1.0.40", + "php": ">=5.5.0" }, "require-dev": { - "mockery/mockery": "0.9.*", - "phpunit/phpunit": "~4.0" + "henrikbjorn/phpspec-code-coverage": "~1.0.1", + "phpspec/phpspec": "^2.0.0" }, "type": "library", "extra": { @@ -3002,7 +3039,7 @@ }, "autoload": { "psr-4": { - "League\\Flysystem\\AwsS3v2\\": "src/" + "League\\Flysystem\\AwsS3v3\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3015,8 +3052,8 @@ "email": "info@frenky.net" } ], - "description": "Flysystem adapter for AWS S3 SDK v2", - "time": "2015-10-15T15:55:48+00:00" + "description": "Flysystem adapter for the AWS S3 SDK v3.x", + "time": "2018-10-08T07:53:55+00:00" }, { "name": "league/flysystem-dropbox", @@ -3067,16 +3104,16 @@ }, { "name": "league/flysystem-sftp", - "version": "1.0.16", + "version": "1.0.17", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-sftp.git", - "reference": "322839636847e0dba0f714e9ad0db813d65efcf2" + "reference": "49e216f1074b42e3ff344809e700672c2a3264ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-sftp/zipball/322839636847e0dba0f714e9ad0db813d65efcf2", - "reference": "322839636847e0dba0f714e9ad0db813d65efcf2", + "url": "https://api.github.com/repos/thephpleague/flysystem-sftp/zipball/49e216f1074b42e3ff344809e700672c2a3264ed", + "reference": "49e216f1074b42e3ff344809e700672c2a3264ed", "shasum": "" }, "require": { @@ -3105,32 +3142,32 @@ } ], "description": "Flysystem adapter for SFTP", - "time": "2018-07-08T21:01:51+00:00" + "time": "2018-10-14T21:07:28+00:00" }, { "name": "leezy/pheanstalk-bundle", - "version": "3.2.3", + "version": "3.3.0", "source": { "type": "git", "url": "https://github.com/armetiz/LeezyPheanstalkBundle.git", - "reference": "3944f5d43e10dec476a5e4f6ae16ade03b5693e4" + "reference": "76056c91c4021356b1bd4870f6bcd30d612d358d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/armetiz/LeezyPheanstalkBundle/zipball/3944f5d43e10dec476a5e4f6ae16ade03b5693e4", - "reference": "3944f5d43e10dec476a5e4f6ae16ade03b5693e4", + "url": "https://api.github.com/repos/armetiz/LeezyPheanstalkBundle/zipball/76056c91c4021356b1bd4870f6bcd30d612d358d", + "reference": "76056c91c4021356b1bd4870f6bcd30d612d358d", "shasum": "" }, "require": { "pda/pheanstalk": "~3.0", "php": ">=5.5.9", "psr/log": "~1.0", - "symfony/console": "~2.5|~3.0", - "symfony/framework-bundle": "~2.5|~3.0" + "symfony/console": "~2.5|~3.0|^4.0", + "symfony/framework-bundle": "~2.5|~3.0|^4.0" }, "require-dev": { - "phpunit/phpunit": "~4.0", - "phpunit/phpunit-mock-objects": "2.3.0" + "phpunit/phpunit": "~4.0|~5.0", + "phpunit/phpunit-mock-objects": "2.3.0|~3.4" }, "type": "symfony-bundle", "extra": { @@ -3165,35 +3202,34 @@ "queueing", "symfony" ], - "time": "2017-12-12T13:53:05+00:00" + "time": "2018-03-02T15:28:52+00:00" }, { "name": "lightsaml/lightsaml", - "version": "1.3.3", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/lightSAML/lightSAML.git", - "reference": "44447a7022b9165dfa46ec21d96f26f01813e5ea" + "reference": "377f04d1fb25f2fb2e72dabeff10b336f1cbe4c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lightSAML/lightSAML/zipball/44447a7022b9165dfa46ec21d96f26f01813e5ea", - "reference": "44447a7022b9165dfa46ec21d96f26f01813e5ea", + "url": "https://api.github.com/repos/lightSAML/lightSAML/zipball/377f04d1fb25f2fb2e72dabeff10b336f1cbe4c5", + "reference": "377f04d1fb25f2fb2e72dabeff10b336f1cbe4c5", "shasum": "" }, "require": { - "php": ">=5.5.1", - "robrichards/xmlseclibs": "~2.0|~3.0", - "symfony/event-dispatcher": "~2.3|~3.0", - "symfony/http-foundation": "~2.3|~3.0" + "php": ">=5.6", + "robrichards/xmlseclibs": "~2.0|~3.0|~4.0", + "symfony/event-dispatcher": "~2.3|~3.0|~4.0", + "symfony/http-foundation": "~2.3|~3.0|~4.0" }, "require-dev": { "monolog/monolog": "~1.3", - "phpunit/phpunit": "~4.5", + "phpunit/phpunit": ">=5.7", "pimple/pimple": "~3.0", - "satooshi/php-coveralls": "~0.6", - "symfony/css-selector": "~2.3", - "symfony/dom-crawler": "~2.3" + "symfony/css-selector": "~2.3|~3.0|~4.0", + "symfony/dom-crawler": "~2.3|~3.0|~4.0" }, "suggest": { "lightsaml/sp-bundle": "Symfony 2 SP security bundle", @@ -3228,7 +3264,7 @@ "lightSAML", "php" ], - "time": "2017-12-18T06:32:51+00:00" + "time": "2018-05-28T11:21:22+00:00" }, { "name": "lightsaml/sp-bundle", @@ -3281,28 +3317,32 @@ }, { "name": "lightsaml/symfony-bridge", - "version": "1.0.4", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/lightSAML/SymfonyBridgeBundle.git", - "reference": "01ad843a0bafc5268bda65e49a9be3c0c57e2381" + "reference": "8d3120825032a7468e894d0ae68630f21cd6035b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lightSAML/SymfonyBridgeBundle/zipball/01ad843a0bafc5268bda65e49a9be3c0c57e2381", - "reference": "01ad843a0bafc5268bda65e49a9be3c0c57e2381", + "url": "https://api.github.com/repos/lightSAML/SymfonyBridgeBundle/zipball/8d3120825032a7468e894d0ae68630f21cd6035b", + "reference": "8d3120825032a7468e894d0ae68630f21cd6035b", "shasum": "" }, "require": { "lightsaml/lightsaml": "~1.1", "php": ">=5.5.1", - "symfony/dependency-injection": "~2.3|~3.0", - "symfony/framework-bundle": "~2.3|~3.0", - "symfony/yaml": "~2.3|~3.0" + "symfony/dependency-injection": "~2.7|~3.0|~4.0", + "symfony/framework-bundle": "~2.7|~3.0|~4.0", + "symfony/yaml": "~2.7|~3.0|~4.0" }, "require-dev": { - "phpunit/phpunit": "~4.5", - "satooshi/php-coveralls": "~0.6" + "php-coveralls/php-coveralls": "~2.0", + "phpunit/phpunit": "^5.7", + "symfony/browser-kit": "~2.7|~3.0|~4.0", + "symfony/filesystem": "~2.7|~3.0|~4.0", + "symfony/finder": "~2.7|~3.0|~4.0", + "symfony/routing": "~2.7|~3.0|~4.0" }, "suggest": { "lightsaml/lightsamp-idp": "If you will be using IDP LightSAML services" @@ -3328,7 +3368,7 @@ ], "description": "Light SAML Symfony bridge bundle", "homepage": "http://www.lightsaml.com", - "time": "2016-11-18T15:11:05+00:00" + "time": "2018-05-23T08:11:59+00:00" }, { "name": "mautic/composer-plugin", @@ -3371,27 +3411,27 @@ "source": { "type": "git", "url": "https://github.com/mautic/mautic.git", - "reference": "d27414a2044fed72ecbb39d88ed6a8d80b4fe9eb" + "reference": "f6aa213482047108968ed9766a2eda7c8e94d615" }, "require": { "mnsami/composer-custom-directory-installer": "1.1.*", "wikimedia/composer-merge-plugin": "dev-master" }, "type": "library", - "time": "2018-10-10T12:17:49+00:00" + "time": "2018-12-05T12:56:48+00:00" }, { "name": "maxmind-db/reader", - "version": "v1.2.0", + "version": "v1.4.0", "source": { "type": "git", "url": "https://github.com/maxmind/MaxMind-DB-Reader-php.git", - "reference": "1647820dfbcb552222fb5feb3a8387e2636394c9" + "reference": "2f1086e38939e808cc23b17daa469da094af9125" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maxmind/MaxMind-DB-Reader-php/zipball/1647820dfbcb552222fb5feb3a8387e2636394c9", - "reference": "1647820dfbcb552222fb5feb3a8387e2636394c9", + "url": "https://api.github.com/repos/maxmind/MaxMind-DB-Reader-php/zipball/2f1086e38939e808cc23b17daa469da094af9125", + "reference": "2f1086e38939e808cc23b17daa469da094af9125", "shasum": "" }, "require": { @@ -3399,7 +3439,7 @@ }, "require-dev": { "friendsofphp/php-cs-fixer": "2.*", - "phpunit/phpunit": "4.*", + "phpunit/phpunit": "4.* || 5.*", "satooshi/php-coveralls": "1.0.*", "squizlabs/php_codesniffer": "3.*" }, @@ -3434,7 +3474,7 @@ "geolocation", "maxmind" ], - "time": "2017-01-19T23:49:38+00:00" + "time": "2018-11-20T16:04:10+00:00" }, { "name": "maxmind/web-service-common", @@ -3606,16 +3646,16 @@ }, { "name": "monolog/monolog", - "version": "1.23.0", + "version": "1.24.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4" + "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd8c787753b3a2ad11bc60c063cff1358a32a3b4", - "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", + "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", "shasum": "" }, "require": { @@ -3680,7 +3720,7 @@ "logging", "psr-3" ], - "time": "2017-06-19T01:22:40+00:00" + "time": "2018-11-05T09:00:11+00:00" }, { "name": "mrclay/minify", @@ -3722,6 +3762,61 @@ "homepage": "http://code.google.com/p/minify/", "time": "2014-03-12T12:54:23+00:00" }, + { + "name": "mtdowling/jmespath.php", + "version": "2.4.0", + "source": { + "type": "git", + "url": "https://github.com/jmespath/jmespath.php.git", + "reference": "adcc9531682cf87dfda21e1fd5d0e7a41d292fac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/adcc9531682cf87dfda21e1fd5d0e7a41d292fac", + "reference": "adcc9531682cf87dfda21e1fd5d0e7a41d292fac", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "bin": [ + "bin/jp.php" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "JmesPath\\": "src/" + }, + "files": [ + "src/JmesPath.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Declaratively specify how to extract elements from a JSON document", + "keywords": [ + "json", + "jsonpath" + ], + "time": "2016-12-03T22:08:25+00:00" + }, { "name": "mustache/mustache", "version": "v2.12.0", @@ -3868,6 +3963,63 @@ "description": "Get the cURL shell command from a Guzzle request", "time": "2016-11-23T08:01:36+00:00" }, + { + "name": "noxlogic/ratelimit-bundle", + "version": "1.11.1", + "target-dir": "Noxlogic/RateLimitBundle", + "source": { + "type": "git", + "url": "https://github.com/jaytaph/RateLimitBundle.git", + "reference": "df677add8b0e155cc47e90814b80e34ae2d47415" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jaytaph/RateLimitBundle/zipball/df677add8b0e155cc47e90814b80e34ae2d47415", + "reference": "df677add8b0e155cc47e90814b80e34ae2d47415", + "shasum": "" + }, + "require": { + "sensio/framework-extra-bundle": "^2.3|^3.0|^4.0|^5.0", + "symfony/framework-bundle": "^2.3|^3.0|^4.0" + }, + "require-dev": { + "doctrine/cache": "^1.5", + "friendsofsymfony/oauth-server-bundle": "^1.5", + "phpunit/phpunit": "^4.8|^5.0", + "predis/predis": "^0.8|^1.1", + "psr/cache": "^1.0", + "psr/simple-cache": "^1.0" + }, + "suggest": { + "doctrine/doctrine-cache-bundle": "Use Doctrine Cache as a storage engine.", + "friendsofsymfony/oauth-server-bundle": "Throttle using OAuth access tokens.", + "leaseweb/memcache-bundle": "Use Memcache as a storage engine.", + "snc/redis-bundle": "Use Redis as a storage engine." + }, + "type": "symfony-bundle", + "autoload": { + "psr-0": { + "Noxlogic\\RateLimitBundle": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Joshua Thijssen", + "email": "jthijssen@noxlogic.nl" + } + ], + "description": "This bundle provides functionality to limit calls to actions based on rate limits", + "keywords": [ + "api", + "rest", + "x-rate-limit" + ], + "time": "2018-07-02T12:33:43+00:00" + }, { "name": "oneup/uploader-bundle", "version": "1.9.2", @@ -3945,16 +4097,16 @@ }, { "name": "paragonie/random_compat", - "version": "v2.0.11", + "version": "v2.0.17", "source": { "type": "git", "url": "https://github.com/paragonie/random_compat.git", - "reference": "5da4d3c796c275c55f057af5a643ae297d96b4d8" + "reference": "29af24f25bab834fcbb38ad2a69fa93b867e070d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/5da4d3c796c275c55f057af5a643ae297d96b4d8", - "reference": "5da4d3c796c275c55f057af5a643ae297d96b4d8", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/29af24f25bab834fcbb38ad2a69fa93b867e070d", + "reference": "29af24f25bab834fcbb38ad2a69fa93b867e070d", "shasum": "" }, "require": { @@ -3986,23 +4138,24 @@ "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", "keywords": [ "csprng", + "polyfill", "pseudorandom", "random" ], - "time": "2017-09-27T21:40:39+00:00" + "time": "2018-07-04T16:31:37+00:00" }, { "name": "pda/pheanstalk", - "version": "v3.1.0", + "version": "v3.2.1", "source": { "type": "git", "url": "https://github.com/pda/pheanstalk.git", - "reference": "430e77c551479aad0c6ada0450ee844cf656a18b" + "reference": "57b6e76f1b06ca798e739a8dee92c2dac04fd170" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pda/pheanstalk/zipball/430e77c551479aad0c6ada0450ee844cf656a18b", - "reference": "430e77c551479aad0c6ada0450ee844cf656a18b", + "url": "https://api.github.com/repos/pda/pheanstalk/zipball/57b6e76f1b06ca798e739a8dee92c2dac04fd170", + "reference": "57b6e76f1b06ca798e739a8dee92c2dac04fd170", "shasum": "" }, "require": { @@ -4014,7 +4167,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -4039,26 +4192,26 @@ "keywords": [ "beanstalkd" ], - "time": "2015-08-07T21:42:41+00:00" + "time": "2018-09-19T12:16:28+00:00" }, { "name": "php-amqplib/php-amqplib", - "version": "v2.7.2", + "version": "v2.8.1", "source": { "type": "git", "url": "https://github.com/php-amqplib/php-amqplib.git", - "reference": "dfd3694a86f1a7394d3693485259d4074a6ec79b" + "reference": "84449ffd3f5a7466bbee3946facb3746ff11f075" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/dfd3694a86f1a7394d3693485259d4074a6ec79b", - "reference": "dfd3694a86f1a7394d3693485259d4074a6ec79b", + "url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/84449ffd3f5a7466bbee3946facb3746ff11f075", + "reference": "84449ffd3f5a7466bbee3946facb3746ff11f075", "shasum": "" }, "require": { "ext-bcmath": "*", - "ext-mbstring": "*", - "php": ">=5.3.0" + "ext-sockets": "*", + "php": ">=5.4.0" }, "replace": { "videlalvaro/php-amqplib": "self.version" @@ -4069,13 +4222,10 @@ "scrutinizer/ocular": "^1.1", "squizlabs/php_codesniffer": "^2.5" }, - "suggest": { - "ext-sockets": "Use AMQPSocketConnection" - }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.7-dev" + "dev-master": "2.8-dev" } }, "autoload": { @@ -4101,6 +4251,11 @@ "name": "Raúl Araya", "email": "nubeiro@gmail.com", "role": "Maintainer" + }, + { + "name": "Luke Bakken", + "email": "luke@bakken.io", + "role": "Maintainer" } ], "description": "Formerly videlalvaro/php-amqplib. This library is a pure PHP implementation of the AMQP protocol. It's been tested against RabbitMQ.", @@ -4110,20 +4265,20 @@ "queue", "rabbitmq" ], - "time": "2018-02-11T19:28:00+00:00" + "time": "2018-11-13T09:35:17+00:00" }, { "name": "php-amqplib/rabbitmq-bundle", - "version": "v1.14.2", + "version": "v1.14.4", "source": { "type": "git", "url": "https://github.com/php-amqplib/RabbitMqBundle.git", - "reference": "6c0407c69b3ddb05294c67cd5acd14b73670554b" + "reference": "cf67adaa4e306d8e9cb6855a72d79263b425ded8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-amqplib/RabbitMqBundle/zipball/6c0407c69b3ddb05294c67cd5acd14b73670554b", - "reference": "6c0407c69b3ddb05294c67cd5acd14b73670554b", + "url": "https://api.github.com/repos/php-amqplib/RabbitMqBundle/zipball/cf67adaa4e306d8e9cb6855a72d79263b425ded8", + "reference": "cf67adaa4e306d8e9cb6855a72d79263b425ded8", "shasum": "" }, "require": { @@ -4176,9 +4331,12 @@ "Symfony2", "message", "queue", - "rabbitmq" + "rabbitmq", + "symfony", + "symfony3", + "symfony4" ], - "time": "2017-12-08T12:54:50+00:00" + "time": "2018-05-02T13:12:32+00:00" }, { "name": "php-http/discovery", @@ -4360,21 +4518,21 @@ }, { "name": "php-http/message", - "version": "1.6.0", + "version": "1.7.2", "source": { "type": "git", "url": "https://github.com/php-http/message.git", - "reference": "2edd63bae5f52f79363c5f18904b05ce3a4b7253" + "reference": "b159ffe570dffd335e22ef0b91a946eacb182fa1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/message/zipball/2edd63bae5f52f79363c5f18904b05ce3a4b7253", - "reference": "2edd63bae5f52f79363c5f18904b05ce3a4b7253", + "url": "https://api.github.com/repos/php-http/message/zipball/b159ffe570dffd335e22ef0b91a946eacb182fa1", + "reference": "b159ffe570dffd335e22ef0b91a946eacb182fa1", "shasum": "" }, "require": { - "clue/stream-filter": "^1.3", - "php": ">=5.4", + "clue/stream-filter": "^1.4", + "php": "^5.4 || ^7.0", "php-http/message-factory": "^1.0.2", "psr/http-message": "^1.0" }, @@ -4428,7 +4586,7 @@ "message", "psr-7" ], - "time": "2017-07-05T06:40:53+00:00" + "time": "2018-11-01T09:32:41+00:00" }, { "name": "php-http/message-factory", @@ -4688,16 +4846,16 @@ }, { "name": "phpseclib/phpseclib", - "version": "2.0.11", + "version": "2.0.12", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "7053f06f91b3de78e143d430e55a8f7889efc08b" + "reference": "8814dc7841db159daed0b32c2b08fb7e03c6afe7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/7053f06f91b3de78e143d430e55a8f7889efc08b", - "reference": "7053f06f91b3de78e143d430e55a8f7889efc08b", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/8814dc7841db159daed0b32c2b08fb7e03c6afe7", + "reference": "8814dc7841db159daed0b32c2b08fb7e03c6afe7", "shasum": "" }, "require": { @@ -4776,7 +4934,7 @@ "x.509", "x509" ], - "time": "2018-04-15T16:55:05+00:00" + "time": "2018-11-04T05:45:48+00:00" }, { "name": "piwik/device-detector", @@ -4927,16 +5085,16 @@ }, { "name": "psr/log", - "version": "1.0.2", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" + "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", + "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", "shasum": "" }, "require": { @@ -4970,20 +5128,20 @@ "psr", "psr-3" ], - "time": "2016-10-10T12:19:37+00:00" + "time": "2018-11-20T15:27:04+00:00" }, { "name": "psr/simple-cache", - "version": "1.0.0", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/php-fig/simple-cache.git", - "reference": "753fa598e8f3b9966c886fe13f370baa45ef0e24" + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/753fa598e8f3b9966c886fe13f370baa45ef0e24", - "reference": "753fa598e8f3b9966c886fe13f370baa45ef0e24", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", "shasum": "" }, "require": { @@ -5018,7 +5176,7 @@ "psr-16", "simple-cache" ], - "time": "2017-01-02T13:31:39+00:00" + "time": "2017-10-23T01:57:42+00:00" }, { "name": "rackspace/php-opencloud", @@ -5085,23 +5243,64 @@ ], "time": "2015-03-16T23:57:58+00:00" }, + { + "name": "ralouphie/getallheaders", + "version": "2.0.5", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/5601c8a83fbba7ef674a7369456d12f1e0d0eafa", + "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "require-dev": { + "phpunit/phpunit": "~3.7.0", + "satooshi/php-coveralls": ">=1.0" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "time": "2016-02-11T07:05:27+00:00" + }, { "name": "ramsey/uuid", - "version": "3.7.3", + "version": "3.8.0", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "44abcdad877d9a46685a3a4d221e3b2c4b87cb76" + "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/44abcdad877d9a46685a3a4d221e3b2c4b87cb76", - "reference": "44abcdad877d9a46685a3a4d221e3b2c4b87cb76", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/d09ea80159c1929d75b3f9c60504d613aeb4a1e3", + "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3", "shasum": "" }, "require": { - "paragonie/random_compat": "^1.0|^2.0", - "php": "^5.4 || ^7.0" + "paragonie/random_compat": "^1.0|^2.0|9.99.99", + "php": "^5.4 || ^7.0", + "symfony/polyfill-ctype": "^1.8" }, "replace": { "rhumsaa/uuid": "self.version" @@ -5109,16 +5308,17 @@ "require-dev": { "codeception/aspect-mock": "^1.0 | ~2.0.0", "doctrine/annotations": "~1.2.0", - "goaop/framework": "1.0.0-alpha.2 | ^1.0 | ^2.1", + "goaop/framework": "1.0.0-alpha.2 | ^1.0 | ~2.1.0", "ircmaxell/random-lib": "^1.1", "jakub-onderka/php-parallel-lint": "^0.9.0", "mockery/mockery": "^0.9.9", "moontoast/math": "^1.1", "php-mock/php-mock-phpunit": "^0.3|^1.1", - "phpunit/phpunit": "^4.7|^5.0", + "phpunit/phpunit": "^4.7|^5.0|^6.5", "squizlabs/php_codesniffer": "^2.3" }, "suggest": { + "ext-ctype": "Provides support for PHP Ctype functions", "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", "ircmaxell/random-lib": "Provides RandomLib for use with the RandomLibAdapter", @@ -5163,28 +5363,26 @@ "identifier", "uuid" ], - "time": "2018-01-20T00:28:24+00:00" + "time": "2018-07-19T23:38:55+00:00" }, { "name": "robrichards/xmlseclibs", - "version": "3.0.1", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/robrichards/xmlseclibs.git", - "reference": "d937712f70f93a584eb0299ccd87dc6374003781" + "reference": "406c68ac9124db033d079284b719958b829cb830" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/robrichards/xmlseclibs/zipball/d937712f70f93a584eb0299ccd87dc6374003781", - "reference": "d937712f70f93a584eb0299ccd87dc6374003781", + "url": "https://api.github.com/repos/robrichards/xmlseclibs/zipball/406c68ac9124db033d079284b719958b829cb830", + "reference": "406c68ac9124db033d079284b719958b829cb830", "shasum": "" }, "require": { + "ext-openssl": "*", "php": ">= 5.4" }, - "suggest": { - "ext-openssl": "OpenSSL extension" - }, "type": "library", "autoload": { "psr-4": { @@ -5203,20 +5401,20 @@ "xml", "xmldsig" ], - "time": "2017-08-31T09:27:07+00:00" + "time": "2018-11-15T11:59:02+00:00" }, { "name": "sendgrid/php-http-client", - "version": "3.8.0", + "version": "3.9.6", "source": { "type": "git", "url": "https://github.com/sendgrid/php-http-client.git", - "reference": "929018c62b7fcd99b3b356216ae75fff4d47b5a1" + "reference": "e9a04d949ee2d19938ab83dc100933a3b41a8ec7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sendgrid/php-http-client/zipball/929018c62b7fcd99b3b356216ae75fff4d47b5a1", - "reference": "929018c62b7fcd99b3b356216ae75fff4d47b5a1", + "url": "https://api.github.com/repos/sendgrid/php-http-client/zipball/e9a04d949ee2d19938ab83dc100933a3b41a8ec7", + "reference": "e9a04d949ee2d19938ab83dc100933a3b41a8ec7", "shasum": "" }, "require": { @@ -5255,20 +5453,20 @@ "rest", "sendgrid" ], - "time": "2017-09-13T16:52:38+00:00" + "time": "2018-04-10T18:06:08+00:00" }, { "name": "sendgrid/sendgrid", - "version": "6.0.0", + "version": "6.2.0", "source": { "type": "git", "url": "https://github.com/sendgrid/sendgrid-php.git", - "reference": "8db454e4b5674b545c207a162b64202b0d63259b" + "reference": "4d500a972739ef2c596299f3ad822dd231aab4df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sendgrid/sendgrid-php/zipball/8db454e4b5674b545c207a162b64202b0d63259b", - "reference": "8db454e4b5674b545c207a162b64202b0d63259b", + "url": "https://api.github.com/repos/sendgrid/sendgrid-php/zipball/4d500a972739ef2c596299f3ad822dd231aab4df", + "reference": "4d500a972739ef2c596299f3ad822dd231aab4df", "shasum": "" }, "require": { @@ -5279,14 +5477,16 @@ "sendgrid/sendgrid-php": "*" }, "require-dev": { - "phpunit/phpunit": "4.*", + "phpunit/phpunit": "^5.7.9 || ^6.4.3", "squizlabs/php_codesniffer": "2.*" }, "type": "library", "autoload": { "files": [ "lib/SendGrid.php", - "lib/helpers/mail/Mail.php" + "lib/helpers/mail/Mail.php", + "lib/helpers/contacts/Recipients.php", + "lib/helpers/stats/Stats.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -5301,25 +5501,25 @@ "send", "sendgrid" ], - "time": "2017-07-01T04:30:16+00:00" + "time": "2018-03-29T00:08:28+00:00" }, { "name": "sensio/distribution-bundle", - "version": "v5.0.21", + "version": "v5.0.23", "source": { "type": "git", "url": "https://github.com/sensiolabs/SensioDistributionBundle.git", - "reference": "eb6266b3b472e4002538610b28a0a04bcf94891a" + "reference": "088b116a0e27faa0e1a7384dd4f3f6a9d5a8a3b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/eb6266b3b472e4002538610b28a0a04bcf94891a", - "reference": "eb6266b3b472e4002538610b28a0a04bcf94891a", + "url": "https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/088b116a0e27faa0e1a7384dd4f3f6a9d5a8a3b6", + "reference": "088b116a0e27faa0e1a7384dd4f3f6a9d5a8a3b6", "shasum": "" }, "require": { "php": ">=5.3.9", - "sensiolabs/security-checker": "~3.0|~4.0", + "sensiolabs/security-checker": "~5.0", "symfony/class-loader": "~2.3|~3.0", "symfony/config": "~2.3|~3.0", "symfony/dependency-injection": "~2.3|~3.0", @@ -5353,24 +5553,80 @@ "configuration", "distribution" ], - "time": "2017-08-25T16:55:44+00:00" + "time": "2018-10-25T15:26:23+00:00" + }, + { + "name": "sensio/framework-extra-bundle", + "version": "v3.0.12", + "source": { + "type": "git", + "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git", + "reference": "3e8936fe13aa4086644977d334d8fcd275f50357" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/3e8936fe13aa4086644977d334d8fcd275f50357", + "reference": "3e8936fe13aa4086644977d334d8fcd275f50357", + "shasum": "" + }, + "require": { + "doctrine/common": "~2.2", + "symfony/framework-bundle": "~2.3|~3.0" + }, + "require-dev": { + "symfony/expression-language": "~2.4|~3.0", + "symfony/security-bundle": "~2.4|~3.0" + }, + "suggest": { + "symfony/expression-language": "", + "symfony/psr-http-message-bridge": "To use the PSR-7 converters", + "symfony/security-bundle": "" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Sensio\\Bundle\\FrameworkExtraBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "This bundle provides a way to configure your controllers with annotations", + "keywords": [ + "annotations", + "controllers" + ], + "time": "2015-12-18T17:39:27+00:00" }, { "name": "sensiolabs/security-checker", - "version": "v4.1.7", + "version": "v5.0.2", "source": { "type": "git", "url": "https://github.com/sensiolabs/security-checker.git", - "reference": "d539ccba2b4dce515de04f16b7ed7ae5b9eeb434" + "reference": "728f9fb0fe815003b3bcfd331d33106c0d8a6b1e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/d539ccba2b4dce515de04f16b7ed7ae5b9eeb434", - "reference": "d539ccba2b4dce515de04f16b7ed7ae5b9eeb434", + "url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/728f9fb0fe815003b3bcfd331d33106c0d8a6b1e", + "reference": "728f9fb0fe815003b3bcfd331d33106c0d8a6b1e", "shasum": "" }, "require": { "composer/ca-bundle": "^1.0", + "php": ">=5.5.9", "symfony/console": "~2.7|~3.0|~4.0" }, "bin": [ @@ -5379,12 +5635,12 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.1-dev" + "dev-master": "5.0-dev" } }, "autoload": { - "psr-0": { - "SensioLabs\\Security": "" + "psr-4": { + "SensioLabs\\Security\\": "SensioLabs/Security" } }, "notification-url": "https://packagist.org/downloads/", @@ -5398,20 +5654,20 @@ } ], "description": "A security checker for your composer.lock", - "time": "2018-01-11T05:54:03+00:00" + "time": "2018-12-10T06:08:43+00:00" }, { "name": "simshaun/recurr", - "version": "v3.0.5", + "version": "v3.1", "source": { "type": "git", "url": "https://github.com/simshaun/recurr.git", - "reference": "bff55c3baa5ab905c8f49c325daa6e9fcfccbfc1" + "reference": "9aa6f01382ced5d2a18addd27799dc0065916af0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simshaun/recurr/zipball/bff55c3baa5ab905c8f49c325daa6e9fcfccbfc1", - "reference": "bff55c3baa5ab905c8f49c325daa6e9fcfccbfc1", + "url": "https://api.github.com/repos/simshaun/recurr/zipball/9aa6f01382ced5d2a18addd27799dc0065916af0", + "reference": "9aa6f01382ced5d2a18addd27799dc0065916af0", "shasum": "" }, "require": { @@ -5453,43 +5709,44 @@ "recurring", "rrule" ], - "time": "2018-01-17T18:53:01+00:00" + "time": "2018-11-08T20:53:11+00:00" }, { "name": "sonata-project/exporter", - "version": "1.8.0", + "version": "1.9.1", "source": { "type": "git", "url": "https://github.com/sonata-project/exporter.git", - "reference": "f8bc03c2da72deeafd5d27f7cb558faeef8620d9" + "reference": "6dbea3379447f672f46fccd7e29210cc1246aea9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sonata-project/exporter/zipball/f8bc03c2da72deeafd5d27f7cb558faeef8620d9", - "reference": "f8bc03c2da72deeafd5d27f7cb558faeef8620d9", + "url": "https://api.github.com/repos/sonata-project/exporter/zipball/6dbea3379447f672f46fccd7e29210cc1246aea9", + "reference": "6dbea3379447f672f46fccd7e29210cc1246aea9", "shasum": "" }, "require": { "php": "^5.6 || ^7.0" }, "require-dev": { - "doctrine/dbal": "^2.2", + "doctrine/dbal": "^2.5", + "doctrine/orm": "^2.4.5", "matthiasnoback/symfony-config-test": "^2.0", "matthiasnoback/symfony-dependency-injection-test": "^1.0", "propel/propel1": "^1.6", - "sllh/php-cs-fixer-styleci-bridge": "^2.0", + "symfony/config": "^2.8 || ^3.2 || ^4.0", "symfony/dependency-injection": "^2.8 || ^3.2 || ^4.0", "symfony/http-foundation": "^2.8 || ^3.2 || ^4.0", "symfony/http-kernel": "^2.8 || ^3.2 || ^4.0", - "symfony/phpunit-bridge": "^3.3 || ^4.0", + "symfony/phpunit-bridge": "^4.0", "symfony/property-access": "^2.8 || ^3.2 || ^4.0", "symfony/routing": "^2.8 || ^3.2 || ^4.0" }, "suggest": { "ext-curl": "*", "propel/propel1": "^1.6", - "symfony/property-access": "^2.3 || ^3.0 || ^4.0", - "symfony/routing": "^2.3 || ^3.0 || ^4.0" + "symfony/property-access": "To be able to export from database entities", + "symfony/routing": "To be able to export the routes of a Symfony app" }, "type": "library", "extra": { @@ -5522,7 +5779,7 @@ "export", "xls" ], - "time": "2017-11-30T13:30:20+00:00" + "time": "2018-07-04T16:52:00+00:00" }, { "name": "sparkpost/sparkpost", @@ -5620,22 +5877,22 @@ }, { "name": "stack/run", - "version": "v1.0.1", + "version": "v1.1.0", "source": { "type": "git", "url": "https://github.com/stackphp/run.git", - "reference": "a1bc94ee4493aa0988dffd89b6b8a6cdcdb3c905" + "reference": "ca5b0b958c024940c72eadead646e19ad1889d29" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/stackphp/run/zipball/a1bc94ee4493aa0988dffd89b6b8a6cdcdb3c905", - "reference": "a1bc94ee4493aa0988dffd89b6b8a6cdcdb3c905", + "url": "https://api.github.com/repos/stackphp/run/zipball/ca5b0b958c024940c72eadead646e19ad1889d29", + "reference": "ca5b0b958c024940c72eadead646e19ad1889d29", "shasum": "" }, "require": { "php": ">=5.3.0", - "symfony/http-foundation": "~2.1", - "symfony/http-kernel": "~2.1" + "symfony/http-foundation": "~2.7|~3.0|~4.0", + "symfony/http-kernel": "~2.7|~3.0|~4.0" }, "require-dev": { "stack/callable-http-kernel": "~1.0@dev" @@ -5643,7 +5900,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "1.1-dev" } }, "autoload": { @@ -5658,28 +5915,27 @@ "authors": [ { "name": "Igor Wiedler", - "email": "igor@wiedler.ch", - "homepage": "http://wiedler.ch/igor/" + "email": "igor@wiedler.ch" } ], "description": "Shortcut function for handling HttpKernel front-controller boilerplate.", "keywords": [ "stack" ], - "time": "2013-10-25T14:31:28+00:00" + "time": "2018-02-20T10:28:14+00:00" }, { "name": "swiftmailer/swiftmailer", - "version": "v5.4.9", + "version": "v5.4.12", "source": { "type": "git", "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "7ffc1ea296ed14bf8260b6ef11b80208dbadba91" + "reference": "181b89f18a90f8925ef805f950d47a7190e9b950" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/7ffc1ea296ed14bf8260b6ef11b80208dbadba91", - "reference": "7ffc1ea296ed14bf8260b6ef11b80208dbadba91", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/181b89f18a90f8925ef805f950d47a7190e9b950", + "reference": "181b89f18a90f8925ef805f950d47a7190e9b950", "shasum": "" }, "require": { @@ -5720,20 +5976,20 @@ "mail", "mailer" ], - "time": "2018-01-23T07:37:21+00:00" + "time": "2018-07-31T09:26:32+00:00" }, { "name": "symfony/asset", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/asset.git", - "reference": "e2e5ce3ce4f7db7d9a25bd59c68676dd76c8cd53" + "reference": "63950b69e47b0f54c1cb70a54523007a8c8f8409" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/e2e5ce3ce4f7db7d9a25bd59c68676dd76c8cd53", - "reference": "e2e5ce3ce4f7db7d9a25bd59c68676dd76c8cd53", + "url": "https://api.github.com/repos/symfony/asset/zipball/63950b69e47b0f54c1cb70a54523007a8c8f8409", + "reference": "63950b69e47b0f54c1cb70a54523007a8c8f8409", "shasum": "" }, "require": { @@ -5775,20 +6031,20 @@ ], "description": "Symfony Asset Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:36:31+00:00" + "time": "2018-11-11T11:18:13+00:00" }, { "name": "symfony/browser-kit", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "e49a78bcf09ba2e6d03e63e80211f889c037add5" + "reference": "b507697225f32a76a9d333d0766fb46353e9d00d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/e49a78bcf09ba2e6d03e63e80211f889c037add5", - "reference": "e49a78bcf09ba2e6d03e63e80211f889c037add5", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/b507697225f32a76a9d333d0766fb46353e9d00d", + "reference": "b507697225f32a76a9d333d0766fb46353e9d00d", "shasum": "" }, "require": { @@ -5832,20 +6088,20 @@ ], "description": "Symfony BrowserKit Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:36:31+00:00" + "time": "2018-11-26T06:55:10+00:00" }, { "name": "symfony/cache", - "version": "v3.4.4", + "version": "v3.4.20", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "8dee9ec2c9824c3f4039960d679a6689ee1cbdc1" + "reference": "d31c2a1b80029d885307db47405daeffafcda759" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/8dee9ec2c9824c3f4039960d679a6689ee1cbdc1", - "reference": "8dee9ec2c9824c3f4039960d679a6689ee1cbdc1", + "url": "https://api.github.com/repos/symfony/cache/zipball/d31c2a1b80029d885307db47405daeffafcda759", + "reference": "d31c2a1b80029d885307db47405daeffafcda759", "shasum": "" }, "require": { @@ -5902,20 +6158,20 @@ "caching", "psr6" ], - "time": "2018-01-18T22:16:57+00:00" + "time": "2018-12-06T10:54:02+00:00" }, { "name": "symfony/class-loader", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/class-loader.git", - "reference": "f87f46e5e1bf31382a65966795fa2d4dd7e2b300" + "reference": "8194721a1e2768cfb95079581889c41eec7a5959" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/class-loader/zipball/f87f46e5e1bf31382a65966795fa2d4dd7e2b300", - "reference": "f87f46e5e1bf31382a65966795fa2d4dd7e2b300", + "url": "https://api.github.com/repos/symfony/class-loader/zipball/8194721a1e2768cfb95079581889c41eec7a5959", + "reference": "8194721a1e2768cfb95079581889c41eec7a5959", "shasum": "" }, "require": { @@ -5955,25 +6211,26 @@ ], "description": "Symfony ClassLoader Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:36:31+00:00" + "time": "2018-11-11T11:18:13+00:00" }, { "name": "symfony/config", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "17605ff58313d9fe94e507620a399721fc347b6d" + "reference": "7dd5f5040dc04c118d057fb5886563963eb70011" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/17605ff58313d9fe94e507620a399721fc347b6d", - "reference": "17605ff58313d9fe94e507620a399721fc347b6d", + "url": "https://api.github.com/repos/symfony/config/zipball/7dd5f5040dc04c118d057fb5886563963eb70011", + "reference": "7dd5f5040dc04c118d057fb5886563963eb70011", "shasum": "" }, "require": { "php": ">=5.3.9", - "symfony/filesystem": "~2.3|~3.0.0" + "symfony/filesystem": "~2.3|~3.0.0", + "symfony/polyfill-ctype": "~1.8" }, "require-dev": { "symfony/yaml": "~2.7|~3.0.0" @@ -6011,20 +6268,20 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2018-01-21T19:03:25+00:00" + "time": "2018-11-26T09:38:12+00:00" }, { "name": "symfony/console", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "162ca7d0ea597599967aa63b23418e747da0896b" + "reference": "cbcf4b5e233af15cd2bbd50dee1ccc9b7927dc12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/162ca7d0ea597599967aa63b23418e747da0896b", - "reference": "162ca7d0ea597599967aa63b23418e747da0896b", + "url": "https://api.github.com/repos/symfony/console/zipball/cbcf4b5e233af15cd2bbd50dee1ccc9b7927dc12", + "reference": "cbcf4b5e233af15cd2bbd50dee1ccc9b7927dc12", "shasum": "" }, "require": { @@ -6038,7 +6295,7 @@ "symfony/process": "~2.1|~3.0.0" }, "suggest": { - "psr/log": "For using the console logger", + "psr/log-implementation": "For using the console logger", "symfony/event-dispatcher": "", "symfony/process": "" }, @@ -6072,20 +6329,20 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2018-01-29T08:54:45+00:00" + "time": "2018-11-20T15:55:20+00:00" }, { "name": "symfony/debug", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "35e36287fc0fdc8a08f70efcd4865ae6d8a6ee55" + "reference": "74251c8d50dd3be7c4ce0c7b862497cdc641a5d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/35e36287fc0fdc8a08f70efcd4865ae6d8a6ee55", - "reference": "35e36287fc0fdc8a08f70efcd4865ae6d8a6ee55", + "url": "https://api.github.com/repos/symfony/debug/zipball/74251c8d50dd3be7c4ce0c7b862497cdc641a5d0", + "reference": "74251c8d50dd3be7c4ce0c7b862497cdc641a5d0", "shasum": "" }, "require": { @@ -6129,20 +6386,20 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2018-01-18T22:12:33+00:00" + "time": "2018-11-11T11:18:13+00:00" }, { "name": "symfony/dependency-injection", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "91ad61e6f140b050eba4aa39bc52eece713f2a71" + "reference": "a2f40df187f0053bc361bcea3b27ff2b85744d9f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/91ad61e6f140b050eba4aa39bc52eece713f2a71", - "reference": "91ad61e6f140b050eba4aa39bc52eece713f2a71", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/a2f40df187f0053bc361bcea3b27ff2b85744d9f", + "reference": "a2f40df187f0053bc361bcea3b27ff2b85744d9f", "shasum": "" }, "require": { @@ -6192,25 +6449,26 @@ ], "description": "Symfony DependencyInjection Component", "homepage": "https://symfony.com", - "time": "2018-01-29T08:55:23+00:00" + "time": "2018-11-11T11:18:13+00:00" }, { "name": "symfony/doctrine-bridge", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "b0d1f0a7046fb4422e7879515001e4ee92666106" + "reference": "b3a1a048020bea1ea69d31e35c01e2d927fa3ba8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/b0d1f0a7046fb4422e7879515001e4ee92666106", - "reference": "b0d1f0a7046fb4422e7879515001e4ee92666106", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/b3a1a048020bea1ea69d31e35c01e2d927fa3ba8", + "reference": "b3a1a048020bea1ea69d31e35c01e2d927fa3ba8", "shasum": "" }, "require": { "doctrine/common": "~2.4", "php": ">=5.3.9", + "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { @@ -6226,7 +6484,7 @@ "symfony/http-kernel": "~2.2|~3.0.0", "symfony/property-access": "~2.3|~3.0.0", "symfony/property-info": "~2.8|3.0", - "symfony/security": "~2.2|~3.0.0", + "symfony/security": "^2.8.31|^3.3.13", "symfony/stopwatch": "~2.2|~3.0.0", "symfony/translation": "^2.0.5|~3.0.0", "symfony/validator": "~2.7.25|^2.8.18|~3.2.5" @@ -6269,24 +6527,25 @@ ], "description": "Symfony Doctrine Bridge", "homepage": "https://symfony.com", - "time": "2018-01-03T07:36:31+00:00" + "time": "2018-11-26T09:36:25+00:00" }, { "name": "symfony/dom-crawler", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "31ff8f1d7a3de4b43b35ff821e6e223d81a8988b" + "reference": "2cdc7d3909eea6f982a6298d2e9ab7db01b6403c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/31ff8f1d7a3de4b43b35ff821e6e223d81a8988b", - "reference": "31ff8f1d7a3de4b43b35ff821e6e223d81a8988b", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/2cdc7d3909eea6f982a6298d2e9ab7db01b6403c", + "reference": "2cdc7d3909eea6f982a6298d2e9ab7db01b6403c", "shasum": "" }, "require": { "php": ">=5.3.9", + "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { @@ -6325,20 +6584,20 @@ ], "description": "Symfony DomCrawler Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:36:31+00:00" + "time": "2018-11-24T22:30:19+00:00" }, { "name": "symfony/dotenv", - "version": "v3.4.4", + "version": "v3.4.20", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "66265f80c0f585cd6aec3fbdfc4ffdf7a0d75992" + "reference": "154e3f7054d53a14747303844657e905c8acca51" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/66265f80c0f585cd6aec3fbdfc4ffdf7a0d75992", - "reference": "66265f80c0f585cd6aec3fbdfc4ffdf7a0d75992", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/154e3f7054d53a14747303844657e905c8acca51", + "reference": "154e3f7054d53a14747303844657e905c8acca51", "shasum": "" }, "require": { @@ -6382,20 +6641,20 @@ "env", "environment" ], - "time": "2018-01-03T17:14:19+00:00" + "time": "2018-11-14T22:14:12+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "d64be24fc1eba62f9daace8a8918f797fc8e87cc" + "reference": "a77e974a5fecb4398833b0709210e3d5e334ffb0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d64be24fc1eba62f9daace8a8918f797fc8e87cc", - "reference": "d64be24fc1eba62f9daace8a8918f797fc8e87cc", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a77e974a5fecb4398833b0709210e3d5e334ffb0", + "reference": "a77e974a5fecb4398833b0709210e3d5e334ffb0", "shasum": "" }, "require": { @@ -6442,20 +6701,20 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:36:31+00:00" + "time": "2018-11-21T14:20:20+00:00" }, { "name": "symfony/expression-language", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "422bf02386ab46f615d1d784b771599357461d73" + "reference": "fa9be1b831859b56d244137fabbfd01a46dbdb36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/422bf02386ab46f615d1d784b771599357461d73", - "reference": "422bf02386ab46f615d1d784b771599357461d73", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/fa9be1b831859b56d244137fabbfd01a46dbdb36", + "reference": "fa9be1b831859b56d244137fabbfd01a46dbdb36", "shasum": "" }, "require": { @@ -6491,24 +6750,25 @@ ], "description": "Symfony ExpressionLanguage Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:36:31+00:00" + "time": "2018-11-11T11:18:13+00:00" }, { "name": "symfony/filesystem", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "1f4e8351e0196562f5e8ec584baeceeb8e2e92f6" + "reference": "7ae46872dad09dffb7fe1e93a0937097339d0080" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/1f4e8351e0196562f5e8ec584baeceeb8e2e92f6", - "reference": "1f4e8351e0196562f5e8ec584baeceeb8e2e92f6", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/7ae46872dad09dffb7fe1e93a0937097339d0080", + "reference": "7ae46872dad09dffb7fe1e93a0937097339d0080", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": ">=5.3.9", + "symfony/polyfill-ctype": "~1.8" }, "type": "library", "extra": { @@ -6540,20 +6800,20 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:36:31+00:00" + "time": "2018-11-11T11:18:13+00:00" }, { "name": "symfony/finder", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "9786ccb6a1f94a89ae18fc6a1b68de1f070823ed" + "reference": "1444eac52273e345d9b95129bf914639305a9ba4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/9786ccb6a1f94a89ae18fc6a1b68de1f070823ed", - "reference": "9786ccb6a1f94a89ae18fc6a1b68de1f070823ed", + "url": "https://api.github.com/repos/symfony/finder/zipball/1444eac52273e345d9b95129bf914639305a9ba4", + "reference": "1444eac52273e345d9b95129bf914639305a9ba4", "shasum": "" }, "require": { @@ -6589,20 +6849,20 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2018-01-29T08:54:45+00:00" + "time": "2018-11-11T11:18:13+00:00" }, { "name": "symfony/form", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "b88b4b6c206201673cda2b919300e825bfda4cdc" + "reference": "74382a47aa97496d181fbb598822fdfb9e1744e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/b88b4b6c206201673cda2b919300e825bfda4cdc", - "reference": "b88b4b6c206201673cda2b919300e825bfda4cdc", + "url": "https://api.github.com/repos/symfony/form/zipball/74382a47aa97496d181fbb598822fdfb9e1744e4", + "reference": "74382a47aa97496d181fbb598822fdfb9e1744e4", "shasum": "" }, "require": { @@ -6610,6 +6870,7 @@ "symfony/event-dispatcher": "~2.1|~3.0.0", "symfony/intl": "~2.7.25|^2.8.18|~3.2.5", "symfony/options-resolver": "~2.6", + "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", "symfony/property-access": "~2.3|~3.0.0" }, @@ -6624,7 +6885,7 @@ "symfony/dependency-injection": "~2.7|~3.0.0", "symfony/http-foundation": "~2.2|~3.0.0", "symfony/http-kernel": "~2.4|~3.0.0", - "symfony/security-csrf": "~2.4|~3.0.0", + "symfony/security-csrf": "^2.8.31|^3.3.13", "symfony/translation": "^2.0.5|~3.0.0", "symfony/validator": "^2.8.18|~3.2.5" }, @@ -6664,20 +6925,20 @@ ], "description": "Symfony Form Component", "homepage": "https://symfony.com", - "time": "2018-01-29T08:58:04+00:00" + "time": "2018-12-06T11:12:46+00:00" }, { "name": "symfony/framework-bundle", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "b831299d17f8c5b23945a0c09da7804af9295186" + "reference": "6a7bb97cd22df9d1a123314b4c694e99f6944c8b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/b831299d17f8c5b23945a0c09da7804af9295186", - "reference": "b831299d17f8c5b23945a0c09da7804af9295186", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/6a7bb97cd22df9d1a123314b4c694e99f6944c8b", + "reference": "6a7bb97cd22df9d1a123314b4c694e99f6944c8b", "shasum": "" }, "require": { @@ -6688,7 +6949,7 @@ "symfony/asset": "~2.7|~3.0.0", "symfony/class-loader": "~2.1|~3.0.0", "symfony/config": "~2.8", - "symfony/dependency-injection": "~2.8", + "symfony/dependency-injection": "~2.8.41", "symfony/event-dispatcher": "~2.8|~3.0.0", "symfony/filesystem": "~2.3|~3.0.0", "symfony/finder": "^2.0.5|~3.0.0", @@ -6696,10 +6957,10 @@ "symfony/http-kernel": "^2.8.22", "symfony/polyfill-mbstring": "~1.0", "symfony/routing": "^2.8.17", - "symfony/security-core": "~2.6.13|~2.7.9|~2.8|~3.0.0", - "symfony/security-csrf": "~2.6|~3.0.0", + "symfony/security-core": "^2.8.41|^3.3.17", + "symfony/security-csrf": "^2.8.31|^3.3.13", "symfony/stopwatch": "~2.3|~3.0.0", - "symfony/templating": "~2.1|~3.0.0", + "symfony/templating": "~2.7|~3.0.0", "symfony/translation": "~2.8" }, "conflict": { @@ -6717,7 +6978,6 @@ "symfony/polyfill-intl-icu": "~1.0", "symfony/process": "^2.0.5|~3.0.0", "symfony/property-info": "~2.8|~3.0.0", - "symfony/security": "~2.6|~3.0.0", "symfony/validator": "~2.5|~3.0.0", "symfony/yaml": "^2.0.5|~3.0.0", "twig/twig": "~1.34|~2.4" @@ -6761,20 +7021,20 @@ ], "description": "Symfony FrameworkBundle", "homepage": "https://symfony.com", - "time": "2018-01-29T08:54:45+00:00" + "time": "2018-11-12T07:14:53+00:00" }, { "name": "symfony/http-foundation", - "version": "v2.8.44", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "10f660d43087b2198c3789bebbd587d20ec6e956" + "reference": "d0ab719bedc9fc6748a95b2dcb04137292a27b92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/10f660d43087b2198c3789bebbd587d20ec6e956", - "reference": "10f660d43087b2198c3789bebbd587d20ec6e956", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/d0ab719bedc9fc6748a95b2dcb04137292a27b92", + "reference": "d0ab719bedc9fc6748a95b2dcb04137292a27b92", "shasum": "" }, "require": { @@ -6816,20 +7076,20 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2018-08-01T13:47:49+00:00" + "time": "2018-11-25T11:27:05+00:00" }, { "name": "symfony/http-kernel", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "af74cd947d63ae1294aed71b9456f2a04f7f6d45" + "reference": "3df0207d4c973eb9c91b38a608aef4654dc256fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/af74cd947d63ae1294aed71b9456f2a04f7f6d45", - "reference": "af74cd947d63ae1294aed71b9456f2a04f7f6d45", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/3df0207d4c973eb9c91b38a608aef4654dc256fa", + "reference": "3df0207d4c973eb9c91b38a608aef4654dc256fa", "shasum": "" }, "require": { @@ -6837,7 +7097,8 @@ "psr/log": "~1.0", "symfony/debug": "^2.6.2", "symfony/event-dispatcher": "^2.6.7|~3.0.0", - "symfony/http-foundation": "~2.7.36|~2.8.29|~3.1.6" + "symfony/http-foundation": "~2.7.36|~2.8.29|~3.1.6", + "symfony/polyfill-ctype": "~1.8" }, "conflict": { "symfony/config": "<2.7", @@ -6899,20 +7160,20 @@ ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", - "time": "2018-01-29T10:48:12+00:00" + "time": "2018-12-06T14:45:07+00:00" }, { "name": "symfony/intl", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "847da8b0460d6119e571982037093df43aed9b21" + "reference": "7c332001c3c3557c136eba4908f642dca41769de" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/847da8b0460d6119e571982037093df43aed9b21", - "reference": "847da8b0460d6119e571982037093df43aed9b21", + "url": "https://api.github.com/repos/symfony/intl/zipball/7c332001c3c3557c136eba4908f642dca41769de", + "reference": "7c332001c3c3557c136eba4908f642dca41769de", "shasum": "" }, "require": { @@ -6975,20 +7236,20 @@ "l10n", "localization" ], - "time": "2018-01-03T07:36:31+00:00" + "time": "2018-11-11T11:18:13+00:00" }, { "name": "symfony/monolog-bridge", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "6d35ada626c9a465c823fa8ab5be18b884f907e7" + "reference": "7ab6803ee6d42a63b854041911f45b1a5974fae2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/6d35ada626c9a465c823fa8ab5be18b884f907e7", - "reference": "6d35ada626c9a465c823fa8ab5be18b884f907e7", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/7ab6803ee6d42a63b854041911f45b1a5974fae2", + "reference": "7ab6803ee6d42a63b854041911f45b1a5974fae2", "shasum": "" }, "require": { @@ -7038,45 +7299,48 @@ ], "description": "Symfony Monolog Bridge", "homepage": "https://symfony.com", - "time": "2018-01-03T07:36:31+00:00" + "time": "2018-11-11T11:18:13+00:00" }, { "name": "symfony/monolog-bundle", - "version": "v2.12.1", + "version": "v3.3.1", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bundle.git", - "reference": "b0146bdca7ba2a65f3bbe7010423c7393b29ec3f" + "reference": "572e143afc03419a75ab002c80a2fd99299195ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/b0146bdca7ba2a65f3bbe7010423c7393b29ec3f", - "reference": "b0146bdca7ba2a65f3bbe7010423c7393b29ec3f", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/572e143afc03419a75ab002c80a2fd99299195ff", + "reference": "572e143afc03419a75ab002c80a2fd99299195ff", "shasum": "" }, "require": { - "monolog/monolog": "~1.18", - "php": ">=5.3.2", - "symfony/config": "~2.3|~3.0", - "symfony/dependency-injection": "~2.3|~3.0", - "symfony/http-kernel": "~2.3|~3.0", - "symfony/monolog-bridge": "~2.3|~3.0" + "monolog/monolog": "~1.22", + "php": ">=5.6", + "symfony/config": "~2.7|~3.3|~4.0", + "symfony/dependency-injection": "~2.7|~3.4.10|^4.0.10", + "symfony/http-kernel": "~2.7|~3.3|~4.0", + "symfony/monolog-bridge": "~2.7|~3.3|~4.0" }, "require-dev": { - "phpunit/phpunit": "^4.8", - "symfony/console": "~2.3|~3.0", - "symfony/yaml": "~2.3|~3.0" + "symfony/console": "~2.7|~3.3|~4.0", + "symfony/phpunit-bridge": "^3.3|^4.0", + "symfony/yaml": "~2.7|~3.3|~4.0" }, "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "2.x-dev" + "dev-master": "3.x-dev" } }, "autoload": { "psr-4": { "Symfony\\Bundle\\MonologBundle\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7098,20 +7362,20 @@ "log", "logging" ], - "time": "2017-01-02T19:04:26+00:00" + "time": "2018-11-04T09:58:13+00:00" }, { "name": "symfony/options-resolver", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "7b627d71e038f65c58702ad2540d0452cf53cf67" + "reference": "7aaab725bb58f0e18aa12c61bdadd4793ab4c32b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/7b627d71e038f65c58702ad2540d0452cf53cf67", - "reference": "7b627d71e038f65c58702ad2540d0452cf53cf67", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/7aaab725bb58f0e18aa12c61bdadd4793ab4c32b", + "reference": "7aaab725bb58f0e18aa12c61bdadd4793ab4c32b", "shasum": "" }, "require": { @@ -7152,20 +7416,20 @@ "configuration", "options" ], - "time": "2018-01-03T07:36:31+00:00" + "time": "2018-11-11T11:18:13+00:00" }, { "name": "symfony/polyfill-apcu", - "version": "v1.7.0", + "version": "v1.10.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-apcu.git", - "reference": "e8ae2136ddb53dea314df56fcd88e318ab936c00" + "reference": "19e1b73bf255265ad0b568f81766ae2a3266d8d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/e8ae2136ddb53dea314df56fcd88e318ab936c00", - "reference": "e8ae2136ddb53dea314df56fcd88e318ab936c00", + "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/19e1b73bf255265ad0b568f81766ae2a3266d8d2", + "reference": "19e1b73bf255265ad0b568f81766ae2a3266d8d2", "shasum": "" }, "require": { @@ -7174,7 +7438,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -7208,20 +7472,78 @@ "portable", "shim" ], - "time": "2018-01-30T19:27:44+00:00" + "time": "2018-08-06T14:22:27+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.10.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + }, + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "time": "2018-08-06T14:22:27+00:00" }, { "name": "symfony/polyfill-intl-icu", - "version": "v1.7.0", + "version": "v1.10.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "254919c03761d46c29291616576ed003f10e91c1" + "reference": "f22a90256d577c7ef7efad8df1f0201663d57644" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/254919c03761d46c29291616576ed003f10e91c1", - "reference": "254919c03761d46c29291616576ed003f10e91c1", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/f22a90256d577c7ef7efad8df1f0201663d57644", + "reference": "f22a90256d577c7ef7efad8df1f0201663d57644", "shasum": "" }, "require": { @@ -7234,7 +7556,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -7266,20 +7588,20 @@ "portable", "shim" ], - "time": "2018-01-30T19:27:44+00:00" + "time": "2018-08-06T14:22:27+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.7.0", + "version": "v1.10.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b" + "reference": "c79c051f5b3a46be09205c73b80b346e4153e494" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/78be803ce01e55d3491c1397cf1c64beb9c1b63b", - "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494", + "reference": "c79c051f5b3a46be09205c73b80b346e4153e494", "shasum": "" }, "require": { @@ -7291,7 +7613,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -7325,20 +7647,20 @@ "portable", "shim" ], - "time": "2018-01-30T19:27:44+00:00" + "time": "2018-09-21T13:07:52+00:00" }, { "name": "symfony/polyfill-php54", - "version": "v1.7.0", + "version": "v1.10.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php54.git", - "reference": "84e2b616c197ef400c6d0556a0606cee7c9e21d5" + "reference": "412977e090c6a8472dc39d50d1beb7d59495a965" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php54/zipball/84e2b616c197ef400c6d0556a0606cee7c9e21d5", - "reference": "84e2b616c197ef400c6d0556a0606cee7c9e21d5", + "url": "https://api.github.com/repos/symfony/polyfill-php54/zipball/412977e090c6a8472dc39d50d1beb7d59495a965", + "reference": "412977e090c6a8472dc39d50d1beb7d59495a965", "shasum": "" }, "require": { @@ -7347,7 +7669,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -7383,20 +7705,20 @@ "portable", "shim" ], - "time": "2018-01-30T19:27:44+00:00" + "time": "2018-08-06T14:22:27+00:00" }, { "name": "symfony/polyfill-php55", - "version": "v1.7.0", + "version": "v1.10.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php55.git", - "reference": "168371cb3dfb10e0afde96e7c2688be02470d143" + "reference": "42a4c00a347625ac8853c3358c47eeadc7fd4e96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php55/zipball/168371cb3dfb10e0afde96e7c2688be02470d143", - "reference": "168371cb3dfb10e0afde96e7c2688be02470d143", + "url": "https://api.github.com/repos/symfony/polyfill-php55/zipball/42a4c00a347625ac8853c3358c47eeadc7fd4e96", + "reference": "42a4c00a347625ac8853c3358c47eeadc7fd4e96", "shasum": "" }, "require": { @@ -7406,7 +7728,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -7439,20 +7761,20 @@ "portable", "shim" ], - "time": "2018-01-30T19:27:44+00:00" + "time": "2018-10-31T12:13:01+00:00" }, { "name": "symfony/polyfill-php56", - "version": "v1.7.0", + "version": "v1.10.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php56.git", - "reference": "ebc999ce5f14204c5150b9bd15f8f04e621409d8" + "reference": "ff208829fe1aa48ab9af356992bb7199fed551af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/ebc999ce5f14204c5150b9bd15f8f04e621409d8", - "reference": "ebc999ce5f14204c5150b9bd15f8f04e621409d8", + "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/ff208829fe1aa48ab9af356992bb7199fed551af", + "reference": "ff208829fe1aa48ab9af356992bb7199fed551af", "shasum": "" }, "require": { @@ -7462,7 +7784,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -7495,30 +7817,30 @@ "portable", "shim" ], - "time": "2018-01-30T19:27:44+00:00" + "time": "2018-09-21T06:26:08+00:00" }, { "name": "symfony/polyfill-php70", - "version": "v1.7.0", + "version": "v1.10.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "3532bfcd8f933a7816f3a0a59682fc404776600f" + "reference": "6b88000cdd431cd2e940caa2cb569201f3f84224" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/3532bfcd8f933a7816f3a0a59682fc404776600f", - "reference": "3532bfcd8f933a7816f3a0a59682fc404776600f", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/6b88000cdd431cd2e940caa2cb569201f3f84224", + "reference": "6b88000cdd431cd2e940caa2cb569201f3f84224", "shasum": "" }, "require": { - "paragonie/random_compat": "~1.0|~2.0", + "paragonie/random_compat": "~1.0|~2.0|~9.99", "php": ">=5.3.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -7554,20 +7876,20 @@ "portable", "shim" ], - "time": "2018-01-30T19:27:44+00:00" + "time": "2018-09-21T06:26:08+00:00" }, { "name": "symfony/polyfill-util", - "version": "v1.7.0", + "version": "v1.10.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-util.git", - "reference": "e17c808ec4228026d4f5a8832afa19be85979563" + "reference": "3b58903eae668d348a7126f999b0da0f2f93611c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/e17c808ec4228026d4f5a8832afa19be85979563", - "reference": "e17c808ec4228026d4f5a8832afa19be85979563", + "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/3b58903eae668d348a7126f999b0da0f2f93611c", + "reference": "3b58903eae668d348a7126f999b0da0f2f93611c", "shasum": "" }, "require": { @@ -7576,7 +7898,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -7606,20 +7928,20 @@ "polyfill", "shim" ], - "time": "2018-01-31T18:08:44+00:00" + "time": "2018-09-30T16:36:12+00:00" }, { "name": "symfony/process", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "905efe90024caa75a2fc93f54e14b26f2a099d96" + "reference": "c3591a09c78639822b0b290d44edb69bf9f05dc8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/905efe90024caa75a2fc93f54e14b26f2a099d96", - "reference": "905efe90024caa75a2fc93f54e14b26f2a099d96", + "url": "https://api.github.com/repos/symfony/process/zipball/c3591a09c78639822b0b290d44edb69bf9f05dc8", + "reference": "c3591a09c78639822b0b290d44edb69bf9f05dc8", "shasum": "" }, "require": { @@ -7655,24 +7977,25 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2018-01-29T08:54:45+00:00" + "time": "2018-11-11T11:18:13+00:00" }, { "name": "symfony/property-access", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "05996f4a198ddb898de707adc2df9501d55d047d" + "reference": "c8f10191183be9bb0d5a1b8364d3891f1bde07b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/05996f4a198ddb898de707adc2df9501d55d047d", - "reference": "05996f4a198ddb898de707adc2df9501d55d047d", + "url": "https://api.github.com/repos/symfony/property-access/zipball/c8f10191183be9bb0d5a1b8364d3891f1bde07b6", + "reference": "c8f10191183be9bb0d5a1b8364d3891f1bde07b6", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": ">=5.3.9", + "symfony/polyfill-ctype": "~1.8" }, "type": "library", "extra": { @@ -7715,20 +8038,20 @@ "property path", "reflection" ], - "time": "2018-01-03T07:36:31+00:00" + "time": "2018-11-11T11:18:13+00:00" }, { "name": "symfony/routing", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "627ea100720dac15d8165648caac57456dda84aa" + "reference": "8b0df6869d1997baafff6a1541826eac5a03d067" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/627ea100720dac15d8165648caac57456dda84aa", - "reference": "627ea100720dac15d8165648caac57456dda84aa", + "url": "https://api.github.com/repos/symfony/routing/zipball/8b0df6869d1997baafff6a1541826eac5a03d067", + "reference": "8b0df6869d1997baafff6a1541826eac5a03d067", "shasum": "" }, "require": { @@ -7739,7 +8062,6 @@ }, "require-dev": { "doctrine/annotations": "~1.0", - "doctrine/common": "~2.2", "psr/log": "~1.0", "symfony/config": "~2.7|~3.0.0", "symfony/expression-language": "~2.4|~3.0.0", @@ -7790,20 +8112,20 @@ "uri", "url" ], - "time": "2018-01-16T18:00:04+00:00" + "time": "2018-11-20T15:55:20+00:00" }, { "name": "symfony/security", - "version": "v2.8.45", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/security.git", - "reference": "2a1c4c71e944cfa94fc0f41d9a99837021060e1c" + "reference": "107bda1aee01e4b3dc46452d18ae4049bd4fa3f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security/zipball/2a1c4c71e944cfa94fc0f41d9a99837021060e1c", - "reference": "2a1c4c71e944cfa94fc0f41d9a99837021060e1c", + "url": "https://api.github.com/repos/symfony/security/zipball/107bda1aee01e4b3dc46452d18ae4049bd4fa3f6", + "reference": "107bda1aee01e4b3dc46452d18ae4049bd4fa3f6", "shasum": "" }, "require": { @@ -7854,7 +8176,10 @@ "Symfony\\Component\\Security\\": "" }, "exclude-from-classmap": [ - "/Tests/" + "/Core/Tests/", + "/Csrf/Tests/", + "/Guard/Tests/", + "/Http/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -7873,7 +8198,7 @@ ], "description": "Symfony Security Component", "homepage": "https://symfony.com", - "time": "2018-08-11T11:15:56+00:00" + "time": "2018-12-06T11:12:46+00:00" }, { "name": "symfony/security-acl", @@ -7938,16 +8263,16 @@ }, { "name": "symfony/security-bundle", - "version": "v2.8.45", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "a34e30addf491a71bbf3d616626fbb0968d7dfc3" + "reference": "4590b89b5e9b04944988f9d3b8c866abc7ff9423" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/a34e30addf491a71bbf3d616626fbb0968d7dfc3", - "reference": "a34e30addf491a71bbf3d616626fbb0968d7dfc3", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/4590b89b5e9b04944988f9d3b8c866abc7ff9423", + "reference": "4590b89b5e9b04944988f9d3b8c866abc7ff9423", "shasum": "" }, "require": { @@ -8006,20 +8331,20 @@ ], "description": "Symfony SecurityBundle", "homepage": "https://symfony.com", - "time": "2018-08-01T18:49:49+00:00" + "time": "2018-11-11T11:18:13+00:00" }, { "name": "symfony/stopwatch", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "57021208ad9830f8f8390c1a9d7bb390f32be89e" + "reference": "752586c80af8a85aeb74d1ae8202411c68836663" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/57021208ad9830f8f8390c1a9d7bb390f32be89e", - "reference": "57021208ad9830f8f8390c1a9d7bb390f32be89e", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/752586c80af8a85aeb74d1ae8202411c68836663", + "reference": "752586c80af8a85aeb74d1ae8202411c68836663", "shasum": "" }, "require": { @@ -8055,7 +8380,7 @@ ], "description": "Symfony Stopwatch Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:36:31+00:00" + "time": "2018-11-11T11:18:13+00:00" }, { "name": "symfony/swiftmailer-bundle", @@ -8114,30 +8439,31 @@ ], "description": "Symfony SwiftmailerBundle", "homepage": "http://symfony.com", - "time": "2017-07-22T07:18:13+00:00" + "time": "2017-10-19T01:06:41+00:00" }, { "name": "symfony/templating", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/templating.git", - "reference": "6e0975833f731a0b112d3c598572d5fc9c6cc0bb" + "reference": "7e64705b32855ebce87eff8cc5fbe6bf240c8e44" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/templating/zipball/6e0975833f731a0b112d3c598572d5fc9c6cc0bb", - "reference": "6e0975833f731a0b112d3c598572d5fc9c6cc0bb", + "url": "https://api.github.com/repos/symfony/templating/zipball/7e64705b32855ebce87eff8cc5fbe6bf240c8e44", + "reference": "7e64705b32855ebce87eff8cc5fbe6bf240c8e44", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": ">=5.3.9", + "symfony/polyfill-ctype": "~1.8" }, "require-dev": { "psr/log": "~1.0" }, "suggest": { - "psr/log": "For using debug logging in loaders" + "psr/log-implementation": "For using debug logging in loaders" }, "type": "library", "extra": { @@ -8169,7 +8495,7 @@ ], "description": "Symfony Templating Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:36:31+00:00" + "time": "2018-11-20T15:55:20+00:00" }, { "name": "symfony/translation", @@ -8318,16 +8644,16 @@ }, { "name": "symfony/twig-bundle", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "20505fbf6cabe797cdb01f3e720bb16c76871439" + "reference": "e74af27dbe64dd4e5e7e3dfc9bcf480253b76c80" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/20505fbf6cabe797cdb01f3e720bb16c76871439", - "reference": "20505fbf6cabe797cdb01f3e720bb16c76871439", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/e74af27dbe64dd4e5e7e3dfc9bcf480253b76c80", + "reference": "e74af27dbe64dd4e5e7e3dfc9bcf480253b76c80", "shasum": "" }, "require": { @@ -8335,6 +8661,7 @@ "symfony/asset": "~2.7|~3.0.0", "symfony/http-foundation": "~2.5|~3.0.0", "symfony/http-kernel": "~2.7.23|^2.8.16", + "symfony/polyfill-ctype": "~1.8", "symfony/twig-bridge": "~2.7|~3.0.0", "twig/twig": "~1.34|~2.4" }, @@ -8380,24 +8707,25 @@ ], "description": "Symfony TwigBundle", "homepage": "https://symfony.com", - "time": "2018-01-29T08:54:45+00:00" + "time": "2018-11-11T11:18:13+00:00" }, { "name": "symfony/validator", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "71f4e46ff4ca3c8fee09cc1a3a1b90a06cde5e2a" + "reference": "d5d2090bba3139d8ddb79959fbf516e87238fe3a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/71f4e46ff4ca3c8fee09cc1a3a1b90a06cde5e2a", - "reference": "71f4e46ff4ca3c8fee09cc1a3a1b90a06cde5e2a", + "url": "https://api.github.com/repos/symfony/validator/zipball/d5d2090bba3139d8ddb79959fbf516e87238fe3a", + "reference": "d5d2090bba3139d8ddb79959fbf516e87238fe3a", "shasum": "" }, "require": { "php": ">=5.3.9", + "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", "symfony/translation": "~2.4|~3.0.0" }, @@ -8453,24 +8781,25 @@ ], "description": "Symfony Validator Component", "homepage": "https://symfony.com", - "time": "2018-01-29T08:54:45+00:00" + "time": "2018-11-14T14:06:48+00:00" }, { "name": "symfony/yaml", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "be720fcfae4614df204190d57795351059946a77" + "reference": "02c1859112aa779d9ab394ae4f3381911d84052b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/be720fcfae4614df204190d57795351059946a77", - "reference": "be720fcfae4614df204190d57795351059946a77", + "url": "https://api.github.com/repos/symfony/yaml/zipball/02c1859112aa779d9ab394ae4f3381911d84052b", + "reference": "02c1859112aa779d9ab394ae4f3381911d84052b", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": ">=5.3.9", + "symfony/polyfill-ctype": "~1.8" }, "type": "library", "extra": { @@ -8502,7 +8831,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:36:31+00:00" + "time": "2018-11-11T11:18:13+00:00" }, { "name": "thedmsgroup/mautic-api-services-bundle", @@ -8584,17 +8913,17 @@ "source": { "type": "git", "url": "https://github.com/TheDMSGroup/mautic-contact-client.git", - "reference": "637d7c75f71579d3a08bec68ac2e58e4866c3551" + "reference": "21d58df2f4c099a2c4c1d4bb2d86b8b4e2b22194" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TheDMSGroup/mautic-contact-client/zipball/637d7c75f71579d3a08bec68ac2e58e4866c3551", - "reference": "637d7c75f71579d3a08bec68ac2e58e4866c3551", + "url": "https://api.github.com/repos/TheDMSGroup/mautic-contact-client/zipball/21d58df2f4c099a2c4c1d4bb2d86b8b4e2b22194", + "reference": "21d58df2f4c099a2c4c1d4bb2d86b8b4e2b22194", "shasum": "" }, "require": { "league/flysystem": "^1.0", - "league/flysystem-aws-s3-v2": "^1.0", + "league/flysystem-aws-s3-v3": "^1.0", "league/flysystem-dropbox": "^1.0", "league/flysystem-sftp": "^1.0", "mautic/composer-plugin": "^1.0", @@ -8619,7 +8948,7 @@ "marketing", "plugin" ], - "time": "2018-10-18T16:42:24+00:00" + "time": "2018-12-12T21:29:49+00:00" }, { "name": "thedmsgroup/mautic-contact-ledger-bundle", @@ -8627,12 +8956,12 @@ "source": { "type": "git", "url": "https://github.com/TheDMSGroup/mautic-contact-ledger.git", - "reference": "1feb9321ad507ad2701e7e1874290f6f933cd907" + "reference": "b5f796fea3bc9d6d3acc3b34157bf026d2a228ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TheDMSGroup/mautic-contact-ledger/zipball/1feb9321ad507ad2701e7e1874290f6f933cd907", - "reference": "1feb9321ad507ad2701e7e1874290f6f933cd907", + "url": "https://api.github.com/repos/TheDMSGroup/mautic-contact-ledger/zipball/b5f796fea3bc9d6d3acc3b34157bf026d2a228ba", + "reference": "b5f796fea3bc9d6d3acc3b34157bf026d2a228ba", "shasum": "" }, "require": { @@ -8656,7 +8985,7 @@ "marketing", "plugin" ], - "time": "2018-10-30T04:44:41+00:00" + "time": "2018-12-03T15:51:24+00:00" }, { "name": "thedmsgroup/mautic-contact-source-bundle", @@ -8664,12 +8993,12 @@ "source": { "type": "git", "url": "https://github.com/TheDMSGroup/mautic-contact-source.git", - "reference": "5d98d63070ddcd2ae55bd8610eb24407971729f8" + "reference": "4b423137f9591fabbf122c43a4ae4977c1d61a95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TheDMSGroup/mautic-contact-source/zipball/5d98d63070ddcd2ae55bd8610eb24407971729f8", - "reference": "5d98d63070ddcd2ae55bd8610eb24407971729f8", + "url": "https://api.github.com/repos/TheDMSGroup/mautic-contact-source/zipball/4b423137f9591fabbf122c43a4ae4977c1d61a95", + "reference": "4b423137f9591fabbf122c43a4ae4977c1d61a95", "shasum": "" }, "require": { @@ -8693,7 +9022,7 @@ "marketing", "plugin" ], - "time": "2018-10-29T19:33:08+00:00" + "time": "2018-12-11T15:51:55+00:00" }, { "name": "thedmsgroup/mautic-dashboard-warm-bundle", @@ -8701,12 +9030,12 @@ "source": { "type": "git", "url": "https://github.com/TheDMSGroup/mautic-dashboard-warm.git", - "reference": "39876a88a158e62916f716cfa49ed8663293752e" + "reference": "75e0558192f478127d4080099042eff1e0297557" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TheDMSGroup/mautic-dashboard-warm/zipball/39876a88a158e62916f716cfa49ed8663293752e", - "reference": "39876a88a158e62916f716cfa49ed8663293752e", + "url": "https://api.github.com/repos/TheDMSGroup/mautic-dashboard-warm/zipball/75e0558192f478127d4080099042eff1e0297557", + "reference": "75e0558192f478127d4080099042eff1e0297557", "shasum": "" }, "require": { @@ -8730,7 +9059,7 @@ "marketing", "plugin" ], - "time": "2018-10-31T13:00:33+00:00" + "time": "2018-11-27T17:35:44+00:00" }, { "name": "thedmsgroup/mautic-eb-custom", @@ -8752,12 +9081,12 @@ "source": { "type": "git", "url": "https://github.com/TheDMSGroup/mautic-enhancer.git", - "reference": "8b9ed06a29050da88bcb6f98f5cabb3e167d4dde" + "reference": "144391007de0af2fb679f064e97f76d74283b649" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TheDMSGroup/mautic-enhancer/zipball/8b9ed06a29050da88bcb6f98f5cabb3e167d4dde", - "reference": "8b9ed06a29050da88bcb6f98f5cabb3e167d4dde", + "url": "https://api.github.com/repos/TheDMSGroup/mautic-enhancer/zipball/144391007de0af2fb679f064e97f76d74283b649", + "reference": "144391007de0af2fb679f064e97f76d74283b649", "shasum": "" }, "require": { @@ -8791,7 +9120,7 @@ "marketing", "plugin" ], - "time": "2018-11-01T13:50:50+00:00" + "time": "2018-11-14T14:12:16+00:00" }, { "name": "thedmsgroup/mautic-extended-field-bundle", @@ -8799,12 +9128,12 @@ "source": { "type": "git", "url": "https://github.com/TheDMSGroup/mautic-extended-field.git", - "reference": "34a365cd67da2f4578c060863b6f8d877b79d074" + "reference": "3e5ea91f9ff5244542901b06ffb142ee58fa26b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TheDMSGroup/mautic-extended-field/zipball/34a365cd67da2f4578c060863b6f8d877b79d074", - "reference": "34a365cd67da2f4578c060863b6f8d877b79d074", + "url": "https://api.github.com/repos/TheDMSGroup/mautic-extended-field/zipball/3e5ea91f9ff5244542901b06ffb142ee58fa26b5", + "reference": "3e5ea91f9ff5244542901b06ffb142ee58fa26b5", "shasum": "" }, "require": { @@ -8836,7 +9165,7 @@ "marketing", "plugin" ], - "time": "2018-10-09T18:49:57+00:00" + "time": "2018-12-11T20:41:41+00:00" }, { "name": "thedmsgroup/mautic-health-bundle", @@ -8881,12 +9210,12 @@ "source": { "type": "git", "url": "https://github.com/TheDMSGroup/mautic-segment-extras.git", - "reference": "0f2d8d9ed8df4674f6b5e18a1b104c79e6f0092e" + "reference": "11246df27e8440cb030f9ff9ba1e0bc35b4f21b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TheDMSGroup/mautic-segment-extras/zipball/0f2d8d9ed8df4674f6b5e18a1b104c79e6f0092e", - "reference": "0f2d8d9ed8df4674f6b5e18a1b104c79e6f0092e", + "url": "https://api.github.com/repos/TheDMSGroup/mautic-segment-extras/zipball/11246df27e8440cb030f9ff9ba1e0bc35b4f21b6", + "reference": "11246df27e8440cb030f9ff9ba1e0bc35b4f21b6", "shasum": "" }, "require": { @@ -8910,7 +9239,7 @@ "marketing", "plugin" ], - "time": "2018-11-01T14:25:33+00:00" + "time": "2018-11-12T14:19:41+00:00" }, { "name": "thedmsgroup/mautic-usstate-normalizer-bundle", @@ -8951,30 +9280,32 @@ }, { "name": "twig/twig", - "version": "v1.35.0", + "version": "v2.5.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "daa657073e55b0a78cce8fdd22682fddecc6385f" + "reference": "6a5f676b77a90823c2d4eaf76137b771adf31323" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/daa657073e55b0a78cce8fdd22682fddecc6385f", - "reference": "daa657073e55b0a78cce8fdd22682fddecc6385f", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/6a5f676b77a90823c2d4eaf76137b771adf31323", + "reference": "6a5f676b77a90823c2d4eaf76137b771adf31323", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.0", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { "psr/container": "^1.0", - "symfony/debug": "~2.7", - "symfony/phpunit-bridge": "~3.3@dev" + "symfony/debug": "^2.7", + "symfony/phpunit-bridge": "^3.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.35-dev" + "dev-master": "2.5-dev" } }, "autoload": { @@ -9003,16 +9334,16 @@ }, { "name": "Twig Team", - "homepage": "http://twig.sensiolabs.org/contributors", + "homepage": "https://twig.symfony.com/contributors", "role": "Contributors" } ], "description": "Twig, the flexible, fast, and secure template language for PHP", - "homepage": "http://twig.sensiolabs.org", + "homepage": "https://twig.symfony.com", "keywords": [ "templating" ], - "time": "2017-09-27T18:06:46+00:00" + "time": "2018-07-13T07:18:09+00:00" }, { "name": "twilio/sdk", @@ -9204,11 +9535,11 @@ }, { "name": "willdurand/oauth-server-bundle", - "version": "dev-master", + "version": "0.0.2", "source": { "type": "git", "url": "https://github.com/mautic/BazingaOAuthServerBundle.git", - "reference": "d4d2e94bb69c20ae4a5fc136c0fe40253368787e" + "reference": "f7685479cdc35114cc4e6219313f57f5c72a5ee6" }, "require": { "php": ">=5.3.3", @@ -9244,7 +9575,7 @@ "oauth", "server" ], - "time": "2017-05-10T00:39:21+00:00" + "time": "2018-10-12T15:31:56+00:00" } ], "packages-dev": [ @@ -9302,16 +9633,16 @@ }, { "name": "behat/gherkin", - "version": "v4.4.5", + "version": "v4.5.1", "source": { "type": "git", "url": "https://github.com/Behat/Gherkin.git", - "reference": "5c14cff4f955b17d20d088dec1bde61c0539ec74" + "reference": "74ac03d52c5e23ad8abd5c5cce4ab0e8dc1b530a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Behat/Gherkin/zipball/5c14cff4f955b17d20d088dec1bde61c0539ec74", - "reference": "5c14cff4f955b17d20d088dec1bde61c0539ec74", + "url": "https://api.github.com/repos/Behat/Gherkin/zipball/74ac03d52c5e23ad8abd5c5cce4ab0e8dc1b530a", + "reference": "74ac03d52c5e23ad8abd5c5cce4ab0e8dc1b530a", "shasum": "" }, "require": { @@ -9357,35 +9688,33 @@ "gherkin", "parser" ], - "time": "2016-10-30T11:50:56+00:00" + "time": "2017-08-30T11:04:43+00:00" }, { "name": "codeception/codeception", - "version": "2.3.8", + "version": "2.5.1", "source": { "type": "git", "url": "https://github.com/Codeception/Codeception.git", - "reference": "43eade17a8cd68e9cde401e8585b09d11d41b12d" + "reference": "e0a658c64e98811a6fd4f6aa7c3222e0609066a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Codeception/zipball/43eade17a8cd68e9cde401e8585b09d11d41b12d", - "reference": "43eade17a8cd68e9cde401e8585b09d11d41b12d", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/e0a658c64e98811a6fd4f6aa7c3222e0609066a9", + "reference": "e0a658c64e98811a6fd4f6aa7c3222e0609066a9", "shasum": "" }, "require": { - "behat/gherkin": "~4.4.0", - "codeception/stub": "^1.0", + "behat/gherkin": "^4.4.0", + "codeception/phpunit-wrapper": "^6.0.9|^7.0.6", + "codeception/stub": "^2.0", + "ext-curl": "*", "ext-json": "*", "ext-mbstring": "*", "facebook/webdriver": ">=1.1.3 <2.0", "guzzlehttp/guzzle": ">=4.1.4 <7.0", "guzzlehttp/psr7": "~1.0", - "php": ">=5.4.0 <8.0", - "phpunit/php-code-coverage": ">=2.2.4 <6.0", - "phpunit/phpunit": ">=4.8.28 <5.0.0 || >=5.6.3 <7.0", - "sebastian/comparator": ">1.1 <3.0", - "sebastian/diff": ">=1.4 <3.0", + "php": ">=5.6.0 <8.0", "symfony/browser-kit": ">=2.7 <5.0", "symfony/console": ">=2.7 <5.0", "symfony/css-selector": ">=2.7 <5.0", @@ -9427,7 +9756,7 @@ }, "autoload": { "psr-4": { - "Codeception\\": "src\\Codeception", + "Codeception\\": "src/Codeception", "Codeception\\Extension\\": "ext" } }, @@ -9451,27 +9780,70 @@ "functional testing", "unit testing" ], - "time": "2018-01-27T22:47:33+00:00" + "time": "2018-10-29T21:23:19+00:00" }, { - "name": "codeception/stub", - "version": "1.0.1", + "name": "codeception/phpunit-wrapper", + "version": "6.0.12", "source": { "type": "git", - "url": "https://github.com/Codeception/Stub.git", - "reference": "673ea54cdd7141e0a5138ad78aaa60751912f573" + "url": "https://github.com/Codeception/phpunit-wrapper.git", + "reference": "de922c760dfddf8a33c4a066efcd0cd93576d957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Stub/zipball/673ea54cdd7141e0a5138ad78aaa60751912f573", - "reference": "673ea54cdd7141e0a5138ad78aaa60751912f573", + "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/de922c760dfddf8a33c4a066efcd0cd93576d957", + "reference": "de922c760dfddf8a33c4a066efcd0cd93576d957", "shasum": "" }, "require": { - "phpunit/phpunit-mock-objects": "^2.3|^3.0|^4.0|^5.0" + "phpunit/php-code-coverage": ">=4.0.4 <6.0", + "phpunit/phpunit": ">=5.7.27 <7.0", + "sebastian/comparator": ">=1.2.4 <3.0", + "sebastian/diff": ">=1.4 <4.0" + }, + "replace": { + "codeception/phpunit-wrapper": "*" }, "require-dev": { - "phpunit/phpunit": "^4.8|^5.0|^6.0|^7.0" + "codeception/specify": "*", + "vlucas/phpdotenv": "^2.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Codeception\\PHPUnit\\": "src\\" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Davert", + "email": "davert.php@resend.cc" + } + ], + "description": "PHPUnit classes used by Codeception", + "time": "2018-09-12T20:19:47+00:00" + }, + { + "name": "codeception/stub", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/Codeception/Stub.git", + "reference": "f50bc271f392a2836ff80690ce0c058efe1ae03e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/Stub/zipball/f50bc271f392a2836ff80690ce0c058efe1ae03e", + "reference": "f50bc271f392a2836ff80690ce0c058efe1ae03e", + "shasum": "" + }, + "require": { + "phpunit/phpunit": ">=4.8 <8.0" }, "type": "library", "autoload": { @@ -9484,7 +9856,7 @@ "MIT" ], "description": "Flexible Stub wrapper for PHPUnit's Mock Builder", - "time": "2018-01-27T00:37:17+00:00" + "time": "2018-07-26T11:55:37+00:00" }, { "name": "composer/semver", @@ -9548,36 +9920,85 @@ ], "time": "2016-08-30T16:08:34+00:00" }, + { + "name": "composer/xdebug-handler", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "dc523135366eb68f22268d069ea7749486458562" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/dc523135366eb68f22268d069ea7749486458562", + "reference": "dc523135366eb68f22268d069ea7749486458562", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0", + "psr/log": "^1.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without xdebug.", + "keywords": [ + "Xdebug", + "performance" + ], + "time": "2018-11-29T10:59:02+00:00" + }, { "name": "facebook/webdriver", - "version": "1.5.0", + "version": "1.6.0", "source": { "type": "git", "url": "https://github.com/facebook/php-webdriver.git", - "reference": "86b5ca2f67173c9d34340845dd690149c886a605" + "reference": "bd8c740097eb9f2fc3735250fc1912bc811a954e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/facebook/php-webdriver/zipball/86b5ca2f67173c9d34340845dd690149c886a605", - "reference": "86b5ca2f67173c9d34340845dd690149c886a605", + "url": "https://api.github.com/repos/facebook/php-webdriver/zipball/bd8c740097eb9f2fc3735250fc1912bc811a954e", + "reference": "bd8c740097eb9f2fc3735250fc1912bc811a954e", "shasum": "" }, "require": { "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", "ext-zip": "*", "php": "^5.6 || ~7.0", "symfony/process": "^2.8 || ^3.1 || ^4.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^2.0", - "guzzle/guzzle": "^3.4.1", - "php-coveralls/php-coveralls": "^1.0.2", + "jakub-onderka/php-parallel-lint": "^0.9.2", + "php-coveralls/php-coveralls": "^2.0", "php-mock/php-mock-phpunit": "^1.1", "phpunit/phpunit": "^5.7", "sebastian/environment": "^1.3.4 || ^2.0 || ^3.0", "squizlabs/php_codesniffer": "^2.6", "symfony/var-dumper": "^3.3 || ^4.0" }, + "suggest": { + "ext-SimpleXML": "For Firefox profile creation" + }, "type": "library", "extra": { "branch-alias": { @@ -9601,28 +10022,28 @@ "selenium", "webdriver" ], - "time": "2017-11-15T11:08:09+00:00" + "time": "2018-05-16T17:37:13+00:00" }, { "name": "friendsofphp/php-cs-fixer", - "version": "v2.2.16", + "version": "v2.2.20", "source": { "type": "git", "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", - "reference": "f67918efb38a186c6c731e46e52eab4fee329a49" + "reference": "f1631f0747ad2a9dd3de8d7873b71f6573f8d0c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/f67918efb38a186c6c731e46e52eab4fee329a49", - "reference": "f67918efb38a186c6c731e46e52eab4fee329a49", + "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/f1631f0747ad2a9dd3de8d7873b71f6573f8d0c2", + "reference": "f1631f0747ad2a9dd3de8d7873b71f6573f8d0c2", "shasum": "" }, "require": { "composer/semver": "^1.4", + "composer/xdebug-handler": "^1.0", "doctrine/annotations": "^1.2", "ext-json": "*", "ext-tokenizer": "*", - "gecko-packages/gecko-php-unit": "^2.0", "php": "^5.3.6 || >=7.0 <7.3", "sebastian/diff": "^1.4", "symfony/console": "^2.4 || ^3.0 || ^4.0", @@ -9641,9 +10062,9 @@ "hhvm": "<3.18" }, "require-dev": { - "johnkary/phpunit-speedtrap": "^1.0.1", + "johnkary/phpunit-speedtrap": "^1.0.1 || ^2.0 || ^3.0", "justinrainbow/json-schema": "^5.0", - "keradus/cli-executor": "^1.0", + "keradus/cli-executor": "^1.1", "mikey179/vfsstream": "^1.6", "php-coveralls/php-coveralls": "^1.0.2", "phpunit/phpunit": "^4.8.35 || ^5.4.3", @@ -9651,17 +10072,14 @@ }, "suggest": { "ext-mbstring": "For handling non-UTF8 characters in cache signature.", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "For IsIdenticalString constraint.", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "For XmlMatchesXsd constraint.", "symfony/polyfill-mbstring": "When enabling `ext-mbstring` is not possible." }, "bin": [ "php-cs-fixer" ], "type": "application", - "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - } - }, "autoload": { "psr-4": { "PhpCsFixer\\": "src/" @@ -9692,74 +10110,30 @@ } ], "description": "A tool to automatically fix PHP code style", - "time": "2018-02-03T08:20:15+00:00" - }, - { - "name": "gecko-packages/gecko-php-unit", - "version": "v2.2.1", - "source": { - "type": "git", - "url": "https://github.com/GeckoPackages/GeckoPHPUnit.git", - "reference": "a06beb80f63645140c251cfd757ba94a4a540be5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GeckoPackages/GeckoPHPUnit/zipball/a06beb80f63645140c251cfd757ba94a4a540be5", - "reference": "a06beb80f63645140c251cfd757ba94a4a540be5", - "shasum": "" - }, - "require": { - "php": "^5.3.6 || ^7.0" - }, - "conflict": { - "phpunit/phpunit": ">=6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.4.3" - }, - "suggest": { - "ext-dom": "When testing with xml.", - "ext-libxml": "When testing with xml.", - "phpunit/phpunit": "This is an extension for PHPUnit so make sure you have that in some way." - }, - "type": "library", - "autoload": { - "psr-4": { - "GeckoPackages\\PHPUnit\\": "src/PHPUnit" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Additional PHPUnit asserts and constraints.", - "homepage": "https://github.com/GeckoPackages", - "keywords": [ - "extension", - "filesystem", - "phpunit" - ], - "time": "2018-02-05T09:26:06+00:00" + "time": "2018-06-02T17:26:04+00:00" }, { "name": "liip/functional-test-bundle", - "version": "1.9.3", + "version": "1.10.0", "source": { "type": "git", "url": "https://github.com/liip/LiipFunctionalTestBundle.git", - "reference": "80329104370eabebc10df69c15e98f585773884d" + "reference": "cbfa26d5d2ccbf8fd5350c90a77c448f3a630ff8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/liip/LiipFunctionalTestBundle/zipball/80329104370eabebc10df69c15e98f585773884d", - "reference": "80329104370eabebc10df69c15e98f585773884d", + "url": "https://api.github.com/repos/liip/LiipFunctionalTestBundle/zipball/cbfa26d5d2ccbf8fd5350c90a77c448f3a630ff8", + "reference": "cbfa26d5d2ccbf8fd5350c90a77c448f3a630ff8", "shasum": "" }, "require": { "doctrine/common": "~2.0", "php": "^5.6|^7.0", - "symfony/browser-kit": "^2.7|^3.0|^4.0", - "symfony/framework-bundle": "^2.7|^3.0|^4.0" + "symfony/browser-kit": "^2.7|^3.0", + "symfony/framework-bundle": "^2.7|^3.0" + }, + "conflict": { + "phpunit/phpunit": ">=7" }, "require-dev": { "brianium/paratest": "~0.12.0|~0.13.2", @@ -9772,11 +10146,11 @@ "jackalope/jackalope-doctrine-dbal": "1.1.*|1.2.*", "nelmio/alice": "~1.7|~2.0", "phpunit/phpunit": "^4.8.35|^5.7|^6.1", - "symfony/assetic-bundle": "^2.7|^3.0|^4.0", - "symfony/console": "^2.7|^3.0|^4.0", - "symfony/monolog-bundle": "^2.7|^3.0|^4.0", - "symfony/phpunit-bridge": "^2.7|^3.0|^4.0", - "symfony/symfony": "^2.7.1|^3.3|^4.0", + "symfony/assetic-bundle": "^2.7|^3.0", + "symfony/console": "^2.7|^3.0", + "symfony/monolog-bundle": "^2.7|^3.0", + "symfony/phpunit-bridge": "^2.7|^3.0", + "symfony/symfony": "^2.7.1|^3.3", "twig/twig": "~1.12|~2.0" }, "suggest": { @@ -9785,8 +10159,7 @@ "doctrine/doctrine-fixtures-bundle": "Required when using the fixture loading functionality", "doctrine/orm": "Required when using the fixture loading functionality with an ORM and SQLite", "hautelook/alice-bundle": "Required when using loadFixtureFiles functionality with custom providers", - "nelmio/alice": "Required when using loadFixtureFiles functionality", - "symfony/framework-bundle": "To use assertStatusCode and assertValidationErrors ~2.5" + "nelmio/alice": "Required when using loadFixtureFiles functionality" }, "type": "symfony-bundle", "extra": { @@ -9817,29 +10190,32 @@ "keywords": [ "Symfony2" ], - "time": "2018-02-02T23:34:47+00:00" + "time": "2018-08-10T18:22:42+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.7.0", + "version": "1.8.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.1" + }, + "replace": { + "myclabs/deep-copy": "self.version" }, "require-dev": { "doctrine/collections": "^1.0", "doctrine/common": "^2.6", - "phpunit/phpunit": "^4.1" + "phpunit/phpunit": "^7.1" }, "type": "library", "autoload": { @@ -9862,7 +10238,7 @@ "object", "object graph" ], - "time": "2017-04-12T18:52:22+00:00" + "time": "2018-06-11T23:09:50+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -9920,29 +10296,35 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "3.3.2", + "version": "4.3.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2" + "reference": "94fd0001232e47129dd3504189fa1c7225010d08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bf329f6c1aadea3299f08ee804682b7c45b326a2", - "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", + "reference": "94fd0001232e47129dd3504189fa1c7225010d08", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0", + "php": "^7.0", "phpdocumentor/reflection-common": "^1.0.0", "phpdocumentor/type-resolver": "^0.4.0", "webmozart/assert": "^1.0" }, "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^4.4" + "doctrine/instantiator": "~1.0.5", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^6.4" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.x-dev" + } + }, "autoload": { "psr-4": { "phpDocumentor\\Reflection\\": [ @@ -9961,7 +10343,7 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2017-11-10T14:09:06+00:00" + "time": "2017-11-30T07:14:17+00:00" }, { "name": "phpdocumentor/type-resolver", @@ -10012,33 +10394,33 @@ }, { "name": "phpspec/prophecy", - "version": "1.7.4", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "9f901e29c93dae4aa77c0bb161df4276f9c9a1be" + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/9f901e29c93dae4aa77c0bb161df4276f9c9a1be", - "reference": "9f901e29c93dae4aa77c0bb161df4276f9c9a1be", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", "shasum": "" }, "require": { "doctrine/instantiator": "^1.0.2", "php": "^5.3|^7.0", "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", - "sebastian/comparator": "^1.1|^2.0", + "sebastian/comparator": "^1.1|^2.0|^3.0", "sebastian/recursion-context": "^1.0|^2.0|^3.0" }, "require-dev": { "phpspec/phpspec": "^2.5|^3.2", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7.x-dev" + "dev-master": "1.8.x-dev" } }, "autoload": { @@ -10071,7 +10453,7 @@ "spy", "stub" ], - "time": "2018-02-11T18:49:29+00:00" + "time": "2018-08-05T17:53:17+00:00" }, { "name": "phpstan/phpstan-shim", @@ -10163,6 +10545,7 @@ "testing", "xunit" ], + "abandoned": true, "time": "2016-12-02T14:39:14+00:00" }, { @@ -10367,29 +10750,29 @@ }, { "name": "phpunit/php-token-stream", - "version": "1.4.12", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16" + "reference": "791198a2c6254db10131eecfe8c06670700904db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16", - "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", + "reference": "791198a2c6254db10131eecfe8c06670700904db", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": ">=5.3.3" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "phpunit/phpunit": "^6.2.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -10412,7 +10795,7 @@ "keywords": [ "tokenizer" ], - "time": "2017-12-04T08:55:13+00:00" + "time": "2017-11-27T05:48:46+00:00" }, { "name": "phpunit/phpunit", @@ -11192,25 +11575,25 @@ }, { "name": "symfony/css-selector", - "version": "v3.4.4", + "version": "v4.2.1", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "e66394bc7610e69279bfdb3ab11b4fe65403f556" + "reference": "aa9fa526ba1b2ec087ffdfb32753803d999fcfcd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/e66394bc7610e69279bfdb3ab11b4fe65403f556", - "reference": "e66394bc7610e69279bfdb3ab11b4fe65403f556", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/aa9fa526ba1b2ec087ffdfb32753803d999fcfcd", + "reference": "aa9fa526ba1b2ec087ffdfb32753803d999fcfcd", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": "^7.1.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.2-dev" } }, "autoload": { @@ -11241,20 +11624,20 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:37:34+00:00" + "time": "2018-11-11T19:52:12+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.7.0", + "version": "v1.10.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "8eca20c8a369e069d4f4c2ac9895144112867422" + "reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/8eca20c8a369e069d4f4c2ac9895144112867422", - "reference": "8eca20c8a369e069d4f4c2ac9895144112867422", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9050816e2ca34a8e916c3a0ae8b9c2fccf68b631", + "reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631", "shasum": "" }, "require": { @@ -11263,7 +11646,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -11296,20 +11679,20 @@ "portable", "shim" ], - "time": "2018-01-31T17:43:24+00:00" + "time": "2018-09-21T13:07:52+00:00" }, { "name": "symfony/var-dumper", - "version": "v3.4.4", + "version": "v3.4.20", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "472a9849930cf21f73abdb02240f17cf5b5bd1a7" + "reference": "6867713afe6c50ade2f34ed6435563b065a52145" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/472a9849930cf21f73abdb02240f17cf5b5bd1a7", - "reference": "472a9849930cf21f73abdb02240f17cf5b5bd1a7", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6867713afe6c50ade2f34ed6435563b065a52145", + "reference": "6867713afe6c50ade2f34ed6435563b065a52145", "shasum": "" }, "require": { @@ -11365,20 +11748,20 @@ "debug", "dump" ], - "time": "2018-01-29T09:03:43+00:00" + "time": "2018-11-20T16:10:26+00:00" }, { "name": "symfony/web-profiler-bundle", - "version": "v2.8.34", + "version": "v2.8.49", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "344fd9da9942523054d145d85a939c5196fce5ac" + "reference": "3aeef1328e46e83f7e8822f8a5093faa8ee776c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/344fd9da9942523054d145d85a939c5196fce5ac", - "reference": "344fd9da9942523054d145d85a939c5196fce5ac", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/3aeef1328e46e83f7e8822f8a5093faa8ee776c2", + "reference": "3aeef1328e46e83f7e8822f8a5093faa8ee776c2", "shasum": "" }, "require": { @@ -11424,35 +11807,30 @@ ], "description": "Symfony WebProfilerBundle", "homepage": "https://symfony.com", - "time": "2018-01-07T17:01:19+00:00" + "time": "2018-11-11T11:18:13+00:00" }, { "name": "webfactory/exceptions-bundle", - "version": "4.3.0", + "version": "4.4.0", "source": { "type": "git", "url": "https://github.com/webfactory/exceptions-bundle.git", - "reference": "21520dcb9eabe1359a888b7dce556b93e2e89cef" + "reference": "6cfd28eefc7d48cd3921f8b6e3f9115239c5e08e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webfactory/exceptions-bundle/zipball/21520dcb9eabe1359a888b7dce556b93e2e89cef", - "reference": "21520dcb9eabe1359a888b7dce556b93e2e89cef", + "url": "https://api.github.com/repos/webfactory/exceptions-bundle/zipball/6cfd28eefc7d48cd3921f8b6e3f9115239c5e08e", + "reference": "6cfd28eefc7d48cd3921f8b6e3f9115239c5e08e", "shasum": "" }, "require": { - "symfony/twig-bundle": "~2.2" + "symfony/twig-bundle": "^2.2||^3.0" }, "require-dev": { "phpunit/phpunit": "~4.0", - "symfony/framework-bundle": "~2.2" + "symfony/framework-bundle": "^2.2||^3.0" }, "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-default": "3.1.x-dev" - } - }, "autoload": { "psr-4": { "Webfactory\\Bundle\\ExceptionsBundle\\": "" @@ -11470,9 +11848,9 @@ "role": "Developer" } ], - "description": "A simple controller to display error pages during development plus some building blocks for more user-friendly error pages.", - "homepage": "http://inside.webfactory.de/de/blog/symfony2-exception-handling-and-custom-error-pages-explained.html", - "time": "2016-01-19T14:46:51+00:00" + "description": "Building blocks for more user-friendly error pages, plus a simple controller to display error pages during development (helpful prior to Symfony 2.6.3)", + "homepage": "https://www.webfactory.de/blog/symfony2-exception-handling-and-custom-error-pages-explained", + "time": "2018-10-01T15:25:51+00:00" }, { "name": "webmozart/assert", @@ -11529,7 +11907,6 @@ "minimum-stability": "dev", "stability-flags": { "mautic/core": 20, - "willdurand/oauth-server-bundle": 20, "thedmsgroup/mautic-eb-custom": 20, "thedmsgroup/mautic-extended-field-bundle": 20, "thedmsgroup/mautic-contact-client-bundle": 20, @@ -11546,7 +11923,7 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": ">=5.6.19 <7.2", + "php": ">=5.6.19 <7.3", "ext-curl": "*", "ext-dom": "*", "ext-json": "*", diff --git a/scripts/build-dev.sh b/scripts/build-dev.sh index 88af2c6..a3fb6a9 100755 --- a/scripts/build-dev.sh +++ b/scripts/build-dev.sh @@ -8,11 +8,8 @@ BASEDIR=$(dirname "$BASH_SOURCE") cd $BASEDIR/../ BASEDIR=$( pwd ) -if [ "upgrade" != "$1" ] -then - echo ; echo "Pulling mautic-eb" - git pull -fi +echo ; echo "Pulling mautic-eb" +git pull echo ; echo "Cleaning up the build space." rm -rf ./mautic ./bin ./vendor ./plugins ./mautic_custom @@ -20,12 +17,7 @@ mkdir -p ./plugins touch ./plugins/.gitkeep echo ; echo "Setting composer.lock and composer.custom files from the dist copies." -if [ "upgrade" = "$1" ] -then - cp composer.lock composer.lock.dev -else - cp composer.lock.dev composer.lock -fi +cp composer.lock.dev composer.lock cp composer.custom.dev composer.custom echo ; echo "Custom build." diff --git a/scripts/build-local.sh b/scripts/build-local.sh index 93fc200..490a1db 100755 --- a/scripts/build-local.sh +++ b/scripts/build-local.sh @@ -7,6 +7,12 @@ BASEDIR=$(dirname "$BASH_SOURCE") cd $BASEDIR/../ BASEDIR=$( pwd ) +if [ -f "./mautic/app/config/local.php" ] +then + echo ; echo "Backup local.php" + cp ./mautic/app/config/local.php /tmp/mautic_local.php +fi + echo ; echo "Pulling mautic-eb" git pull @@ -150,6 +156,17 @@ else cd - fi +if [ ! -d "./plugins/MauticMediaBundle/.git" ] +then + rm -rf ./plugins/MauticMediaBundle + git clone -b master https://github.com/TheDMSGroup/mautic-media.git ./plugins/MauticMediaBundle +else + cd ./plugins/MauticMediaBundle + git checkout master + git pull + cd - +fi + if [ ! -d "./mautic_custom/.git" ] then rm -rf ./mautic_custom @@ -168,4 +185,12 @@ composer assets --no-interaction # Do not conflict with the standard distribution, we want the composer.lock to exclude customization examples. cp composer.lock composer.lock.dev git checkout composer.lock -rm -f composer.custom \ No newline at end of file +rm -f composer.custom + +if [ -f "/tmp/mautic_local.php" ] +then + echo ; echo "Restoring local.php" + cp /tmp/mautic_local.php ./mautic/app/config/local.php + rm - ./mautic/app/config/parameters_local.php + rm -rf /tmp/mautic_local.php +fi \ No newline at end of file diff --git a/scripts/build-upgrade.sh b/scripts/build-upgrade.sh new file mode 100755 index 0000000..875895d --- /dev/null +++ b/scripts/build-upgrade.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash +# For upgrading this mautic-eb package to a newer version of Mautic only. NOT for use in any environments. + +set -e + +BASEDIR=$(dirname "$BASH_SOURCE") +cd $BASEDIR/../ +BASEDIR=$( pwd ) + +echo ; echo "Cleaning up the build space." +rm -rf ./mautic ./bin ./vendor ./plugins ./mautic_custom ./composer.lock ./composer.lock.dev +mkdir -p ./plugins ./mautic_custom +touch ./plugins/.gitkeep +touch ./mautic_custom/.gitkeep + +read -p 'Insert the SHA you wish to upgrade mautic to in the mautic-eb repo: ' SHA +echo "Setting new sha to $SHA" +composer require mautic/core:dev-master#$SHA + +echo "Updating dev/custom to $SHA" +cp composer.custom.dev composer.custom +composer update --lock +cp composer.lock composer.lock.dev + +echo "Updating core to $SHA" +rm -rf composer.lock composer.custom +composer update --lock + +echo ; echo "Here's a diff of what this upgrade changes." +git --no-pager diff --minimal diff --git a/scripts/core-patches.sh b/scripts/core-patches.sh index 4fe0d03..16e4292 100755 --- a/scripts/core-patches.sh +++ b/scripts/core-patches.sh @@ -1,6 +1,10 @@ #!/usr/bin/env bash # Example of how to apply PRs as patches. -# Only needed if using dist-custom.sh! +# Only needed if using build-dev.sh! +# +# To test: +# cd ./mautic +# git clean -fd ; git reset --hard origin ; bash ../scripts/core-patches.sh set -e @@ -12,90 +16,57 @@ echo "----------------------------------------------------" echo "Applying selected patches to Mautic core." cd ./mautic -# Should go into 2.15.0 but is not merged yet. -echo "----------------------------------------------------" -echo "[Enhancement] Allow filtering contacts by Campaign Membership for segments. #5911" -echo "https://github.com/mautic/mautic/pull/5911" -curl -L "https://github.com/mautic/mautic/pull/5911.diff" | git apply -v - -# Needs refactoring before acceptance. -echo "----------------------------------------------------" -echo "[Enhancement] Support includes/excludes with text fields for bulk filtering. #5925" -echo "https://github.com/mautic/mautic/pull/5925" -curl -L "https://github.com/mautic/mautic/pull/5925.diff" | git apply -v - -# Conflicts resolved. Ready for tagging. But needs fix for dashboard widgets. -echo "----------------------------------------------------" -echo "Config option for default date range on DateRangeFilter. #6091" -echo "https://github.com/mautic/mautic/pull/6091" -curl -L "https://github.com/mautic/mautic/pull/6091.diff" | git apply -v - -# Ready for tagging. Needs developer documentation before merging. -echo "----------------------------------------------------" -echo "API call to clone an existing campaign. #6125" -echo "https://github.com/mautic/mautic/pull/6125" -curl -L "https://github.com/mautic/mautic/pull/6125.diff" | git apply -v - -# Should go into 2.15.0 but is not merged yet. -echo "----------------------------------------------------" -echo "[Feature] Chained actions #6187" -echo "https://github.com/mautic/mautic/pull/6187" -# Removed app.js from diff. -cat "../scripts/patches/6187.diff" | git apply -v +## MUST BE REFACTORED. +#echo "----------------------------------------------------" +#echo "[Enhancement] Support includes/excludes with text fields for bulk filtering. #5925" +#echo "https://github.com/mautic/mautic/pull/5925" +#curl -L "https://github.com/mautic/mautic/pull/5925.diff" | git apply -v +#git add . ; git commit -nm "PATCH https://github.com/mautic/mautic/pull/5925" # Ready for tagging. echo "----------------------------------------------------" echo "Campaign summary statistics (performance boost and date range specificity) #6651" echo "https://github.com/mautic/mautic/pull/6651" -curl -L "https://github.com/mautic/mautic/pull/6651.diff" | git apply -v +git apply -v "../scripts/patches/6651.diff" +git add . ; git commit --author="6651 " -nm "https://github.com/mautic/mautic/pull/6651" # Should go into 2.15.0 but is not merged yet. echo "----------------------------------------------------" echo "Create a Soft delete process for campaign events #6247" echo "https://github.com/mautic/mautic/pull/6247" # Removed campaign_schema.sql -cat "../scripts/patches/6247.diff" | git apply -v +git apply -v "../scripts/patches/6247.diff" +git add . ; git commit --author="6247 " -nm "https://github.com/mautic/mautic/pull/6247" # Ready for tagging. echo "----------------------------------------------------" echo "Applies patches for Campaign Tagging" -#echo "https://github.com/mautic/mautic/pull/6152" -# Removed app.js and added mautic.campaign.model.summary -#cat "../scripts/patches/6152.diff" | git apply -v -echo "https://github.com/mautic/mautic/pull/6792" -cat "../scripts/patches/6792.diff" | git apply -v +echo "https://github.com/mautic/mautic/pull/6152" +git apply -v "../scripts/patches/6792.diff" +git add . ; git commit --author="6792 " -nm "https://github.com/mautic/mautic/pull/6792" # Temporary state abbreviation patch echo "----------------------------------------------------" echo "Converts United States proper names to abbreviations" -cat "../scripts/patches/us_state_abbrev_acceptance.diff" | git apply -v - -# Should go into 2.15.0 but is not merged yet. -echo "----------------------------------------------------" -echo "Add Campaign Event object to event config array for pushLead processing accuracy" -echo "https://github.com/mautic/mautic/pull/6638" -curl -L "https://github.com/mautic/mautic/pull/6638.diff" | git apply -v - -# Should go into 2.14.2 but is not merged yet. -echo "----------------------------------------------------" -echo "[Bug] Symfony Master/Slave support is broken #5970" -echo "https://github.com/mautic/mautic/pull/5970" -cat "../scripts/patches/5970.diff" | git apply -v - -# Recreates campaign limit in mautic:campaigns:trigger as --camapign-limit -echo "----------------------------------------------------" -echo "[Feature] mautic:campaigns:trigger --camapign-limit=XXX" -echo "https://github.com/mautic/mautic/pull/6753" -cat "../scripts/patches/6753.diff" | git apply -v +git apply -v "../scripts/patches/us_state_abbrev_acceptance.diff" +git add . ; git commit --author="us_state_abbrev_acceptance " -nm "us_state_abbrev_acceptance.diff" # Refactor queries for getting event counts on campaign trigger for performance ENG-620] echo "----------------------------------------------------" echo "Refactor queries for getting event counts on campaign trigger for performance [ENG-620]" echo "https://github.com/mautic/mautic/pull/6787" -cat "../scripts/patches/6787.diff" | git apply -v +git apply -v "../scripts/patches/6787.diff" +git add . ; git commit --author="6787 " -nm "https://github.com/mautic/mautic/pull/6787" + +echo "----------------------------------------------------" +echo "Add a \"Created By\" column to the Imports list. #6929" +echo "https://github.com/mautic/mautic/pull/6929" +git apply -v "../scripts/patches/6929.diff" +git add . ; git commit --author="6929 " -nm "https://github.com/mautic/mautic/pull/6929" -# Set cache on Dashboard Widgets [ENG-624] +# Import Enhancements echo "----------------------------------------------------" -echo "Set cache on Dashboard Widgets [ENG-624]" -echo "https://github.com/mautic/mautic/pull/6798" -cat "../scripts/patches/6798.diff" | git apply -v +echo "Import configuration enhancements #6962" +echo "https://github.com/mautic/mautic/pull/6962" +git apply -v "../scripts/patches/6962.diff" +git add . ; git commit --author="6962 " -nm "https://github.com/mautic/mautic/pull/6962" diff --git a/scripts/mautic-import.sh b/scripts/mautic-import.sh new file mode 100644 index 0000000..3b40537 --- /dev/null +++ b/scripts/mautic-import.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash +# Ensures the symlink for imports exists (in case of a /tmp folder purge/drop) +# And runs the import process in a loop for maximum performance. +# Limited batches of 300 to overcome RAM leak issues currently in Mautic core. +# Relies on the console alias. + +if [ -z $( which ps ) ] +then + echo "ps is required to run this script." + exit 1 +fi +if [ -z $( which grep ) ] +then + echo "grep is required to run this script." + exit 1 +fi +if [ -z $( which nohup ) ] +then + echo "nohup is required to run this script." + exit 1 +fi + +command="sudo nohup console mautic:import --limit=300 --quiet >/dev/null 2>&1" +count=$( ps aux --no-headers 2>&1 | grep -c "$command" 2>&1 ) +while [ "$count" -lt "2" ] +do + if [ ! -d /tmp/imports ] + then + sudo ln -sf /efs/mautic/imports /tmp + fi + eval ${command} + sleep 1 + count=$( ps aux --no-headers 2>&1 | grep -c "$command" 2>&1 ) +done diff --git a/scripts/mautic-segment-worker.sh b/scripts/mautic-segment-worker.sh new file mode 100755 index 0000000..61f0a2c --- /dev/null +++ b/scripts/mautic-segment-worker.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env bash +# script to handle lauching high volume segment updates + +# define a variable called MAUTIC_HV_SEGMENTS which is a comma delineated list of +# segment ids to update + +# Check dependencies. +if [ -z $( which ps ) ] +then + echo "ps is required to run this script." + exit 1 +fi +if [ -z $( which grep ) ] +then + echo "grep is required to run this script." + exit 1 +fi +if [ -z $( which nohup ) ] +then + echo "nohup is required to run this script." + exit 1 +fi + +# Load environment variables (which may change during execution). +if [ -f "/opt/elasticbeanstalk/support/envvars" ] +then + . /opt/elasticbeanstalk/support/envvars +fi + +# run the segment update for each high volume segment +if [ -n "$MAUTIC_HV_SEGMENTS" ] +then + IFS=',' + for segment in $MAUTIC_HV_SEGMENTS + do + cronloop mautic:segments:update --list-id=$segment --batch-limit=10000 --max-contacts=10000 & + done +fi diff --git a/scripts/newrelic-start.sh b/scripts/newrelic-start.sh index 56a1339..dc47f69 100755 --- a/scripts/newrelic-start.sh +++ b/scripts/newrelic-start.sh @@ -8,6 +8,7 @@ if [ -z "$NR_APPNAME" ] then echo "Please set the global variable NR_APPNAME if you wish to use NewRelic reporting." + rm -rf /etc/php.d/newrelic.ini exit 0 fi diff --git a/scripts/patches/5970.diff b/scripts/patches/5970.diff deleted file mode 100644 index 30195f5..0000000 --- a/scripts/patches/5970.diff +++ /dev/null @@ -1,340 +0,0 @@ -diff --git a/app/bundles/CampaignBundle/Entity/CampaignRepository.php b/app/bundles/CampaignBundle/Entity/CampaignRepository.php -index e8c2fe0373..b45897ffc2 100644 ---- a/app/bundles/CampaignBundle/Entity/CampaignRepository.php -+++ b/app/bundles/CampaignBundle/Entity/CampaignRepository.php -@@ -22,6 +22,7 @@ - class CampaignRepository extends CommonRepository - { - use ContactLimiterTrait; -+ use SlaveConnectionTrait; - - /** - * {@inheritdoc} -@@ -348,7 +349,7 @@ public function getPopularCampaigns($limit = 10) - */ - public function getCountsForPendingContacts($campaignId, array $pendingEvents, ContactLimiter $limiter) - { -- $q = $this->getEntityManager()->getConnection()->createQueryBuilder(); -+ $q = $this->getSlaveConnection($limiter)->createQueryBuilder(); - - $q->select('min(cl.lead_id) as min_id, max(cl.lead_id) as max_id, count(cl.lead_id) as the_count') - ->from(MAUTIC_TABLE_PREFIX.'campaign_leads', 'cl') -@@ -394,7 +395,7 @@ public function getCountsForPendingContacts($campaignId, array $pendingEvents, C - */ - public function getPendingContactIds($campaignId, ContactLimiter $limiter) - { -- $q = $this->getEntityManager()->getConnection()->createQueryBuilder(); -+ $q = $this->getSlaveConnection($limiter)->createQueryBuilder(); - - $q->select('cl.lead_id') - ->from(MAUTIC_TABLE_PREFIX.'campaign_leads', 'cl') -@@ -410,7 +411,7 @@ public function getPendingContactIds($campaignId, ContactLimiter $limiter) - $this->updateQueryFromContactLimiter('cl', $q, $limiter); - - // Only leads that have not started the campaign -- $sq = $this->getEntityManager()->getConnection()->createQueryBuilder(); -+ $sq = $this->getSlaveConnection($limiter)->createQueryBuilder(); - $sq->select('null') - ->from(MAUTIC_TABLE_PREFIX.'campaign_lead_event_log', 'e') - ->where( -@@ -449,7 +450,7 @@ public function getPendingContactIds($campaignId, ContactLimiter $limiter) - */ - public function getCampaignLeadCount($campaignId, $leadId = null, $pendingEvents = [], \DateTime $dateFrom = null, \DateTime $dateTo = null) - { -- $q = $this->getEntityManager()->getConnection()->createQueryBuilder(); -+ $q = $this->getSlaveConnection()->createQueryBuilder(); - - $q->select('count(cl.lead_id) as lead_count') - ->from(MAUTIC_TABLE_PREFIX.'campaign_leads', 'cl') -@@ -468,7 +469,7 @@ public function getCampaignLeadCount($campaignId, $leadId = null, $pendingEvents - } - - if (count($pendingEvents) > 0) { -- $sq = $this->getEntityManager()->getConnection()->createQueryBuilder(); -+ $sq = $this->getSlaveConnection()->createQueryBuilder(); - $sq->select('null') - ->from(MAUTIC_TABLE_PREFIX.'campaign_lead_event_log', 'e') - ->where( -@@ -500,7 +501,7 @@ public function getCampaignLeadCount($campaignId, $leadId = null, $pendingEvents - */ - public function getCampaignLeads($campaignId, $start = 0, $limit = false, $select = ['cl.lead_id']) - { -- $q = $this->getEntityManager()->getConnection()->createQueryBuilder(); -+ $q = $this->getSlaveConnection()->createQueryBuilder(); - - $q->select($select) - ->from(MAUTIC_TABLE_PREFIX.'campaign_leads', 'cl') -diff --git a/app/bundles/CampaignBundle/Entity/LeadEventLogRepository.php b/app/bundles/CampaignBundle/Entity/LeadEventLogRepository.php -index c9282494b1..d7aba37b84 100644 ---- a/app/bundles/CampaignBundle/Entity/LeadEventLogRepository.php -+++ b/app/bundles/CampaignBundle/Entity/LeadEventLogRepository.php -@@ -25,6 +25,7 @@ class LeadEventLogRepository extends CommonRepository - { - use TimelineTrait; - use ContactLimiterTrait; -+ use SlaveConnectionTrait; - - public function getEntities(array $args = []) - { -@@ -219,7 +220,7 @@ public function getUpcomingEvents(array $options = null) - */ - public function getCampaignLogCounts($campaignId, $excludeScheduled = false, $excludeNegative = true, \DateTime $dateFrom = null, \DateTime $dateTo = null) - { -- $q = $this->_em->getConnection()->createQueryBuilder() -+ $q = $this->getSlaveConnection()->createQueryBuilder() - ->from(MAUTIC_TABLE_PREFIX.'campaign_lead_event_log', 'o') - ->innerJoin( - 'o', -@@ -253,7 +254,7 @@ public function getCampaignLogCounts($campaignId, $excludeScheduled = false, $ex - } - - // Exclude failed events -- $failedSq = $this->_em->getConnection()->createQueryBuilder(); -+ $failedSq = $this->getSlaveConnection()->createQueryBuilder(); - $failedSq->select('null') - ->from(MAUTIC_TABLE_PREFIX.'campaign_lead_event_failed_log', 'fe') - ->where( -@@ -338,10 +339,10 @@ public function updateLead($fromLeadId, $toLeadId) - */ - public function getChartQuery($options) - { -- $chartQuery = new ChartQuery($this->getEntityManager()->getConnection(), $options['dateFrom'], $options['dateTo']); -+ $chartQuery = new ChartQuery($this->getSlaveConnection(), $options['dateFrom'], $options['dateTo']); - - // Load points for selected period -- $query = $this->_em->getConnection()->createQueryBuilder(); -+ $query = $this->getSlaveConnection()->createQueryBuilder(); - $query->select('ll.id, ll.date_triggered') - ->from(MAUTIC_TABLE_PREFIX.'campaign_lead_event_log', 'll') - ->join('ll', MAUTIC_TABLE_PREFIX.'campaign_events', 'e', 'e.id = ll.event_id'); -@@ -386,6 +387,7 @@ public function getChartQuery($options) - */ - public function getScheduled($eventId, \DateTime $now, ContactLimiter $limiter) - { -+ $this->getSlaveConnection($limiter); - $q = $this->createQueryBuilder('o'); - - $q->select('o, e, c') -@@ -418,6 +420,7 @@ public function getScheduled($eventId, \DateTime $now, ContactLimiter $limiter) - */ - public function getScheduledByIds(array $ids) - { -+ $this->getSlaveConnection(); - $q = $this->createQueryBuilder('o'); - - $q->select('o, e, c') -@@ -447,7 +450,7 @@ public function getScheduledCounts($campaignId, \DateTime $date, ContactLimiter - $now = clone $date; - $now->setTimezone(new \DateTimeZone('UTC')); - -- $q = $this->getEntityManager()->getConnection()->createQueryBuilder(); -+ $q = $this->getSlaveConnection($limiter)->createQueryBuilder(); - - $expr = $q->expr()->andX( - $q->expr()->eq('l.campaign_id', ':campaignId'), -@@ -486,7 +489,7 @@ public function getScheduledCounts($campaignId, \DateTime $date, ContactLimiter - */ - public function getDatesExecuted($eventId, array $contactIds) - { -- $qb = $this->getEntityManager()->getConnection()->createQueryBuilder(); -+ $qb = $this->getSlaveConnection()->createQueryBuilder(); - $qb->select('log.lead_id, log.date_triggered') - ->from(MAUTIC_TABLE_PREFIX.'campaign_lead_event_log', 'log') - ->where( -diff --git a/app/bundles/CampaignBundle/Entity/LeadRepository.php b/app/bundles/CampaignBundle/Entity/LeadRepository.php -index a0e7409de4..a56a2699bd 100644 ---- a/app/bundles/CampaignBundle/Entity/LeadRepository.php -+++ b/app/bundles/CampaignBundle/Entity/LeadRepository.php -@@ -23,6 +23,7 @@ - class LeadRepository extends CommonRepository - { - use ContactLimiterTrait; -+ use SlaveConnectionTrait; - - /** - * Get the details of leads added to a campaign. -@@ -207,7 +208,7 @@ public function checkLeadInCampaigns($lead, $options = []) - public function getInactiveContacts($campaignId, $decisionId, $parentDecisionId, ContactLimiter $limiter) - { - // Main query -- $q = $this->getEntityManager()->getConnection()->createQueryBuilder(); -+ $q = $this->getSlaveConnection($limiter)->createQueryBuilder(); - $q->select('l.lead_id, l.date_added') - ->from(MAUTIC_TABLE_PREFIX.'campaign_leads', 'l') - ->where($q->expr()->eq('l.campaign_id', ':campaignId')) -@@ -221,7 +222,7 @@ public function getInactiveContacts($campaignId, $decisionId, $parentDecisionId, - $this->updateQueryFromContactLimiter('l', $q, $limiter); - - // Limit to events that have not been executed or scheduled yet -- $eventQb = $this->getEntityManager()->getConnection()->createQueryBuilder(); -+ $eventQb = $this->getSlaveConnection($limiter)->createQueryBuilder(); - $eventQb->select('null') - ->from(MAUTIC_TABLE_PREFIX.'campaign_lead_event_log', 'log') - ->where( -@@ -237,7 +238,7 @@ public function getInactiveContacts($campaignId, $decisionId, $parentDecisionId, - - if ($parentDecisionId) { - // Limit to events that have no grandparent or whose grandparent has already been executed -- $grandparentQb = $this->getEntityManager()->getConnection()->createQueryBuilder(); -+ $grandparentQb = $this->getSlaveConnection($limiter)->createQueryBuilder(); - $grandparentQb->select('null') - ->from(MAUTIC_TABLE_PREFIX.'campaign_lead_event_log', 'grandparent_log') - ->where( -@@ -279,7 +280,7 @@ public function getInactiveContactCount($campaignId, array $decisionIds, Contact - - foreach ($decisionIds as $decisionId) { - // Main query -- $q = $this->getEntityManager()->getConnection()->createQueryBuilder(); -+ $q = $this->getSlaveConnection()->createQueryBuilder(); - $q->select('count(*)') - ->from(MAUTIC_TABLE_PREFIX.'campaign_leads', 'l') - ->where($q->expr()->eq('l.campaign_id', ':campaignId')) -@@ -291,7 +292,7 @@ public function getInactiveContactCount($campaignId, array $decisionIds, Contact - $this->updateQueryFromContactLimiter('l', $q, $limiter, true); - - // Limit to events that have not been executed or scheduled yet -- $eventQb = $this->getEntityManager()->getConnection()->createQueryBuilder(); -+ $eventQb = $this->getSlaveConnection($limiter)->createQueryBuilder(); - $eventQb->select('null') - ->from(MAUTIC_TABLE_PREFIX.'campaign_lead_event_log', 'log') - ->where( -@@ -385,7 +386,7 @@ public function getCountsForCampaignContactsBySegment($campaignId, ContactLimite - return new CountResult(0, 0, 0); - } - -- $qb = $this->getEntityManager()->getConnection()->createQueryBuilder(); -+ $qb = $this->getSlaveConnection($limiter)->createQueryBuilder(); - $qb->select('min(ll.lead_id) as min_id, max(ll.lead_id) as max_id, count(distinct(ll.lead_id)) as the_count') - ->from(MAUTIC_TABLE_PREFIX.'lead_lists_leads', 'll') - ->where( -@@ -420,7 +421,7 @@ public function getCampaignContactsBySegments($campaignId, ContactLimiter $limit - return []; - } - -- $qb = $this->getEntityManager()->getConnection()->createQueryBuilder(); -+ $qb = $this->getSlaveConnection($limiter)->createQueryBuilder(); - $qb->select('distinct(ll.lead_id) as id') - ->from(MAUTIC_TABLE_PREFIX.'lead_lists_leads', 'll') - ->where( -@@ -457,7 +458,7 @@ public function getCountsForOrphanedContactsBySegments($campaignId, ContactLimit - { - $segments = $this->getCampaignSegments($campaignId); - -- $qb = $this->getEntityManager()->getConnection()->createQueryBuilder(); -+ $qb = $this->getSlaveConnection($limiter)->createQueryBuilder(); - $qb->select('min(cl.lead_id) as min_id, max(cl.lead_id) as max_id, count(cl.lead_id) as the_count') - ->from(MAUTIC_TABLE_PREFIX.'campaign_leads', 'cl') - ->where( -@@ -486,7 +487,7 @@ public function getOrphanedContacts($campaignId, ContactLimiter $limiter) - { - $segments = $this->getCampaignSegments($campaignId); - -- $qb = $this->getEntityManager()->getConnection()->createQueryBuilder(); -+ $qb = $this->getSlaveConnection($limiter)->createQueryBuilder(); - $qb->select('cl.lead_id as id') - ->from(MAUTIC_TABLE_PREFIX.'campaign_leads', 'cl') - ->where( -diff --git a/app/bundles/CampaignBundle/Entity/SlaveConnectionTrait.php b/app/bundles/CampaignBundle/Entity/SlaveConnectionTrait.php -new file mode 100644 -index 0000000000..234c7e43df ---- /dev/null -+++ b/app/bundles/CampaignBundle/Entity/SlaveConnectionTrait.php -@@ -0,0 +1,48 @@ -+getEntityManager()->getConnection(); -+ if ($connection instanceof MasterSlaveConnection) { -+ if ( -+ !$limiter -+ || !($limiter->getContactId() || $limiter->getContactIdList()) -+ ) { -+ $connection->connect('slave'); -+ } -+ } -+ -+ return $connection; -+ } -+} -diff --git a/app/bundles/CoreBundle/Doctrine/Helper/TableSchemaHelper.php b/app/bundles/CoreBundle/Doctrine/Helper/TableSchemaHelper.php -index afbc659b49..c358f828c0 100644 ---- a/app/bundles/CoreBundle/Doctrine/Helper/TableSchemaHelper.php -+++ b/app/bundles/CoreBundle/Doctrine/Helper/TableSchemaHelper.php -@@ -68,7 +68,14 @@ public function __construct(Connection $db, $prefix, ColumnSchemaHelper $columnH - $this->sm = $db->getSchemaManager(); - $this->prefix = $prefix; - $this->columnHelper = $columnHelper; -- $this->schema = new Schema([], [], $this->sm->createSchemaConfig()); -+ if ($db instanceof \Doctrine\DBAL\Connections\MasterSlaveConnection) { -+ $params = $db->getParams(); -+ $schemaConfig = new \Doctrine\DBAL\Schema\SchemaConfig(); -+ $schemaConfig->setName($params['master']['dbname']); -+ $this->schema = new Schema([], [], $schemaConfig); -+ } else { -+ $this->schema = new Schema([], [], $this->sm->createSchemaConfig()); -+ } - } - - /** -diff --git a/app/bundles/LeadBundle/Segment/Query/ContactSegmentQueryBuilder.php b/app/bundles/LeadBundle/Segment/Query/ContactSegmentQueryBuilder.php -index 277813a766..3486b7df6f 100644 ---- a/app/bundles/LeadBundle/Segment/Query/ContactSegmentQueryBuilder.php -+++ b/app/bundles/LeadBundle/Segment/Query/ContactSegmentQueryBuilder.php -@@ -11,6 +11,8 @@ - - namespace Mautic\LeadBundle\Segment\Query; - -+use Doctrine\DBAL\Connection; -+use Doctrine\DBAL\Connections\MasterSlaveConnection; - use Doctrine\ORM\EntityManager; - use Mautic\LeadBundle\Entity\LeadList; - use Mautic\LeadBundle\Event\LeadListFilteringEvent; -@@ -63,8 +65,15 @@ public function __construct(EntityManager $entityManager, RandomParameterName $r - */ - public function assembleContactsSegmentQueryBuilder($segmentId, $segmentFilters) - { -+ /** @var Connection $connection */ -+ $connection = $this->entityManager->getConnection(); -+ if ($connection instanceof MasterSlaveConnection) { -+ // Prefer a slave connection if available. -+ $connection->connect('slave'); -+ } -+ - /** @var QueryBuilder $queryBuilder */ -- $queryBuilder = new QueryBuilder($this->entityManager->getConnection()); -+ $queryBuilder = new QueryBuilder($connection); - - $queryBuilder->select('l.id')->from(MAUTIC_TABLE_PREFIX.'leads', 'l'); - diff --git a/scripts/patches/6187.diff b/scripts/patches/6187.diff deleted file mode 100644 index 80d0c7e..0000000 --- a/scripts/patches/6187.diff +++ /dev/null @@ -1,153 +0,0 @@ -diff --git a/app/bundles/CampaignBundle/Assets/js/campaign.js b/app/bundles/CampaignBundle/Assets/js/campaign.js -index 5f12bbd4a7..08bfd8b1c9 100644 ---- a/app/bundles/CampaignBundle/Assets/js/campaign.js -+++ b/app/bundles/CampaignBundle/Assets/js/campaign.js -@@ -450,13 +450,13 @@ Mautic.campaignBuilderConnectionsMap = { - 'action': { - 'top': { - 'source': ['leadsource'], -- 'action': [], -+ 'action': ['bottom'], - 'condition': ['yes', 'no'], - 'decision': ['yes', 'no'] - }, - 'bottom': { - 'source': [], -- 'action': [], -+ 'action': ['top'], - 'condition': ['top'], - 'decision': ['top'] - } -diff --git a/app/bundles/CampaignBundle/Executioner/EventExecutioner.php b/app/bundles/CampaignBundle/Executioner/EventExecutioner.php -index 823084ba31..47e43f1d42 100644 ---- a/app/bundles/CampaignBundle/Executioner/EventExecutioner.php -+++ b/app/bundles/CampaignBundle/Executioner/EventExecutioner.php -@@ -194,6 +194,7 @@ public function executeLogs(Event $event, ArrayCollection $logs, Counter $counte - $evaluatedContacts = $this->actionExecutioner->execute($config, $logs); - $this->persistLogs($logs); - $this->executeConditionEventsForContacts($event, $evaluatedContacts->getPassed(), $counter); -+ $this->executeActionEventsForContacts($event, $evaluatedContacts->getPassed(), $counter); - break; - case Event::TYPE_CONDITION: - $evaluatedContacts = $this->conditionExecutioner->execute($config, $logs); -@@ -315,6 +316,32 @@ private function checkForRemovedContacts(ArrayCollection $logs) - } - } - -+ /** -+ * @param Event $event -+ * @param ArrayCollection $contacts -+ * @param Counter|null $counter -+ * -+ * @throws \Mautic\CampaignBundle\Executioner\Dispatcher\Exception\LogNotProcessedException -+ * @throws \Mautic\CampaignBundle\Executioner\Dispatcher\Exception\LogPassedAndFailedException -+ * @throws \Mautic\CampaignBundle\Executioner\Exception\CannotProcessEventException -+ * @throws \Mautic\CampaignBundle\Executioner\Scheduler\Exception\NotSchedulableException -+ */ -+ private function executeActionEventsForContacts(Event $event, ArrayCollection $contacts, Counter $counter = null) -+ { -+ $childrenCounter = new Counter(); -+ $actions = $event->getChildrenByEventType(Event::TYPE_ACTION); -+ $childrenCounter->advanceEvaluated($actions->count()); -+ -+ $this->logger->debug('CAMPAIGN: Executing '.$actions->count().' actions under action ID '.$event->getId()); -+ -+ $this->executeEventsForContacts($actions, $contacts, $childrenCounter); -+ -+ if ($counter) { -+ $counter->advanceTotalEvaluated($childrenCounter->getTotalEvaluated()); -+ $counter->advanceTotalExecuted($childrenCounter->getTotalExecuted()); -+ } -+ } -+ - /** - * @param Event $event - * @param ArrayCollection $contacts -diff --git a/app/bundles/CampaignBundle/Tests/Command/TriggerCampaignCommandTest.php b/app/bundles/CampaignBundle/Tests/Command/TriggerCampaignCommandTest.php -index f9c146fb8b..5fddb2c61e 100644 ---- a/app/bundles/CampaignBundle/Tests/Command/TriggerCampaignCommandTest.php -+++ b/app/bundles/CampaignBundle/Tests/Command/TriggerCampaignCommandTest.php -@@ -36,7 +36,7 @@ public function testCampaignExecutionForAll() - $this->runCommand('mautic:campaigns:trigger', ['-i' => 1, '-l' => 10]); - - // Let's analyze -- $byEvent = $this->getCampaignEventLogs([1, 2, 11, 12, 13]); -+ $byEvent = $this->getCampaignEventLogs([1, 2, 11, 12, 13, 16]); - $tags = $this->getTagCounts(); - - // Everyone should have been tagged with CampaignTest and have been sent Campaign Test Email 1 -@@ -61,6 +61,10 @@ public function testCampaignExecutionForAll() - $this->assertCount(8, $byEvent[12]); - $this->assertEquals(8, $tags['US:Action']); - -+ // Those tagged with US:Action should also be tagged with ChainedAction by a chained event. -+ $this->assertCount(8, $byEvent[16]); -+ $this->assertEquals(8, $tags['ChainedAction']); -+ - // The rest (42) contacts are not from the US and should be labeled with NonUS:Action - $this->assertCount(42, $byEvent[13]); - $this->assertEquals(42, $tags['NonUS:Action']); -@@ -197,7 +201,7 @@ public function testCampaignExecutionForOne() - $this->runCommand('mautic:campaigns:trigger', ['-i' => 1, '--contact-id' => 1]); - - // Let's analyze -- $byEvent = $this->getCampaignEventLogs([1, 2, 11, 12, 13]); -+ $byEvent = $this->getCampaignEventLogs([1, 2, 11, 12, 13, 16]); - $tags = $this->getTagCounts(); - - // Everyone should have been tagged with CampaignTest and have been sent Campaign Test Email 1 -@@ -222,6 +226,10 @@ public function testCampaignExecutionForOne() - $this->assertCount(0, $byEvent[12]); - $this->assertTrue(empty($tags['US:Action'])); - -+ // None tagged with US:Action, so none should be tagged with ChainedAction by a chained event. -+ $this->assertCount(0, $byEvent[16]); -+ $this->assertTrue(empty($tags['ChainedAction'])); -+ - // The rest (1) contacts are not from the US and should be labeled with NonUS:Action - $this->assertCount(1, $byEvent[13]); - $this->assertEquals(1, $tags['NonUS:Action']); -@@ -352,7 +360,7 @@ public function testCampaignExecutionForSome() - $this->runCommand('mautic:campaigns:trigger', ['-i' => 1, '--contact-ids' => '1,2,3,4,19']); - - // Let's analyze -- $byEvent = $this->getCampaignEventLogs([1, 2, 11, 12, 13]); -+ $byEvent = $this->getCampaignEventLogs([1, 2, 11, 12, 13, 16]); - $tags = $this->getTagCounts(); - - // Everyone should have been tagged with CampaignTest and have been sent Campaign Test Email 1 -@@ -377,6 +385,10 @@ public function testCampaignExecutionForSome() - $this->assertCount(1, $byEvent[12]); - $this->assertEquals(1, $tags['US:Action']); - -+ // Those tagged with US:Action should also be tagged with ChainedAction by a chained event. -+ $this->assertCount(1, $byEvent[16]); -+ $this->assertEquals(1, $tags['ChainedAction']); -+ - // The rest (4) contacts are not from the US and should be labeled with NonUS:Action - $this->assertCount(4, $byEvent[13]); - $this->assertEquals(4, $tags['NonUS:Action']); -diff --git a/app/bundles/CampaignBundle/Tests/Command/campaign_schema.sql b/app/bundles/CampaignBundle/Tests/Command/campaign_schema.sql -index 30e48cfde8..9cab8235b2 100644 ---- a/app/bundles/CampaignBundle/Tests/Command/campaign_schema.sql -+++ b/app/bundles/CampaignBundle/Tests/Command/campaign_schema.sql -@@ -13,7 +13,8 @@ VALUES - (6,'US:Action'), - (7,'NonUS:Action'), - (8,'Campaign Test'), -- (9,'EmailNotOpen'); -+ (9,'EmailNotOpen'), -+ (10,'ChainedAction'); - - INSERT INTO `#__campaigns` (`allow_restart`,`id`,`category_id`,`is_published`,`date_added`,`created_by`,`created_by_user`,`date_modified`,`modified_by`,`modified_by_user`,`checked_out`,`checked_out_by`,`checked_out_by_user`,`name`,`description`,`publish_up`,`publish_down`,`canvas_settings`) - VALUES -@@ -35,7 +36,8 @@ VALUES - (12,1,11,'Tag US:Action',NULL,'lead.changetags','action',3,'a:16:{s:14:\"canvasSettings\";a:2:{s:8:\"droppedX\";s:2:\"12\";s:8:\"droppedY\";s:3:\"357\";}s:4:\"name\";s:13:\"Tag US:Action\";s:11:\"triggerMode\";s:9:\"immediate\";s:11:\"triggerDate\";N;s:15:\"triggerInterval\";s:1:\"1\";s:19:\"triggerIntervalUnit\";s:1:\"d\";s:6:\"anchor\";s:3:\"yes\";s:10:\"properties\";a:1:{s:8:\"add_tags\";a:1:{i:0;s:1:\"6\";}}s:4:\"type\";s:15:\"lead.changetags\";s:9:\"eventType\";s:6:\"action\";s:15:\"anchorEventType\";s:9:\"condition\";s:10:\"campaignId\";s:47:\"mautic_801d9c4d0208e42f6f2bae3f87d0899c3ac45b32\";s:6:\"_token\";s:43:\"uNCD4MZ1GsWRZue4ErJSTW5Tj1CX5R-NYgc5Q_BrVjw\";s:7:\"buttons\";a:1:{s:4:\"save\";s:0:\"\";}s:8:\"add_tags\";a:1:{i:0;s:9:\"US:Action\";}s:11:\"remove_tags\";a:0:{}}',NULL,1,'d','immediate','yes','new679bfa3e62cb59526de7fd27b556443485a174f0',NULL,NULL), - (13,1,11,'Tag NonUS:Action',NULL,'lead.changetags','action',3,'a:16:{s:14:\"canvasSettings\";a:2:{s:8:\"droppedX\";s:3:\"489\";s:8:\"droppedY\";s:3:\"357\";}s:4:\"name\";s:16:\"Tag NonUS:Action\";s:11:\"triggerMode\";s:9:\"immediate\";s:11:\"triggerDate\";N;s:15:\"triggerInterval\";s:1:\"1\";s:19:\"triggerIntervalUnit\";s:1:\"d\";s:6:\"anchor\";s:2:\"no\";s:10:\"properties\";a:1:{s:8:\"add_tags\";a:1:{i:0;s:1:\"7\";}}s:4:\"type\";s:15:\"lead.changetags\";s:9:\"eventType\";s:6:\"action\";s:15:\"anchorEventType\";s:9:\"condition\";s:10:\"campaignId\";s:47:\"mautic_801d9c4d0208e42f6f2bae3f87d0899c3ac45b32\";s:6:\"_token\";s:43:\"uNCD4MZ1GsWRZue4ErJSTW5Tj1CX5R-NYgc5Q_BrVjw\";s:7:\"buttons\";a:1:{s:4:\"save\";s:0:\"\";}s:8:\"add_tags\";a:1:{i:0;s:12:\"NonUS:Action\";}s:11:\"remove_tags\";a:0:{}}',NULL,1,'d','immediate','no','new62e190055219ebe5beb9df4c4a505bb0860fffd4',NULL,NULL), - (14,1,3,'Tag EmailNotOpen',NULL,'lead.changetags','action',3,'a:19:{s:14:\"canvasSettings\";a:2:{s:8:\"droppedX\";s:4:\"1081\";s:8:\"droppedY\";s:3:\"374\";}s:4:\"name\";s:16:\"Tag EmailNotOpen\";s:11:\"triggerMode\";s:8:\"interval\";s:11:\"triggerDate\";N;s:15:\"triggerInterval\";s:1:\"1\";s:19:\"triggerIntervalUnit\";s:1:\"d\";s:6:\"anchor\";s:2:\"no\";s:10:\"properties\";a:1:{s:8:\"add_tags\";a:1:{i:0;s:1:\"9\";}}s:4:\"type\";s:15:\"lead.changetags\";s:9:\"eventType\";s:6:\"action\";s:15:\"anchorEventType\";s:8:\"decision\";s:10:\"campaignId\";s:1:\"1\";s:6:\"_token\";s:43:\"oRiunE5unGEBGhTql8VkzvtTkMHpwElCu5Ul4-_gd-I\";s:7:\"buttons\";a:1:{s:4:\"save\";s:0:\"\";}s:8:\"settings\";a:4:{s:5:\"label\";s:21:\"Modify contact\'s tags\";s:11:\"description\";s:37:\"Add tag to or remove tag from contact\";s:8:\"formType\";s:16:\"modify_lead_tags\";s:9:\"eventName\";s:38:\"mautic.lead.on_campaign_trigger_action\";}s:6:\"tempId\";s:43:\"newb3e5bfd9cdc154619ca0716b46f4a61328688a26\";s:2:\"id\";s:43:\"newb3e5bfd9cdc154619ca0716b46f4a61328688a26\";s:8:\"add_tags\";a:1:{i:0;s:12:\"EmailNotOpen\";}s:11:\"remove_tags\";a:0:{}}',NULL,2,'i','interval','no','newb3e5bfd9cdc154619ca0716b46f4a61328688a26',NULL,NULL), -- (15, 1, 3, 'Tag EmailNotOpen Again', NULL, 'lead.changetags', 'action', 3, 'a:16:{s:14:\"canvasSettings\";a:2:{s:8:\"droppedX\";s:4:\"1612\";s:8:\"droppedY\";s:3:\"374\";}s:4:\"name\";s:22:\"Tag EmailNotOpen Again\";s:11:\"triggerMode\";s:8:\"interval\";s:11:\"triggerDate\";N;s:15:\"triggerInterval\";s:1:\"6\";s:19:\"triggerIntervalUnit\";s:1:\"i\";s:6:\"anchor\";s:2:\"no\";s:10:\"properties\";a:1:{s:8:\"add_tags\";a:1:{i:0;s:1:\"9\";}}s:4:\"type\";s:15:\"lead.changetags\";s:9:\"eventType\";s:6:\"action\";s:15:\"anchorEventType\";s:8:\"decision\";s:10:\"campaignId\";s:1:\"1\";s:6:\"_token\";s:43:\"Wd8bGtv2HJ6Nyf3K90Efoo2Rn2VkDWwXhwzCIPMiD-M\";s:7:\"buttons\";a:1:{s:4:\"save\";s:0:\"\";}s:8:\"add_tags\";a:1:{i:0;s:12:\"EmailNotOpen\";}s:11:\"remove_tags\";a:0:{}}', NULL, 6, 'i', 'interval', 'no', 'newf16dfec5f2a65aa9c527675e7be516020a90daa6', NULL, NULL); -+ (15,1,3,'Tag EmailNotOpen Again',NULL,'lead.changetags','action',3,'a:16:{s:14:\"canvasSettings\";a:2:{s:8:\"droppedX\";s:4:\"1612\";s:8:\"droppedY\";s:3:\"374\";}s:4:\"name\";s:22:\"Tag EmailNotOpen Again\";s:11:\"triggerMode\";s:8:\"interval\";s:11:\"triggerDate\";N;s:15:\"triggerInterval\";s:1:\"6\";s:19:\"triggerIntervalUnit\";s:1:\"i\";s:6:\"anchor\";s:2:\"no\";s:10:\"properties\";a:1:{s:8:\"add_tags\";a:1:{i:0;s:1:\"9\";}}s:4:\"type\";s:15:\"lead.changetags\";s:9:\"eventType\";s:6:\"action\";s:15:\"anchorEventType\";s:8:\"decision\";s:10:\"campaignId\";s:1:\"1\";s:6:\"_token\";s:43:\"Wd8bGtv2HJ6Nyf3K90Efoo2Rn2VkDWwXhwzCIPMiD-M\";s:7:\"buttons\";a:1:{s:4:\"save\";s:0:\"\";}s:8:\"add_tags\";a:1:{i:0;s:12:\"EmailNotOpen\";}s:11:\"remove_tags\";a:0:{}}',NULL,6,'i','interval','no','newf16dfec5f2a65aa9c527675e7be516020a90daa6',NULL,NULL), -+ (16,1,12,'Tag ChainedAction',NULL,'lead.changetags','action',4,'a:16:{s:14:\"canvasSettings\";a:2:{s:8:\"droppedX\";s:3:\"168\";s:8:\"droppedY\";s:3:\"439\";}s:4:\"name\";s:14:\"Chained Action\";s:11:\"triggerMode\";s:9:\"immediate\";s:11:\"triggerDate\";N;s:15:\"triggerInterval\";s:1:\"1\";s:19:\"triggerIntervalUnit\";s:1:\"d\";s:6:\"anchor\";s:6:\"bottom\";s:10:\"properties\";a:1:{s:8:\"add_tags\";a:1:{i:0;s:2:\"10\";}}s:4:\"type\";s:15:\"lead.changetags\";s:9:\"eventType\";s:6:\"action\";s:15:\"anchorEventType\";s:6:\"action\";s:10:\"campaignId\";s:1:\"1\";s:6:\"_token\";s:43:\"6xgHe74aRnc1V7AGzdang3-iJ0Ub5BKfbdU5NsxQmv0\";s:7:\"buttons\";a:1:{s:4:\"save\";s:0:\"\";}s:8:\"add_tags\";a:1:{i:0;s:13:\"ChainedAction\";}s:11:\"remove_tags\";a:0:{}}',NULL,1,'d','immediate',NULL,'new60f74507aeccf217f78647e41ae29af51debe666',NULL,NULL); - - INSERT INTO `#__lead_lists` (`id`,`is_published`,`date_added`,`created_by`,`created_by_user`,`date_modified`,`modified_by`,`modified_by_user`,`checked_out`,`checked_out_by`,`checked_out_by_user`,`name`,`description`,`alias`,`filters`,`is_global`) - VALUES diff --git a/scripts/patches/6224.diff b/scripts/patches/6224.diff deleted file mode 100644 index 8910b37..0000000 --- a/scripts/patches/6224.diff +++ /dev/null @@ -1,416 +0,0 @@ -diff --git a/app/bundles/CampaignBundle/Command/TriggerCampaignCommand.php b/app/bundles/CampaignBundle/Command/TriggerCampaignCommand.php -index 101581e284..4a1e33d48f 100644 ---- a/app/bundles/CampaignBundle/Command/TriggerCampaignCommand.php -+++ b/app/bundles/CampaignBundle/Command/TriggerCampaignCommand.php -@@ -24,6 +24,7 @@ - use Psr\Log\LoggerInterface; - use Symfony\Component\Console\Input\InputInterface; - use Symfony\Component\Console\Input\InputOption; -+use Symfony\Component\Console\Output\NullOutput; - use Symfony\Component\Console\Output\OutputInterface; - use Symfony\Component\EventDispatcher\EventDispatcher; - use Symfony\Component\EventDispatcher\EventDispatcherInterface; -@@ -240,7 +241,8 @@ protected function configure() - */ - protected function execute(InputInterface $input, OutputInterface $output) - { -- $this->output = $output; -+ $quiet = $input->getOption('quiet'); -+ $this->output = $quiet ? new NullOutput() : $output; - $this->kickoffOnly = $input->getOption('kickoff-only'); - $this->scheduleOnly = $input->getOption('scheduled-only'); - $this->inactiveOnly = $input->getOption('inactive-only') || $input->getOption('negative-only'); -@@ -264,7 +266,7 @@ protected function execute(InputInterface $input, OutputInterface $output) - defined('MAUTIC_CAMPAIGN_SYSTEM_TRIGGERED') or define('MAUTIC_CAMPAIGN_SYSTEM_TRIGGERED', 1); - - $id = $input->getOption('campaign-id'); -- if (!$this->checkRunStatus($input, $output, $id)) { -+ if (!$this->checkRunStatus($input, $this->output, $id)) { - return 0; - } - -diff --git a/app/bundles/CampaignBundle/Entity/LeadEventLog.php b/app/bundles/CampaignBundle/Entity/LeadEventLog.php -index 9a10cf6a2c..e04959cfd8 100644 ---- a/app/bundles/CampaignBundle/Entity/LeadEventLog.php -+++ b/app/bundles/CampaignBundle/Entity/LeadEventLog.php -@@ -112,6 +112,7 @@ public static function loadMetadata(ORM\ClassMetadata $metadata) - $builder->setTable('campaign_lead_event_log') - ->setCustomRepositoryClass('Mautic\CampaignBundle\Entity\LeadEventLogRepository') - ->addIndex(['is_scheduled', 'lead_id'], 'campaign_event_upcoming_search') -+ ->addIndex(['campaign_id', 'is_scheduled', 'trigger_date'], 'campaign_event_schedule_counts') - ->addIndex(['date_triggered'], 'campaign_date_triggered') - ->addIndex(['lead_id', 'campaign_id', 'rotation'], 'campaign_leads') - ->addIndex(['channel', 'channel_id', 'lead_id'], 'campaign_log_channel') -diff --git a/app/bundles/CampaignBundle/Executioner/InactiveExecutioner.php b/app/bundles/CampaignBundle/Executioner/InactiveExecutioner.php -index b865412cbf..cb0ed59b8d 100644 ---- a/app/bundles/CampaignBundle/Executioner/InactiveExecutioner.php -+++ b/app/bundles/CampaignBundle/Executioner/InactiveExecutioner.php -@@ -221,22 +221,24 @@ private function prepareForExecution() - if (!$totalDecisions) { - throw new NoEventsFoundException(); - } -+ $totalContacts = 0; -+ if (!($this->output instanceof NullOutput)) { -+ $totalContacts = $this->inactiveContactFinder->getContactCount($this->campaign->getId(), $this->decisions->getKeys(), $this->limiter); -+ -+ $this->output->writeln( -+ $this->translator->trans( -+ 'mautic.campaign.trigger.decision_count_analyzed', -+ [ -+ '%decisions%' => $totalDecisions, -+ '%leads%' => $totalContacts, -+ '%batch%' => $this->limiter->getBatchLimit(), -+ ] -+ ) -+ ); - -- $totalContacts = $this->inactiveContactFinder->getContactCount($this->campaign->getId(), $this->decisions->getKeys(), $this->limiter); -- -- $this->output->writeln( -- $this->translator->trans( -- 'mautic.campaign.trigger.decision_count_analyzed', -- [ -- '%decisions%' => $totalDecisions, -- '%leads%' => $totalContacts, -- '%batch%' => $this->limiter->getBatchLimit(), -- ] -- ) -- ); -- -- if (!$totalContacts) { -- throw new NoContactsFoundException(); -+ if (!$totalContacts) { -+ throw new NoContactsFoundException(); -+ } - } - - // Approximate total count because the query to fetch contacts will filter out those that have not arrived to this point in the campaign yet -@@ -267,7 +269,7 @@ private function executeEvents() - $contacts = $this->inactiveContactFinder->getContacts($this->campaign->getId(), $decisionEvent, $this->limiter); - - // Loop over all contacts till we've processed all those applicable for this decision -- while ($contacts->count()) { -+ while ($contacts && $contacts->count()) { - // Get the max contact ID before any are removed - $batchMinContactId = max($contacts->getKeys()) + 1; - -diff --git a/app/bundles/CampaignBundle/Executioner/KickoffExecutioner.php b/app/bundles/CampaignBundle/Executioner/KickoffExecutioner.php -index d2fe2b941c..e8d4412e42 100644 ---- a/app/bundles/CampaignBundle/Executioner/KickoffExecutioner.php -+++ b/app/bundles/CampaignBundle/Executioner/KickoffExecutioner.php -@@ -161,24 +161,29 @@ private function prepareForExecution() - - $this->rootEvents = $this->campaign->getRootEvents(); - $totalRootEvents = $this->rootEvents->count(); -- $this->logger->debug('CAMPAIGN: Processing the following events: '.implode(', ', $this->rootEvents->getKeys())); -- -- $totalContacts = $this->kickoffContactFinder->getContactCount($this->campaign->getId(), $this->rootEvents->getKeys(), $this->limiter); -- $totalKickoffEvents = $totalRootEvents * $totalContacts; -- -- $this->output->writeln( -- $this->translator->trans( -- 'mautic.campaign.trigger.event_count', -- [ -- '%events%' => $totalKickoffEvents, -- '%batch%' => $this->limiter->getBatchLimit(), -- ] -- ) -- ); -- -- if (!$totalKickoffEvents) { -+ if (!$totalRootEvents) { - throw new NoEventsFoundException(); - } -+ $this->logger->debug('CAMPAIGN: Processing the following events: '.implode(', ', $this->rootEvents->getKeys())); -+ $totalKickoffEvents = 0; -+ if (!($this->output instanceof NullOutput)) { -+ $totalContacts = $this->kickoffContactFinder->getContactCount($this->campaign->getId(), $this->rootEvents->getKeys(), $this->limiter); -+ $totalKickoffEvents = $totalRootEvents * $totalContacts; -+ -+ $this->output->writeln( -+ $this->translator->trans( -+ 'mautic.campaign.trigger.event_count', -+ [ -+ '%events%' => $totalKickoffEvents, -+ '%batch%' => $this->limiter->getBatchLimit(), -+ ] -+ ) -+ ); -+ -+ if (!$totalKickoffEvents) { -+ throw new NoEventsFoundException(); -+ } -+ } - - $this->progressBar = ProgressBarHelper::init($this->output, $totalKickoffEvents); - $this->progressBar->start(); -@@ -199,7 +204,7 @@ private function executeOrScheduleEvent() - - // Loop over contacts until the entire campaign is executed - $contacts = $this->kickoffContactFinder->getContacts($this->campaign->getId(), $this->limiter); -- while ($contacts->count()) { -+ while ($contacts && $contacts->count()) { - $batchMinContactId = max($contacts->getKeys()) + 1; - - /** @var Event $event */ -diff --git a/app/bundles/CampaignBundle/Executioner/ScheduledExecutioner.php b/app/bundles/CampaignBundle/Executioner/ScheduledExecutioner.php -index 5c5c26c961..330747c789 100644 ---- a/app/bundles/CampaignBundle/Executioner/ScheduledExecutioner.php -+++ b/app/bundles/CampaignBundle/Executioner/ScheduledExecutioner.php -@@ -209,6 +209,8 @@ public function executeByIds(array $logIds, OutputInterface $output = null) - $organized = $this->organizeByEvent($logs); - $now = new \DateTime(); - foreach ($organized as $organizedLogs) { -+ $this->progressBar->advance($organizedLogs->count()); -+ - $event = $organizedLogs->first()->getEvent(); - - // Validate that the schedule is still appropriate -@@ -241,7 +243,7 @@ private function prepareForExecution() - - // Get counts by event - $scheduledEvents = $this->repo->getScheduledCounts($this->campaign->getId(), $this->now, $this->limiter); -- $totalScheduledCount = array_sum($scheduledEvents); -+ $totalScheduledCount = $scheduledEvents ? array_sum($scheduledEvents) : 0; - $this->scheduledEvents = array_keys($scheduledEvents); - $this->logger->debug('CAMPAIGN: '.$totalScheduledCount.' events scheduled to execute.'); - -diff --git a/app/bundles/CampaignBundle/Tests/Executioner/InactiveExecutionerTest.php b/app/bundles/CampaignBundle/Tests/Executioner/InactiveExecutionerTest.php -index dc0f2022a0..b4434955a2 100644 ---- a/app/bundles/CampaignBundle/Tests/Executioner/InactiveExecutionerTest.php -+++ b/app/bundles/CampaignBundle/Tests/Executioner/InactiveExecutionerTest.php -@@ -23,6 +23,7 @@ - use Mautic\CoreBundle\Translation\Translator; - use Mautic\LeadBundle\Entity\Lead; - use Psr\Log\NullLogger; -+use Symfony\Component\Console\Output\BufferedOutput; - - class InactiveExecutionerTest extends \PHPUnit_Framework_TestCase - { -@@ -86,7 +87,7 @@ public function testNoContactsFoundResultsInNothingExecuted() - ->method('getContactCount'); - - $limiter = new ContactLimiter(0, 0, 0, 0); -- $counter = $this->getExecutioner()->execute($campaign, $limiter); -+ $counter = $this->getExecutioner()->execute($campaign, $limiter, new BufferedOutput()); - - $this->assertEquals(0, $counter->getEvaluated()); - } -@@ -104,7 +105,7 @@ public function testNoEventsFoundResultsInNothingExecuted() - ->willReturn(0); - - $limiter = new ContactLimiter(0, 0, 0, 0); -- $counter = $this->getExecutioner()->execute($campaign, $limiter); -+ $counter = $this->getExecutioner()->execute($campaign, $limiter, new BufferedOutput()); - - $this->assertEquals(0, $counter->getTotalEvaluated()); - } -@@ -141,7 +142,7 @@ public function testNextBatchOfContactsAreExecuted() - ->method('getSortedExecutionDates') - ->willReturn([]); - -- $this->getExecutioner()->execute($campaign, $limiter); -+ $this->getExecutioner()->execute($campaign, $limiter, new BufferedOutput()); - } - - public function testValidationExecutesNothingIfCampaignUnpublished() -@@ -165,7 +166,7 @@ public function testValidationExecutesNothingIfCampaignUnpublished() - - $limiter = new ContactLimiter(0, 0, 0, 0); - -- $counter = $this->getExecutioner()->validate(1, $limiter); -+ $counter = $this->getExecutioner()->validate(1, $limiter, new BufferedOutput()); - $this->assertEquals(0, $counter->getTotalEvaluated()); - } - -@@ -208,7 +209,7 @@ public function testValidationEvaluatesFoundEvents() - ->method('getSortedExecutionDates') - ->willReturn([]); - -- $this->getExecutioner()->validate(1, $limiter); -+ $this->getExecutioner()->validate(1, $limiter, new BufferedOutput()); - } - - private function getExecutioner() -diff --git a/app/bundles/CampaignBundle/Tests/Executioner/KickoffExecutionerTest.php b/app/bundles/CampaignBundle/Tests/Executioner/KickoffExecutionerTest.php -index a57937ed23..b618dab0ed 100644 ---- a/app/bundles/CampaignBundle/Tests/Executioner/KickoffExecutionerTest.php -+++ b/app/bundles/CampaignBundle/Tests/Executioner/KickoffExecutionerTest.php -@@ -22,6 +22,7 @@ - use Mautic\CoreBundle\Translation\Translator; - use Mautic\LeadBundle\Entity\Lead; - use Psr\Log\NullLogger; -+use Symfony\Component\Console\Output\BufferedOutput; - - class KickoffExecutionerTest extends \PHPUnit_Framework_TestCase - { -@@ -66,10 +67,6 @@ protected function setUp() - - public function testNoContactsResultInEmptyResults() - { -- $this->kickoffContactFinder->expects($this->once()) -- ->method('getContactCount') -- ->willReturn(0); -- - $campaign = $this->getMockBuilder(Campaign::class) - ->getMock(); - $campaign->expects($this->once()) -@@ -78,7 +75,7 @@ public function testNoContactsResultInEmptyResults() - - $limiter = new ContactLimiter(0, 0, 0, 0); - -- $counter = $this->getExecutioner()->execute($campaign, $limiter); -+ $counter = $this->getExecutioner()->execute($campaign, $limiter, new BufferedOutput()); - - $this->assertEquals(0, $counter->getTotalEvaluated()); - } -@@ -124,7 +121,7 @@ public function testEventsAreScheduledAndExecuted() - $this->executioner->expects($this->exactly(2)) - ->method('executeForContacts'); - -- $counter = $this->getExecutioner()->execute($campaign, $limiter); -+ $counter = $this->getExecutioner()->execute($campaign, $limiter, new BufferedOutput()); - - $this->assertEquals(4, $counter->getTotalEvaluated()); - $this->assertEquals(2, $counter->getTotalScheduled()); -diff --git a/app/bundles/CampaignBundle/Tests/Executioner/ScheduledExecutionerTest.php b/app/bundles/CampaignBundle/Tests/Executioner/ScheduledExecutionerTest.php -index b311bf3863..c372a4eb9f 100644 ---- a/app/bundles/CampaignBundle/Tests/Executioner/ScheduledExecutionerTest.php -+++ b/app/bundles/CampaignBundle/Tests/Executioner/ScheduledExecutionerTest.php -@@ -23,6 +23,7 @@ - use Mautic\CampaignBundle\Executioner\Scheduler\EventScheduler; - use Mautic\CoreBundle\Translation\Translator; - use Psr\Log\NullLogger; -+use Symfony\Component\Console\Output\BufferedOutput; - - class ScheduledExecutionerTest extends \PHPUnit_Framework_TestCase - { -@@ -88,7 +89,7 @@ public function testNoEventsResultInEmptyResults() - - $limiter = new ContactLimiter(0, 0, 0, 0); - -- $counter = $this->getExecutioner()->execute($campaign, $limiter); -+ $counter = $this->getExecutioner()->execute($campaign, $limiter, new BufferedOutput()); - - $this->assertEquals(0, $counter->getTotalEvaluated()); - } -@@ -152,6 +153,70 @@ public function testEventsAreExecuted() - - $limiter = new ContactLimiter(0, 0, 0, 0); - -+ $counter = $this->getExecutioner()->execute($campaign, $limiter, new BufferedOutput()); -+ -+ $this->assertEquals(4, $counter->getTotalEvaluated()); -+ } -+ -+ public function testEventsAreExecutedInQuietMode() -+ { -+ $this->repository->expects($this->once()) -+ ->method('getScheduledCounts') -+ ->willReturn([1 => 2, 2 => 2]); -+ -+ $campaign = $this->getMockBuilder(Campaign::class) -+ ->getMock(); -+ -+ $event = new Event(); -+ $event->setCampaign($campaign); -+ -+ $log1 = new LeadEventLog(); -+ $log1->setEvent($event); -+ $log1->setCampaign($campaign); -+ -+ $log2 = new LeadEventLog(); -+ $log2->setEvent($event); -+ $log2->setCampaign($campaign); -+ -+ $event2 = new Event(); -+ $event2->setCampaign($campaign); -+ -+ $log3 = new LeadEventLog(); -+ $log3->setEvent($event2); -+ $log3->setCampaign($campaign); -+ -+ $log4 = new LeadEventLog(); -+ $log4->setEvent($event2); -+ $log4->setCampaign($campaign); -+ -+ $this->repository->expects($this->exactly(4)) -+ ->method('getScheduled') -+ ->willReturnOnConsecutiveCalls( -+ new ArrayCollection( -+ [ -+ $log1, -+ $log2, -+ ] -+ ), -+ new ArrayCollection(), -+ new ArrayCollection( -+ [ -+ $log3, -+ $log4, -+ ] -+ ), -+ new ArrayCollection() -+ ); -+ -+ $this->executioner->expects($this->exactly(2)) -+ ->method('executeLogs'); -+ -+ $this->scheduler->expects($this->exactly(4)) -+ ->method('getExecutionDateTime') -+ ->willReturn(new \DateTime()); -+ -+ $limiter = new ContactLimiter(0, 0, 0, 0); -+ - $counter = $this->getExecutioner()->execute($campaign, $limiter); - - $this->assertEquals(4, $counter->getTotalEvaluated()); -diff --git a/app/migrations/Version20180622152140.php b/app/migrations/Version20180622152140.php -new file mode 100644 -index 0000000000..21601149fe ---- /dev/null -+++ b/app/migrations/Version20180622152140.php -@@ -0,0 +1,43 @@ -+getTable("{$this->prefix}campaign_lead_event_log"); -+ if ($table->hasIndex("{$this->prefix}campaign_event_schedule_counts")) { -+ throw new SkipMigrationException('Schema includes this migration'); -+ } -+ } -+ -+ /** -+ * @param Schema $schema -+ */ -+ public function up(Schema $schema) -+ { -+ $this->addSql("CREATE INDEX {$this->prefix}campaign_event_schedule_counts ON {$this->prefix}campaign_lead_event_log (campaign_id, is_scheduled, trigger_date)"); -+ } -+} diff --git a/scripts/patches/6651.diff b/scripts/patches/6651.diff new file mode 100644 index 0000000..7200fc6 --- /dev/null +++ b/scripts/patches/6651.diff @@ -0,0 +1,1503 @@ +diff --git a/app/bundles/CampaignBundle/Command/SummarizeCommand.php b/app/bundles/CampaignBundle/Command/SummarizeCommand.php +new file mode 100644 +index 0000000000..90d643486d +--- /dev/null ++++ b/app/bundles/CampaignBundle/Command/SummarizeCommand.php +@@ -0,0 +1,122 @@ ++translator = $translator; ++ $this->formatterHelper = $formatterHelper; ++ $this->summaryModel = $summaryModel; ++ } ++ ++ /** ++ * {@inheritdoc} ++ */ ++ protected function configure() ++ { ++ $this ++ ->setName('mautic:campaigns:summarize') ++ ->addOption( ++ '--batch-limit', ++ '-l', ++ InputOption::VALUE_OPTIONAL, ++ 'Number of hours to process per batch.', ++ 1 ++ ) ++ ->addOption( ++ '--max-hours', ++ null, ++ InputOption::VALUE_OPTIONAL, ++ 'Optionally specify how many hours back in time you wish to summarize.' ++ ) ++ ->addOption( ++ '--rebuild', ++ null, ++ InputOption::VALUE_NONE, ++ 'Rebuild existing data. To be used only if database exceptions have been known to cause inaccuracies.' ++ ) ++ ->setDescription('Builds historical campaign summary statistics if they do not already exist.'); ++ ++ parent::configure(); ++ } ++ ++ /** ++ * @param InputInterface $input ++ * @param OutputInterface $output ++ * ++ * @return int|null ++ * ++ * @throws \Exception ++ */ ++ protected function execute(InputInterface $input, OutputInterface $output) ++ { ++ if (!$this->checkRunStatus($input, $output)) { ++ return 0; ++ } ++ ++ $batchLimit = $input->getOption('batch-limit'); ++ $maxHours = $input->getOption('max-hours'); ++ $rebuild = $input->getOption('rebuild'); ++ ++ $output->writeln( ++ ''.$this->translator->trans('mautic.campaign.summarizing', ['%batch%' => $batchLimit]).'' ++ ); ++ ++ $this->summaryModel->summarize($output, $batchLimit, $maxHours, $rebuild); ++ ++ $this->completeRun(); ++ ++ return 0; ++ } ++} +diff --git a/app/bundles/CampaignBundle/Config/config.php b/app/bundles/CampaignBundle/Config/config.php +index b8edbfb440..7590f2f00f 100644 +--- a/app/bundles/CampaignBundle/Config/config.php ++++ b/app/bundles/CampaignBundle/Config/config.php +@@ -275,6 +275,9 @@ + 'mautic.helper.ip_lookup', + ], + ], ++ 'mautic.campaign.model.summary' => [ ++ 'class' => 'Mautic\CampaignBundle\Model\SummaryModel', ++ ], + ], + 'repositories' => [ + 'mautic.campaign.repository.campaign' => [ +@@ -305,6 +308,13 @@ + \Mautic\CampaignBundle\Entity\LeadEventLog::class, + ], + ], ++ 'mautic.campaign.repository.summary' => [ ++ 'class' => Doctrine\ORM\EntityRepository::class, ++ 'factory' => ['@doctrine.orm.entity_manager', 'getRepository'], ++ 'arguments' => [ ++ \Mautic\CampaignBundle\Entity\Summary::class, ++ ], ++ ], + ], + 'execution' => [ + 'mautic.campaign.contact_finder.kickoff' => [ +@@ -361,6 +371,7 @@ + 'mautic.tracker.contact', + 'mautic.campaign.repository.lead_event_log', + 'mautic.campaign.repository.lead', ++ 'mautic.campaign.model.summary', + ], + ], + 'mautic.campaign.event_collector' => [ +@@ -598,9 +609,20 @@ + ], + 'tag' => 'console.command', + ], ++ 'mautic.campaign.command.summarize' => [ ++ 'class' => \Mautic\CampaignBundle\Command\SummarizeCommand::class, ++ 'arguments' => [ ++ 'translator', ++ 'mautic.helper.template.formatter', ++ 'mautic.campaign.model.summary', ++ ], ++ 'tag' => 'console.command', ++ ], + ], + ], + 'parameters' => [ + 'campaign_time_wait_on_event_false' => 'PT1H', ++ 'campaign_use_summary' => 0, ++ 'campaign_by_range' => 0, + ], + ]; +diff --git a/app/bundles/CampaignBundle/Controller/CampaignController.php b/app/bundles/CampaignBundle/Controller/CampaignController.php +old mode 100644 +new mode 100755 +index f3e2ddd730..3aedde4f96 +--- a/app/bundles/CampaignBundle/Controller/CampaignController.php ++++ b/app/bundles/CampaignBundle/Controller/CampaignController.php +@@ -14,6 +14,7 @@ + use Mautic\CampaignBundle\Entity\Campaign; + use Mautic\CampaignBundle\Entity\Event; + use Mautic\CampaignBundle\Entity\LeadEventLogRepository; ++use Mautic\CampaignBundle\Entity\SummaryRepository; + use Mautic\CampaignBundle\EventListener\CampaignActionJumpToEventSubscriber; + use Mautic\CampaignBundle\Model\CampaignModel; + use Mautic\CampaignBundle\Model\EventModel; +@@ -96,12 +97,15 @@ public function cloneAction($objectId) + } + + /** +- * @param $objectId +- * @param int $page ++ * @param $objectId ++ * @param int $page ++ * @param null $count ++ * @param \DateTime|null $dateFrom ++ * @param \DateTime|null $dateTo + * + * @return JsonResponse|\Symfony\Component\HttpFoundation\RedirectResponse|Response + */ +- public function contactsAction($objectId, $page = 1) ++ public function contactsAction($objectId, $page = 1, $count = null, \DateTime $dateFrom = null, \DateTime $dateTo = null) + { + return $this->generateContactsGrid( + $objectId, +@@ -111,7 +115,16 @@ public function contactsAction($objectId, $page = 1) + 'campaign_leads', + null, + 'campaign_id', +- ['manually_removed' => 0] ++ ['manually_removed' => 0], ++ null, ++ null, ++ [], ++ null, ++ 'entity.lead_id', ++ 'DESC', ++ $count, ++ $dateFrom, ++ $dateTo + ); + } + +@@ -654,12 +667,25 @@ protected function getViewArguments(array $args, $action) + $dateRangeValues = $this->request->get('daterange', []); + $action = $this->generateUrl('mautic_campaign_action', ['objectAction' => 'view', 'objectId' => $objectId]); + $dateRangeForm = $this->get('form.factory')->create('daterange', $dateRangeValues, ['action' => $action]); +- +- /** @var LeadEventLogRepository $eventLogRepo */ +- $eventLogRepo = $this->getDoctrine()->getManager()->getRepository('MauticCampaignBundle:LeadEventLog'); +- $events = $this->getCampaignModel()->getEventRepository()->getCampaignEvents($entity->getId()); +- $leadCount = $this->getCampaignModel()->getRepository()->getCampaignLeadCount($entity->getId()); +- $campaignLogCounts = $eventLogRepo->getCampaignLogCounts($entity->getId(), false, false); ++ $events = $this->getCampaignModel()->getEventRepository()->getCampaignEvents($entity->getId()); ++ $dateFrom = null; ++ $dateTo = null; ++ $this->setCoreParametersHelper($this->get('mautic.config')); ++ if ($this->coreParametersHelper->getParameter('campaign_by_range')) { ++ $dateFrom = new \DateTime($dateRangeForm->get('date_from')->getData()); ++ $dateTo = new \DateTime($dateRangeForm->get('date_to')->getData()); ++ $dateTo->modify('+1 day'); ++ } ++ if ($this->coreParametersHelper->getParameter('campaign_use_summary')) { ++ /** @var SummaryRepository $summaryRepo */ ++ $summaryRepo = $this->getDoctrine()->getManager()->getRepository('MauticCampaignBundle:Summary'); ++ $campaignLogCounts = $summaryRepo->getCampaignLogCounts($entity->getId(), $dateFrom, $dateTo); ++ } else { ++ /** @var LeadEventLogRepository $eventLogRepo */ ++ $eventLogRepo = $this->getDoctrine()->getManager()->getRepository('MauticCampaignBundle:LeadEventLog'); ++ $campaignLogCounts = $eventLogRepo->getCampaignLogCounts($entity->getId(), false, false, $dateFrom, $dateTo); ++ } ++ $leadCount = $this->getCampaignModel()->getRepository()->getCampaignLeadCount($entity->getId(), null, [], $dateFrom, $dateTo); + $sortedEvents = [ + 'decision' => [], + 'action' => [], +@@ -718,6 +744,9 @@ protected function getViewArguments(array $args, $action) + 'objectId' => $entity->getId(), + 'page' => $this->get('session')->get('mautic.campaign.contact.page', 1), + 'ignoreAjax' => true, ++ 'count' => $leadCount, ++ 'dateFrom' => $dateFrom, ++ 'dateTo' => $dateTo, + ] + )->getContent(), + ] +diff --git a/app/bundles/CampaignBundle/Entity/CampaignRepository.php b/app/bundles/CampaignBundle/Entity/CampaignRepository.php +old mode 100644 +new mode 100755 +index 9e71510324..62c9d6ae9c +--- a/app/bundles/CampaignBundle/Entity/CampaignRepository.php ++++ b/app/bundles/CampaignBundle/Entity/CampaignRepository.php +@@ -11,6 +11,7 @@ + + namespace Mautic\CampaignBundle\Entity; + ++use Doctrine\DBAL\Cache\QueryCacheProfile; + use Doctrine\DBAL\Types\Type; + use Mautic\CampaignBundle\Entity\Result\CountResult; + use Mautic\CampaignBundle\Executioner\ContactFinder\Limiter\ContactLimiter; +@@ -452,13 +453,17 @@ public function getPendingContactIds($campaignId, ContactLimiter $limiter) + /** + * Get a count of leads that belong to the campaign. + * +- * @param int $campaignId +- * @param int $leadId Optional lead ID to check if lead is part of campaign +- * @param array $pendingEvents List of specific events to rule out ++ * @param int $campaignId ++ * @param int $leadId Optional lead ID to check if lead is part of campaign ++ * @param array $pendingEvents List of specific events to rule out ++ * @param \DateTime|null $dateFrom ++ * @param \DateTime|null $dateTo + * + * @return int ++ * ++ * @throws \Doctrine\DBAL\Cache\CacheException + */ +- public function getCampaignLeadCount($campaignId, $leadId = null, $pendingEvents = []) ++ public function getCampaignLeadCount($campaignId, $leadId = null, $pendingEvents = [], \DateTime $dateFrom = null, \DateTime $dateTo = null) + { + $q = $this->getSlaveConnection()->createQueryBuilder(); + +@@ -478,6 +483,12 @@ public function getCampaignLeadCount($campaignId, $leadId = null, $pendingEvents + ); + } + ++ if ($dateFrom && $dateTo) { ++ $q->andWhere('cl.date_added BETWEEN FROM_UNIXTIME(:dateFrom) AND FROM_UNIXTIME(:dateTo)') ++ ->setParameter('dateFrom', $dateFrom->getTimestamp(), \PDO::PARAM_INT) ++ ->setParameter('dateTo', $dateTo->getTimestamp(), \PDO::PARAM_INT); ++ } ++ + if (count($pendingEvents) > 0) { + $sq = $this->getSlaveConnection()->createQueryBuilder(); + $sq->select('null') +@@ -489,12 +500,27 @@ public function getCampaignLeadCount($campaignId, $leadId = null, $pendingEvents + ) + ); + ++ if ($dateFrom && $dateTo) { ++ $sq->andWhere('cl.date_triggered BETWEEN FROM_UNIXTIME(:dateFrom) AND FROM_UNIXTIME(:dateTo)') ++ ->setParameter('dateFrom', $dateFrom->getTimestamp(), \PDO::PARAM_INT) ++ ->setParameter('dateTo', $dateTo->getTimestamp(), \PDO::PARAM_INT); ++ } ++ + $q->andWhere( + sprintf('NOT EXISTS (%s)', $sq->getSQL()) + ); + } + +- $results = $q->execute()->fetchAll(); ++ if ($q->getConnection()->getConfiguration()->getResultCacheImpl()) { ++ $results = $q->getConnection()->executeCacheQuery( ++ $q->getSQL(), ++ $q->getParameters(), ++ $q->getParameterTypes(), ++ new QueryCacheProfile(600, __METHOD__) ++ )->fetchAll(); ++ } else { ++ $results = $q->execute()->fetchAll(); ++ } + + return (int) $results[0]['lead_count']; + } +diff --git a/app/bundles/CampaignBundle/Entity/LeadEventLogRepository.php b/app/bundles/CampaignBundle/Entity/LeadEventLogRepository.php +old mode 100644 +new mode 100755 +index 54cd3b2196..ead4e3800b +--- a/app/bundles/CampaignBundle/Entity/LeadEventLogRepository.php ++++ b/app/bundles/CampaignBundle/Entity/LeadEventLogRepository.php +@@ -12,6 +12,7 @@ + namespace Mautic\CampaignBundle\Entity; + + use Doctrine\Common\Collections\ArrayCollection; ++use Doctrine\DBAL\Cache\QueryCacheProfile; + use Doctrine\DBAL\Types\Type; + use Mautic\CampaignBundle\Executioner\ContactFinder\Limiter\ContactLimiter; + use Mautic\CoreBundle\Entity\CommonRepository; +@@ -213,12 +214,17 @@ public function getUpcomingEvents(array $options = null) + } + + /** +- * @param $campaignId +- * @param bool $excludeScheduled ++ * @param $campaignId ++ * @param bool $excludeScheduled ++ * @param bool $excludeNegative ++ * @param \DateTime|null $dateFrom ++ * @param \DateTime|null $dateTo + * + * @return array ++ * ++ * @throws \Doctrine\DBAL\Cache\CacheException + */ +- public function getCampaignLogCounts($campaignId, $excludeScheduled = false, $excludeNegative = true) ++ public function getCampaignLogCounts($campaignId, $excludeScheduled = false, $excludeNegative = true, \DateTime $dateFrom = null, \DateTime $dateTo = null) + { + $q = $this->getSlaveConnection()->createQueryBuilder() + ->from(MAUTIC_TABLE_PREFIX.'campaign_lead_event_log', 'o') +@@ -260,6 +266,11 @@ public function getCampaignLogCounts($campaignId, $excludeScheduled = false, $ex + ->where( + $failedSq->expr()->eq('fe.log_id', 'o.id') + ); ++ if ($dateFrom && $dateTo) { ++ $failedSq->andWhere('fe.date_added BETWEEN FROM_UNIXTIME(:dateFrom) AND FROM_UNIXTIME(:dateTo)') ++ ->setParameter('dateFrom', $dateFrom->getTimestamp(), \PDO::PARAM_INT) ++ ->setParameter('dateTo', $dateTo->getTimestamp(), \PDO::PARAM_INT); ++ } + $expr->add( + sprintf('NOT EXISTS (%s)', $failedSq->getSQL()) + ); +@@ -268,7 +279,22 @@ public function getCampaignLogCounts($campaignId, $excludeScheduled = false, $ex + ->setParameter('false', false, 'boolean') + ->groupBy($groupBy); + +- $results = $q->execute()->fetchAll(); ++ if ($dateFrom && $dateTo) { ++ $q->andWhere('o.date_triggered BETWEEN FROM_UNIXTIME(:dateFrom) AND FROM_UNIXTIME(:dateTo)') ++ ->setParameter('dateFrom', $dateFrom->getTimestamp(), \PDO::PARAM_INT) ++ ->setParameter('dateTo', $dateTo->getTimestamp(), \PDO::PARAM_INT); ++ } ++ ++ if ($q->getConnection()->getConfiguration()->getResultCacheImpl()) { ++ $results = $q->getConnection()->executeCacheQuery( ++ $q->getSQL(), ++ $q->getParameters(), ++ $q->getParameterTypes(), ++ new QueryCacheProfile(600, __METHOD__) ++ )->fetchAll(); ++ } else { ++ $results = $q->execute()->fetchAll(); ++ } + + $return = []; + +@@ -525,6 +551,24 @@ public function getDatesExecuted($eventId, array $contactIds) + return $dates; + } + ++ /** ++ * Get the oldest triggered date. ++ * ++ * @return \DateTime|null ++ */ ++ public function getOldestTriggeredDate() ++ { ++ $qb = $this->getSlaveConnection()->createQueryBuilder(); ++ $qb->select('log.date_triggered') ++ ->from(MAUTIC_TABLE_PREFIX.'campaign_lead_event_log', 'log') ++ ->orderBy('log.date_triggered', 'ASC') ++ ->setMaxResults(1); ++ ++ $results = $qb->execute()->fetchAll(); ++ ++ return isset($results[0]['date_triggered']) ? new \DateTime($results[0]['date_triggered']) : null; ++ } ++ + /** + * @param int $contactId + * @param int $campaignId +@@ -534,7 +578,7 @@ public function getDatesExecuted($eventId, array $contactIds) + */ + public function hasBeenInCampaignRotation($contactId, $campaignId, $rotation) + { +- $qb = $this->getEntityManager()->getConnection()->createQueryBuilder(); ++ $qb = $this->getSlaveConnection()->createQueryBuilder(); + $qb->select('log.rotation') + ->from(MAUTIC_TABLE_PREFIX.'campaign_lead_event_log', 'log') + ->where( +diff --git a/app/bundles/CampaignBundle/Entity/Summary.php b/app/bundles/CampaignBundle/Entity/Summary.php +new file mode 100644 +index 0000000000..a508f5a75d +--- /dev/null ++++ b/app/bundles/CampaignBundle/Entity/Summary.php +@@ -0,0 +1,258 @@ ++setTable('campaign_summary') ++ ->setCustomRepositoryClass('Mautic\CampaignBundle\Entity\SummaryRepository') ++ ->addUniqueConstraint(['campaign_id', 'event_id', 'date_triggered'], 'campaign_event_date_triggered'); ++ ++ $builder->addId(); ++ ++ $builder->createManyToOne('campaign', 'Campaign') ++ ->addJoinColumn('campaign_id', 'id') ++ ->fetchExtraLazy() ++ ->build(); ++ ++ $builder->createManyToOne('event', 'Event') ++ ->addJoinColumn('event_id', 'id', false, false, 'CASCADE') ++ ->fetchExtraLazy() ++ ->build(); ++ ++ $builder->createField('dateTriggered', 'datetime') ++ ->columnName('date_triggered') ++ ->nullable() ++ ->build(); ++ ++ $builder->createField('scheduledCount', 'integer') ++ ->columnName('scheduled_count') ++ ->build(); ++ ++ $builder->createField('triggeredCount', 'integer') ++ ->columnName('triggered_count') ++ ->build(); ++ ++ $builder->createField('nonActionPathTakenCount', 'integer') ++ ->columnName('non_action_path_taken_count') ++ ->build(); ++ ++ $builder->createField('failedCount', 'integer') ++ ->columnName('failed_count') ++ ->build(); ++ } ++ ++ /** ++ * @return int ++ */ ++ public function getScheduledCount() ++ { ++ return $this->scheduledCount; ++ } ++ ++ /** ++ * @param int $scheduledCount ++ * ++ * @return $this ++ */ ++ public function setScheduledCount($scheduledCount) ++ { ++ $this->scheduledCount = $scheduledCount; ++ ++ return $this; ++ } ++ ++ /** ++ * @return int ++ */ ++ public function getTriggeredCount() ++ { ++ return $this->triggeredCount; ++ } ++ ++ /** ++ * @param int $triggeredCount ++ * ++ * @return $this ++ */ ++ public function setTriggeredCount($triggeredCount) ++ { ++ $this->triggeredCount = $triggeredCount; ++ ++ return $this; ++ } ++ ++ /** ++ * @return int ++ */ ++ public function getNonActionPathTakenCount() ++ { ++ return $this->nonActionPathTakenCount; ++ } ++ ++ /** ++ * @param int $nonActionPathTakenCount ++ * ++ * @return $this ++ */ ++ public function setNonActionPathTakenCount($nonActionPathTakenCount) ++ { ++ $this->nonActionPathTakenCount = $nonActionPathTakenCount; ++ ++ return $this; ++ } ++ ++ /** ++ * @return int ++ */ ++ public function getFailedCount() ++ { ++ return $this->failedCount; ++ } ++ ++ /** ++ * @param int $failedCount ++ * ++ * @return $this ++ */ ++ public function setFailedCount($failedCount) ++ { ++ $this->failedCount = $failedCount; ++ ++ return $this; ++ } ++ ++ /** ++ * @return Campaign ++ */ ++ public function getCampaign() ++ { ++ return $this->campaign; ++ } ++ ++ /** ++ * @param Campaign $campaign ++ * ++ * @return $this ++ */ ++ public function setCampaign(Campaign $campaign) ++ { ++ $this->campaign = $campaign; ++ ++ return $this; ++ } ++ ++ /** ++ * @return Event ++ */ ++ public function getEvent() ++ { ++ return $this->event; ++ } ++ ++ /*** ++ * @param $event ++ * ++ * @return $this ++ */ ++ public function setEvent(Event $event) ++ { ++ $this->event = $event; ++ ++ if (!$this->campaign) { ++ $this->setCampaign($event->getCampaign()); ++ } ++ ++ return $this; ++ } ++ ++ /** ++ * @return \DateTime ++ */ ++ public function getDateTriggered() ++ { ++ return $this->dateTriggered; ++ } ++ ++ /** ++ * @param \DateTime|null $dateTriggered ++ * ++ * @return $this ++ */ ++ public function setDateTriggered(\DateTime $dateTriggered = null) ++ { ++ $this->dateTriggered = $dateTriggered; ++ ++ return $this; ++ } ++ ++ /** ++ * @return mixed ++ */ ++ public function getId() ++ { ++ return $this->id; ++ } ++} +diff --git a/app/bundles/CampaignBundle/Entity/SummaryRepository.php b/app/bundles/CampaignBundle/Entity/SummaryRepository.php +new file mode 100644 +index 0000000000..7b1a20eada +--- /dev/null ++++ b/app/bundles/CampaignBundle/Entity/SummaryRepository.php +@@ -0,0 +1,175 @@ ++getCampaign()->getId(), ++ $summary->getEvent()->getId(), ++ 'FROM_UNIXTIME('.$summary->getDateTriggered()->getTimestamp().')', ++ $summary->getScheduledCount(), ++ $summary->getTriggeredCount(), ++ $summary->getNonActionPathTakenCount(), ++ $summary->getFailedCount(), ++ ] ++ ); ++ } ++ ++ $sql = 'INSERT INTO '.MAUTIC_TABLE_PREFIX.'campaign_summary '. ++ '(campaign_id, event_id, date_triggered, scheduled_count, triggered_count, non_action_path_taken_count, failed_count) '. ++ 'VALUES ('.implode('),(', $values).') '. ++ 'ON DUPLICATE KEY UPDATE '. ++ 'scheduled_count=scheduled_count+VALUES(scheduled_count), '. ++ 'triggered_count=triggered_count+VALUES(triggered_count), '. ++ 'non_action_path_taken_count=non_action_path_taken_count+VALUES(non_action_path_taken_count), '. ++ 'failed_count=failed_count+VALUES(failed_count) '; ++ ++ $this->getEntityManager() ++ ->getConnection() ++ ->prepare($sql) ++ ->execute(); ++ ++ $this->getEntityManager()->flush(); ++ } ++ ++ /** ++ * @param $campaignId ++ * @param \DateTime|null $dateFrom ++ * @param \DateTime|null $dateTo ++ * ++ * @return array ++ */ ++ public function getCampaignLogCounts( ++ $campaignId, ++ \DateTime $dateFrom = null, ++ \DateTime $dateTo = null ++ ) { ++ $q = $this->_em->getConnection()->createQueryBuilder() ++ ->select( ++ 'cs.event_id, SUM(cs.scheduled_count) as scheduled_count, SUM(cs.triggered_count) as triggered_count, SUM(cs.non_action_path_taken_count) as non_action_path_taken_count, SUM(cs.failed_count) as failed_count' ++ ) ++ ->from(MAUTIC_TABLE_PREFIX.'campaign_summary', 'cs') ++ ->where('cs.campaign_id = '.(int) $campaignId) ++ ->groupBy('cs.event_id'); ++ ++ if ($dateFrom && $dateTo) { ++ $q->andWhere('cs.date_triggered BETWEEN FROM_UNIXTIME(:dateFrom) AND FROM_UNIXTIME(:dateTo)') ++ ->setParameter('dateFrom', $dateFrom->getTimestamp(), \PDO::PARAM_INT) ++ ->setParameter('dateTo', $dateTo->getTimestamp(), \PDO::PARAM_INT); ++ } ++ ++ $results = $q->execute()->fetchAll(); ++ ++ $return = []; ++ // Group by event id ++ foreach ($results as $row) { ++ $return[$row['event_id']] = [ ++ 0 => intval($row['non_action_path_taken_count']), ++ 1 => intval($row['triggered_count']) + intval($row['scheduled_count']), ++ ]; ++ } ++ ++ return $return; ++ } ++ ++ /** ++ * Get the oldest triggered time for back-filling historical data. ++ * ++ * @return \DateTime|null ++ */ ++ public function getOldestTriggeredDate() ++ { ++ $qb = $this->getEntityManager()->getConnection()->createQueryBuilder(); ++ $qb->select('cs.date_triggered') ++ ->from(MAUTIC_TABLE_PREFIX.'campaign_summary', 'cs') ++ ->orderBy('cs.date_triggered', 'ASC') ++ ->setMaxResults(1); ++ ++ $results = $qb->execute()->fetchAll(); ++ ++ return isset($results[0]['date_triggered']) ? new \DateTime($results[0]['date_triggered']) : null; ++ } ++ ++ /** ++ * Regenerate summary entries for a given time frame. ++ * ++ * @param \DateTime $dateFrom ++ * @param \DateTime $dateTo ++ * ++ * @throws \Doctrine\DBAL\DBALException ++ */ ++ public function summarize(\DateTime $dateFrom, \DateTime $dateTo) ++ { ++ $sql = 'INSERT INTO '.MAUTIC_TABLE_PREFIX.'campaign_summary '. ++ '(campaign_id, event_id, date_triggered, scheduled_count, non_action_path_taken_count, failed_count, triggered_count) '. ++ ' SELECT '. ++ ' t.campaign_id as campaign_id, '. ++ ' t.event_id as event_id, '. ++ ' FROM_UNIXTIME(UNIX_TIMESTAMP(t.date_triggered) - (UNIX_TIMESTAMP(t.date_triggered) % 3600)) AS date_triggered, '. ++ ' SUM(IF(t.is_scheduled = 1 AND t.trigger_date > NOW(), 1, 0)) as scheduled_count, '. ++ ' SUM(IF(t.is_scheduled = 1 AND t.trigger_date > NOW(), 0, t.non_action_path_taken)) as non_action_path_taken_count, '. ++ ' SUM(IF((t.is_scheduled = 1 AND t.trigger_date > NOW()) OR t.non_action_path_taken, 0, fe.log_id IS NOT NULL)) as failed_count, '. ++ ' SUM(IF((t.is_scheduled = 1 AND t.trigger_date > NOW()) OR t.non_action_path_taken OR fe.log_id IS NOT NULL, 0, 1)) as triggered_count '. ++ ' FROM '.MAUTIC_TABLE_PREFIX.'campaign_lead_event_log t '. ++ ' LEFT JOIN '.MAUTIC_TABLE_PREFIX.'campaign_lead_event_failed_log fe '. ++ ' ON fe.log_id = t.id '. ++ ' WHERE (t.date_triggered BETWEEN FROM_UNIXTIME(:dateFrom) AND FROM_UNIXTIME(:dateTo)) '. ++ ' GROUP BY campaign_id, event_id, date_triggered '. ++ 'ON DUPLICATE KEY UPDATE '. ++ 'scheduled_count=VALUES(scheduled_count), '. ++ 'non_action_path_taken_count=VALUES(non_action_path_taken_count), '. ++ 'failed_count=VALUES(failed_count), '. ++ 'triggered_count=VALUES(triggered_count); '; ++ ++ $q = $this->getEntityManager() ++ ->getConnection() ++ ->prepare($sql); ++ ++ $q->bindParam('dateFrom', $dateFrom->getTimestamp(), \PDO::PARAM_INT); ++ $q->bindParam('dateTo', $dateTo->getTimestamp(), \PDO::PARAM_INT); ++ ++ $q->execute(); ++ } ++} +diff --git a/app/bundles/CampaignBundle/Executioner/Logger/EventLogger.php b/app/bundles/CampaignBundle/Executioner/Logger/EventLogger.php +index 14c8bd79c2..2d6efe1573 100644 +--- a/app/bundles/CampaignBundle/Executioner/Logger/EventLogger.php ++++ b/app/bundles/CampaignBundle/Executioner/Logger/EventLogger.php +@@ -18,6 +18,7 @@ + use Mautic\CampaignBundle\Entity\LeadRepository; + use Mautic\CampaignBundle\EventCollector\Accessor\Event\AbstractEventAccessor; + use Mautic\CampaignBundle\Helper\ChannelExtractor; ++use Mautic\CampaignBundle\Model\SummaryModel; + use Mautic\CoreBundle\Helper\IpLookupHelper; + use Mautic\LeadBundle\Entity\Lead; + use Mautic\LeadBundle\Tracker\ContactTracker; +@@ -39,6 +40,11 @@ class EventLogger + */ + private $leadEventLogRepository; + ++ /** ++ * @var SummaryModel ++ */ ++ private $summaryModel; ++ + /** + * @var LeadRepository + */ +@@ -66,17 +72,20 @@ class EventLogger + * @param ContactTracker $contactTracker + * @param LeadEventLogRepository $leadEventLogRepository + * @param LeadRepository $leadRepository ++ * @param SummaryModel $summaryModel + */ + public function __construct( + IpLookupHelper $ipLookupHelper, + ContactTracker $contactTracker, + LeadEventLogRepository $leadEventLogRepository, +- LeadRepository $leadRepository ++ LeadRepository $leadRepository, ++ SummaryModel $summaryModel + ) { + $this->ipLookupHelper = $ipLookupHelper; + $this->contactTracker = $contactTracker; + $this->leadEventLogRepository = $leadEventLogRepository; + $this->leadRepository = $leadRepository; ++ $this->summaryModel = $summaryModel; + + $this->persistQueue = new ArrayCollection(); + $this->logs = new ArrayCollection(); +@@ -100,6 +109,7 @@ public function queueToPersist(LeadEventLog $log) + public function persistLog(LeadEventLog $log) + { + $this->leadEventLogRepository->saveEntity($log); ++ $this->summaryModel->updateSummary([$log]); + } + + /** +@@ -168,6 +178,7 @@ public function persistCollection(ArrayCollection $collection) + } + + $this->leadEventLogRepository->saveEntities($collection->getValues()); ++ $this->summaryModel->updateSummary($collection->getValues()); + + return $this; + } +diff --git a/app/bundles/CampaignBundle/Form/Type/ConfigType.php b/app/bundles/CampaignBundle/Form/Type/ConfigType.php +index 79c0f15d82..a7e4378300 100644 +--- a/app/bundles/CampaignBundle/Form/Type/ConfigType.php ++++ b/app/bundles/CampaignBundle/Form/Type/ConfigType.php +@@ -55,6 +55,28 @@ public function buildForm(FormBuilderInterface $builder, array $options) + 'required' => false, + ] + ); ++ $builder->add( ++ 'campaign_by_range', ++ 'yesno_button_group', ++ [ ++ 'label' => 'mautic.campaignconfig.campaign_by_range', ++ 'attr' => [ ++ 'tooltip' => 'mautic.campaignconfig.campaign_by_range.tooltip', ++ ], ++ 'data' => isset($options['data']['campaign_by_range']) ? (bool) $options['data']['campaign_by_range'] : false, ++ ] ++ ); ++ $builder->add( ++ 'campaign_use_summary', ++ 'yesno_button_group', ++ [ ++ 'label' => 'mautic.campaignconfig.use_summary', ++ 'attr' => [ ++ 'tooltip' => 'mautic.campaignconfig.use_summary.tooltip', ++ ], ++ 'data' => isset($options['data']['campaign_use_summary']) ? (bool) $options['data']['campaign_use_summary'] : false, ++ ] ++ ); + } + + /** +diff --git a/app/bundles/CampaignBundle/Model/CampaignModel.php b/app/bundles/CampaignBundle/Model/CampaignModel.php +index 504a7f9666..7191dd8841 100644 +--- a/app/bundles/CampaignBundle/Model/CampaignModel.php ++++ b/app/bundles/CampaignBundle/Model/CampaignModel.php +@@ -770,19 +770,24 @@ public function getCampaignMetricsLineChartData($unit, \DateTime $dateFrom, \Dat + foreach ($events as $type => $eventIds) { + $filter['event_id'] = $eventIds; + +- // Exclude failed events +- $failedSq = $this->em->getConnection()->createQueryBuilder(); +- $failedSq->select('null') +- ->from(MAUTIC_TABLE_PREFIX.'campaign_lead_event_failed_log', 'fe') +- ->where( +- $failedSq->expr()->eq('fe.log_id', 't.id') +- ); +- $filter['failed_events'] = [ +- 'subquery' => sprintf('NOT EXISTS (%s)', $failedSq->getSQL()), +- ]; +- +- $q = $query->prepareTimeDataQuery('campaign_lead_event_log', 'date_triggered', $filter); +- $rawData = $q->execute()->fetchAll(); ++ if ($this->coreParametersHelper->getParameter('mautic.campaign_use_summary')) { ++ $q = $query->prepareTimeDataQuery('campaign_summary', 'date_triggered', $filter, 'triggered_count + non_action_path_taken_count', 'sum'); ++ $rawData = $q->execute()->fetchAll(); ++ } else { ++ // Exclude failed events ++ $failedSq = $this->em->getConnection()->createQueryBuilder(); ++ $failedSq->select('null') ++ ->from(MAUTIC_TABLE_PREFIX.'campaign_lead_event_failed_log', 'fe') ++ ->where( ++ $failedSq->expr()->eq('fe.log_id', 't.id') ++ ); ++ $filter['failed_events'] = [ ++ 'subquery' => sprintf('NOT EXISTS (%s)', $failedSq->getSQL()), ++ ]; ++ ++ $q = $query->prepareTimeDataQuery('campaign_lead_event_log', 'date_triggered', $filter); ++ $rawData = $q->execute()->fetchAll(); ++ } + + if (!empty($rawData)) { + $triggers = $query->completeTimeData($rawData); +diff --git a/app/bundles/CampaignBundle/Model/SummaryModel.php b/app/bundles/CampaignBundle/Model/SummaryModel.php +new file mode 100644 +index 0000000000..5a7e48e25b +--- /dev/null ++++ b/app/bundles/CampaignBundle/Model/SummaryModel.php +@@ -0,0 +1,145 @@ ++getDateTriggered()->getTimestamp(); ++ // Universally round down to the hour. ++ $timestamp = $timestamp - ($timestamp % 3600); ++ $campaign = $log->getCampaign(); ++ $event = $log->getEvent(); ++ $key = $campaign->getId().'.'.$event->getId().'.'.$timestamp; ++ if (!isset($summaries[$key])) { ++ $dateTriggered = new \DateTime(); ++ $dateTriggered->setTimestamp($timestamp); ++ $summary = new Summary(); ++ $summary->setCampaign($campaign); ++ $summary->setEvent($event); ++ $summary->setDateTriggered($dateTriggered); ++ $summaries[$key] = $summary; ++ } else { ++ $summary = $summaries[$key]; ++ } ++ ++ if ($log->getIsScheduled() && $log->getTriggerDate() > $now) { ++ $summary->setScheduledCount($summary->getScheduledCount() + 1); ++ } elseif ($log->getNonActionPathTaken()) { ++ $summary->setNonActionPathTakenCount($summary->getNonActionPathTakenCount() + 1); ++ } elseif ($log->getFailedLog()) { ++ $summary->setFailedCount($summary->getFailedCount() + 1); ++ } elseif ($log->getSystemTriggered()) { ++ $summary->setTriggeredCount($summary->getTriggeredCount() + 1); ++ } ++ } ++ if ($summaries) { ++ $this->getRepository()->saveEntities($summaries); ++ } ++ } ++ ++ /** ++ * {@inheritdoc} ++ * ++ * @return \Mautic\CampaignBundle\Entity\SummaryRepository ++ */ ++ public function getRepository() ++ { ++ return $this->em->getRepository('MauticCampaignBundle:Summary'); ++ } ++ ++ /** ++ * {@inheritdoc} ++ * ++ * @return string ++ */ ++ public function getPermissionBase() ++ { ++ return 'campaign:campaigns'; ++ } ++ ++ /** ++ * Summarize all of history. ++ * ++ * @param OutputInterface $output ++ * @param int $hoursPerBatch ++ * @param null $maxHours ++ * @param bool $rebuild ++ * ++ * @throws \Doctrine\DBAL\DBALException ++ */ ++ public function summarize(OutputInterface $output, $hoursPerBatch = 1, $maxHours = null, $rebuild = false) ++ { ++ $start = null; ++ if (!$rebuild) { ++ /** @var \DateTime $oldestSumamryDate */ ++ $start = $this->getRepository()->getOldestTriggeredDate(); ++ } ++ $start = $start ? $start : new \DateTime(); ++ $start->setTimestamp($start->getTimestamp() - ($start->getTimestamp() % 3600)); ++ ++ /** @var LeadEventLog $oldestTriggeredEventLog */ ++ $end = $this->getCampaignLeadEventLogRepository()->getOldestTriggeredDate(); ++ $end->setTimestamp($end->getTimestamp() - ($end->getTimestamp() % 3600)); ++ if ($end && $end <= $start) { ++ $hours = ($end->diff($start)->days * 24) + $end->diff($start)->h; ++ if ($maxHours && $hours > $maxHours) { ++ $end = clone $start; ++ $end = $end->sub(new \DateInterval('PT'.intval($maxHours).'H')); ++ } ++ $this->progressBar = ProgressBarHelper::init($output, $hours); ++ $this->progressBar->start(); ++ ++ $interval = new \DateInterval('PT'.$hoursPerBatch.'H'); ++ $dateFrom = clone $start; ++ $dateTo = clone $start; ++ do { ++ $dateFrom->sub($interval); ++ $output->write("\t".$dateFrom->format('Y-m-d H:i:s')); ++ $this->getRepository()->summarize($dateFrom, $dateTo); ++ $this->progressBar->advance($hoursPerBatch); ++ $dateTo->sub($interval); ++ } while ($end < $dateFrom); ++ $this->progressBar->finish(); ++ } ++ } ++ ++ /** ++ * @return \Mautic\CampaignBundle\Entity\LeadEventLogRepository ++ */ ++ public function getCampaignLeadEventLogRepository() ++ { ++ return $this->em->getRepository('MauticCampaignBundle:LeadEventLog'); ++ } ++} +diff --git a/app/bundles/CampaignBundle/Tests/Executioner/Logger/EventLoggerTest.php b/app/bundles/CampaignBundle/Tests/Executioner/Logger/EventLoggerTest.php +index cf3a415f78..260093f9a2 100644 +--- a/app/bundles/CampaignBundle/Tests/Executioner/Logger/EventLoggerTest.php ++++ b/app/bundles/CampaignBundle/Tests/Executioner/Logger/EventLoggerTest.php +@@ -16,6 +16,7 @@ + use Mautic\CampaignBundle\Entity\LeadEventLogRepository; + use Mautic\CampaignBundle\Entity\LeadRepository; + use Mautic\CampaignBundle\Executioner\Logger\EventLogger; ++use Mautic\CampaignBundle\Model\SummaryModel; + use Mautic\CoreBundle\Helper\IpLookupHelper; + use Mautic\LeadBundle\Tracker\ContactTracker; + +@@ -41,12 +42,16 @@ class EventLoggerTest extends \PHPUnit_Framework_TestCase + */ + private $leadRepository; + ++ /** @var SummaryModel */ ++ private $summaryModel; ++ + protected function setUp() + { + $this->ipLookupHelper = $this->createMock(IpLookupHelper::class); + $this->contactTracker = $this->createMock(ContactTracker::class); + $this->leadEventLogRepository = $this->createMock(LeadEventLogRepository::class); + $this->leadRepository = $this->createMock(LeadRepository::class); ++ $this->summaryModel = $this->createMock(summaryModel::class); + } + + public function testAllLogsAreReturnedWithFinalPersist() +@@ -80,7 +85,8 @@ private function getLogger() + $this->ipLookupHelper, + $this->contactTracker, + $this->leadEventLogRepository, +- $this->leadRepository ++ $this->leadRepository, ++ $this->summaryModel + ); + } + } +diff --git a/app/bundles/CampaignBundle/Translations/en_US/messages.ini b/app/bundles/CampaignBundle/Translations/en_US/messages.ini +index 88324607b2..6a36c8b715 100644 +--- a/app/bundles/CampaignBundle/Translations/en_US/messages.ini ++++ b/app/bundles/CampaignBundle/Translations/en_US/messages.ini +@@ -110,6 +110,7 @@ mautic.campaign.rebuild.not_found="Campaign #%id% does not exist" + mautic.campaign.rebuild.to_be_added="%leads% total contact(s) to be added in batches of %batch%" + mautic.campaign.rebuild.to_be_removed="%leads% total contact(s) to be removed in batches of %batch%" + mautic.campaign.scheduled="Campaign event scheduled" ++mautic.campaign.summarizing="Building summary statistics for past campaign events, in batches of %batch% hours. Will back-fill data from the newest to the oldest events." + mautic.campaign.trigger.event_count="%events% total events(s) to be processed in batches of %batch% contacts" + mautic.campaign.trigger.events_executed="{0} 0 total events were executed|{1} 1 total event was executed|[2,Inf] %events% total events were executed" + mautic.campaign.trigger.events_scheduled="{0} 0 total events were scheduled|{1} 1 total event was scheduled|[2,Inf] %events% total events were scheduled" +@@ -129,6 +130,10 @@ mautic.campaign.triggered.events="Triggered Events" + mautic.config.tab.campaignconfig="Campaign Settings" + mautic.campaignconfig.campaign_time_wait_on_event_false="Wait time before retrying a failed action" + mautic.campaignconfig.campaign_time_wait_on_event_false_tooltip="If an action fails to execute, wait this long before trying again." ++mautic.campaignconfig.campaign_by_range="Use date range for all views" ++mautic.campaignconfig.campaign_by_range.tooltip="The actions, conditions, decisions and contacts tabs will be based on the date range provided when viewing a campaign." ++mautic.campaignconfig.use_summary="Use summary statistics" ++mautic.campaignconfig.use_summary.tooltip="Improves performance when viewing a campaign with thousands of events per day by using summarized data. May require you run a command via SSH to backfill your data once." + mautic.campaign.stats="Campaign statistics" + mautic.stage.campaign.event.change_descr="Choose a stage to change a contact to." + mautic.campaign.command.process.messages="Processing message queue" +diff --git a/app/bundles/CoreBundle/DependencyInjection/Compiler/DbalPass.php b/app/bundles/CoreBundle/DependencyInjection/Compiler/DbalPass.php +new file mode 100644 +index 0000000000..812f58605f +--- /dev/null ++++ b/app/bundles/CoreBundle/DependencyInjection/Compiler/DbalPass.php +@@ -0,0 +1,38 @@ ++hasDefinition($id)) { ++ $container ++ ->getDefinition($id) ++ ->addMethodCall('setResultCacheImpl', [new Reference('doctrine.orm.default_result_cache')]); ++ } ++ } ++} +diff --git a/app/bundles/CoreBundle/Helper/Chart/ChartQuery.php b/app/bundles/CoreBundle/Helper/Chart/ChartQuery.php +index e0c016b803..31a0d4b941 100644 +--- a/app/bundles/CoreBundle/Helper/Chart/ChartQuery.php ++++ b/app/bundles/CoreBundle/Helper/Chart/ChartQuery.php +@@ -227,10 +227,6 @@ public function modifyTimeDataQuery(&$query, $column, $tablePrefix = 't', $count + $limit = $this->countAmountFromDateRange($this->unit); + $groupBy = ''; + +- if (isset($filters['groupBy'])) { +- $groupBy = ', '.$tablePrefix.'.'.$filters['groupBy']; +- unset($filters['groupBy']); +- } + $dateConstruct = 'DATE_FORMAT('.$tablePrefix.'.'.$column.', \''.$dbUnit.'\')'; + + if ($isEnumerable === true) { +diff --git a/app/bundles/CoreBundle/MauticCoreBundle.php b/app/bundles/CoreBundle/MauticCoreBundle.php +index 0302ab4861..b4ea24332a 100644 +--- a/app/bundles/CoreBundle/MauticCoreBundle.php ++++ b/app/bundles/CoreBundle/MauticCoreBundle.php +@@ -26,6 +26,7 @@ class MauticCoreBundle extends Bundle + public function build(ContainerBuilder $container) + { + $container->addCompilerPass(new Compiler\ConfiguratorPass()); ++ $container->addCompilerPass(new Compiler\DbalPass()); + $container->addCompilerPass(new Compiler\TemplatingPass()); + $container->addCompilerPass(new Compiler\TranslationsPass()); + $container->addCompilerPass(new Compiler\ModelPass()); +diff --git a/app/bundles/LeadBundle/Controller/EntityContactsTrait.php b/app/bundles/LeadBundle/Controller/EntityContactsTrait.php +index 123ca3e967..4c385a7f0a 100644 +--- a/app/bundles/LeadBundle/Controller/EntityContactsTrait.php ++++ b/app/bundles/LeadBundle/Controller/EntityContactsTrait.php +@@ -19,17 +19,22 @@ + trait EntityContactsTrait + { + /** +- * @param $entityId +- * @param $page +- * @param $permission +- * @param $sessionVar +- * @param $entityJoinTable Table to join to obtain list of related contacts or a DBAL QueryBuilder object defining custom joins +- * @param null $dncChannel Channel for this entity to get do not contact records for +- * @param null $entityIdColumnName If the entity ID in $joinTable is not "id", set the column name here +- * @param array $contactFilter Array of additional filters for the getEntityContactsWithFields() function +- * @param array $additionalJoins [ ['type' => 'join|leftJoin', 'from_alias' => '', 'table' => '', 'condition' => ''], ... ] +- * @param string $contactColumnName Column of the contact in the join table +- * @param string $paginationTarget DOM seletor for injecting new content when pagination is used ++ * @param $entityId ++ * @param $page ++ * @param $permission ++ * @param $sessionVar ++ * @param $entityJoinTable Table to join to obtain list of related contacts or a DBAL QueryBuilder object defining custom joins ++ * @param null $dncChannel Channel for this entity to get do not contact records for ++ * @param null $entityIdColumnName If the entity ID in $joinTable is not "id", set the column name here ++ * @param array $contactFilter Array of additional filters for the getEntityContactsWithFields() function ++ * @param array $additionalJoins [ ['type' => 'join|leftJoin', 'from_alias' => '', 'table' => '', 'condition' => ''], ... ] ++ * @param string $contactColumnName Column of the contact in the join table ++ * @param string $paginationTarget DOM seletor for injecting new content when pagination is used ++ * @param null $orderBy optional OrderBy column, to be used to increase performance with joins ++ * @param null $orderByDir optional $orderBy direction, to be used to increase performance with joins ++ * @param int $count optional $count if already known to avoid an extra query ++ * @param \DateTime|null $dateFrom optionally limit to leads added between From and To dates ++ * @param \DateTime|null $dateTo optionally limit to leads added between From and To dates + * + * @return mixed + */ +@@ -45,7 +50,12 @@ protected function generateContactsGrid( + array $additionalJoins = null, + $contactColumnName = null, + array $routeParameters = [], +- $paginationTarget = null ++ $paginationTarget = null, ++ $orderBy = null, ++ $orderByDir = null, ++ $count = null, ++ \DateTime $dateFrom = null, ++ \DateTime $dateTo = null + ) { + if ($permission && !$this->get('mautic.security')->isGranted($permission)) { + return $this->accessDenied(); +@@ -66,8 +76,8 @@ protected function generateContactsGrid( + $this->get('session')->set('mautic.'.$sessionVar.'.contact.filter', $search); + + $filter = ['string' => $search, 'force' => []]; +- $orderBy = $this->get('session')->get('mautic.'.$sessionVar.'.contact.orderby', 'l.id'); +- $orderByDir = $this->get('session')->get('mautic.'.$sessionVar.'.contact.orderbydir', 'DESC'); ++ $orderBy = $orderBy ? $orderBy : $this->get('session')->get('mautic.'.$sessionVar.'.contact.orderby', 'l.id'); ++ $orderByDir = $orderByDir ? $orderByDir : $this->get('session')->get('mautic.'.$sessionVar.'.contact.orderbydir', 'DESC'); + + //set limits + $limit = $this->get('session')->get( +@@ -84,7 +94,7 @@ protected function generateContactsGrid( + $repo = $this->getModel('lead')->getRepository(); + $contacts = $repo->getEntityContacts( + [ +- 'withTotalCount' => true, ++ 'withTotalCount' => ($count === null), + 'start' => $start, + 'limit' => $limit, + 'filter' => $filter, +@@ -96,10 +106,21 @@ protected function generateContactsGrid( + $contactFilter, + $entityIdColumnName, + $additionalJoins, +- $contactColumnName ++ $contactColumnName, ++ $dateFrom, ++ $dateTo + ); + +- $count = $contacts['count']; ++ // Normalize results regarding withTotalCount. ++ if (isset($contacts['count'])) { ++ $count = $contacts['count']; ++ } else { ++ $contacts = [ ++ 'results' => $contacts, ++ 'count' => $count, ++ ]; ++ } ++ + if ($count && $count < ($start + 1)) { + //the number of entities are now less then the current page so redirect to the last page + $lastPage = ($count === 1) ? 1 : (ceil($count / $limit)) ?: 1; +diff --git a/app/bundles/LeadBundle/Entity/CustomFieldRepositoryTrait.php b/app/bundles/LeadBundle/Entity/CustomFieldRepositoryTrait.php +index bc2a199b7c..a7e0c3e68c 100644 +--- a/app/bundles/LeadBundle/Entity/CustomFieldRepositoryTrait.php ++++ b/app/bundles/LeadBundle/Entity/CustomFieldRepositoryTrait.php +@@ -49,19 +49,22 @@ public function getEntitiesWithCustomFields($object, $args, $resultsCallback = n + $this->buildWhereClause($dq, $args); + + // Distinct is required here to get the correct count when group by is used due to applied filters +- $countSelect = ($this->useDistinctCount) ? 'COUNT(DISTINCT('.$this->getTableAlias().'.id))' : 'COUNT('.$this->getTableAlias().'.id)'; +- $dq->select($countSelect.' as count'); ++ $total = 0; ++ if (!empty($args['withTotalCount'])) { ++ $countSelect = ($this->useDistinctCount) ? 'COUNT(DISTINCT('.$this->getTableAlias().'.id))' : 'COUNT('.$this->getTableAlias().'.id)'; ++ $dq->select($countSelect.' as count'); ++ ++ // Advanced search filters may have set a group by and if so, let's remove it for the count. ++ if ($groupBy = $dq->getQueryPart('groupBy')) { ++ $dq->resetQueryPart('groupBy'); ++ } + +- // Advanced search filters may have set a group by and if so, let's remove it for the count. +- if ($groupBy = $dq->getQueryPart('groupBy')) { +- $dq->resetQueryPart('groupBy'); ++ //get a total count ++ $result = $dq->execute()->fetchAll(); ++ $total = ($result) ? $result[0]['count'] : 0; + } + +- //get a total count +- $result = $dq->execute()->fetchAll(); +- $total = ($result) ? $result[0]['count'] : 0; +- +- if (!$total) { ++ if (!$total && !empty($args['withTotalCount'])) { + $results = []; + } else { + if ($groupBy) { +diff --git a/app/bundles/LeadBundle/Entity/LeadRepository.php b/app/bundles/LeadBundle/Entity/LeadRepository.php +index 5176ce7403..41617e56ab 100755 +--- a/app/bundles/LeadBundle/Entity/LeadRepository.php ++++ b/app/bundles/LeadBundle/Entity/LeadRepository.php +@@ -545,16 +545,18 @@ public function getEntitiesOrmQueryBuilder($order) + /** + * Get contacts for a specific channel entity. + * +- * @param $args - same as getEntity/getEntities +- * @param $joinTable +- * @param $entityId +- * @param array $filters +- * @param string $entityColumnName +- * @param array $additionalJoins [ ['type' => 'join|leftJoin', 'from_alias' => '', 'table' => '', 'condition' => ''], ... ] ++ * @param array $args same as getEntity/getEntities ++ * @param $joinTable ++ * @param $entityId ++ * @param array $filters ++ * @param string $entityColumnName ++ * @param array $additionalJoins [ ['type' => 'join|leftJoin', 'from_alias' => '', 'table' => '', 'condition' => ''], ... ] ++ * @param \DateTime|null $dateFrom ++ * @param \DateTime|null $dateTo + * + * @return array + */ +- public function getEntityContacts($args, $joinTable, $entityId, $filters = [], $entityColumnName = 'id', array $additionalJoins = null, $contactColumnName = 'lead_id') ++ public function getEntityContacts($args, $joinTable, $entityId, $filters = [], $entityColumnName = 'id', array $additionalJoins = null, $contactColumnName = 'lead_id', \DateTime $dateFrom = null, \DateTime $dateTo = null) + { + $qb = $this->getEntitiesDbalQueryBuilder(); + +@@ -608,6 +610,12 @@ public function getEntityContacts($args, $joinTable, $entityId, $filters = [], $ + } + } + ++ if ($dateFrom && $dateTo) { ++ $qb->andWhere('entity.date_added BETWEEN FROM_UNIXTIME(:dateFrom) AND FROM_UNIXTIME(:dateTo)') ++ ->setParameter('dateFrom', $dateFrom->getTimestamp(), \PDO::PARAM_INT) ++ ->setParameter('dateTo', $dateTo->getTimestamp(), \PDO::PARAM_INT); ++ } ++ + $args['qb'] = $qb; + + return $this->getEntities($args); diff --git a/scripts/patches/6753.diff b/scripts/patches/6753.diff deleted file mode 100644 index f045f32..0000000 --- a/scripts/patches/6753.diff +++ /dev/null @@ -1,289 +0,0 @@ -diff --git a/app/bundles/CampaignBundle/Command/TriggerCampaignCommand.php b/app/bundles/CampaignBundle/Command/TriggerCampaignCommand.php -index 4a1e33d48f..aa417057ab 100644 ---- a/app/bundles/CampaignBundle/Command/TriggerCampaignCommand.php -+++ b/app/bundles/CampaignBundle/Command/TriggerCampaignCommand.php -@@ -156,6 +156,13 @@ protected function configure() - 'Trigger events for a specific campaign. Otherwise, all campaigns will be triggered.', - null - ) -+ ->addOption( -+ '--campaign-limit', -+ null, -+ InputOption::VALUE_OPTIONAL, -+ 'Limit number of contacts on a per campaign basis', -+ null -+ ) - ->addOption( - '--contact-id', - null, -@@ -247,13 +254,14 @@ protected function execute(InputInterface $input, OutputInterface $output) - $this->scheduleOnly = $input->getOption('scheduled-only'); - $this->inactiveOnly = $input->getOption('inactive-only') || $input->getOption('negative-only'); - -- $batchLimit = $input->getOption('batch-limit'); -- $contactMinId = $input->getOption('min-contact-id'); -- $contactMaxId = $input->getOption('max-contact-id'); -- $contactId = $input->getOption('contact-id'); -- $contactIds = $this->formatterHelper->simpleCsvToArray($input->getOption('contact-ids'), 'int'); -- $threadId = $input->getOption('thread-id'); -- $maxThreads = $input->getOption('max-threads'); -+ $batchLimit = $input->getOption('batch-limit'); -+ $campaignLimit = $input->getOption('campaign-limit'); -+ $contactMinId = $input->getOption('min-contact-id'); -+ $contactMaxId = $input->getOption('max-contact-id'); -+ $contactId = $input->getOption('contact-id'); -+ $contactIds = $this->formatterHelper->simpleCsvToArray($input->getOption('contact-ids'), 'int'); -+ $threadId = $input->getOption('thread-id'); -+ $maxThreads = $input->getOption('max-threads'); - - if ($threadId && $maxThreads && (int) $threadId > (int) $maxThreads) { - $this->output->writeln('--thread-id cannot be larger than --max-thread'); -@@ -261,7 +269,7 @@ protected function execute(InputInterface $input, OutputInterface $output) - return 1; - } - -- $this->limiter = new ContactLimiter($batchLimit, $contactId, $contactMinId, $contactMaxId, $contactIds, $threadId, $maxThreads); -+ $this->limiter = new ContactLimiter($batchLimit, $contactId, $contactMinId, $contactMaxId, $contactIds, $threadId, $maxThreads, $campaignLimit); - - defined('MAUTIC_CAMPAIGN_SYSTEM_TRIGGERED') or define('MAUTIC_CAMPAIGN_SYSTEM_TRIGGERED', 1); - -@@ -292,6 +300,9 @@ protected function execute(InputInterface $input, OutputInterface $output) - // Key is ID and not 0 - $campaign = reset($next); - $this->triggerCampaign($campaign); -+ if ($this->limiter->hasCampaignLimit()) { -+ $this->limiter->resetCampaignLimitRemaining(); -+ } - } - - $this->completeRun(); -diff --git a/app/bundles/CampaignBundle/Entity/CampaignRepository.php b/app/bundles/CampaignBundle/Entity/CampaignRepository.php -index e8c2fe0373..f9aacaa85c 100644 ---- a/app/bundles/CampaignBundle/Entity/CampaignRepository.php -+++ b/app/bundles/CampaignBundle/Entity/CampaignRepository.php -@@ -394,6 +394,10 @@ public function getCountsForPendingContacts($campaignId, array $pendingEvents, C - */ - public function getPendingContactIds($campaignId, ContactLimiter $limiter) - { -+ if ($limiter->hasCampaignLimit() && 0 === $limiter->getCampaignLimitRemaining()) { -+ return []; -+ } -+ - $q = $this->getSlaveConnection($limiter)->createQueryBuilder(); - - $q->select('cl.lead_id') -@@ -426,15 +430,21 @@ public function getPendingContactIds($campaignId, ContactLimiter $limiter) - ) - ->setParameter('campaignId', (int) $campaignId); - -- $results = $q->execute()->fetchAll(); -+ if ($limiter->hasCampaignLimit() && $limiter->getCampaignLimitRemaining() < $limiter->getBatchLimit()) { -+ $q->setMaxResults($limiter->getCampaignLimitRemaining()); -+ } - -- $leads = []; -+ $results = $q->execute()->fetchAll(); -+ $leads = []; - foreach ($results as $r) { - $leads[] = $r['lead_id']; - } -- - unset($results); - -+ if ($limiter->hasCampaignLimit()) { -+ $limiter->reduceCampaignLimitRemaining(count($leads)); -+ } -+ - return $leads; - } - -diff --git a/app/bundles/CampaignBundle/Entity/LeadEventLogRepository.php b/app/bundles/CampaignBundle/Entity/LeadEventLogRepository.php -index c9282494b1..a6802fb5cf 100644 ---- a/app/bundles/CampaignBundle/Entity/LeadEventLogRepository.php -+++ b/app/bundles/CampaignBundle/Entity/LeadEventLogRepository.php -@@ -386,6 +386,10 @@ public function getChartQuery($options) - */ - public function getScheduled($eventId, \DateTime $now, ContactLimiter $limiter) - { -+ if ($limiter->hasCampaignLimit() && 0 === $limiter->getCampaignLimitRemaining()) { -+ return new ArrayCollection(); -+ } -+ - $this->getSlaveConnection($limiter); - $q = $this->createQueryBuilder('o'); - -@@ -406,7 +410,17 @@ public function getScheduled($eventId, \DateTime $now, ContactLimiter $limiter) - - $this->updateOrmQueryFromContactLimiter('o', $q, $limiter); - -- return new ArrayCollection($q->getQuery()->getResult()); -+ if ($limiter->hasCampaignLimit() && $limiter->getCampaignLimitRemaining() < $limiter->getBatchLimit()) { -+ $q->setMaxResults($limiter->getCampaignLimitRemaining()); -+ } -+ -+ $result = new ArrayCollection($q->getQuery()->getResult()); -+ -+ if ($limiter->hasCampaignLimit()) { -+ $limiter->reduceCampaignLimitRemaining($result->count()); -+ } -+ -+ return $result; - } - - /** -diff --git a/app/bundles/CampaignBundle/Entity/LeadRepository.php b/app/bundles/CampaignBundle/Entity/LeadRepository.php -index a0e7409de4..82b855e861 100644 ---- a/app/bundles/CampaignBundle/Entity/LeadRepository.php -+++ b/app/bundles/CampaignBundle/Entity/LeadRepository.php -@@ -252,12 +252,20 @@ public function getInactiveContacts($campaignId, $decisionId, $parentDecisionId, - ); - } - -+ if ($limiter->hasCampaignLimit() && $limiter->getCampaignLimitRemaining() < $limiter->getBatchLimit()) { -+ $q->setMaxResults($limiter->getCampaignLimitRemaining()); -+ } -+ - $results = $q->execute()->fetchAll(); - $contacts = []; - foreach ($results as $result) { - $contacts[$result['lead_id']] = new \DateTime($result['date_added'], new \DateTimeZone('UTC')); - } - -+ if ($limiter->hasCampaignLimit()) { -+ $limiter->reduceCampaignLimitRemaining(count($contacts)); -+ } -+ - return $contacts; - } - -diff --git a/app/bundles/CampaignBundle/Executioner/ContactFinder/InactiveContactFinder.php b/app/bundles/CampaignBundle/Executioner/ContactFinder/InactiveContactFinder.php -index 4ae5e46c2c..2c8751e08e 100644 ---- a/app/bundles/CampaignBundle/Executioner/ContactFinder/InactiveContactFinder.php -+++ b/app/bundles/CampaignBundle/Executioner/ContactFinder/InactiveContactFinder.php -@@ -78,6 +78,11 @@ public function __construct( - */ - public function getContacts($campaignId, Event $decisionEvent, ContactLimiter $limiter) - { -+ if ($limiter->hasCampaignLimit() && 0 === $limiter->getCampaignLimitRemaining()) { -+ // Limit was reached but do not trigger the NoContactsFoundException -+ return new ArrayCollection(); -+ } -+ - // Get list of all campaign leads - $decisionParentEvent = $decisionEvent->getParent(); - $this->campaignMemberDatesAdded = $this->campaignLeadRepository->getInactiveContacts( -diff --git a/app/bundles/CampaignBundle/Executioner/ContactFinder/Limiter/ContactLimiter.php b/app/bundles/CampaignBundle/Executioner/ContactFinder/Limiter/ContactLimiter.php -index 1be7d5f13e..8f74acb608 100644 ---- a/app/bundles/CampaignBundle/Executioner/ContactFinder/Limiter/ContactLimiter.php -+++ b/app/bundles/CampaignBundle/Executioner/ContactFinder/Limiter/ContactLimiter.php -@@ -58,6 +58,16 @@ class ContactLimiter - */ - private $maxThreads; - -+ /** -+ * @var int|null -+ */ -+ private $campaignLimit; -+ -+ /** -+ * @var int|null -+ */ -+ private $campaignLimitUsed; -+ - /** - * ContactLimiter constructor. - * -@@ -68,6 +78,7 @@ class ContactLimiter - * @param array $contactIdList - * @param int|null $threadId - * @param int|null $maxThreads -+ * @param int|null $campaignLimit - */ - public function __construct( - $batchLimit, -@@ -76,7 +87,8 @@ public function __construct( - $maxContactId = null, - array $contactIdList = [], - $threadId = null, -- $maxThreads = null -+ $maxThreads = null, -+ $campaignLimit = null - ) { - $this->batchLimit = ($batchLimit) ? (int) $batchLimit : 100; - $this->contactId = ($contactId) ? (int) $contactId : null; -@@ -92,6 +104,11 @@ public function __construct( - throw new \InvalidArgumentException('$threadId cannot be larger than $maxThreads'); - } - } -+ -+ if ($campaignLimit) { -+ $this->campaignLimit = $campaignLimit; -+ $this->campaignLimitUsed = 0; -+ } - } - - /** -@@ -188,4 +205,63 @@ public function getThreadId() - { - return $this->threadId; - } -+ -+ /** -+ * @return int|null -+ */ -+ public function getCampaignLimit() -+ { -+ return $this->campaignLimit; -+ } -+ -+ /** -+ * @return bool -+ */ -+ public function hasCampaignLimit() -+ { -+ return $this->campaignLimit !== null; -+ } -+ -+ /** -+ * @return int -+ * -+ * @throws \Exception -+ */ -+ public function getCampaignLimitRemaining() -+ { -+ if (!$this->hasCampaignLimit()) { -+ throw new \Exception('Campaign Limit was not set'); -+ } -+ -+ return $this->campaignLimit - $this->campaignLimitUsed; -+ } -+ -+ /** -+ * @param $reduction -+ * -+ * @return $this -+ * -+ * @throws \Exception -+ */ -+ public function reduceCampaignLimitRemaining($reduction) -+ { -+ if (!$this->hasCampaignLimit()) { -+ throw new \Exception('Campaign Limit was not set'); -+ } elseif ($this->campaignLimit < ($this->campaignLimitUsed + $reduction)) { -+ throw new \Exception('Campaign Limit exceeded'); -+ } -+ $this->campaignLimitUsed += $reduction; -+ -+ return $this; -+ } -+ -+ /** -+ * @return $this -+ */ -+ public function resetCampaignLimitRemaining() -+ { -+ $this->campaignLimitUsed = 0; -+ -+ return $this; -+ } - } diff --git a/scripts/patches/6787.diff b/scripts/patches/6787.diff index f4fd668..3ed2d2f 100644 --- a/scripts/patches/6787.diff +++ b/scripts/patches/6787.diff @@ -1,5 +1,5 @@ diff --git a/app/bundles/CampaignBundle/Entity/LeadEventLog.php b/app/bundles/CampaignBundle/Entity/LeadEventLog.php -index 9d0a59286e..905e72cd39 100644 +index 9d0a59286e..c259392925 100644 --- a/app/bundles/CampaignBundle/Entity/LeadEventLog.php +++ b/app/bundles/CampaignBundle/Entity/LeadEventLog.php @@ -113,6 +113,7 @@ public static function loadMetadata(ORM\ClassMetadata $metadata) @@ -11,10 +11,10 @@ index 9d0a59286e..905e72cd39 100644 ->addIndex(['lead_id', 'campaign_id', 'rotation'], 'campaign_leads') ->addIndex(['channel', 'channel_id', 'lead_id'], 'campaign_log_channel') diff --git a/app/bundles/CampaignBundle/Entity/LeadEventLogRepository.php b/app/bundles/CampaignBundle/Entity/LeadEventLogRepository.php -index c9282494b1..9848788425 100644 +index c9282494b1..846aeab864 100644 --- a/app/bundles/CampaignBundle/Entity/LeadEventLogRepository.php +++ b/app/bundles/CampaignBundle/Entity/LeadEventLogRepository.php -@@ -602,4 +602,78 @@ public function removeScheduledEvents($campaignId, $leadId) +@@ -602,4 +602,77 @@ public function removeScheduledEvents($campaignId, $leadId) 'is_scheduled' => 1, ]); } @@ -32,7 +32,6 @@ index c9282494b1..9848788425 100644 + + $q = $this->getEntityManager()->getConnection()->createQueryBuilder(); + $expr = $q->expr()->andX( -+ // requires PR 6247 (https://github.com/mautic/mautic/pull/6247) where e.is_published is created + $q->expr()->eq('e.is_published', 1), + $q->expr()->eq('c.is_published', 1), + $q->expr()->eq('e.campaign_id', ':campaignId') @@ -61,11 +60,11 @@ index c9282494b1..9848788425 100644 + if (!$eventIds) { + return []; + } ++ + $now = clone $date; + $now->setTimezone(new \DateTimeZone('UTC')); -+ -+ $q = $this->getEntityManager()->getConnection()->createQueryBuilder(); -+ ++ ++ $q = $this->getSlaveConnection($limiter)->createQueryBuilder(); + $expr = $q->expr()->andX( + $q->expr()->in('l.event_id', ':ids'), + $q->expr()->lte('l.trigger_date', ':now'), @@ -99,7 +98,7 @@ index 67017ed444..15155c6e4f 100644 +++ b/app/bundles/CampaignBundle/Executioner/ScheduledExecutioner.php @@ -144,7 +144,6 @@ public function execute(Campaign $campaign, ContactLimiter $limiter, OutputInter $this->counter = new Counter(); - + $this->logger->debug('CAMPAIGN: Triggering scheduled events'); - try { @@ -110,7 +109,7 @@ index 67017ed444..15155c6e4f 100644 $this->progressBar = null; $this->now = new \Datetime(); + $withCounts = $this->output instanceof NullOutput ? false : true; - + - // Get counts by event - $scheduledEvents = $this->repo->getScheduledCounts($this->campaign->getId(), $this->now, $this->limiter); - $totalScheduledCount = $scheduledEvents ? array_sum($scheduledEvents) : 0; @@ -129,7 +128,7 @@ index 67017ed444..15155c6e4f 100644 + // replaces call to getScheduledCounts + $eventIds = $this->repo->getPublishedEventIds($this->campaign->getId()); + $scheduledEvents = $this->repo->getScheduledEvents($eventIds, $this->now, $this->limiter); - + + $totalScheduledCount = $scheduledEvents ? array_sum($scheduledEvents) : 0; + $this->scheduledEvents = $scheduledEvents ? array_keys($scheduledEvents) : []; if (!$totalScheduledCount) { @@ -149,17 +148,17 @@ index 67017ed444..15155c6e4f 100644 + ) + ); + } - + - $this->progressBar = ProgressBarHelper::init($this->output, $totalScheduledCount); - $this->progressBar->start(); + $this->progressBar = ProgressBarHelper::init($this->output, $totalScheduledCount); + $this->progressBar->start(); + } } - + /** @@ -286,7 +290,6 @@ private function executeOrRecheduleEvent() - + foreach ($this->scheduledEvents as $eventId) { $this->counter->advanceEventCount(); - @@ -177,12 +176,12 @@ index c69d2543ea..7be253301d 100644 - ->method('getScheduledCounts') + ->method('getScheduledEvents') ->willReturn(['nada' => 0]); - + $this->repository->expects($this->never()) @@ -94,10 +94,17 @@ public function testNoEventsResultInEmptyResults() $this->assertEquals(0, $counter->getTotalEvaluated()); } - + + /** + * @throws \Doctrine\ORM\Query\QueryException + * @throws \Mautic\CampaignBundle\Executioner\Dispatcher\Exception\LogNotProcessedException @@ -196,15 +195,15 @@ index c69d2543ea..7be253301d 100644 - ->method('getScheduledCounts') + ->method('getScheduledEvents') ->willReturn([1 => 2, 2 => 2]); - + $campaign = $this->getMockBuilder(Campaign::class) @@ -152,7 +159,6 @@ public function testEventsAreExecuted() ->willReturn(new \DateTime()); - + $limiter = new ContactLimiter(0, 0, 0, 0); - $counter = $this->getExecutioner()->execute($campaign, $limiter, new BufferedOutput()); - + $this->assertEquals(4, $counter->getTotalEvaluated()); @@ -161,7 +167,7 @@ public function testEventsAreExecuted() public function testEventsAreExecutedInQuietMode() @@ -213,7 +212,7 @@ index c69d2543ea..7be253301d 100644 - ->method('getScheduledCounts') + ->method('getScheduledEvents') ->willReturn([1 => 2, 2 => 2]); - + $campaign = $this->getMockBuilder(Campaign::class) @@ -283,7 +289,7 @@ public function testSpecificEventsAreExecuted() public function testEventsAreScheduled() @@ -222,5 +221,5 @@ index c69d2543ea..7be253301d 100644 - ->method('getScheduledCounts') + ->method('getScheduledEvents') ->willReturn([1 => 2]); - + $campaign = $this->getMockBuilder(Campaign::class) diff --git a/scripts/patches/6792.diff b/scripts/patches/6792.diff index 5fb333c..799360c 100644 --- a/scripts/patches/6792.diff +++ b/scripts/patches/6792.diff @@ -1,5 +1,5 @@ diff --git a/app/bundles/CampaignBundle/Assets/js/campaign.js b/app/bundles/CampaignBundle/Assets/js/campaign.js -index 971c60a561..766b934b8a 100644 +index b3778bccea..1c10b87da9 100644 --- a/app/bundles/CampaignBundle/Assets/js/campaign.js +++ b/app/bundles/CampaignBundle/Assets/js/campaign.js @@ -3,6 +3,7 @@ @@ -57,7 +57,7 @@ index 971c60a561..766b934b8a 100644 * @returns {boolean} */ Mautic.campaignBuilderValidateConnection = function (epDetails, targetType, targetEvent) { -@@ -1955,6 +1961,48 @@ Mautic.cancelScheduledCampaignEvent = function(eventId, contactId) { +@@ -1955,6 +1961,47 @@ Mautic.cancelScheduledCampaignEvent = function(eventId, contactId) { ); }; @@ -101,12 +101,11 @@ index 971c60a561..766b934b8a 100644 + Mautic.removeLabelLoadingIndicator(); + }); +}; -+ + /** * Update the "Jump to Event" select list to be available events. */ -@@ -2002,6 +2050,3 @@ Mautic.highlightJumpTarget = function(event, el) { +@@ -2002,6 +2049,3 @@ Mautic.highlightJumpTarget = function(event, el) { jumpTarget.css("z-index", 2010); } }; @@ -114,10 +113,10 @@ index 971c60a561..766b934b8a 100644 - - diff --git a/app/bundles/CampaignBundle/Config/config.php b/app/bundles/CampaignBundle/Config/config.php -index 8aaa9994e1..8c3961ea09 100644 +index b8edbfb440..0ff089232f 100644 --- a/app/bundles/CampaignBundle/Config/config.php +++ b/app/bundles/CampaignBundle/Config/config.php -@@ -228,6 +228,25 @@ +@@ -233,6 +233,25 @@ 'arguments' => 'translator', 'alias' => 'campaignconfig', ], @@ -143,7 +142,7 @@ index 8aaa9994e1..8c3961ea09 100644 ], 'models' => [ 'mautic.campaign.model.campaign' => [ -@@ -270,6 +289,9 @@ +@@ -275,6 +294,9 @@ 'mautic.campaign.model.summary' => [ 'class' => 'Mautic\CampaignBundle\Model\SummaryModel', ], @@ -244,7 +243,7 @@ index 3cf49a0472..aaae9da0ac 100644 + } } diff --git a/app/bundles/CampaignBundle/Controller/Api/CampaignApiController.php b/app/bundles/CampaignBundle/Controller/Api/CampaignApiController.php -index d828a91961..c54f66af76 100644 +index 287cae5a2c..c917c19f07 100644 --- a/app/bundles/CampaignBundle/Controller/Api/CampaignApiController.php +++ b/app/bundles/CampaignBundle/Controller/Api/CampaignApiController.php @@ -31,7 +31,7 @@ public function initialize(FilterControllerEvent $event) @@ -256,10 +255,11 @@ index d828a91961..c54f66af76 100644 parent::initialize($event); } -@@ -187,6 +187,10 @@ protected function preSaveEntity(&$entity, $form, $parameters, $action = 'edit') +@@ -187,6 +187,11 @@ protected function preSaveEntity(&$entity, $form, $parameters, $action = 'edit') $this->model->setEvents($entity, $parameters['events'], $parameters['canvasSettings'], $deletedEvents); } ++ // Update tags for this campaign + if (isset($this->entityRequestParameters['tags'])) { + $this->model->modifyTags($entity, $this->entityRequestParameters['tags'], null, false); + } @@ -267,11 +267,10 @@ index d828a91961..c54f66af76 100644 // Persist to the database before building connection so that IDs are available $this->model->saveEntity($entity); -@@ -305,4 +309,23 @@ public function getContactsAction($id) - - return $this->handleView($view); +@@ -200,6 +205,25 @@ protected function preSaveEntity(&$entity, $form, $parameters, $action = 'edit') + } } -+ + + /** + * {@inheritdoc} + */ @@ -290,12 +289,15 @@ index d828a91961..c54f66af76 100644 + + return $parameters; + } - } ++ + /** + * Change the array structure. + * diff --git a/app/bundles/CampaignBundle/Controller/CampaignController.php b/app/bundles/CampaignBundle/Controller/CampaignController.php -index 0c9fc82a63..6a4980e7c0 100644 +index f3e2ddd730..5839496b46 100644 --- a/app/bundles/CampaignBundle/Controller/CampaignController.php +++ b/app/bundles/CampaignBundle/Controller/CampaignController.php -@@ -566,6 +566,25 @@ protected function getPostActionRedirectArguments(array $args, $action) +@@ -568,6 +568,25 @@ protected function getPostActionRedirectArguments(array $args, $action) return $args; } @@ -310,18 +312,18 @@ index 0c9fc82a63..6a4980e7c0 100644 + { + $session = $this->get('session'); + -+ $modifiedEvents = $session->get('mautic.campaign.'.$id.'.tags.modified', []); -+ $deletedEvents = $session->get('mautic.campaign.'.$id.'.tags.deleted', []); ++ $modifiedTags = $session->get('mautic.campaign.'.$id.'.tags.modified', []); ++ $deletedTags = $session->get('mautic.campaign.'.$id.'.tags.deleted', []); + -+ $events = array_diff_key($modifiedEvents, array_flip($deletedEvents)); ++ $tags = array_diff_key($modifiedTags, array_flip($deletedTags)); + -+ return [$modifiedEvents, $deletedEvents, $events]; ++ return [$modifiedTags, $deletedTags, $tags]; + } + /** * Get events from session. * -@@ -706,6 +725,7 @@ protected function getViewArguments(array $args, $action) +@@ -708,6 +727,7 @@ protected function getViewArguments(array $args, $action) 'stats' => $stats, 'events' => $sortedEvents, 'eventSettings' => $this->getCampaignModel()->getEvents(), @@ -330,7 +332,7 @@ index 0c9fc82a63..6a4980e7c0 100644 'dateRangeForm' => $dateRangeForm->createView(), 'campaignSources' => $this->campaignSources, diff --git a/app/bundles/CampaignBundle/Entity/Campaign.php b/app/bundles/CampaignBundle/Entity/Campaign.php -index cbf3067e32..7977cf990f 100644 +index cbf3067e32..6c1dfa3a16 100644 --- a/app/bundles/CampaignBundle/Entity/Campaign.php +++ b/app/bundles/CampaignBundle/Entity/Campaign.php @@ -20,6 +20,7 @@ @@ -410,7 +412,7 @@ index cbf3067e32..7977cf990f 100644 if ($currentId != $newId) { $this->changes[$prop] = [$currentId, $newId]; } -+ } elseif ($prop == 'tags') { ++ } elseif ('tags' === $prop) { + if ($val instanceof Tag) { + $this->changes['tags']['added'][] = $val->getTag(); + } else { @@ -711,52 +713,6 @@ index 5f99020e1c..5c38382eec 100644
-diff --git a/app/bundles/CoreBundle/Assets/css/app.css b/app/bundles/CoreBundle/Assets/css/app.css -index 21f6039398..fe66b73e6a 100644 ---- a/app/bundles/CoreBundle/Assets/css/app.css -+++ b/app/bundles/CoreBundle/Assets/css/app.css -@@ -4314,9 +4314,6 @@ lesshat-selector { -lh-property: 0 ; - width: 70%; - height: 100%; - } --.builder-panel #preview .panel-body { -- padding: 7px 0; --} - .code-mode .builder-panel { - width: 50%; - position: fixed; -diff --git a/app/bundles/CoreBundle/Assets/css/libraries/builder.css b/app/bundles/CoreBundle/Assets/css/libraries/builder.css -index a98dea7800..d429bee833 100644 ---- a/app/bundles/CoreBundle/Assets/css/libraries/builder.css -+++ b/app/bundles/CoreBundle/Assets/css/libraries/builder.css -@@ -5489,19 +5489,18 @@ div[data-slot].ui-sortable-helper { - font: normal normal normal 14px/1 FontAwesome; - } - .codemodeHtmlContainer { -- background:#eee; -- padding:1em 0 0 0; -- display:block; -- position:relative; -- margin-bottom:2px; -+ background: #eee; -+ padding: 1em 0 0 0; -+ display: block; -+ position: relative; -+ margin-bottom: 2px; - } - .codemodeHtmlContainer:before { - content: "\f121"; - font: normal normal normal 14px/1 FontAwesome; -- position:absolute; -+ position: absolute; - right: 2px; - top: 2px; -- color:gray; -- font-size:small; -+ color: gray; -+ font-size: small; - } -- diff --git a/app/bundles/LeadBundle/Entity/TagRepository.php b/app/bundles/LeadBundle/Entity/TagRepository.php index 3a84ae7b53..cd80f4b8c2 100644 --- a/app/bundles/LeadBundle/Entity/TagRepository.php @@ -841,103 +797,3 @@ index 3a84ae7b53..cd80f4b8c2 100644 /** * @param string $name * -diff --git a/media/css/libraries.css b/media/css/libraries.css -index b81521dbc0..59857fd1e8 100644 ---- a/media/css/libraries.css -+++ b/media/css/libraries.css -@@ -276,7 +276,8 @@ solid #4e5e9e}.slot-placeholder{border:2px - dotted #4e5e9e}[data-slot="text"].fr-box{padding:initial}[data-slot="text"].fr-box .fr-toolbar{border-top:2px solid #4e5e9e;position:absolute;left:-15px;bottom:initial !important;min-width:385px}[data-slot="text"].fr-box .fr-toolbar.fr-top{top:-78px !important;bottom:initial !important}[data-slot="text"].fr-box .fr-toolbar.fr-bottom{bottom:-78px !important;top:initial !important}[data-slot="text"].fr-box .fr-wrapper{border-radius:0 0 0px 0px;-moz-border-radius:0 0 0px 0px;-webkit-border-radius:0 0 0px 0px;-webkit-box-shadow:none !important;-moz-box-shadow:none !important;box-shadow:none !important;background:transparent !important}[data-slot="text"].fr-box .fr-wrapper .fr-element{text-align:inherit !important;padding:0 - !important;overflow-x:initial !important;color:inherit !important;min-height:inherit !important}.slot-type-handle.btn,.section-type-handle.btn{float:left;width:111px;margin:2px;height:75px;padding-left:5px;padding-right:5px;text-align:center;word-wrap:break-word}.slot-type-handle.ui-draggable-dragging,.section-type-handle.ui-draggable-dragging{color:#5d6c7c;background-color:#f5f5f5;border-color:#d3d3d3;padding:10px - 16px;font-size:16px;line-height:1.25;border-radius:4px;margin:2px;text-align:center}.theme-list .panel-body{height:350px}.theme-list .select-theme-link{margin-top:5px}.theme-list .select-theme-selected{margin-top:5px}[data-slot="dynamicContent"]{z-index:50}.chosen-container .chosen-results --li{font-family:"Open Sans",Helvetica,Arial,sans-serif}.chosen-container .chosen-results li:before{font:normal normal normal 14px/1 FontAwesome} -+li{font-family:"Open Sans",Helvetica,Arial,sans-serif}.chosen-container .chosen-results li:before{font:normal normal normal 14px/1 FontAwesome}.codemodeHtmlContainer{background:#eee;padding:1em -+0 0 0;display:block;position:relative;margin-bottom:2px}.codemodeHtmlContainer:before{content:"\f121";font:normal normal normal 14px/1 FontAwesome;position:absolute;right:2px;top:2px;color:gray;font-size:small} - /*! normalize.css v3.0.1 | MIT License | git.io/normalize */ - html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em - 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button, -diff --git a/media/js/app.js b/media/js/app.js -index 8f12fd902e..6bb31f56e2 100644 ---- a/media/js/app.js -+++ b/media/js/app.js -@@ -68,8 +68,8 @@ Mautic.startIconSpinOnEvent(event);mQuery('#'+id).click();};mQuery("