diff --git a/composer.json b/composer.json index 0d15e708d..a058fcc36 100644 --- a/composer.json +++ b/composer.json @@ -6,7 +6,7 @@ "license": "MIT", "require": { "php": ">=5.6", - "cakephp/cakephp": "3.6.*", + "cakephp/cakephp": "3.9.*", "cakephp/migrations": "@stable", "cakephp/plugin-installer": "^1.0", "josegonzalez/dotenv": "3.*", @@ -15,7 +15,7 @@ "require-dev": { "cakephp/bake": "^1.1", "cakephp/cakephp-codesniffer": "^3.0", - "cakephp/debug_kit": "^3.15.0", + "cakephp/debug_kit": "^3.22", "phpunit/phpunit": "^5.7|^6.0", "psy/psysh": "@stable" }, @@ -37,7 +37,6 @@ "scripts": { "post-install-cmd": "App\\Console\\Installer::postInstall", "post-create-project-cmd": "App\\Console\\Installer::postInstall", - "post-autoload-dump": "Cake\\Composer\\Installer\\PluginInstaller::postAutoloadDump", "check": [ "@test", "@cs-check" @@ -50,7 +49,7 @@ "config": { "sort-packages": true, "platform": { - "php": "7.0.10" + "php": "7.2" } } } diff --git a/composer.lock b/composer.lock index bdcfdec78..61a85b6db 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "ac911cb6687b65bfe5e5b520621ab0d6", + "content-hash": "fa096d8dff16446dc0d5335918047557", "packages": [ { "name": "aura/intl", @@ -54,16 +54,16 @@ }, { "name": "cakephp/cakephp", - "version": "3.6.15", + "version": "3.9.3", "source": { "type": "git", "url": "https://github.com/cakephp/cakephp.git", - "reference": "69f10c11e18c9f41ea2554742b997702b08e4ed0" + "reference": "74f60e2e1f15c8fd27653db2ee835d426b59ee83" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cakephp/cakephp/zipball/69f10c11e18c9f41ea2554742b997702b08e4ed0", - "reference": "69f10c11e18c9f41ea2554742b997702b08e4ed0", + "url": "https://api.github.com/repos/cakephp/cakephp/zipball/74f60e2e1f15c8fd27653db2ee835d426b59ee83", + "reference": "74f60e2e1f15c8fd27653db2ee835d426b59ee83", "shasum": "" }, "require": { @@ -71,9 +71,11 @@ "cakephp/chronos": "^1.0.1", "ext-intl": "*", "ext-mbstring": "*", + "laminas/laminas-diactoros": "^1.4.0", + "paragonie/random_compat": "^1.4|^2.0|9.99.99", "php": ">=5.6.0", "psr/log": "^1.0.0", - "zendframework/zend-diactoros": "^1.4.0" + "psr/simple-cache": "^1.0.0" }, "conflict": { "phpunit/phpunit": "<5.7" @@ -95,11 +97,15 @@ }, "require-dev": { "cakephp/cakephp-codesniffer": "^3.0", + "cakephp/chronos": "^1.2.1", + "paragonie/csp-builder": "^1.4|^2.3", "phpunit/phpunit": "^5.7.14|^6.0" }, "suggest": { + "ext-curl": "To enable more efficient network calls in Http\\Client.", "ext-openssl": "To use Security::encrypt() or have secure CSRF token generation.", - "lib-ICU": "The intl PHP library, to use Text::transliterate() or Text::slug()" + "lib-ICU": "The intl PHP library, to use Text::transliterate() or Text::slug()", + "paragonie/csp-builder": "CSP builder, to use the CSP Middleware" }, "type": "library", "autoload": { @@ -136,30 +142,29 @@ "rapid-development", "validation" ], - "time": "2019-04-24T01:52:39+00:00" + "time": "2020-10-06T01:21:56+00:00" }, { "name": "cakephp/chronos", - "version": "1.2.5", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/cakephp/chronos.git", - "reference": "8a2b005a2db173e1b5493002afb8e1e13c71a62a" + "reference": "ba2bab98849e7bf29b02dd634ada49ab36472959" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cakephp/chronos/zipball/8a2b005a2db173e1b5493002afb8e1e13c71a62a", - "reference": "8a2b005a2db173e1b5493002afb8e1e13c71a62a", + "url": "https://api.github.com/repos/cakephp/chronos/zipball/ba2bab98849e7bf29b02dd634ada49ab36472959", + "reference": "ba2bab98849e7bf29b02dd634ada49ab36472959", "shasum": "" }, "require": { - "php": "^5.5.9|^7" + "php": ">=5.6" }, "require-dev": { "athletic/athletic": "~0.1", "cakephp/cakephp-codesniffer": "^3.0", "phpbench/phpbench": "@dev", - "phpstan/phpstan": "^0.6.4", "phpunit/phpunit": "<6.0 || ^7.0" }, "type": "library", @@ -193,27 +198,27 @@ "datetime", "time" ], - "time": "2019-04-23T19:00:57+00:00" + "time": "2019-11-30T02:33:19+00:00" }, { "name": "cakephp/migrations", - "version": "2.1.1", + "version": "2.4.2", "source": { "type": "git", "url": "https://github.com/cakephp/migrations.git", - "reference": "96e3cc00ede11f28bb8bcefcab95f07c487177cf" + "reference": "7fa4f1f8a4cd90df59cd8e3a46958c822abe457e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cakephp/migrations/zipball/96e3cc00ede11f28bb8bcefcab95f07c487177cf", - "reference": "96e3cc00ede11f28bb8bcefcab95f07c487177cf", + "url": "https://api.github.com/repos/cakephp/migrations/zipball/7fa4f1f8a4cd90df59cd8e3a46958c822abe457e", + "reference": "7fa4f1f8a4cd90df59cd8e3a46958c822abe457e", "shasum": "" }, "require": { "cakephp/cache": "^3.6.0", "cakephp/orm": "^3.6.0", "php": ">=5.6.0", - "robmorgan/phinx": "~0.10.3" + "robmorgan/phinx": "^0.10.3|^0.11.1" }, "require-dev": { "cakephp/bake": "^1.7.0", @@ -222,12 +227,12 @@ "phpunit/phpunit": "^5.7.14|^6.0" }, "suggest": { - "cakephp/bake": "Required if you want to generate migrations." + "cakephp/bake": "If you want to generate migrations." }, "type": "cakephp-plugin", "autoload": { "psr-4": { - "Migrations\\": "src" + "Migrations\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -240,40 +245,44 @@ "homepage": "https://github.com/cakephp/migrations/graphs/contributors" } ], - "description": "Database Migration plugin for CakePHP 3.0 based on Phinx", + "description": "Database Migration plugin for CakePHP based on Phinx", "homepage": "https://github.com/cakephp/migrations", "keywords": [ "cakephp", "migrations" ], - "time": "2019-02-07T15:20:33+00:00" + "time": "2020-02-05T15:00:43+00:00" }, { "name": "cakephp/plugin-installer", - "version": "1.1.0", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/cakephp/plugin-installer.git", - "reference": "41373d0678490502f45adc7be88aa22d24ac1843" + "reference": "549548a7aa308ecee4059c2d10a7d8d5d1002602" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cakephp/plugin-installer/zipball/41373d0678490502f45adc7be88aa22d24ac1843", - "reference": "41373d0678490502f45adc7be88aa22d24ac1843", + "url": "https://api.github.com/repos/cakephp/plugin-installer/zipball/549548a7aa308ecee4059c2d10a7d8d5d1002602", + "reference": "549548a7aa308ecee4059c2d10a7d8d5d1002602", "shasum": "" }, + "require": { + "composer-plugin-api": "^1.0 || ^2.0", + "php": ">=7.2.0" + }, "require-dev": { - "cakephp/cakephp-codesniffer": "dev-master", - "composer/composer": "1.0.*@dev", - "phpunit/phpunit": "^4.8|^5.7|^6.0" + "cakephp/cakephp-codesniffer": "^4.1", + "composer/composer": "^2.0@RC", + "phpunit/phpunit": "^8.5 || ^9.3" }, - "type": "composer-installer", + "type": "composer-plugin", "extra": { - "class": "Cake\\Composer\\Installer\\PluginInstaller" + "class": "Cake\\Composer\\Plugin" }, "autoload": { "psr-4": { - "Cake\\Composer\\": "src" + "Cake\\Composer\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -283,11 +292,11 @@ "authors": [ { "name": "CakePHP Community", - "homepage": "http://cakephp.org" + "homepage": "https://cakephp.org" } ], "description": "A composer installer for CakePHP 3.0+ plugins.", - "time": "2017-12-24T21:09:29+00:00" + "time": "2020-10-24T07:29:47+00:00" }, { "name": "josegonzalez/dotenv", @@ -342,18 +351,147 @@ ], "time": "2017-09-19T15:49:58+00:00" }, + { + "name": "laminas/laminas-diactoros", + "version": "1.8.7p2", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-diactoros.git", + "reference": "6991c1af7c8d2c8efee81b22ba97024781824aaa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/6991c1af7c8d2c8efee81b22ba97024781824aaa", + "reference": "6991c1af7c8d2c8efee81b22ba97024781824aaa", + "shasum": "" + }, + "require": { + "laminas/laminas-zendframework-bridge": "^1.0", + "php": "^5.6 || ^7.0", + "psr/http-message": "^1.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "replace": { + "zendframework/zend-diactoros": "~1.8.7.0" + }, + "require-dev": { + "ext-dom": "*", + "ext-libxml": "*", + "laminas/laminas-coding-standard": "~1.0", + "php-http/psr7-integration-tests": "dev-master", + "phpunit/phpunit": "^5.7.16 || ^6.0.8 || ^7.2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-release-1.8": "1.8.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions/create_uploaded_file.php", + "src/functions/marshal_headers_from_sapi.php", + "src/functions/marshal_method_from_sapi.php", + "src/functions/marshal_protocol_version_from_sapi.php", + "src/functions/marshal_uri_from_sapi.php", + "src/functions/normalize_server.php", + "src/functions/normalize_uploaded_files.php", + "src/functions/parse_cookie_header.php", + "src/functions/create_uploaded_file.legacy.php", + "src/functions/marshal_headers_from_sapi.legacy.php", + "src/functions/marshal_method_from_sapi.legacy.php", + "src/functions/marshal_protocol_version_from_sapi.legacy.php", + "src/functions/marshal_uri_from_sapi.legacy.php", + "src/functions/normalize_server.legacy.php", + "src/functions/normalize_uploaded_files.legacy.php", + "src/functions/parse_cookie_header.legacy.php" + ], + "psr-4": { + "Laminas\\Diactoros\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "PSR HTTP Message implementations", + "homepage": "https://laminas.dev", + "keywords": [ + "http", + "laminas", + "psr", + "psr-7" + ], + "time": "2020-03-23T15:28:28+00:00" + }, + { + "name": "laminas/laminas-zendframework-bridge", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-zendframework-bridge.git", + "reference": "6ede70583e101030bcace4dcddd648f760ddf642" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/6ede70583e101030bcace4dcddd648f760ddf642", + "reference": "6ede70583e101030bcace4dcddd648f760ddf642", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.1 || ^9.3", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "laminas": { + "module": "Laminas\\ZendFrameworkBridge" + } + }, + "autoload": { + "files": [ + "src/autoload.php" + ], + "psr-4": { + "Laminas\\ZendFrameworkBridge\\": "src//" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Alias legacy ZF class names to Laminas Project equivalents.", + "keywords": [ + "ZendFramework", + "autoloading", + "laminas", + "zf" + ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2020-09-14T14:23:00+00:00" + }, { "name": "m1/env", - "version": "2.1.2", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/m1/Env.git", - "reference": "294addeedf15e1149eeb96ec829f2029d2017d39" + "reference": "5c296e3e13450a207e12b343f3af1d7ab569f6f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/m1/Env/zipball/294addeedf15e1149eeb96ec829f2029d2017d39", - "reference": "294addeedf15e1149eeb96ec829f2029d2017d39", + "url": "https://api.github.com/repos/m1/Env/zipball/5c296e3e13450a207e12b343f3af1d7ab569f6f3", + "reference": "5c296e3e13450a207e12b343f3af1d7ab569f6f3", "shasum": "" }, "require": { @@ -398,20 +536,20 @@ "parser", "support" ], - "time": "2018-06-19T18:55:08+00:00" + "time": "2020-02-19T09:02:13+00:00" }, { "name": "mobiledetect/mobiledetectlib", - "version": "2.8.33", + "version": "2.8.34", "source": { "type": "git", "url": "https://github.com/serbanghita/Mobile-Detect.git", - "reference": "cd385290f9a0d609d2eddd165a1e44ec1bf12102" + "reference": "6f8113f57a508494ca36acbcfa2dc2d923c7ed5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/serbanghita/Mobile-Detect/zipball/cd385290f9a0d609d2eddd165a1e44ec1bf12102", - "reference": "cd385290f9a0d609d2eddd165a1e44ec1bf12102", + "url": "https://api.github.com/repos/serbanghita/Mobile-Detect/zipball/6f8113f57a508494ca36acbcfa2dc2d923c7ed5b", + "reference": "6f8113f57a508494ca36acbcfa2dc2d923c7ed5b", "shasum": "" }, "require": { @@ -450,7 +588,101 @@ "mobile detector", "php mobile detect" ], - "time": "2018-09-01T15:05:15+00:00" + "time": "2019-09-18T18:44:20+00:00" + }, + { + "name": "paragonie/random_compat", + "version": "v9.99.99", + "source": { + "type": "git", + "url": "https://github.com/paragonie/random_compat.git", + "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", + "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", + "shasum": "" + }, + "require": { + "php": "^7" + }, + "require-dev": { + "phpunit/phpunit": "4.*|5.*", + "vimeo/psalm": "^1" + }, + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "polyfill", + "pseudorandom", + "random" + ], + "time": "2018-07-02T15:55:56+00:00" + }, + { + "name": "psr/container", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2017-02-14T16:28:37+00:00" }, { "name": "psr/http-message", @@ -504,16 +736,16 @@ }, { "name": "psr/log", - "version": "1.1.0", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd" + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", - "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", + "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", "shasum": "" }, "require": { @@ -522,7 +754,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.1.x-dev" } }, "autoload": { @@ -547,35 +779,88 @@ "psr", "psr-3" ], - "time": "2018-11-20T15:27:04+00:00" + "time": "2020-03-23T09:12:05+00:00" + }, + { + "name": "psr/simple-cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "time": "2017-10-23T01:57:42+00:00" }, { "name": "robmorgan/phinx", - "version": "0.10.7", + "version": "0.11.7", "source": { "type": "git", "url": "https://github.com/cakephp/phinx.git", - "reference": "ba2dae98bb69d39531311e8fd72dd51e8e06ff32" + "reference": "3cdde73e0c33c410e076108b3e1603fabb5b330d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cakephp/phinx/zipball/ba2dae98bb69d39531311e8fd72dd51e8e06ff32", - "reference": "ba2dae98bb69d39531311e8fd72dd51e8e06ff32", + "url": "https://api.github.com/repos/cakephp/phinx/zipball/3cdde73e0c33c410e076108b3e1603fabb5b330d", + "reference": "3cdde73e0c33c410e076108b3e1603fabb5b330d", "shasum": "" }, "require": { - "cakephp/collection": "^3.6", - "cakephp/database": "^3.6", + "cakephp/collection": "^3.7", + "cakephp/database": "^3.7", "php": ">=5.6", - "symfony/config": "^2.8|^3.0|^4.0", - "symfony/console": "^2.8|^3.0|^4.0", - "symfony/yaml": "^2.8|^3.0|^4.0" + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/console": "^3.4|^4.0|^5.0", + "symfony/yaml": "^3.4|^4.0|^5.0" }, "require-dev": { "cakephp/cakephp-codesniffer": "^3.0", - "phpunit/phpunit": ">=5.7,<7.0", + "ext-json": "*", + "phpunit/phpunit": ">=5.7,<8.0", "sebastian/comparator": ">=1.2.3" }, + "suggest": { + "ext-json": "Install if using JSON configuration format", + "symfony/yaml": "Install if using YAML configuration format" + }, "bin": [ "bin/phinx" ], @@ -590,18 +875,18 @@ "MIT" ], "authors": [ - { - "name": "Woody Gilk", - "email": "woody.gilk@gmail.com", - "homepage": "http://shadowhand.me", - "role": "Developer" - }, { "name": "Rob Morgan", "email": "robbym@gmail.com", "homepage": "https://robmorgan.id.au", "role": "Lead Developer" }, + { + "name": "Woody Gilk", + "email": "woody.gilk@gmail.com", + "homepage": "https://shadowhand.me", + "role": "Developer" + }, { "name": "Richard Quadling", "email": "rquadling@gmail.com", @@ -609,7 +894,8 @@ }, { "name": "CakePHP Community", - "homepage": "https://github.com/cakephp/phinx/graphs/contributors" + "homepage": "https://github.com/cakephp/phinx/graphs/contributors", + "role": "Developer" } ], "description": "Phinx makes it ridiculously easy to manage the database migrations for your PHP app.", @@ -621,36 +907,36 @@ "migrations", "phinx" ], - "time": "2019-04-25T09:12:16+00:00" + "time": "2020-05-09T13:59:05+00:00" }, { "name": "symfony/config", - "version": "v3.4.26", + "version": "v4.4.15", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "177a276c01575253c95cefe0866e3d1b57637fe0" + "reference": "7c5a1002178a612787c291a4f515f87b19176b61" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/177a276c01575253c95cefe0866e3d1b57637fe0", - "reference": "177a276c01575253c95cefe0866e3d1b57637fe0", + "url": "https://api.github.com/repos/symfony/config/zipball/7c5a1002178a612787c291a4f515f87b19176b61", + "reference": "7c5a1002178a612787c291a4f515f87b19176b61", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/filesystem": "~2.8|~3.0|~4.0", + "php": ">=7.1.3", + "symfony/filesystem": "^3.4|^4.0|^5.0", "symfony/polyfill-ctype": "~1.8" }, "conflict": { - "symfony/dependency-injection": "<3.3", - "symfony/finder": "<3.3" + "symfony/finder": "<3.4" }, "require-dev": { - "symfony/dependency-injection": "~3.3|~4.0", - "symfony/event-dispatcher": "~3.3|~4.0", - "symfony/finder": "~3.3|~4.0", - "symfony/yaml": "~3.0|~4.0" + "symfony/event-dispatcher": "^3.4|^4.0|^5.0", + "symfony/finder": "^3.4|^4.0|^5.0", + "symfony/messenger": "^4.1|^5.0", + "symfony/service-contracts": "^1.1|^2", + "symfony/yaml": "^3.4|^4.0|^5.0" }, "suggest": { "symfony/yaml": "To use the yaml reference dumper" @@ -658,7 +944,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -685,29 +971,47 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2019-02-23T15:06:07+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-02T07:34:48+00:00" }, { "name": "symfony/console", - "version": "v3.4.26", + "version": "v4.4.15", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "15a9104356436cb26e08adab97706654799d31d8" + "reference": "90933b39c7b312fc3ceaa1ddeac7eb48cb953124" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/15a9104356436cb26e08adab97706654799d31d8", - "reference": "15a9104356436cb26e08adab97706654799d31d8", + "url": "https://api.github.com/repos/symfony/console/zipball/90933b39c7b312fc3ceaa1ddeac7eb48cb953124", + "reference": "90933b39c7b312fc3ceaa1ddeac7eb48cb953124", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/debug": "~2.8|~3.0|~4.0", - "symfony/polyfill-mbstring": "~1.0" + "php": ">=7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.8", + "symfony/polyfill-php80": "^1.15", + "symfony/service-contracts": "^1.1|^2" }, "conflict": { "symfony/dependency-injection": "<3.4", + "symfony/event-dispatcher": "<4.3|>=5", + "symfony/lock": "<4.4", "symfony/process": "<3.3" }, "provide": { @@ -715,11 +1019,12 @@ }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~3.3|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "~2.8|~3.0|~4.0", - "symfony/lock": "~3.4|~4.0", - "symfony/process": "~3.3|~4.0" + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/event-dispatcher": "^4.3", + "symfony/lock": "^4.4|^5.0", + "symfony/process": "^3.4|^4.0|^5.0", + "symfony/var-dumper": "^4.3|^5.0" }, "suggest": { "psr/log": "For using the console logger", @@ -730,7 +1035,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -757,41 +1062,49 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2019-04-08T09:29:13+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-09-15T07:58:55+00:00" }, { - "name": "symfony/debug", - "version": "v3.4.26", + "name": "symfony/filesystem", + "version": "v4.4.15", "source": { "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "681afbb26488903c5ac15e63734f1d8ac430c9b9" + "url": "https://github.com/symfony/filesystem.git", + "reference": "ebc51494739d3b081ea543ed7c462fa73a4f74db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/681afbb26488903c5ac15e63734f1d8ac430c9b9", - "reference": "681afbb26488903c5ac15e63734f1d8ac430c9b9", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/ebc51494739d3b081ea543ed7c462fa73a4f74db", + "reference": "ebc51494739d3b081ea543ed7c462fa73a4f74db", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "psr/log": "~1.0" - }, - "conflict": { - "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" - }, - "require-dev": { - "symfony/http-kernel": "~2.8|~3.0|~4.0" + "php": ">=7.1.3", + "symfony/polyfill-ctype": "~1.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.4-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Debug\\": "" + "Symfony\\Component\\Filesystem\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -811,40 +1124,60 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Debug Component", + "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2019-04-11T09:48:14+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-09-27T13:54:16+00:00" }, { - "name": "symfony/filesystem", - "version": "v3.4.26", + "name": "symfony/polyfill-ctype", + "version": "v1.20.0", "source": { "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "acf99758b1df8e9295e6b85aa69f294565c9fedb" + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/acf99758b1df8e9295e6b85aa69f294565c9fedb", - "reference": "acf99758b1df8e9295e6b85aa69f294565c9fedb", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f4ba089a5b6366e453971d3aad5fe8e897b37f41", + "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-ctype": "~1.8" + "php": ">=7.1" + }, + "suggest": { + "ext-ctype": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Filesystem\\": "" + "Symfony\\Polyfill\\Ctype\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "files": [ + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -853,47 +1186,71 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Filesystem Component", + "description": "Symfony polyfill for ctype functions", "homepage": "https://symfony.com", - "time": "2019-02-04T21:34:32+00:00" + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.11.0", + "name": "symfony/polyfill-mbstring", + "version": "v1.20.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "82ebae02209c21113908c229e9883c419720738a" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "39d483bdf39be819deabf04ec872eb0b2410b531" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a", - "reference": "82ebae02209c21113908c229e9883c419720738a", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/39d483bdf39be819deabf04ec872eb0b2410b531", + "reference": "39d483bdf39be819deabf04ec872eb0b2410b531", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1" }, "suggest": { - "ext-ctype": "For best performance" + "ext-mbstring": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.11-dev" + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" + "Symfony\\Polyfill\\Mbstring\\": "" }, "files": [ "bootstrap.php" @@ -905,56 +1262,75 @@ ], "authors": [ { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for ctype functions", + "description": "Symfony polyfill for the Mbstring extension", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "ctype", + "mbstring", "polyfill", - "portable" + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } ], - "time": "2019-02-06T07:57:58+00:00" + "time": "2020-10-23T14:02:19+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.11.0", + "name": "symfony/polyfill-php73", + "version": "v1.20.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "fe5e94c604826c35a32fa832f35bd036b6799609" + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fe5e94c604826c35a32fa832f35bd036b6799609", - "reference": "fe5e94c604826c35a32fa832f35bd036b6799609", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/8ff431c517be11c78c48a39a66d37431e26a6bed", + "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed", "shasum": "" }, "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-mbstring": "For best performance" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.11-dev" + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" + "Symfony\\Polyfill\\Php73\\": "" }, "files": [ "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -971,57 +1347,145 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for the Mbstring extension", + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "mbstring", "polyfill", "portable", "shim" ], - "time": "2019-02-06T07:57:58+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" }, { - "name": "symfony/yaml", - "version": "v3.4.26", + "name": "symfony/polyfill-php80", + "version": "v1.20.0", "source": { "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "212a27b731e5bfb735679d1ffaac82bd6a1dc996" + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/212a27b731e5bfb735679d1ffaac82bd6a1dc996", - "reference": "212a27b731e5bfb735679d1ffaac82bd6a1dc996", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/e70aa8b064c5b72d3df2abd5ab1e90464ad009de", + "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-ctype": "~1.8" + "php": ">=7.1" }, - "conflict": { - "symfony/console": "<3.4" + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } }, - "require-dev": { - "symfony/console": "~3.4|~4.0" + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v1.1.9", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "b776d18b303a39f56c63747bcb977ad4b27aca26" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/b776d18b303a39f56c63747bcb977ad4b27aca26", + "reference": "b776d18b303a39f56c63747bcb977ad4b27aca26", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "psr/container": "^1.0" }, "suggest": { - "symfony/console": "For validating YAML files using the lint command" + "symfony/service-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "1.1-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Contracts\\Service\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1029,81 +1493,112 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Yaml Component", + "description": "Generic abstractions related to writing services", "homepage": "https://symfony.com", - "time": "2019-03-25T07:48:46+00:00" + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-07-06T13:19:58+00:00" }, { - "name": "zendframework/zend-diactoros", - "version": "1.8.6", + "name": "symfony/yaml", + "version": "v4.4.15", "source": { "type": "git", - "url": "https://github.com/zendframework/zend-diactoros.git", - "reference": "20da13beba0dde8fb648be3cc19765732790f46e" + "url": "https://github.com/symfony/yaml.git", + "reference": "c7885964b1eceb70b0981556d0a9b01d2d97c8d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/20da13beba0dde8fb648be3cc19765732790f46e", - "reference": "20da13beba0dde8fb648be3cc19765732790f46e", + "url": "https://api.github.com/repos/symfony/yaml/zipball/c7885964b1eceb70b0981556d0a9b01d2d97c8d1", + "reference": "c7885964b1eceb70b0981556d0a9b01d2d97c8d1", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0", - "psr/http-message": "^1.0" + "php": ">=7.1.3", + "symfony/polyfill-ctype": "~1.8" }, - "provide": { - "psr/http-message-implementation": "1.0" + "conflict": { + "symfony/console": "<3.4" }, "require-dev": { - "ext-dom": "*", - "ext-libxml": "*", - "php-http/psr7-integration-tests": "dev-master", - "phpunit/phpunit": "^5.7.16 || ^6.0.8 || ^7.2.7", - "zendframework/zend-coding-standard": "~1.0" + "symfony/console": "^3.4|^4.0|^5.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.8.x-dev", - "dev-develop": "1.9.x-dev", - "dev-release-2.0": "2.0.x-dev" + "dev-master": "4.4-dev" } }, "autoload": { - "files": [ - "src/functions/create_uploaded_file.php", - "src/functions/marshal_headers_from_sapi.php", - "src/functions/marshal_method_from_sapi.php", - "src/functions/marshal_protocol_version_from_sapi.php", - "src/functions/marshal_uri_from_sapi.php", - "src/functions/normalize_server.php", - "src/functions/normalize_uploaded_files.php", - "src/functions/parse_cookie_header.php" - ], "psr-4": { - "Zend\\Diactoros\\": "src/" - } + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-2-Clause" + "MIT" ], - "description": "PSR HTTP Message implementations", - "homepage": "https://github.com/zendframework/zend-diactoros", - "keywords": [ - "http", - "psr", - "psr-7" + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } ], - "time": "2018-09-05T19:29:37+00:00" + "time": "2020-09-27T03:36:23+00:00" } ], "packages-dev": [ @@ -1226,16 +1721,16 @@ }, { "name": "asm89/twig-cache-extension", - "version": "1.3.2", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/asm89/twig-cache-extension.git", - "reference": "630ea7abdc3fc62ba6786c02590a1560e449cf55" + "reference": "13787226956ec766f4770722082288097aebaaf3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/asm89/twig-cache-extension/zipball/630ea7abdc3fc62ba6786c02590a1560e449cf55", - "reference": "630ea7abdc3fc62ba6786c02590a1560e449cf55", + "url": "https://api.github.com/repos/asm89/twig-cache-extension/zipball/13787226956ec766f4770722082288097aebaaf3", + "reference": "13787226956ec766f4770722082288097aebaaf3", "shasum": "" }, "require": { @@ -1243,7 +1738,8 @@ "twig/twig": "^1.0|^2.0" }, "require-dev": { - "doctrine/cache": "~1.0" + "doctrine/cache": "~1.0", + "phpunit/phpunit": "^5.0 || ^4.8.10" }, "suggest": { "psr/cache-implementation": "To make use of PSR-6 cache implementation via PsrCacheAdapter." @@ -1251,7 +1747,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3-dev" + "dev-master": "1.4-dev" } }, "autoload": { @@ -1276,27 +1772,28 @@ "extension", "twig" ], - "time": "2017-01-10T22:04:15+00:00" + "abandoned": "twig/cache-extension", + "time": "2020-01-01T20:47:37+00:00" }, { "name": "cakephp/bake", - "version": "1.8.7", + "version": "1.12.0", "source": { "type": "git", "url": "https://github.com/cakephp/bake.git", - "reference": "8a675e3a472014b6d1bc492db4daea328ba6a5a8" + "reference": "33e8ee8419ba36c13fa4074c208c93352b5530cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cakephp/bake/zipball/8a675e3a472014b6d1bc492db4daea328ba6a5a8", - "reference": "8a675e3a472014b6d1bc492db4daea328ba6a5a8", + "url": "https://api.github.com/repos/cakephp/bake/zipball/33e8ee8419ba36c13fa4074c208c93352b5530cf", + "reference": "33e8ee8419ba36c13fa4074c208c93352b5530cf", "shasum": "" }, "require": { - "cakephp/cakephp": "^3.6.12", + "cakephp/cakephp": "^3.8.0", "cakephp/plugin-installer": "^1.0", "php": ">=5.6.0", - "wyrihaximus/twig-view": "^4.3.4" + "wyrihaximus/twig-view": "^4.3.7" }, "require-dev": { "cakephp/cakephp-codesniffer": "^3.0", @@ -1305,7 +1802,7 @@ "type": "cakephp-plugin", "autoload": { "psr-4": { - "Bake\\": "src" + "Bake\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1324,20 +1821,20 @@ "bake", "cakephp" ], - "time": "2018-12-04T04:23:24+00:00" + "time": "2019-12-07T20:34:43+00:00" }, { "name": "cakephp/cakephp-codesniffer", - "version": "3.1.1", + "version": "3.3.0", "source": { "type": "git", "url": "https://github.com/cakephp/cakephp-codesniffer.git", - "reference": "682e79fda294c4383e094a2a881e16dcf1130750" + "reference": "7998a191e787fd5b68cb635d7050cb0d7b55e1a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cakephp/cakephp-codesniffer/zipball/682e79fda294c4383e094a2a881e16dcf1130750", - "reference": "682e79fda294c4383e094a2a881e16dcf1130750", + "url": "https://api.github.com/repos/cakephp/cakephp-codesniffer/zipball/7998a191e787fd5b68cb635d7050cb0d7b55e1a1", + "reference": "7998a191e787fd5b68cb635d7050cb0d7b55e1a1", "shasum": "" }, "require": { @@ -1350,7 +1847,7 @@ "type": "phpcodesniffer-standard", "autoload": { "psr-4": { - "CakePHP\\": "CakePHP" + "CakePHP\\": "CakePHP/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1364,29 +1861,29 @@ } ], "description": "CakePHP CodeSniffer Standards", - "homepage": "http://cakephp.org", + "homepage": "https://cakephp.org", "keywords": [ "codesniffer", "framework" ], - "time": "2018-11-30T16:04:05+00:00" + "time": "2019-12-07T03:02:34+00:00" }, { "name": "cakephp/debug_kit", - "version": "3.16.7", + "version": "3.22.4", "source": { "type": "git", "url": "https://github.com/cakephp/debug_kit.git", - "reference": "556d7b97fe6efd796616af99c0c94918ccb0087c" + "reference": "5bec3c49a2b8d9bd12655f2ec35e52ec90befe17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cakephp/debug_kit/zipball/556d7b97fe6efd796616af99c0c94918ccb0087c", - "reference": "556d7b97fe6efd796616af99c0c94918ccb0087c", + "url": "https://api.github.com/repos/cakephp/debug_kit/zipball/5bec3c49a2b8d9bd12655f2ec35e52ec90befe17", + "reference": "5bec3c49a2b8d9bd12655f2ec35e52ec90befe17", "shasum": "" }, "require": { - "cakephp/cakephp": "^3.6.0", + "cakephp/cakephp": "^3.7.0", "cakephp/chronos": "^1.0.0", "cakephp/plugin-installer": "^1.0.0", "composer/composer": "^1.3.0", @@ -1394,6 +1891,7 @@ "php": ">=5.6.0" }, "require-dev": { + "cakephp/authorization": "^1.3.2", "cakephp/cakephp-codesniffer": "^3.0", "phpunit/phpunit": "^5.7.14|^6.0" }, @@ -1403,8 +1901,8 @@ "type": "cakephp-plugin", "autoload": { "psr-4": { - "DebugKit\\": "src", - "DebugKit\\Test\\Fixture\\": "tests\\Fixture" + "DebugKit\\": "src/", + "DebugKit\\Test\\Fixture\\": "tests/Fixture/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1414,7 +1912,7 @@ "authors": [ { "name": "Mark Story", - "homepage": "http://mark-story.com", + "homepage": "https://mark-story.com", "role": "Author" }, { @@ -1429,31 +1927,31 @@ "debug", "kit" ], - "time": "2018-12-02T03:24:57+00:00" + "time": "2020-04-22T17:27:39+00:00" }, { "name": "composer/ca-bundle", - "version": "1.1.4", + "version": "1.2.8", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "558f321c52faeb4828c03e7dc0cfe39a09e09a2d" + "reference": "8a7ecad675253e4654ea05505233285377405215" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/558f321c52faeb4828c03e7dc0cfe39a09e09a2d", - "reference": "558f321c52faeb4828c03e7dc0cfe39a09e09a2d", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/8a7ecad675253e4654ea05505233285377405215", + "reference": "8a7ecad675253e4654ea05505233285377405215", "shasum": "" }, "require": { "ext-openssl": "*", "ext-pcre": "*", - "php": "^5.3.2 || ^7.0" + "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5", + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8", "psr/log": "^1.0", - "symfony/process": "^2.5 || ^3.0 || ^4.0" + "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0" }, "type": "library", "extra": { @@ -1485,20 +1983,34 @@ "ssl", "tls" ], - "time": "2019-01-28T09:30:10+00:00" + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2020-08-23T12:54:47+00:00" }, { "name": "composer/composer", - "version": "1.8.5", + "version": "1.10.16", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "949b116f9e7d98d8d276594fed74b580d125c0e6" + "reference": "217f0272673c72087862c40cf91ac07eb438d778" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/949b116f9e7d98d8d276594fed74b580d125c0e6", - "reference": "949b116f9e7d98d8d276594fed74b580d125c0e6", + "url": "https://api.github.com/repos/composer/composer/zipball/217f0272673c72087862c40cf91ac07eb438d778", + "reference": "217f0272673c72087862c40cf91ac07eb438d778", "shasum": "" }, "require": { @@ -1506,22 +2018,22 @@ "composer/semver": "^1.0", "composer/spdx-licenses": "^1.2", "composer/xdebug-handler": "^1.1", - "justinrainbow/json-schema": "^3.0 || ^4.0 || ^5.0", + "justinrainbow/json-schema": "^5.2.10", "php": "^5.3.2 || ^7.0", "psr/log": "^1.0", "seld/jsonlint": "^1.4", "seld/phar-utils": "^1.0", - "symfony/console": "^2.7 || ^3.0 || ^4.0", - "symfony/filesystem": "^2.7 || ^3.0 || ^4.0", - "symfony/finder": "^2.7 || ^3.0 || ^4.0", - "symfony/process": "^2.7 || ^3.0 || ^4.0" + "symfony/console": "^2.7 || ^3.0 || ^4.0 || ^5.0", + "symfony/filesystem": "^2.7 || ^3.0 || ^4.0 || ^5.0", + "symfony/finder": "^2.7 || ^3.0 || ^4.0 || ^5.0", + "symfony/process": "^2.7 || ^3.0 || ^4.0 || ^5.0" }, "conflict": { "symfony/console": "2.8.38" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7", - "phpunit/phpunit-mock-objects": "^2.3 || ^3.0" + "phpspec/prophecy": "^1.10", + "symfony/phpunit-bridge": "^4.2" }, "suggest": { "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", @@ -1534,7 +2046,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.8-dev" + "dev-master": "1.10-dev" } }, "autoload": { @@ -1558,35 +2070,48 @@ "homepage": "http://seld.be" } ], - "description": "Composer helps you declare, manage and install dependencies of PHP projects, ensuring you have the right stack everywhere.", + "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.", "homepage": "https://getcomposer.org/", "keywords": [ "autoload", "dependency", "package" ], - "time": "2019-04-09T15:46:48+00:00" + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2020-10-24T07:55:59+00:00" }, { "name": "composer/semver", - "version": "1.5.0", + "version": "1.7.1", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e" + "reference": "38276325bd896f90dfcfe30029aa5db40df387a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/46d9139568ccb8d9e7cdd4539cab7347568a5e2e", - "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e", + "url": "https://api.github.com/repos/composer/semver/zipball/38276325bd896f90dfcfe30029aa5db40df387a7", + "reference": "38276325bd896f90dfcfe30029aa5db40df387a7", "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" + "phpunit/phpunit": "^4.5 || ^5.0.5" }, "type": "library", "extra": { @@ -1627,20 +2152,34 @@ "validation", "versioning" ], - "time": "2019-03-19T17:25:45+00:00" + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2020-09-27T13:13:07+00:00" }, { "name": "composer/spdx-licenses", - "version": "1.5.1", + "version": "1.5.4", "source": { "type": "git", "url": "https://github.com/composer/spdx-licenses.git", - "reference": "a1aa51cf3ab838b83b0867b14e56fc20fbd55b3d" + "reference": "6946f785871e2314c60b4524851f3702ea4f2223" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/a1aa51cf3ab838b83b0867b14e56fc20fbd55b3d", - "reference": "a1aa51cf3ab838b83b0867b14e56fc20fbd55b3d", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/6946f785871e2314c60b4524851f3702ea4f2223", + "reference": "6946f785871e2314c60b4524851f3702ea4f2223", "shasum": "" }, "require": { @@ -1687,28 +2226,42 @@ "spdx", "validator" ], - "time": "2019-03-26T10:23:26+00:00" + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2020-07-15T15:35:07+00:00" }, { "name": "composer/xdebug-handler", - "version": "1.3.2", + "version": "1.4.4", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "d17708133b6c276d6e42ef887a877866b909d892" + "reference": "6e076a124f7ee146f2487554a94b6a19a74887ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/d17708133b6c276d6e42ef887a877866b909d892", - "reference": "d17708133b6c276d6e42ef887a877866b909d892", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6e076a124f7ee146f2487554a94b6a19a74887ba", + "reference": "6e076a124f7ee146f2487554a94b6a19a74887ba", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0", + "php": "^5.3.2 || ^7.0 || ^8.0", "psr/log": "^1.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8" }, "type": "library", "autoload": { @@ -1726,34 +2279,48 @@ "email": "john-stevenson@blueyonder.co.uk" } ], - "description": "Restarts a process without xdebug.", + "description": "Restarts a process without Xdebug.", "keywords": [ "Xdebug", "performance" ], - "time": "2019-01-28T20:25:53+00:00" + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2020-10-24T12:39:10+00:00" }, { "name": "dnoegel/php-xdg-base-dir", - "version": "0.1", + "version": "v0.1.1", "source": { "type": "git", "url": "https://github.com/dnoegel/php-xdg-base-dir.git", - "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a" + "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/265b8593498b997dc2d31e75b89f053b5cc9621a", - "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a", + "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", + "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", "shasum": "" }, "require": { "php": ">=5.3.2" }, "require-dev": { - "phpunit/phpunit": "@stable" + "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35" }, - "type": "project", + "type": "library", "autoload": { "psr-4": { "XdgBaseDir\\": "src/" @@ -1764,36 +2331,38 @@ "MIT" ], "description": "implementation of xdg base directory specification for php", - "time": "2014-10-24T07:27:01+00:00" + "time": "2019-12-04T15:06:13+00:00" }, { "name": "doctrine/instantiator", - "version": "1.0.5", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + "reference": "f350df0268e904597e3bd9c4685c53e0e333feea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f350df0268e904597e3bd9c4685c53e0e333feea", + "reference": "f350df0268e904597e3bd9c4685c53e0e333feea", "shasum": "" }, "require": { - "php": ">=5.3,<8.0-DEV" + "php": "^7.1 || ^8.0" }, "require-dev": { - "athletic/athletic": "~0.1.8", + "doctrine/coding-standard": "^6.0", "ext-pdo": "*", "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0" + "phpbench/phpbench": "^0.13", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-shim": "^0.11", + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { @@ -1813,100 +2382,26 @@ } ], "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", "keywords": [ "constructor", "instantiate" ], - "time": "2015-06-14T21:17:01+00:00" - }, - { - "name": "jakub-onderka/php-console-color", - "version": "v0.2", - "source": { - "type": "git", - "url": "https://github.com/JakubOnderka/PHP-Console-Color.git", - "reference": "d5deaecff52a0d61ccb613bb3804088da0307191" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/d5deaecff52a0d61ccb613bb3804088da0307191", - "reference": "d5deaecff52a0d61ccb613bb3804088da0307191", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "jakub-onderka/php-code-style": "1.0", - "jakub-onderka/php-parallel-lint": "1.0", - "jakub-onderka/php-var-dump-check": "0.*", - "phpunit/phpunit": "~4.3", - "squizlabs/php_codesniffer": "1.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "JakubOnderka\\PhpConsoleColor\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "authors": [ + "funding": [ { - "name": "Jakub Onderka", - "email": "jakub.onderka@gmail.com" - } - ], - "time": "2018-09-29T17:23:10+00:00" - }, - { - "name": "jakub-onderka/php-console-highlighter", - "version": "v0.4", - "source": { - "type": "git", - "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git", - "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/9f7a229a69d52506914b4bc61bfdb199d90c5547", - "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "jakub-onderka/php-console-color": "~0.2", - "php": ">=5.4.0" - }, - "require-dev": { - "jakub-onderka/php-code-style": "~1.0", - "jakub-onderka/php-parallel-lint": "~1.0", - "jakub-onderka/php-var-dump-check": "~0.1", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~1.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "JakubOnderka\\PhpConsoleHighlighter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, { - "name": "Jakub Onderka", - "email": "acci@acci.cz", - "homepage": "http://www.acci.cz/" + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" } ], - "description": "Highlight PHP code in terminal", - "time": "2018-09-29T18:48:56+00:00" + "time": "2020-05-29T17:27:14+00:00" }, { "name": "jasny/twig-extensions", @@ -2020,23 +2515,23 @@ }, { "name": "justinrainbow/json-schema", - "version": "5.2.8", + "version": "5.2.10", "source": { "type": "git", "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "dcb6e1006bb5fd1e392b4daa68932880f37550d4" + "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/dcb6e1006bb5fd1e392b4daa68932880f37550d4", - "reference": "dcb6e1006bb5fd1e392b4daa68932880f37550d4", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b", + "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b", "shasum": "" }, "require": { "php": ">=5.3.3" }, "require-dev": { - "friendsofphp/php-cs-fixer": "~2.2.20", + "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", "json-schema/json-schema-test-suite": "1.2.0", "phpunit/phpunit": "^4.8.35" }, @@ -2082,29 +2577,32 @@ "json", "schema" ], - "time": "2019-01-14T23:55:14+00:00" + "time": "2020-05-27T16:41:55+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.7.0", + "version": "1.10.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" + "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/969b211f9a51aa1f6c01d1d2aef56d3bd91598e5", + "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.1 || ^8.0" + }, + "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": { @@ -2127,20 +2625,26 @@ "object", "object graph" ], - "time": "2017-10-19T19:58:43+00:00" + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2020-06-29T13:22:24+00:00" }, { "name": "nikic/php-parser", - "version": "v4.2.1", + "version": "v4.10.2", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "5221f49a608808c1e4d436df32884cbc1b821ac0" + "reference": "658f1be311a230e0907f5dfe0213742aff0596de" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/5221f49a608808c1e4d436df32884cbc1b821ac0", - "reference": "5221f49a608808c1e4d436df32884cbc1b821ac0", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/658f1be311a230e0907f5dfe0213742aff0596de", + "reference": "658f1be311a230e0907f5dfe0213742aff0596de", "shasum": "" }, "require": { @@ -2148,7 +2652,8 @@ "php": ">=7.0" }, "require-dev": { - "phpunit/phpunit": "^6.5 || ^7.0" + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" }, "bin": [ "bin/php-parse" @@ -2156,7 +2661,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.9-dev" } }, "autoload": { @@ -2178,7 +2683,7 @@ "parser", "php" ], - "time": "2019-02-16T20:54:15+00:00" + "time": "2020-09-26T10:30:38+00:00" }, { "name": "phar-io/manifest", @@ -2284,35 +2789,30 @@ }, { "name": "phpdocumentor/reflection-common", - "version": "1.0.1", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", "shasum": "" }, "require": { - "php": ">=5.5" - }, - "require-dev": { - "phpunit/phpunit": "^4.6" + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-2.x": "2.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src" - ] + "phpDocumentor\\Reflection\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2334,44 +2834,41 @@ "reflection", "static analysis" ], - "time": "2017-09-11T18:02:19+00:00" + "time": "2020-06-27T09:03:43+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "4.3.0", + "version": "5.2.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08" + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", "shasum": "" }, "require": { - "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0.0", - "phpdocumentor/type-resolver": "^0.4.0", - "webmozart/assert": "^1.0" + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" }, "require-dev": { - "doctrine/instantiator": "~1.0.5", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^6.4" + "mockery/mockery": "~1.3.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.x-dev" + "dev-master": "5.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2382,44 +2879,45 @@ { "name": "Mike van Riel", "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" } ], "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" + "time": "2020-09-03T19:13:55+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "0.4.0", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" + "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", "shasum": "" }, "require": { - "php": "^5.5 || ^7.0", - "phpdocumentor/reflection-common": "^1.0" + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^5.2||^4.8.24" + "ext-tokenizer": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-1.x": "1.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2432,42 +2930,43 @@ "email": "me@mikevanriel.com" } ], - "time": "2017-07-14T14:27:02+00:00" + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "time": "2020-09-17T18:55:26+00:00" }, { "name": "phpspec/prophecy", - "version": "1.8.0", + "version": "v1.10.3", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" + "reference": "451c3cd1418cf640de218914901e51b064abb093" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093", + "reference": "451c3cd1418cf640de218914901e51b064abb093", "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|^3.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0" + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", + "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" }, "require-dev": { - "phpspec/phpspec": "^2.5|^3.2", + "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.8.x-dev" + "dev-master": "1.10.x-dev" } }, "autoload": { - "psr-0": { - "Prophecy\\": "src/" + "psr-4": { + "Prophecy\\": "src/Prophecy" } }, "notification-url": "https://packagist.org/downloads/", @@ -2495,7 +2994,7 @@ "spy", "stub" ], - "time": "2018-08-05T17:53:17+00:00" + "time": "2020-03-05T15:02:03+00:00" }, { "name": "phpunit/php-code-coverage", @@ -2744,6 +3243,7 @@ "keywords": [ "tokenizer" ], + "abandoned": true, "time": "2017-11-27T05:48:46+00:00" }, { @@ -2892,32 +3392,30 @@ }, { "name": "psy/psysh", - "version": "v0.9.9", + "version": "v0.10.4", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "9aaf29575bb8293206bb0420c1e1c87ff2ffa94e" + "reference": "a8aec1b2981ab66882a01cce36a49b6317dc3560" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/9aaf29575bb8293206bb0420c1e1c87ff2ffa94e", - "reference": "9aaf29575bb8293206bb0420c1e1c87ff2ffa94e", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/a8aec1b2981ab66882a01cce36a49b6317dc3560", + "reference": "a8aec1b2981ab66882a01cce36a49b6317dc3560", "shasum": "" }, "require": { - "dnoegel/php-xdg-base-dir": "0.1", + "dnoegel/php-xdg-base-dir": "0.1.*", "ext-json": "*", "ext-tokenizer": "*", - "jakub-onderka/php-console-highlighter": "0.3.*|0.4.*", - "nikic/php-parser": "~1.3|~2.0|~3.0|~4.0", - "php": ">=5.4.0", - "symfony/console": "~2.3.10|^2.4.2|~3.0|~4.0", - "symfony/var-dumper": "~2.7|~3.0|~4.0" + "nikic/php-parser": "~4.0|~3.0|~2.0|~1.3", + "php": "^8.0 || ^7.0 || ^5.5.9", + "symfony/console": "~5.0|~4.0|~3.0|^2.4.2|~2.3.10", + "symfony/var-dumper": "~5.0|~4.0|~3.0|~2.7" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "~2.15|~3.16", - "phpunit/phpunit": "~4.8.35|~5.0|~6.0|~7.0" + "hoa/console": "3.17.*" }, "suggest": { "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", @@ -2932,7 +3430,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-develop": "0.9.x-dev" + "dev-master": "0.10.x-dev" } }, "autoload": { @@ -2962,7 +3460,7 @@ "interactive", "shell" ], - "time": "2018-10-13T15:16:03+00:00" + "time": "2020-05-03T19:32:03+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -3177,16 +3675,16 @@ }, { "name": "sebastian/exporter", - "version": "3.1.0", + "version": "3.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" + "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", - "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e", + "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e", "shasum": "" }, "require": { @@ -3213,6 +3711,10 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, { "name": "Jeff Welch", "email": "whatthejeff@gmail.com" @@ -3221,17 +3723,13 @@ "name": "Volker Dusch", "email": "github@wallbash.com" }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, { "name": "Adam Harvey", "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } ], "description": "Provides the functionality to export PHP variables for visualization", @@ -3240,7 +3738,7 @@ "export", "exporter" ], - "time": "2017-04-03T13:19:02+00:00" + "time": "2019-09-14T09:02:43+00:00" }, { "name": "sebastian/global-state", @@ -3525,20 +4023,20 @@ }, { "name": "seld/jsonlint", - "version": "1.7.1", + "version": "1.8.2", "source": { "type": "git", "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38" + "reference": "590cfec960b77fd55e39b7d9246659e95dd6d337" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/d15f59a67ff805a44c50ea0516d2341740f81a38", - "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/590cfec960b77fd55e39b7d9246659e95dd6d337", + "reference": "590cfec960b77fd55e39b7d9246659e95dd6d337", "shasum": "" }, "require": { - "php": "^5.3 || ^7.0" + "php": "^5.3 || ^7.0 || ^8.0" }, "require-dev": { "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" @@ -3570,20 +4068,30 @@ "parser", "validator" ], - "time": "2018-01-24T12:46:19+00:00" + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint", + "type": "tidelift" + } + ], + "time": "2020-08-25T06:56:57+00:00" }, { "name": "seld/phar-utils", - "version": "1.0.1", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/Seldaek/phar-utils.git", - "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a" + "reference": "8674b1d84ffb47cc59a101f5d5a3b61e87d23796" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/7009b5139491975ef6486545a39f3e6dad5ac30a", - "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a", + "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/8674b1d84ffb47cc59a101f5d5a3b61e87d23796", + "reference": "8674b1d84ffb47cc59a101f5d5a3b61e87d23796", "shasum": "" }, "require": { @@ -3612,22 +4120,22 @@ ], "description": "PHAR file format utilities, for when PHP phars you up", "keywords": [ - "phra" + "phar" ], - "time": "2015-10-13T18:44:15+00:00" + "time": "2020-07-07T18:42:57+00:00" }, { "name": "squizlabs/php_codesniffer", - "version": "3.4.2", + "version": "3.5.8", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "b8a7362af1cc1aadb5bd36c3defc4dda2cf5f0a8" + "reference": "9d583721a7157ee997f235f327de038e7ea6dac4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/b8a7362af1cc1aadb5bd36c3defc4dda2cf5f0a8", - "reference": "b8a7362af1cc1aadb5bd36c3defc4dda2cf5f0a8", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/9d583721a7157ee997f235f327de038e7ea6dac4", + "reference": "9d583721a7157ee997f235f327de038e7ea6dac4", "shasum": "" }, "require": { @@ -3665,29 +4173,29 @@ "phpcs", "standards" ], - "time": "2019-04-10T23:49:02+00:00" + "time": "2020-10-23T02:01:07+00:00" }, { "name": "symfony/finder", - "version": "v3.4.26", + "version": "v4.4.15", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "61af5ce0b34b942d414fe8f1b11950d0e9a90e98" + "reference": "60d08560f9aa72997c44077c40d47aa28a963230" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/61af5ce0b34b942d414fe8f1b11950d0e9a90e98", - "reference": "61af5ce0b34b942d414fe8f1b11950d0e9a90e98", + "url": "https://api.github.com/repos/symfony/finder/zipball/60d08560f9aa72997c44077c40d47aa28a963230", + "reference": "60d08560f9aa72997c44077c40d47aa28a963230", "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.4-dev" } }, "autoload": { @@ -3714,29 +4222,116 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2019-04-02T19:54:57+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-02T07:34:48+00:00" + }, + { + "name": "symfony/polyfill-php72", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "cede45fcdfabdd6043b3592e83678e42ec69e930" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/cede45fcdfabdd6043b3592e83678e42ec69e930", + "reference": "cede45fcdfabdd6043b3592e83678e42ec69e930", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" }, { "name": "symfony/process", - "version": "v3.4.26", + "version": "v4.4.15", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "a9c4dfbf653023b668c282e4e02609d131f4057a" + "reference": "9b887acc522935f77555ae8813495958c7771ba7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/a9c4dfbf653023b668c282e4e02609d131f4057a", - "reference": "a9c4dfbf653023b668c282e4e02609d131f4057a", + "url": "https://api.github.com/repos/symfony/process/zipball/9b887acc522935f77555ae8813495958c7771ba7", + "reference": "9b887acc522935f77555ae8813495958c7771ba7", "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.4-dev" } }, "autoload": { @@ -3763,42 +4358,64 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2019-04-08T16:15:54+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-09-02T16:08:58+00:00" }, { "name": "symfony/var-dumper", - "version": "v3.4.26", + "version": "v4.4.15", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "f0883812642a6d6583a9e2ae6aec4ba134436f40" + "reference": "0dc22bdf9d1197467bb04d505355180b6f20bcca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/f0883812642a6d6583a9e2ae6aec4ba134436f40", - "reference": "f0883812642a6d6583a9e2ae6aec4ba134436f40", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/0dc22bdf9d1197467bb04d505355180b6f20bcca", + "reference": "0dc22bdf9d1197467bb04d505355180b6f20bcca", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-mbstring": "~1.0" + "php": ">=7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php72": "~1.5", + "symfony/polyfill-php80": "^1.15" }, "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", + "symfony/console": "<3.4" }, "require-dev": { "ext-iconv": "*", - "twig/twig": "~1.34|~2.4" + "symfony/console": "^3.4|^4.0|^5.0", + "symfony/process": "^4.4|^5.0", + "twig/twig": "^1.34|^2.4|^3.0" }, "suggest": { "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", "ext-intl": "To show region name in time zone dump", - "ext-symfony_debug": "" + "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" }, + "bin": [ + "Resources/bin/var-dump-server" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -3832,27 +4449,41 @@ "debug", "dump" ], - "time": "2019-04-16T13:58:17+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-09-18T08:35:10+00:00" }, { "name": "theseer/tokenizer", - "version": "1.1.2", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "1c42705be2b6c1de5904f8afacef5895cab44bf8" + "reference": "75a63c33a8577608444246075ea0af0d052e452a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/1c42705be2b6c1de5904f8afacef5895cab44bf8", - "reference": "1c42705be2b6c1de5904f8afacef5895cab44bf8", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a", + "reference": "75a63c33a8577608444246075ea0af0d052e452a", "shasum": "" }, "require": { "ext-dom": "*", "ext-tokenizer": "*", "ext-xmlwriter": "*", - "php": "^7.0" + "php": "^7.2 || ^8.0" }, "type": "library", "autoload": { @@ -3872,35 +4503,40 @@ } ], "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "time": "2019-04-04T09:56:43+00:00" + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2020-07-12T23:59:07+00:00" }, { "name": "twig/twig", - "version": "v1.39.1", + "version": "v1.43.1", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "23e7b6f0cfa1d7ba3de69f30d8e05cf957412fec" + "reference": "2311602f6a208715252febe682fa7c38e56a3373" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/23e7b6f0cfa1d7ba3de69f30d8e05cf957412fec", - "reference": "23e7b6f0cfa1d7ba3de69f30d8e05cf957412fec", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/2311602f6a208715252febe682fa7c38e56a3373", + "reference": "2311602f6a208715252febe682fa7c38e56a3373", "shasum": "" }, "require": { - "php": ">=5.4.0", + "php": ">=7.1.3", "symfony/polyfill-ctype": "^1.8" }, "require-dev": { "psr/container": "^1.0", - "symfony/debug": "^2.7", - "symfony/phpunit-bridge": "^3.4.19|^4.1.8" + "symfony/phpunit-bridge": "^4.4.9|^5.0.9" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.39-dev" + "dev-master": "1.43-dev" } }, "autoload": { @@ -3922,15 +4558,14 @@ "homepage": "http://fabien.potencier.org", "role": "Lead Developer" }, + { + "name": "Twig Team", + "role": "Contributors" + }, { "name": "Armin Ronacher", "email": "armin.ronacher@active-4.com", "role": "Project Founder" - }, - { - "name": "Twig Team", - "homepage": "https://twig.symfony.com/contributors", - "role": "Contributors" } ], "description": "Twig, the flexible, fast, and secure template language for PHP", @@ -3938,7 +4573,17 @@ "keywords": [ "templating" ], - "time": "2019-04-16T17:12:57+00:00" + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2020-08-05T15:05:05+00:00" }, { "name": "umpirsky/twig-php-function", @@ -3983,32 +4628,30 @@ }, { "name": "webmozart/assert", - "version": "1.4.0", + "version": "1.9.1", "source": { "type": "git", "url": "https://github.com/webmozart/assert.git", - "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9" + "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9", - "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9", + "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389", + "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0", + "php": "^5.3.3 || ^7.0 || ^8.0", "symfony/polyfill-ctype": "^1.8" }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<3.9.1" + }, "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" + "phpunit/phpunit": "^4.8.36 || ^7.5.13" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, "autoload": { "psr-4": { "Webmozart\\Assert\\": "src/" @@ -4030,19 +4673,19 @@ "check", "validate" ], - "time": "2018-12-25T11:19:39+00:00" + "time": "2020-07-08T17:02:28+00:00" }, { "name": "wyrihaximus/twig-view", "version": "4.3.8", "source": { "type": "git", - "url": "https://github.com/WyriHaximus/TwigView.git", + "url": "https://github.com/cakephp/legacy-twig-view.git", "reference": "a5ec66690aa045d6eda17ab1c8a5baf0efdcfa45" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/WyriHaximus/TwigView/zipball/a5ec66690aa045d6eda17ab1c8a5baf0efdcfa45", + "url": "https://api.github.com/repos/cakephp/legacy-twig-view/zipball/a5ec66690aa045d6eda17ab1c8a5baf0efdcfa45", "reference": "a5ec66690aa045d6eda17ab1c8a5baf0efdcfa45", "shasum": "" }, @@ -4104,6 +4747,7 @@ }, "platform-dev": [], "platform-overrides": { - "php": "7.0.10" - } + "php": "7.2" + }, + "plugin-api-version": "1.1.0" } diff --git a/config/.env.default b/config/.env.default index 83662154f..15060f7be 100644 --- a/config/.env.default +++ b/config/.env.default @@ -4,6 +4,9 @@ # the aspects of your application that vary by # environment. # +# Having this file in production is considered a **SECURITY RISK** and also decreases +# the boostrap performance of your application. +# # To use this file, first copy it into `config/.env`. Also ensure the related # code block for loading this file is uncommented in `config/boostrap.php` # @@ -14,6 +17,7 @@ export APP_NAME="__APP_NAME__" export DEBUG="true" export APP_ENCODING="UTF-8" export APP_DEFAULT_LOCALE="en_US" +export APP_DEFAULT_TIMEZONE="UTC" export SECURITY_SALT="__SALT__" # Uncomment these to define cache configuration via environment variables. @@ -30,5 +34,5 @@ export SECURITY_SALT="__SALT__" #export DATABASE_TEST_URL="mysql://my_app:secret@localhost/test_${APP_NAME}?encoding=utf8&timezone=UTC&cacheMetadata=true"eIdentifiers=false&persistent=false" # Uncomment these to define logging configuration via environment variables. -#export LOG_DEBUG_URL="file://logs?levels[]=notice&levels[]=info&levels[]=debug&file=debug" -#export LOG_ERROR_URL="file://logs?levels[]=warning&levels[]=error&levels[]=critical&levels[]=alert&levels[]=emergency&file=error" +#export LOG_DEBUG_URL="file://logs/?levels[]=notice&levels[]=info&levels[]=debug&file=debug" +#export LOG_ERROR_URL="file://logs/?levels[]=warning&levels[]=error&levels[]=critical&levels[]=alert&levels[]=emergency&file=error" diff --git a/config/app.default.php b/config/app.default.php index 6072e677e..57f8ccdac 100644 --- a/config/app.default.php +++ b/config/app.default.php @@ -1,6 +1,14 @@ filter_var(env('DEBUG', true), FILTER_VALIDATE_BOOLEAN), - /** + /* * Configure basic information about the application. * * - namespace - The namespace to find app classes under. @@ -28,7 +36,10 @@ * /.htaccess * /webroot/.htaccess * And uncomment the baseUrl key below. - * - fullBaseUrl - A base URL to use for absolute links. + * - fullBaseUrl - A base URL to use for absolute links. When set to false (default) + * CakePHP generates required value based on `HTTP_HOST` environment variable. + * However, you can define it manually to optimize performance or if you + * are concerned about people manipulating the `Host` header. * - imageBaseUrl - Web path to the public images directory under webroot. * - cssBaseUrl - Web path to the public css directory under webroot. * - jsBaseUrl - Web path to the public js directory under webroot. @@ -40,11 +51,12 @@ 'namespace' => 'App', 'encoding' => env('APP_ENCODING', 'UTF-8'), 'defaultLocale' => env('APP_DEFAULT_LOCALE', 'en_US'), + 'defaultTimezone' => env('APP_DEFAULT_TIMEZONE', 'UTC'), 'base' => false, 'dir' => 'src', 'webroot' => 'webroot', 'wwwRoot' => WWW_ROOT, - // 'baseUrl' => env('SCRIPT_NAME'), + //'baseUrl' => env('SCRIPT_NAME'), 'fullBaseUrl' => false, 'imageBaseUrl' => 'img/', 'cssBaseUrl' => 'css/', @@ -56,7 +68,7 @@ ], ], - /** + /* * Security and encryption configuration * * - salt - A random string used in security hashing methods. @@ -64,10 +76,10 @@ * You should treat it as extremely sensitive data. */ 'Security' => [ - 'salt' => env('SECURITY_SALT', '__SALT__'), + 'salt' => env('SECURITY_SALT'), ], - /** + /* * Apply timestamps with the last modified time to static assets (js, css, images). * Will append a querystring parameter containing the time the file was modified. * This is useful for busting browser caches. @@ -76,27 +88,28 @@ * enable timestamping regardless of debug value. */ 'Asset' => [ - // 'timestamp' => true, + //'timestamp' => true, + // 'cacheTime' => '+1 year' ], - /** + /* * Configure the cache adapters. */ 'Cache' => [ 'default' => [ - 'className' => 'File', + 'className' => FileEngine::class, 'path' => CACHE, 'url' => env('CACHE_DEFAULT_URL', null), ], - /** + /* * Configure the cache used for general framework caching. * Translation cache files are stored with this configuration. * Duration will be set to '+2 minutes' in bootstrap.php when debug = true * If you set 'className' => 'Null' core cache will be disabled. */ '_cake_core_' => [ - 'className' => 'File', + 'className' => FileEngine::class, 'prefix' => 'myapp_cake_core_', 'path' => CACHE . 'persistent/', 'serialize' => true, @@ -104,23 +117,37 @@ 'url' => env('CACHE_CAKECORE_URL', null), ], - /** + /* * Configure the cache for model and datasource caches. This cache * configuration is used to store schema descriptions, and table listings * in connections. * Duration will be set to '+2 minutes' in bootstrap.php when debug = true */ '_cake_model_' => [ - 'className' => 'File', + 'className' => FileEngine::class, 'prefix' => 'myapp_cake_model_', 'path' => CACHE . 'models/', 'serialize' => true, 'duration' => '+1 years', 'url' => env('CACHE_CAKEMODEL_URL', null), ], + + /* + * Configure the cache for routes. The cached routes collection is built the + * first time the routes are processed through `config/routes.php`. + * Duration will be set to '+2 seconds' in bootstrap.php when debug = true + */ + '_cake_routes_' => [ + 'className' => FileEngine::class, + 'prefix' => 'myapp_cake_routes_', + 'path' => CACHE, + 'serialize' => true, + 'duration' => '+1 years', + 'url' => env('CACHE_CAKEROUTES_URL', null), + ], ], - /** + /* * Configure the Error and Exception handlers used by your application. * * By default errors are displayed using Debugger, when debug is true and logged @@ -144,20 +171,20 @@ * - `skipLog` - array - List of exceptions to skip for logging. Exceptions that * extend one of the listed exceptions will also be skipped for logging. * E.g.: - * `'skipLog' => ['Cake\Network\Exception\NotFoundException', 'Cake\Network\Exception\UnauthorizedException']` + * `'skipLog' => ['Cake\Http\Exception\NotFoundException', 'Cake\Http\Exception\UnauthorizedException']` * - `extraFatalErrorMemory` - int - The number of megabytes to increase * the memory limit by when a fatal error is encountered. This allows * breathing room to complete logging or error handling. */ 'Error' => [ 'errorLevel' => E_ALL, - 'exceptionRenderer' => 'Cake\Error\ExceptionRenderer', + 'exceptionRenderer' => ExceptionRenderer::class, 'skipLog' => [], 'log' => true, 'trace' => true, ], - /** + /* * Email configuration. * * By defining transports separately from delivery profiles you can easily @@ -178,20 +205,26 @@ */ 'EmailTransport' => [ 'default' => [ - 'className' => 'Mail', - // The following keys are used in SMTP transports + 'className' => MailTransport::class, + /* + * The keys host, port, timeout, username, password, client and tls + * are used in SMTP transports + */ 'host' => 'localhost', 'port' => 25, 'timeout' => 30, - 'username' => null, - 'password' => null, + /* + * It is recommended to set these options through your environment or app_local.php + */ + //'username' => null, + //'password' => null, 'client' => null, - 'tls' => null, + 'tls' => false, 'url' => env('EMAIL_TRANSPORT_DEFAULT_URL', null), ], ], - /** + /* * Email delivery profiles * * Delivery profiles allow you to predefine various properties about email @@ -204,41 +237,55 @@ 'default' => [ 'transport' => 'default', 'from' => 'you@localhost', + /* + * Will by default be set to config value of App.encoding, if that exists otherwise to UTF-8. + */ //'charset' => 'utf-8', //'headerCharset' => 'utf-8', ], ], - /** + /* * Connection information used by the ORM to connect * to your application's datastores. - * Do not use periods in database name - it may lead to error. - * See https://github.com/cakephp/cakephp/issues/6471 for details. - * Drivers include Mysql Postgres Sqlite Sqlserver - * See vendor\cakephp\cakephp\src\Database\Driver for complete list + * + * ### Notes + * - Drivers include Mysql Postgres Sqlite Sqlserver + * See vendor\cakephp\cakephp\src\Database\Driver for complete list + * - Do not use periods in database name - it may lead to error. + * See https://github.com/cakephp/cakephp/issues/6471 for details. + * - 'encoding' is recommended to be set to full UTF-8 4-Byte support. + * E.g set it to 'utf8mb4' in MariaDB and MySQL and 'utf8' for any + * other RDBMS. */ 'Datasources' => [ 'default' => [ - 'className' => 'Cake\Database\Connection', - 'driver' => 'Cake\Database\Driver\Mysql', + 'className' => Connection::class, + 'driver' => Mysql::class, 'persistent' => false, 'host' => 'localhost', - /** + /* * CakePHP will use the default DB port based on the driver selected * MySQL on MAMP uses port 8889, MAMP users will want to uncomment * the following line and set the port accordingly */ //'port' => 'non_standard_port_number', - 'username' => 'my_app', - 'password' => 'secret', - 'database' => 'my_app', - 'encoding' => 'utf8', + /* + * It is recommended to set these options through your environment or app_local.php + */ + //'username' => 'my_app', + //'password' => 'secret', + //'database' => 'my_app', + /* + * You do not need to set this flag to use full utf-8 encoding (internal default since CakePHP 3.6). + */ + //'encoding' => 'utf8mb4', 'timezone' => 'UTC', 'flags' => [], 'cacheMetadata' => true, 'log' => false, - /** + /* * Set identifier quoting to true if you are using reserved words or * special characters in your table or column names. Enabling this * setting will result in queries built using the Query Builder having @@ -248,7 +295,7 @@ */ 'quoteIdentifiers' => false, - /** + /* * During development, if using MySQL < 5.6, uncommenting the * following line could boost the speed at which schema metadata is * fetched from the database. It can also be set directly with the @@ -260,19 +307,19 @@ 'url' => env('DATABASE_URL', null), ], - /** + /* * The test connection is used during the test suite. */ 'test' => [ - 'className' => 'Cake\Database\Connection', - 'driver' => 'Cake\Database\Driver\Mysql', + 'className' => Connection::class, + 'driver' => Mysql::class, 'persistent' => false, 'host' => 'localhost', //'port' => 'non_standard_port_number', 'username' => 'my_app', 'password' => 'secret', 'database' => 'test_myapp', - 'encoding' => 'utf8', + //'encoding' => 'utf8mb4', 'timezone' => 'UTC', 'cacheMetadata' => true, 'quoteIdentifiers' => false, @@ -282,12 +329,12 @@ ], ], - /** + /* * Configures logging options */ 'Log' => [ 'debug' => [ - 'className' => 'Cake\Log\Engine\FileLog', + 'className' => FileLog::class, 'path' => LOGS, 'file' => 'debug', 'url' => env('LOG_DEBUG_URL', null), @@ -295,7 +342,7 @@ 'levels' => ['notice', 'info', 'debug'], ], 'error' => [ - 'className' => 'Cake\Log\Engine\FileLog', + 'className' => FileLog::class, 'path' => LOGS, 'file' => 'error', 'url' => env('LOG_ERROR_URL', null), @@ -304,7 +351,7 @@ ], // To enable this dedicated query log, you need set your datasource's log flag to true 'queries' => [ - 'className' => 'Cake\Log\Engine\FileLog', + 'className' => FileLog::class, 'path' => LOGS, 'file' => 'queries', 'url' => env('LOG_QUERIES_URL', null), @@ -312,7 +359,7 @@ ], ], - /** + /* * Session configuration. * * Contains an array of settings to use for session configuration. The diff --git a/config/app.php b/config/app.php index 050c5a2d7..b83d52fa3 100644 --- a/config/app.php +++ b/config/app.php @@ -1,389 +1,404 @@ ~`+=,.;:/?|'; - - // Convert the hash to an int to seed the RNG - srand(hexdec(substr($hash,0,8))); - // Create a random string the same length as the default - $val = ''; - for($i = 1; $i <= strlen($original); $i++){ - $val .= substr( $chars, rand(0,strlen($chars))-1, 1); - } - // Reset the RNG - srand(); - // Return the value - return $val; - -} +use Cake\Cache\Engine\FileEngine; +use Cake\Database\Connection; +use Cake\Database\Driver\Mysql; +use Cake\Error\ExceptionRenderer; +use Cake\Log\Engine\FileLog; +use Cake\Mailer\Transport\MailTransport; return [ - /** - * Debug Level: - * - * Production Mode: - * false: No error messages, errors, or warnings shown. - * - * Development Mode: - * true: Errors and warnings shown. - */ - 'debug' => filter_var(env('DEBUG', true), FILTER_VALIDATE_BOOLEAN), + /* + * Debug Level: + * + * Production Mode: + * false: No error messages, errors, or warnings shown. + * + * Development Mode: + * true: Errors and warnings shown. + */ + 'debug' => filter_var(env('DEBUG', false), FILTER_VALIDATE_BOOLEAN), + + /* + * Configure basic information about the application. + * + * - namespace - The namespace to find app classes under. + * - defaultLocale - The default locale for translation, formatting currencies and numbers, date and time. + * - encoding - The encoding used for HTML + database connections. + * - base - The base directory the app resides in. If false this + * will be auto detected. + * - dir - Name of app directory. + * - webroot - The webroot directory. + * - wwwRoot - The file path to webroot. + * - baseUrl - To configure CakePHP to *not* use mod_rewrite and to + * use CakePHP pretty URLs, remove these .htaccess + * files: + * /.htaccess + * /webroot/.htaccess + * And uncomment the baseUrl key below. + * - fullBaseUrl - A base URL to use for absolute links. When set to false (default) + * CakePHP generates required value based on `HTTP_HOST` environment variable. + * However, you can define it manually to optimize performance or if you + * are concerned about people manipulating the `Host` header. + * - imageBaseUrl - Web path to the public images directory under webroot. + * - cssBaseUrl - Web path to the public css directory under webroot. + * - jsBaseUrl - Web path to the public js directory under webroot. + * - paths - Configure paths for non class based resources. Supports the + * `plugins`, `templates`, `locales` subkeys, which allow the definition of + * paths for plugins, view templates and locale files respectively. + */ + 'App' => [ + 'namespace' => 'App', + 'encoding' => env('APP_ENCODING', 'UTF-8'), + 'defaultLocale' => env('APP_DEFAULT_LOCALE', 'en_US'), + 'defaultTimezone' => env('APP_DEFAULT_TIMEZONE', 'UTC'), + 'base' => false, + 'dir' => 'src', + 'webroot' => 'webroot', + 'wwwRoot' => WWW_ROOT, + //'baseUrl' => env('SCRIPT_NAME'), + 'fullBaseUrl' => false, + 'imageBaseUrl' => 'img/', + 'cssBaseUrl' => 'css/', + 'jsBaseUrl' => 'js/', + 'paths' => [ + 'plugins' => [ROOT . DS . 'plugins' . DS], + 'templates' => [APP . 'Template' . DS], + 'locales' => [APP . 'Locale' . DS], + ], + ], - /** - * Configure basic information about the application. - * - * - namespace - The namespace to find app classes under. - * - defaultLocale - The default locale for translation, formatting currencies and numbers, date and time. - * - encoding - The encoding used for HTML + database connections. - * - base - The base directory the app resides in. If false this - * will be auto detected. - * - dir - Name of app directory. - * - webroot - The webroot directory. - * - wwwRoot - The file path to webroot. - * - baseUrl - To configure CakePHP to *not* use mod_rewrite and to - * use CakePHP pretty URLs, remove these .htaccess - * files: - * /.htaccess - * /webroot/.htaccess - * And uncomment the baseUrl key below. - * - fullBaseUrl - A base URL to use for absolute links. - * - imageBaseUrl - Web path to the public images directory under webroot. - * - cssBaseUrl - Web path to the public css directory under webroot. - * - jsBaseUrl - Web path to the public js directory under webroot. - * - paths - Configure paths for non class based resources. Supports the - * `plugins`, `templates`, `locales` subkeys, which allow the definition of - * paths for plugins, view templates and locale files respectively. - */ - 'App' => [ - 'namespace' => 'App', - 'encoding' => env('APP_ENCODING', 'UTF-8'), - 'defaultLocale' => env('APP_DEFAULT_LOCALE', 'en_US'), - 'base' => false, - 'dir' => 'src', - 'webroot' => 'webroot', - 'wwwRoot' => WWW_ROOT, - // 'baseUrl' => env('SCRIPT_NAME'), - 'fullBaseUrl' => false, - 'imageBaseUrl' => 'img/', - 'cssBaseUrl' => 'css/', - 'jsBaseUrl' => 'js/', - 'paths' => [ - 'plugins' => [ROOT . DS . 'plugins' . DS], - 'templates' => [APP . 'Template' . DS], - 'locales' => [APP . 'Locale' . DS], - ], - ], + /* + * Security and encryption configuration + * + * - salt - A random string used in security hashing methods. + * The salt value is also used as the encryption key. + * You should treat it as extremely sensitive data. + */ + 'Security' => [ + 'salt' => env('SECURITY_SALT'), + ], - /** - * Security and encryption configuration - * - * - salt - A random string used in security hashing methods. - * The salt value is also used as the encryption key. - * You should treat it as extremely sensitive data. - */ - 'Security' => [ - 'salt' => env('SECURITY_SALT', create_salt()), - ], + /* + * Apply timestamps with the last modified time to static assets (js, css, images). + * Will append a querystring parameter containing the time the file was modified. + * This is useful for busting browser caches. + * + * Set to true to apply timestamps when debug is true. Set to 'force' to always + * enable timestamping regardless of debug value. + */ + 'Asset' => [ + //'timestamp' => true, + // 'cacheTime' => '+1 year' + ], - /** - * Apply timestamps with the last modified time to static assets (js, css, images). - * Will append a querystring parameter containing the time the file was modified. - * This is useful for busting browser caches. - * - * Set to true to apply timestamps when debug is true. Set to 'force' to always - * enable timestamping regardless of debug value. - */ - 'Asset' => [ - // 'timestamp' => true, - ], + /* + * Configure the cache adapters. + */ + 'Cache' => [ + 'default' => [ + 'className' => FileEngine::class, + 'path' => CACHE, + 'url' => env('CACHE_DEFAULT_URL', null), + ], - /** - * Configure the cache adapters. - */ - 'Cache' => [ - 'default' => [ - 'className' => 'File', - 'path' => CACHE, - 'url' => env('CACHE_DEFAULT_URL', null), - ], + /* + * Configure the cache used for general framework caching. + * Translation cache files are stored with this configuration. + * Duration will be set to '+2 minutes' in bootstrap.php when debug = true + * If you set 'className' => 'Null' core cache will be disabled. + */ + '_cake_core_' => [ + 'className' => FileEngine::class, + 'prefix' => 'myapp_cake_core_', + 'path' => CACHE . 'persistent/', + 'serialize' => true, + 'duration' => '+1 years', + 'url' => env('CACHE_CAKECORE_URL', null), + ], - /** - * Configure the cache used for general framework caching. - * Translation cache files are stored with this configuration. - * Duration will be set to '+2 minutes' in bootstrap.php when debug = true - * If you set 'className' => 'Null' core cache will be disabled. - */ - '_cake_core_' => [ - 'className' => 'File', - 'prefix' => 'myapp_cake_core_', - 'path' => CACHE . 'persistent/', - 'serialize' => true, - 'duration' => '+1 years', - 'url' => env('CACHE_CAKECORE_URL', null), - ], + /* + * Configure the cache for model and datasource caches. This cache + * configuration is used to store schema descriptions, and table listings + * in connections. + * Duration will be set to '+2 minutes' in bootstrap.php when debug = true + */ + '_cake_model_' => [ + 'className' => FileEngine::class, + 'prefix' => 'myapp_cake_model_', + 'path' => CACHE . 'models/', + 'serialize' => true, + 'duration' => '+1 years', + 'url' => env('CACHE_CAKEMODEL_URL', null), + ], - /** - * Configure the cache for model and datasource caches. This cache - * configuration is used to store schema descriptions, and table listings - * in connections. - * Duration will be set to '+2 minutes' in bootstrap.php when debug = true - */ - '_cake_model_' => [ - 'className' => 'File', - 'prefix' => 'myapp_cake_model_', - 'path' => CACHE . 'models/', - 'serialize' => true, - 'duration' => '+1 years', - 'url' => env('CACHE_CAKEMODEL_URL', null), - ], - ], + /* + * Configure the cache for routes. The cached routes collection is built the + * first time the routes are processed through `config/routes.php`. + * Duration will be set to '+2 seconds' in bootstrap.php when debug = true + */ + '_cake_routes_' => [ + 'className' => FileEngine::class, + 'prefix' => 'myapp_cake_routes_', + 'path' => CACHE, + 'serialize' => true, + 'duration' => '+1 years', + 'url' => env('CACHE_CAKEROUTES_URL', null), + ], + ], - /** - * Configure the Error and Exception handlers used by your application. - * - * By default errors are displayed using Debugger, when debug is true and logged - * by Cake\Log\Log when debug is false. - * - * In CLI environments exceptions will be printed to stderr with a backtrace. - * In web environments an HTML page will be displayed for the exception. - * With debug true, framework errors like Missing Controller will be displayed. - * When debug is false, framework errors will be coerced into generic HTTP errors. - * - * Options: - * - * - `errorLevel` - int - The level of errors you are interested in capturing. - * - `trace` - boolean - Whether or not backtraces should be included in - * logged errors/exceptions. - * - `log` - boolean - Whether or not you want exceptions logged. - * - `exceptionRenderer` - string - The class responsible for rendering - * uncaught exceptions. If you choose a custom class you should place - * the file for that class in src/Error. This class needs to implement a - * render method. - * - `skipLog` - array - List of exceptions to skip for logging. Exceptions that - * extend one of the listed exceptions will also be skipped for logging. - * E.g.: - * `'skipLog' => ['Cake\Network\Exception\NotFoundException', 'Cake\Network\Exception\UnauthorizedException']` - * - `extraFatalErrorMemory` - int - The number of megabytes to increase - * the memory limit by when a fatal error is encountered. This allows - * breathing room to complete logging or error handling. - */ - 'Error' => [ - 'errorLevel' => E_ALL & ~E_USER_DEPRECATED, - 'exceptionRenderer' => 'Cake\Error\ExceptionRenderer', - 'skipLog' => [], - 'log' => true, - 'trace' => true, - ], + /* + * Configure the Error and Exception handlers used by your application. + * + * By default errors are displayed using Debugger, when debug is true and logged + * by Cake\Log\Log when debug is false. + * + * In CLI environments exceptions will be printed to stderr with a backtrace. + * In web environments an HTML page will be displayed for the exception. + * With debug true, framework errors like Missing Controller will be displayed. + * When debug is false, framework errors will be coerced into generic HTTP errors. + * + * Options: + * + * - `errorLevel` - int - The level of errors you are interested in capturing. + * - `trace` - boolean - Whether or not backtraces should be included in + * logged errors/exceptions. + * - `log` - boolean - Whether or not you want exceptions logged. + * - `exceptionRenderer` - string - The class responsible for rendering + * uncaught exceptions. If you choose a custom class you should place + * the file for that class in src/Error. This class needs to implement a + * render method. + * - `skipLog` - array - List of exceptions to skip for logging. Exceptions that + * extend one of the listed exceptions will also be skipped for logging. + * E.g.: + * `'skipLog' => ['Cake\Http\Exception\NotFoundException', 'Cake\Http\Exception\UnauthorizedException']` + * - `extraFatalErrorMemory` - int - The number of megabytes to increase + * the memory limit by when a fatal error is encountered. This allows + * breathing room to complete logging or error handling. + */ + 'Error' => [ + 'errorLevel' => E_ALL, + 'exceptionRenderer' => ExceptionRenderer::class, + 'skipLog' => [], + 'log' => true, + 'trace' => true, + ], - /** - * Email configuration. - * - * By defining transports separately from delivery profiles you can easily - * re-use transport configuration across multiple profiles. - * - * You can specify multiple configurations for production, development and - * testing. - * - * Each transport needs a `className`. Valid options are as follows: - * - * Mail - Send using PHP mail function - * Smtp - Send using SMTP - * Debug - Do not send the email, just return the result - * - * You can add custom transports (or override existing transports) by adding the - * appropriate file to src/Mailer/Transport. Transports should be named - * 'YourTransport.php', where 'Your' is the name of the transport. - */ - 'EmailTransport' => [ - 'default' => [ - 'className' => 'Mail', - // The following keys are used in SMTP transports - 'host' => 'localhost', - 'port' => 25, - 'timeout' => 30, - 'username' => null, - 'password' => null, - 'client' => null, - 'tls' => null, - 'url' => env('EMAIL_TRANSPORT_DEFAULT_URL', null), - ], - ], + /* + * Email configuration. + * + * By defining transports separately from delivery profiles you can easily + * re-use transport configuration across multiple profiles. + * + * You can specify multiple configurations for production, development and + * testing. + * + * Each transport needs a `className`. Valid options are as follows: + * + * Mail - Send using PHP mail function + * Smtp - Send using SMTP + * Debug - Do not send the email, just return the result + * + * You can add custom transports (or override existing transports) by adding the + * appropriate file to src/Mailer/Transport. Transports should be named + * 'YourTransport.php', where 'Your' is the name of the transport. + */ + 'EmailTransport' => [ + 'default' => [ + 'className' => MailTransport::class, + /* + * The keys host, port, timeout, username, password, client and tls + * are used in SMTP transports + */ + 'host' => 'localhost', + 'port' => 25, + 'timeout' => 30, + /* + * It is recommended to set these options through your environment or app_local.php + */ + //'username' => null, + //'password' => null, + 'client' => null, + 'tls' => false, + 'url' => env('EMAIL_TRANSPORT_DEFAULT_URL', null), + ], + ], - /** - * Email delivery profiles - * - * Delivery profiles allow you to predefine various properties about email - * messages from your application and give the settings a name. This saves - * duplication across your application and makes maintenance and development - * easier. Each profile accepts a number of keys. See `Cake\Mailer\Email` - * for more information. - */ - 'Email' => [ - 'default' => [ - 'transport' => 'default', - 'from' => 'you@localhost', - //'charset' => 'utf-8', - //'headerCharset' => 'utf-8', - ], - ], + /* + * Email delivery profiles + * + * Delivery profiles allow you to predefine various properties about email + * messages from your application and give the settings a name. This saves + * duplication across your application and makes maintenance and development + * easier. Each profile accepts a number of keys. See `Cake\Mailer\Email` + * for more information. + */ + 'Email' => [ + 'default' => [ + 'transport' => 'default', + 'from' => 'you@localhost', + /* + * Will by default be set to config value of App.encoding, if that exists otherwise to UTF-8. + */ + //'charset' => 'utf-8', + //'headerCharset' => 'utf-8', + ], + ], - /** - * Connection information used by the ORM to connect - * to your application's datastores. - * Do not use periods in database name - it may lead to error. - * See https://github.com/cakephp/cakephp/issues/6471 for details. - * Drivers include Mysql Postgres Sqlite Sqlserver - * See vendor\cakephp\cakephp\src\Database\Driver for complete list - */ - 'Datasources' => [ - 'default' => [ - 'className' => 'Cake\Database\Connection', - 'driver' => 'Cake\Database\Driver\\' . ucfirst(env('DATABASE_ENGINE', 'Mysql')), - 'persistent' => false, - 'host' => env(strtoupper(env("DATABASE_SERVICE_NAME", 'Mysql'))."_SERVICE_HOST", ''), - /** - * CakePHP will use the default DB port based on the driver selected - * MySQL on MAMP uses port 8889, MAMP users will want to uncomment - * the following line and set the port accordingly - */ - 'port' => env(strtoupper(env("DATABASE_SERVICE_NAME", 'Mysql'))."_SERVICE_PORT", ''), - 'username' => env("DATABASE_USER", ''), - 'password' => env("DATABASE_PASSWORD", ''), - 'database' => env("DATABASE_NAME", ''), - 'encoding' => 'utf8', - 'timezone' => 'UTC', - 'flags' => [], - 'cacheMetadata' => true, - 'log' => false, + /* + * Connection information used by the ORM to connect + * to your application's datastores. + * + * ### Notes + * - Drivers include Mysql Postgres Sqlite Sqlserver + * See vendor\cakephp\cakephp\src\Database\Driver for complete list + * - Do not use periods in database name - it may lead to error. + * See https://github.com/cakephp/cakephp/issues/6471 for details. + * - 'encoding' is recommended to be set to full UTF-8 4-Byte support. + * E.g set it to 'utf8mb4' in MariaDB and MySQL and 'utf8' for any + * other RDBMS. + */ + 'Datasources' => [ + 'default' => [ + 'className' => Connection::class, + 'driver' => Mysql::class, + 'persistent' => false, + 'host' => 'localhost', + /* + * CakePHP will use the default DB port based on the driver selected + * MySQL on MAMP uses port 8889, MAMP users will want to uncomment + * the following line and set the port accordingly + */ + //'port' => 'non_standard_port_number', + /* + * It is recommended to set these options through your environment or app_local.php + */ + //'username' => 'my_app', + //'password' => 'secret', + //'database' => 'my_app', + /* + * You do not need to set this flag to use full utf-8 encoding (internal default since CakePHP 3.6). + */ + //'encoding' => 'utf8mb4', + 'timezone' => 'UTC', + 'flags' => [], + 'cacheMetadata' => true, + 'log' => false, - /** - * Set identifier quoting to true if you are using reserved words or - * special characters in your table or column names. Enabling this - * setting will result in queries built using the Query Builder having - * identifiers quoted when creating SQL. It should be noted that this - * decreases performance because each query needs to be traversed and - * manipulated before being executed. - */ - 'quoteIdentifiers' => false, + /* + * Set identifier quoting to true if you are using reserved words or + * special characters in your table or column names. Enabling this + * setting will result in queries built using the Query Builder having + * identifiers quoted when creating SQL. It should be noted that this + * decreases performance because each query needs to be traversed and + * manipulated before being executed. + */ + 'quoteIdentifiers' => false, - /** - * During development, if using MySQL < 5.6, uncommenting the - * following line could boost the speed at which schema metadata is - * fetched from the database. It can also be set directly with the - * mysql configuration directive 'innodb_stats_on_metadata = 0' - * which is the recommended value in production environments - */ - //'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'], + /* + * During development, if using MySQL < 5.6, uncommenting the + * following line could boost the speed at which schema metadata is + * fetched from the database. It can also be set directly with the + * mysql configuration directive 'innodb_stats_on_metadata = 0' + * which is the recommended value in production environments + */ + //'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'], - 'url' => env('DATABASE_URL', null), - ], + 'url' => env('DATABASE_URL', null), + ], - /** - * The test connection is used during the test suite. - */ - 'test' => [ - 'className' => 'Cake\Database\Connection', - 'driver' => 'Cake\Database\Driver\\' . ucfirst(env('DATABASE_ENGINE', 'Mysql')), - 'persistent' => false, - 'database' => 'test_database', - 'encoding' => 'utf8', - 'timezone' => 'UTC', - 'cacheMetadata' => true, - 'quoteIdentifiers' => false, - 'log' => false, - 'url' => env('DATABASE_TEST_URL', null), - ], - ], + /* + * The test connection is used during the test suite. + */ + 'test' => [ + 'className' => Connection::class, + 'driver' => Mysql::class, + 'persistent' => false, + 'host' => 'localhost', + //'port' => 'non_standard_port_number', + 'username' => 'my_app', + 'password' => 'secret', + 'database' => 'test_myapp', + //'encoding' => 'utf8mb4', + 'timezone' => 'UTC', + 'cacheMetadata' => true, + 'quoteIdentifiers' => false, + 'log' => false, + //'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'], + 'url' => env('DATABASE_TEST_URL', null), + ], + ], - /** - * Configures logging options - */ - 'Log' => [ - 'debug' => [ - 'className' => 'Cake\Log\Engine\FileLog', - 'path' => LOGS, - 'file' => 'debug', - 'url' => env('LOG_DEBUG_URL', null), - 'scopes' => false, - 'levels' => ['notice', 'info', 'debug'], - ], - 'error' => [ - 'className' => 'Cake\Log\Engine\FileLog', - 'path' => LOGS, - 'file' => 'error', - 'url' => env('LOG_ERROR_URL', null), - 'scopes' => false, - 'levels' => ['warning', 'error', 'critical', 'alert', 'emergency'], - ], - // To enable this dedicated query log, you need set your datasource's log flag to true - 'queries' => [ - 'className' => 'Cake\Log\Engine\FileLog', - 'path' => LOGS, - 'file' => 'queries', - 'url' => env('LOG_QUERIES_URL', null), - 'scopes' => ['queriesLog'], - ], - ], + /* + * Configures logging options + */ + 'Log' => [ + 'debug' => [ + 'className' => FileLog::class, + 'path' => LOGS, + 'file' => 'debug', + 'url' => env('LOG_DEBUG_URL', null), + 'scopes' => false, + 'levels' => ['notice', 'info', 'debug'], + ], + 'error' => [ + 'className' => FileLog::class, + 'path' => LOGS, + 'file' => 'error', + 'url' => env('LOG_ERROR_URL', null), + 'scopes' => false, + 'levels' => ['warning', 'error', 'critical', 'alert', 'emergency'], + ], + // To enable this dedicated query log, you need set your datasource's log flag to true + 'queries' => [ + 'className' => FileLog::class, + 'path' => LOGS, + 'file' => 'queries', + 'url' => env('LOG_QUERIES_URL', null), + 'scopes' => ['queriesLog'], + ], + ], - /** - * Session configuration. - * - * Contains an array of settings to use for session configuration. The - * `defaults` key is used to define a default preset to use for sessions, any - * settings declared here will override the settings of the default config. - * - * ## Options - * - * - `cookie` - The name of the cookie to use. Defaults to 'CAKEPHP'. Avoid using `.` in cookie names, - * as PHP will drop sessions from cookies with `.` in the name. - * - `cookiePath` - The url path for which session cookie is set. Maps to the - * `session.cookie_path` php.ini config. Defaults to base path of app. - * - `timeout` - The time in minutes the session should be valid for. - * Pass 0 to disable checking timeout. - * Please note that php.ini's session.gc_maxlifetime must be equal to or greater - * than the largest Session['timeout'] in all served websites for it to have the - * desired effect. - * - `defaults` - The default configuration set to use as a basis for your session. - * There are four built-in options: php, cake, cache, database. - * - `handler` - Can be used to enable a custom session handler. Expects an - * array with at least the `engine` key, being the name of the Session engine - * class to use for managing the session. CakePHP bundles the `CacheSession` - * and `DatabaseSession` engines. - * - `ini` - An associative array of additional ini values to set. - * - * The built-in `defaults` options are: - * - * - 'php' - Uses settings defined in your php.ini. - * - 'cake' - Saves session files in CakePHP's /tmp directory. - * - 'database' - Uses CakePHP's database sessions. - * - 'cache' - Use the Cache class to save sessions. - * - * To define a custom session handler, save it at src/Network/Session/.php. - * Make sure the class implements PHP's `SessionHandlerInterface` and set - * Session.handler to - * - * To use database sessions, load the SQL file located at config/schema/sessions.sql - */ - 'Session' => [ - 'defaults' => 'php', - ], + /* + * Session configuration. + * + * Contains an array of settings to use for session configuration. The + * `defaults` key is used to define a default preset to use for sessions, any + * settings declared here will override the settings of the default config. + * + * ## Options + * + * - `cookie` - The name of the cookie to use. Defaults to 'CAKEPHP'. Avoid using `.` in cookie names, + * as PHP will drop sessions from cookies with `.` in the name. + * - `cookiePath` - The url path for which session cookie is set. Maps to the + * `session.cookie_path` php.ini config. Defaults to base path of app. + * - `timeout` - The time in minutes the session should be valid for. + * Pass 0 to disable checking timeout. + * Please note that php.ini's session.gc_maxlifetime must be equal to or greater + * than the largest Session['timeout'] in all served websites for it to have the + * desired effect. + * - `defaults` - The default configuration set to use as a basis for your session. + * There are four built-in options: php, cake, cache, database. + * - `handler` - Can be used to enable a custom session handler. Expects an + * array with at least the `engine` key, being the name of the Session engine + * class to use for managing the session. CakePHP bundles the `CacheSession` + * and `DatabaseSession` engines. + * - `ini` - An associative array of additional ini values to set. + * + * The built-in `defaults` options are: + * + * - 'php' - Uses settings defined in your php.ini. + * - 'cake' - Saves session files in CakePHP's /tmp directory. + * - 'database' - Uses CakePHP's database sessions. + * - 'cache' - Use the Cache class to save sessions. + * + * To define a custom session handler, save it at src/Network/Session/.php. + * Make sure the class implements PHP's `SessionHandlerInterface` and set + * Session.handler to + * + * To use database sessions, load the SQL file located at config/schema/sessions.sql + */ + 'Session' => [ + 'defaults' => 'php', + ], ]; diff --git a/config/app_local.php b/config/app_local.php new file mode 100644 index 000000000..c47a79598 --- /dev/null +++ b/config/app_local.php @@ -0,0 +1,131 @@ +~`+=,.;:/?|'; + + // Convert the hash to an int to seed the RNG + srand(hexdec(substr($hash,0,8))); + // Create a random string the same length as the default + $val = ''; + for($i = 1; $i <= strlen($original); $i++){ + $val .= substr( $chars, rand(0,strlen($chars))-1, 1); + } + // Reset the RNG + srand(); + // Return the value + return $val; + +} + +return [ + + 'debug' => filter_var(env('DEBUG', true), FILTER_VALIDATE_BOOLEAN), + /* + * Security and encryption configuration + * + * - salt - A random string used in security hashing methods. + * The salt value is also used as the encryption key. + * You should treat it as extremely sensitive data. + */ + 'Security' => [ + 'salt' => env('SECURITY_SALT', create_salt()), + ], + + /* + * Connection information used by the ORM to connect + * to your application's datastores. + * + * See app.php for more configuration options. + */ + 'Datasources' => [ + 'default' => [ + 'className' => Connection::class, + 'driver' => 'Cake\Database\Driver\\' . ucfirst(env('DATABASE_ENGINE', 'Mysql')), + 'persistent' => false, + 'host' => env(strtoupper(env("DATABASE_SERVICE_NAME", 'Mysql'))."_SERVICE_HOST", ''), + /** + * CakePHP will use the default DB port based on the driver selected + * MySQL on MAMP uses port 8889, MAMP users will want to uncomment + * the following line and set the port accordingly + */ + 'port' => env(strtoupper(env("DATABASE_SERVICE_NAME", 'Mysql'))."_SERVICE_PORT", ''), + 'username' => env("DATABASE_USER", ''), + 'password' => env("DATABASE_PASSWORD", ''), + 'database' => env("DATABASE_NAME", ''), + 'encoding' => 'utf8', /* + * You do not need to set this flag to use full utf-8 encoding (internal default since CakePHP 3.6). + */ + //'encoding' => 'utf8mb4', + 'timezone' => 'UTC', + 'flags' => [], + 'cacheMetadata' => true, + 'log' => false, + + /** + * Set identifier quoting to true if you are using reserved words or + * special characters in your table or column names. Enabling this + * setting will result in queries built using the Query Builder having + * identifiers quoted when creating SQL. It should be noted that this + * decreases performance because each query needs to be traversed and + * manipulated before being executed. + */ + 'quoteIdentifiers' => false, + + /** + * During development, if using MySQL < 5.6, uncommenting the + * following line could boost the speed at which schema metadata is + * fetched from the database. It can also be set directly with the + * mysql configuration directive 'innodb_stats_on_metadata = 0' + * which is the recommended value in production environments + */ + //'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'], + + 'url' => env('DATABASE_URL', null), + ], + + /** + * The test connection is used during the test suite. + */ + 'test' => [ + 'className' => Connection::class, + 'driver' => 'Cake\Database\Driver\\' . ucfirst(env('DATABASE_ENGINE', 'Mysql')), + 'persistent' => false, + 'database' => 'test_database', + //'encoding' => 'utf8mb4', + 'timezone' => 'UTC', + 'cacheMetadata' => true, + 'quoteIdentifiers' => false, + 'log' => false, + //'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'], + 'url' => env('DATABASE_TEST_URL', null), + ], + ], + +]; diff --git a/config/bootstrap.php b/config/bootstrap.php index f521b6e80..8c4ef3cc7 100755 --- a/config/bootstrap.php +++ b/config/bootstrap.php @@ -31,23 +31,26 @@ use Cake\Cache\Cache; use Cake\Console\ConsoleErrorHandler; -use Cake\Core\App; use Cake\Core\Configure; use Cake\Core\Configure\Engine\PhpConfig; -use Cake\Core\Plugin; use Cake\Database\Type; use Cake\Datasource\ConnectionManager; use Cake\Error\ErrorHandler; use Cake\Http\ServerRequest; use Cake\Log\Log; use Cake\Mailer\Email; -use Cake\Utility\Inflector; +use Cake\Mailer\TransportFactory; +//use Cake\Utility\Inflector; use Cake\Utility\Security; -/** +/* * Uncomment block of code below if you want to use `.env` file during development. * You should copy `config/.env.default to `config/.env` and set/modify the * variables as required. + * + * It is HIGHLY discouraged to use a .env file in production, due to security risks + * and decreased performance on each request. The purpose of the .env file is to emulate + * the presence of the environment variables like they would be present in production. */ // if (!env('APP_NAME') && file_exists(CONFIG . '.env')) { // $dotenv = new \josegonzalez\Dotenv\Loader([CONFIG . '.env']); @@ -77,7 +80,9 @@ * You can use a file like app_local.php to provide local overrides to your * shared configuration. */ -//Configure::load('app_local', 'default'); +if (file_exists(CONFIG . 'app_local.php')) { + Configure::load('app_local', 'default'); +} /* * When debug = true the metadata cache should only last @@ -86,14 +91,15 @@ if (Configure::read('debug')) { Configure::write('Cache._cake_model_.duration', '+2 minutes'); Configure::write('Cache._cake_core_.duration', '+2 minutes'); + // disable router cache during development + Configure::write('Cache._cake_routes_.duration', '+2 seconds'); } /* - * Set server timezone to UTC. You can change it to another timezone of your - * choice but using UTC makes time calculations / conversions easier. + * Set the default server timezone. Using UTC makes time calculations / conversions easier. * Check http://php.net/manual/en/timezones.php for list of valid timezone strings. */ -date_default_timezone_set('UTC'); +date_default_timezone_set(Configure::read('App.defaultTimezone')); /* * Configure the mbstring extension to use the correct encoding. @@ -144,7 +150,7 @@ Cache::setConfig(Configure::consume('Cache')); ConnectionManager::setConfig(Configure::consume('Datasources')); -Email::setConfigTransport(Configure::consume('EmailTransport')); +TransportFactory::setConfig(Configure::consume('EmailTransport')); Email::setConfig(Configure::consume('Email')); Log::setConfig(Configure::consume('Log')); Security::setSalt(Configure::consume('Security.salt')); @@ -176,7 +182,7 @@ * You can enable default locale format parsing by adding calls * to `useLocaleParser()`. This enables the automatic conversion of * locale specific date formats. For details see - * @link https://book.cakephp.org/3.0/en/core-libraries/internationalization-and-localization.html#parsing-localized-datetime-data + * @link https://book.cakephp.org/3/en/core-libraries/internationalization-and-localization.html#parsing-localized-datetime-data */ Type::build('time') ->useImmutable(); @@ -196,21 +202,3 @@ //Inflector::rules('irregular', ['red' => 'redlings']); //Inflector::rules('uninflected', ['dontinflectme']); //Inflector::rules('transliteration', ['/å/' => 'aa']); - -/* - * Plugins need to be loaded manually, you can either load them one by one or all of them in a single call - * Uncomment one of the lines below, as you need. make sure you read the documentation on Plugin to use more - * advanced ways of loading plugins - * - * Plugin::loadAll(); // Loads all plugins at once - * Plugin::load('Migrations'); //Loads a single plugin named Migrations - * - */ - -/* - * Only try to load DebugKit in development mode - * Debug Kit should not be installed on a production system - */ -if (Configure::read('debug')) { - Plugin::load('DebugKit', ['bootstrap' => true]); -} diff --git a/config/bootstrap_cli.php b/config/bootstrap_cli.php index 85e119e9e..d3679d754 100644 --- a/config/bootstrap_cli.php +++ b/config/bootstrap_cli.php @@ -13,8 +13,6 @@ * @license https://opensource.org/licenses/mit-license.php MIT License */ use Cake\Core\Configure; -use Cake\Core\Exception\MissingPluginException; -use Cake\Core\Plugin; /** * Additional bootstrapping and configuration for CLI environments should @@ -28,11 +26,3 @@ // Set logs to different files so they don't have permission conflicts. Configure::write('Log.debug.file', 'cli-debug'); Configure::write('Log.error.file', 'cli-error'); - -try { - Plugin::load('Bake'); -} catch (MissingPluginException $e) { - // Do not halt if the plugin is missing -} - -Plugin::load('Migrations'); diff --git a/config/paths.php b/config/paths.php index 48d004185..1c8121588 100644 --- a/config/paths.php +++ b/config/paths.php @@ -48,6 +48,10 @@ /** * File path to the webroot directory. + * + * To derive your webroot from your webserver change this to: + * + * `define('WWW_ROOT', rtrim($_SERVER['DOCUMENT_ROOT'], DS) . DS);` */ define('WWW_ROOT', ROOT . DS . 'webroot' . DS); diff --git a/config/routes.php b/config/routes.php index 43d669717..0b53d380a 100755 --- a/config/routes.php +++ b/config/routes.php @@ -17,8 +17,7 @@ * @link https://cakephp.org CakePHP(tm) Project * @license https://opensource.org/licenses/mit-license.php MIT License */ - -use Cake\Core\Plugin; +use Cake\Http\Middleware\CsrfProtectionMiddleware; use Cake\Routing\RouteBuilder; use Cake\Routing\Router; use Cake\Routing\Route\DashedRoute; @@ -40,10 +39,24 @@ * inconsistently cased URLs when used with `:plugin`, `:controller` and * `:action` markers. * + * Cache: Routes are cached to improve performance, check the RoutingMiddleware + * constructor in your `src/Application.php` file to change this behavior. + * */ Router::defaultRouteClass(DashedRoute::class); Router::scope('/', function (RouteBuilder $routes) { + // Register scoped middleware for in scopes. + $routes->registerMiddleware('csrf', new CsrfProtectionMiddleware([ + 'httpOnly' => true + ])); + + /** + * Apply a middleware to the current route scope. + * Requires middleware to be registered via `Application::routes()` with `registerMiddleware()` + */ + $routes->applyMiddleware('csrf'); + /** * Here, we are connecting '/' (base path) to a controller called 'Pages', * its action called 'display', and we pass a param to select the view file @@ -60,8 +73,11 @@ * Connect catchall routes for all controllers. * * Using the argument `DashedRoute`, the `fallbacks` method is a shortcut for - * `$routes->connect('/:controller', ['action' => 'index'], ['routeClass' => 'DashedRoute']);` - * `$routes->connect('/:controller/:action/*', [], ['routeClass' => 'DashedRoute']);` + * + * ``` + * $routes->connect('/:controller', ['action' => 'index'], ['routeClass' => 'DashedRoute']); + * $routes->connect('/:controller/:action/*', [], ['routeClass' => 'DashedRoute']); + * ``` * * Any route class can be used with this method, such as: * - DashedRoute @@ -76,7 +92,13 @@ }); /** - * Load all plugin routes. See the Plugin documentation on - * how to customize the loading of plugin routes. + * If you need a different set of middleware or none at all, + * open new scope and define routes there. + * + * ``` + * Router::scope('/api', function (RouteBuilder $routes) { + * // No $routes->applyMiddleware() here. + * // Connect API actions here. + * }); + * ``` */ -Plugin::routes(); diff --git a/health.php b/health.php index 8db455569..93a64220e 100644 --- a/health.php +++ b/health.php @@ -13,4 +13,3 @@ die("Connection failed: " . $conn->connect_error); } echo "OK"; -?> diff --git a/lib/Cake/Console/cake b/lib/Cake/Console/cake index 8a7631989..ab3f39d64 100755 --- a/lib/Cake/Console/cake +++ b/lib/Cake/Console/cake @@ -1,3 +1,4 @@ #!/usr/bin/env bash +set -m exec vendor/bin/phpunit -exit \ No newline at end of file +exit diff --git a/logs/empty b/logs/empty new file mode 100644 index 000000000..e69de29bb diff --git a/openshift/templates/cakephp-mysql-persistent.json b/openshift/templates/cakephp-mysql-persistent.json index 23e9299fa..16baea738 100644 --- a/openshift/templates/cakephp-mysql-persistent.json +++ b/openshift/templates/cakephp-mysql-persistent.json @@ -352,7 +352,7 @@ "from": { "kind": "ImageStreamTag", "namespace": "${NAMESPACE}", - "name": "mysql:8.0-el8" + "name": "mysql:8.0" } } }, diff --git a/src/Application.php b/src/Application.php index 35c7ac54d..d2bc2a56f 100644 --- a/src/Application.php +++ b/src/Application.php @@ -15,6 +15,7 @@ namespace App; use Cake\Core\Configure; +use Cake\Core\Exception\MissingPluginException; use Cake\Error\Middleware\ErrorHandlerMiddleware; use Cake\Http\BaseApplication; use Cake\Routing\Middleware\AssetMiddleware; @@ -28,6 +29,37 @@ */ class Application extends BaseApplication { + /** + * {@inheritDoc} + */ + public function bootstrap() + { + try { + $this->addPlugin('Bake'); + } catch (MissingPluginException $e) { + // Do not halt if the plugin is missing + } + + $this->addPlugin('Migrations'); + + // Call parent to load bootstrap from files. + parent::bootstrap(); + + if (PHP_SAPI === 'cli') { + $this->bootstrapCli(); + } + + /* + * Only try to load DebugKit in development mode + * Debug Kit should not be installed on a production system + */ + if (Configure::read('debug')) { + $this->addPlugin(\DebugKit\Plugin::class); + } + + // Load more plugins here + } + /** * Setup the middleware queue your application will use. * @@ -39,14 +71,45 @@ public function middleware($middlewareQueue) $middlewareQueue // Catch any exceptions in the lower layers, // and make an error page/response - ->add(ErrorHandlerMiddleware::class) + ->add(new ErrorHandlerMiddleware(null, Configure::read('Error'))) // Handle plugin/theme assets like CakePHP normally does. - ->add(AssetMiddleware::class) + ->add(new AssetMiddleware([ + 'cacheTime' => Configure::read('Asset.cacheTime') + ])) // Add routing middleware. + // If you have a large number of routes connected, turning on routes + // caching in production could improve performance. For that when + // creating the middleware instance specify the cache config name by + // using it's second constructor argument: + // `new RoutingMiddleware($this, '_cake_routes_')` ->add(new RoutingMiddleware($this)); return $middlewareQueue; } + + /** + * @return void + */ + protected function bootstrapCli() + { + try { + $this->addPlugin('Bake'); + } catch (MissingPluginException $e) { + // Do not halt if the plugin is missing + } + + $this->addPlugin('Migrations'); + + /* + * Only try to load DebugKit in development mode + * Debug Kit should not be installed on a production system + */ + if (Configure::read('debug')) { + $this->addPlugin(\DebugKit\Plugin::class); + } + + // Load more plugins here + } } diff --git a/src/Controller/PagesController.php b/src/Controller/PagesController.php index ffbdba765..62f1bd93f 100644 --- a/src/Controller/PagesController.php +++ b/src/Controller/PagesController.php @@ -15,8 +15,8 @@ namespace App\Controller; use Cake\Core\Configure; -use Cake\Network\Exception\ForbiddenException; -use Cake\Network\Exception\NotFoundException; +use Cake\Http\Exception\ForbiddenException; +use Cake\Http\Exception\NotFoundException; use Cake\View\Exception\MissingTemplateException; /** @@ -24,7 +24,7 @@ * * This controller will render views from Template/Pages/ * - * @link https://book.cakephp.org/3.0/en/controllers/pages-controller.html + * @link https://book.cakephp.org/3/en/controllers/pages-controller.html */ class PagesController extends AppController { @@ -34,14 +34,14 @@ class PagesController extends AppController * * @param array ...$path Path segments. * @return \Cake\Http\Response|null - * @throws \Cake\Network\Exception\ForbiddenException When a directory traversal attempt. - * @throws \Cake\Network\Exception\NotFoundException When the view file could not - * be found or \Cake\View\Exception\MissingTemplateException in debug mode. + * @throws \Cake\Http\Exception\ForbiddenException When a directory traversal attempt. + * @throws \Cake\Http\Exception\NotFoundException When the view file could not + * be found + * @throws \Cake\View\Exception\MissingTemplateException In debug mode. */ public function display(...$path) { - $count = count($path); - if (!$count) { + if (!$path) { return $this->redirect('/'); } if (in_array('..', $path, true) || in_array('.', $path, true)) { diff --git a/src/Template/Cell/empty b/src/Template/Cell/empty new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/src/Template/Cell/empty @@ -0,0 +1 @@ + diff --git a/src/Template/Layout/ajax.ctp b/src/Template/Layout/ajax.ctp index 29b439ccc..cd51169db 100644 --- a/src/Template/Layout/ajax.ctp +++ b/src/Template/Layout/ajax.ctp @@ -11,6 +11,7 @@ * @link https://cakephp.org CakePHP(tm) Project * @since 0.10.0 * @license https://opensource.org/licenses/mit-license.php MIT License + * @var \App\View\AppView $this */ echo $this->fetch('content'); diff --git a/src/Template/Layout/default.ctp.default b/src/Template/Layout/default.ctp.default index 84f0ec180..77b2828d9 100644 --- a/src/Template/Layout/default.ctp.default +++ b/src/Template/Layout/default.ctp.default @@ -11,6 +11,7 @@ * @link https://cakephp.org CakePHP(tm) Project * @since 0.10.0 * @license https://opensource.org/licenses/mit-license.php MIT License + * @var \App\View\AppView $this */ $cakeDescription = 'CakePHP: the rapid development php framework'; @@ -27,7 +28,7 @@ $cakeDescription = 'CakePHP: the rapid development php framework'; Html->meta('icon') ?> Html->css('base.css') ?> - Html->css('cake.css') ?> + Html->css('style.css') ?> fetch('meta') ?> fetch('css') ?> @@ -42,7 +43,7 @@ $cakeDescription = 'CakePHP: the rapid development php framework'; diff --git a/src/Template/Layout/error.ctp b/src/Template/Layout/error.ctp index 80be38d47..7367c1bf7 100644 --- a/src/Template/Layout/error.ctp +++ b/src/Template/Layout/error.ctp @@ -23,7 +23,7 @@ Html->meta('icon') ?> Html->css('base.css') ?> - Html->css('cake.css') ?> + Html->css('style.css') ?> fetch('meta') ?> fetch('css') ?> diff --git a/src/View/AppView.php b/src/View/AppView.php index 7b92ebfe6..242ab6bde 100644 --- a/src/View/AppView.php +++ b/src/View/AppView.php @@ -18,7 +18,7 @@ /** * Application View * - * Your application’s default view class + * Your application's default view class * * @link https://book.cakephp.org/3.0/en/views.html#the-app-view */ diff --git a/src/View/Cell/empty b/src/View/Cell/empty new file mode 100644 index 000000000..e69de29bb diff --git a/tests/TestCase/ApplicationTest.php b/tests/TestCase/ApplicationTest.php index 0981ef2bd..8dbf017b0 100644 --- a/tests/TestCase/ApplicationTest.php +++ b/tests/TestCase/ApplicationTest.php @@ -15,11 +15,13 @@ namespace App\Test\TestCase; use App\Application; +use Cake\Core\Configure; use Cake\Error\Middleware\ErrorHandlerMiddleware; use Cake\Http\MiddlewareQueue; use Cake\Routing\Middleware\AssetMiddleware; use Cake\Routing\Middleware\RoutingMiddleware; use Cake\TestSuite\IntegrationTestCase; +use InvalidArgumentException; /** * ApplicationTest class @@ -27,6 +29,45 @@ class ApplicationTest extends IntegrationTestCase { + /** + * testBootstrap + * + * @return void + */ + public function testBootstrap() + { + $app = new Application(dirname(dirname(__DIR__)) . '/config'); + $app->bootstrap(); + $plugins = $app->getPlugins(); + + $this->assertCount(Configure::read('debug') ? 3 : 2, $plugins); + $this->assertSame('Bake', $plugins->get('Bake')->getName()); + $this->assertSame('Migrations', $plugins->get('Migrations')->getName()); + if (Configure::read('debug')) { + $this->assertSame('DebugKit', $plugins->get('DebugKit')->getName()); + } + } + + /** + * testBootstrapPluginWitoutHalt + * + * @return void + */ + public function testBootstrapPluginWithoutHalt() + { + $this->expectException(InvalidArgumentException::class); + + $app = $this->getMockBuilder(Application::class) + ->setConstructorArgs([dirname(dirname(__DIR__)) . '/config']) + ->setMethods(['addPlugin']) + ->getMock(); + + $app->method('addPlugin') + ->will($this->throwException(new InvalidArgumentException('test exception.'))); + + $app->bootstrap(); + } + /** * testMiddleware * diff --git a/webroot/css/cake.css b/webroot/css/style.css similarity index 99% rename from webroot/css/cake.css rename to webroot/css/style.css index 10841c893..40c1d2a9f 100644 --- a/webroot/css/cake.css +++ b/webroot/css/style.css @@ -424,7 +424,6 @@ div.message { overflow: hidden; height: 50px; line-height: 2.5em; - box-radius: 5px; } div.message:before { diff --git a/webroot/font/cakedingbats-webfont.eot b/webroot/font/cakedingbats-webfont.eot new file mode 100644 index 000000000..e8605d926 Binary files /dev/null and b/webroot/font/cakedingbats-webfont.eot differ diff --git a/webroot/font/cakedingbats-webfont.ttf b/webroot/font/cakedingbats-webfont.ttf new file mode 100644 index 000000000..13d54454e Binary files /dev/null and b/webroot/font/cakedingbats-webfont.ttf differ diff --git a/webroot/font/cakedingbats-webfont.woff b/webroot/font/cakedingbats-webfont.woff new file mode 100644 index 000000000..073baab11 Binary files /dev/null and b/webroot/font/cakedingbats-webfont.woff differ diff --git a/webroot/font/cakedingbats-webfont.woff2 b/webroot/font/cakedingbats-webfont.woff2 new file mode 100644 index 000000000..6e71eaf53 Binary files /dev/null and b/webroot/font/cakedingbats-webfont.woff2 differ