diff --git a/CHANGELOG.md b/CHANGELOG.md index 48e8654d8..d72053458 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,14 @@ +# v1.4.3 +## 04/12/2018 + +1. [](#new) + * moved Twig `sortArrayByKey` logic into `Utils::` class +1. [](#improved) + * Rolled back Parsedown library to stable `1.6.4` until a better solution for `1.8.0` compatibility can fe found + * Updated vendor libraries to latest versions +1. [](#bugfix) + * Fix for bad reference to `ZipArchive` in `GPM::Installer` + # v1.4.2 ## 03/21/2018 @@ -11,7 +22,7 @@ * Fixed an issue with Markdown Video and Audio that broke after Parsedown 1.7.0 Security updates [#1924](https://github.com/getgrav/grav/issues/1924) * Fix for case-sensitive page metadata [admin#1370](https://github.com/getgrav/grav-plugin-admin/issues/1370) * Fixed missing composer requirements for the new `Grav\Framework\Uri` classes - * Added missing PSR-7 vendor library required for URI additions in Grav 1.4.0 + * Added missing PSR-7 vendor library required for URI additions in Grav 1.4.0 # v1.4.1 ## 03/11/2018 @@ -60,7 +71,6 @@ * Optimizations & refactoring to the test suite [#1779](https://github.com/getgrav/grav/pull/1779) * Slight modification of Whoops error colors * Added new configuration option `system.session.initialize` to delay session initialization if needed by a plugin - * Vendor library updated to latest * Updated vendor libraries to latest versions * Removed constructor from `ObjectInterface` * Make it possible to include debug bar also into non-HTML responses diff --git a/README.md b/README.md index 182138cfa..916421930 100644 --- a/README.md +++ b/README.md @@ -183,7 +183,7 @@ See [LICENSE](LICENSE.txt) # Running Tests -First install the dev dependencies by running `composer update` from the Grav root. -Then `composer test` will run the Unit Tests, which should be always executed successfully on any site. - +First install the dev dependencies by running `composer update` from the Grav root. +Then `composer test` will run the Unit Tests, which should be always executed successfully on any site. +Windows users should use the `composer test-windows` command. You can also run a single unit test file, e.g. `composer test tests/unit/Grav/Common/AssetsTest.php` diff --git a/composer.json b/composer.json index 995bd0a85..9918530bf 100644 --- a/composer.json +++ b/composer.json @@ -6,10 +6,9 @@ "homepage": "http://getgrav.org", "license": "MIT", "require": { - "roave/security-advisories": "dev-master", "php": ">=5.5.9", "twig/twig": "~1.24", - "erusev/parsedown": "~1.6", + "erusev/parsedown": "1.6.4", "erusev/parsedown-extra": "~0.7", "symfony/yaml": "~2.8", "symfony/console": "~2.8", diff --git a/composer.lock b/composer.lock index 38e461d4c..dff7ccb1b 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "fd0eed10f16784270a72286db775c95a", + "content-hash": "c71dffc7daccd08aba7a52a476569d4c", "packages": [ { "name": "antoligy/dom-string-iterators", @@ -52,16 +52,16 @@ }, { "name": "composer/ca-bundle", - "version": "1.1.0", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "943b2c4fcad1ef178d16a713c2468bf7e579c288" + "reference": "d2c0a83b7533d6912e8d516756ebd34f893e9169" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/943b2c4fcad1ef178d16a713c2468bf7e579c288", - "reference": "943b2c4fcad1ef178d16a713c2468bf7e579c288", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/d2c0a83b7533d6912e8d516756ebd34f893e9169", + "reference": "d2c0a83b7533d6912e8d516756ebd34f893e9169", "shasum": "" }, "require": { @@ -70,7 +70,7 @@ "php": "^5.3.2 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5", "psr/log": "^1.0", "symfony/process": "^2.5 || ^3.0 || ^4.0" }, @@ -104,7 +104,7 @@ "ssl", "tls" ], - "time": "2017-11-29T09:37:33+00:00" + "time": "2018-03-29T19:57:20+00:00" }, { "name": "doctrine/cache", @@ -295,20 +295,19 @@ }, { "name": "erusev/parsedown", - "version": "1.7.1", + "version": "1.6.4", "source": { "type": "git", "url": "https://github.com/erusev/parsedown.git", - "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1" + "reference": "fbe3fe878f4fe69048bb8a52783a09802004f548" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/erusev/parsedown/zipball/92e9c27ba0e74b8b028b111d1b6f956a15c01fc1", - "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1", + "url": "https://api.github.com/repos/erusev/parsedown/zipball/fbe3fe878f4fe69048bb8a52783a09802004f548", + "reference": "fbe3fe878f4fe69048bb8a52783a09802004f548", "shasum": "" }, "require": { - "ext-mbstring": "*", "php": ">=5.3.0" }, "require-dev": { @@ -337,7 +336,7 @@ "markdown", "parser" ], - "time": "2018-03-08T01:11:30+00:00" + "time": "2017-11-14T20:44:03+00:00" }, { "name": "erusev/parsedown-extra", @@ -827,16 +826,16 @@ }, { "name": "miljar/php-exif", - "version": "v0.6.3", + "version": "v0.6.4", "source": { "type": "git", "url": "https://github.com/PHPExif/php-exif.git", - "reference": "e43cc30608824d7f3466653b52bbbb71874b5b02" + "reference": "361c15b8bc7d5ef26a9492fe537f09c920fe6511" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPExif/php-exif/zipball/e43cc30608824d7f3466653b52bbbb71874b5b02", - "reference": "e43cc30608824d7f3466653b52bbbb71874b5b02", + "url": "https://api.github.com/repos/PHPExif/php-exif/zipball/361c15b8bc7d5ef26a9492fe537f09c920fe6511", + "reference": "361c15b8bc7d5ef26a9492fe537f09c920fe6511", "shasum": "" }, "require": { @@ -878,7 +877,7 @@ "jpeg", "tiff" ], - "time": "2017-02-06T14:40:26+00:00" + "time": "2018-03-27T10:41:55+00:00" }, { "name": "monolog/monolog", @@ -1202,165 +1201,6 @@ ], "time": "2017-10-23T01:57:42+00:00" }, - { - "name": "roave/security-advisories", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "6da6150c9fb568739c8508a9859e9d5d7a5e99e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/6da6150c9fb568739c8508a9859e9d5d7a5e99e9", - "reference": "6da6150c9fb568739c8508a9859e9d5d7a5e99e9", - "shasum": "" - }, - "conflict": { - "3f/pygmentize": "<1.2", - "adodb/adodb-php": "<5.20.6", - "amphp/artax": "<1.0.6|>=2,<2.0.6", - "amphp/http": "<1.0.1", - "asymmetricrypt/asymmetricrypt": ">=0,<9.9.99", - "aws/aws-sdk-php": ">=3,<3.2.1", - "bugsnag/bugsnag-laravel": ">=2,<2.0.2", - "cakephp/cakephp": ">=1.3,<1.3.18|>=2,<2.4.99|>=2.5,<2.5.99|>=2.6,<2.6.12|>=2.7,<2.7.6|>=3,<3.0.15|>=3.1,<3.1.4", - "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4", - "cartalyst/sentry": "<=2.1.6", - "codeigniter/framework": "<=3.0.6", - "composer/composer": "<=1.0.0-alpha11", - "contao-components/mediaelement": ">=2.14.2,<2.21.1", - "contao/core": ">=2,<3.5.32", - "contao/core-bundle": ">=4,<4.4.8", - "contao/listing-bundle": ">=4,<4.4.8", - "contao/newsletter-bundle": ">=4,<4.1", - "doctrine/annotations": ">=1,<1.2.7", - "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2", - "doctrine/common": ">=2,<2.4.3|>=2.5,<2.5.1", - "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2", - "doctrine/doctrine-bundle": "<1.5.2", - "doctrine/doctrine-module": "<=0.7.1", - "doctrine/mongodb-odm": ">=1,<1.0.2", - "doctrine/mongodb-odm-bundle": ">=2,<3.0.1", - "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1", - "dompdf/dompdf": ">=0.6,<0.6.2", - "drupal/core": ">=8,<8.4.5", - "drupal/drupal": ">=8,<8.4.5", - "erusev/parsedown": "<1.7", - "ezsystems/ezpublish-legacy": ">=5.3,<5.3.12.3|>=5.4,<5.4.11.3|>=2017.8,<2017.8.1.1|>=2017.12,<2017.12.2.1", - "firebase/php-jwt": "<2", - "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2", - "friendsofsymfony/user-bundle": ">=1.2,<1.3.5", - "gree/jose": "<=2.2", - "gregwar/rst": "<1.0.3", - "guzzlehttp/guzzle": ">=6,<6.2.1|>=4.0.0-rc2,<4.2.4|>=5,<5.3.1", - "illuminate/auth": ">=4,<4.0.99|>=4.1,<4.1.26", - "illuminate/database": ">=4,<4.0.99|>=4.1,<4.1.29", - "joomla/session": "<1.3.1", - "laravel/framework": ">=4,<4.0.99|>=4.1,<4.1.29", - "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10", - "magento/magento1ce": ">=1.5.0.1,<1.9.3.2", - "magento/magento1ee": ">=1.9,<1.14.3.2", - "magento/magento2ce": ">=2,<2.2", - "monolog/monolog": ">=1.8,<1.12", - "namshi/jose": "<2.2", - "onelogin/php-saml": "<2.10.4", - "oro/crm": ">=1.7,<1.7.4", - "oro/platform": ">=1.7,<1.7.4", - "padraic/humbug_get_contents": "<1.1.2", - "pagarme/pagarme-php": ">=0,<3", - "paragonie/random_compat": "<2", - "phpmailer/phpmailer": ">=5,<5.2.24", - "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3", - "phpxmlrpc/extras": "<0.6.1", - "propel/propel": ">=2.0.0-alpha1,<=2.0.0-alpha7", - "propel/propel1": ">=1,<=1.7.1", - "pusher/pusher-php-server": "<2.2.1", - "sabre/dav": ">=1.6,<1.6.99|>=1.7,<1.7.11|>=1.8,<1.8.9", - "shopware/shopware": "<5.3.7", - "silverstripe/cms": ">=3,<=3.0.11|>=3.1,<3.1.11", - "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3", - "silverstripe/framework": ">=3,<3.3", - "silverstripe/userforms": "<3", - "simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4", - "simplesamlphp/simplesamlphp": "<1.15.2", - "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1", - "socalnick/scn-social-auth": "<1.15.2", - "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1", - "stormpath/sdk": ">=0,<9.9.99", - "swiftmailer/swiftmailer": ">=4,<5.4.5", - "symfony/dependency-injection": ">=2,<2.0.17", - "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", - "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2", - "symfony/http-foundation": ">=2,<2.3.27|>=2.4,<2.5.11|>=2.6,<2.6.6", - "symfony/http-kernel": ">=2,<2.3.29|>=2.4,<2.5.12|>=2.6,<2.6.8", - "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", - "symfony/routing": ">=2,<2.0.19", - "symfony/security": ">=2,<2.0.25|>=2.1,<2.1.13|>=2.2,<2.2.9|>=2.3,<2.3.37|>=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8.23,<2.8.25|>=3.2.10,<3.2.12|>=3.3.3,<3.3.5", - "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<2.8.6|>=2.8.23,<2.8.25|>=3,<3.0.6|>=3.2.10,<3.2.12|>=3.3.3,<3.3.5", - "symfony/security-csrf": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", - "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", - "symfony/serializer": ">=2,<2.0.11", - "symfony/symfony": ">=2,<2.3.41|>=2.4,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", - "symfony/translation": ">=2,<2.0.17", - "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3", - "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4", - "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7", - "thelia/backoffice-default-template": ">=2.1,<2.1.2", - "thelia/thelia": ">=2.1,<2.1.2|>=2.1.0-beta1,<2.1.3", - "titon/framework": ">=0,<9.9.99", - "twig/twig": "<1.20", - "typo3/cms": ">=6.2,<6.2.30|>=7,<7.6.22|>=8,<8.7.5", - "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.10|>=3.1,<3.1.7|>=3.2,<3.2.7|>=3.3,<3.3.5", - "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4", - "willdurand/js-translation-bundle": "<2.1.1", - "yiisoft/yii": ">=1.1.14,<1.1.15", - "yiisoft/yii2": "<2.0.15", - "yiisoft/yii2-bootstrap": "<2.0.4", - "yiisoft/yii2-dev": "<2.0.15", - "yiisoft/yii2-elasticsearch": "<2.0.5", - "yiisoft/yii2-gii": "<2.0.4", - "yiisoft/yii2-jui": "<2.0.4", - "yiisoft/yii2-redis": "<2.0.8", - "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3", - "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2", - "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2", - "zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5", - "zendframework/zend-diactoros": ">=1,<1.0.4", - "zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1", - "zendframework/zend-http": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.3,<2.3.8|>=2.4,<2.4.1", - "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6", - "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3", - "zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2", - "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1", - "zendframework/zend-session": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4", - "zendframework/zend-validator": ">=2.3,<2.3.6", - "zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1", - "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6", - "zendframework/zendframework": ">=2,<2.4.11|>=2.5,<2.5.1", - "zendframework/zendframework1": "<1.12.20", - "zendframework/zendopenid": ">=2,<2.0.2", - "zendframework/zendxml": ">=1,<1.0.1", - "zetacomponents/mail": "<1.8.2", - "zf-commons/zfc-user": "<1.2.2", - "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3", - "zfr/zfr-oauth2-server-module": "<0.1.2" - }, - "type": "metapackage", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "role": "maintainer" - } - ], - "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it", - "time": "2018-03-20T15:54:02+00:00" - }, { "name": "rockettheme/toolbox", "version": "1.3.9", @@ -1459,16 +1299,16 @@ }, { "name": "symfony/console", - "version": "v2.8.36", + "version": "v2.8.38", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "a6ff8b2ffa4eb43046828b303af2e3fedadacc27" + "reference": "7f78892d900c72a40acd1fe793c856ef0c110f26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/a6ff8b2ffa4eb43046828b303af2e3fedadacc27", - "reference": "a6ff8b2ffa4eb43046828b303af2e3fedadacc27", + "url": "https://api.github.com/repos/symfony/console/zipball/7f78892d900c72a40acd1fe793c856ef0c110f26", + "reference": "7f78892d900c72a40acd1fe793c856ef0c110f26", "shasum": "" }, "require": { @@ -1516,7 +1356,7 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2018-02-26T15:33:21+00:00" + "time": "2018-04-03T05:20:27+00:00" }, { "name": "symfony/debug", @@ -1577,16 +1417,16 @@ }, { "name": "symfony/event-dispatcher", - "version": "v2.8.36", + "version": "v2.8.38", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "f5d2d7dcc33b89e20c2696ea9afcbddf6540081c" + "reference": "9b69aad7d4c086dc94ebade2d5eb9145da5dac8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/f5d2d7dcc33b89e20c2696ea9afcbddf6540081c", - "reference": "f5d2d7dcc33b89e20c2696ea9afcbddf6540081c", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9b69aad7d4c086dc94ebade2d5eb9145da5dac8c", + "reference": "9b69aad7d4c086dc94ebade2d5eb9145da5dac8c", "shasum": "" }, "require": { @@ -1633,7 +1473,7 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2018-02-11T16:53:59+00:00" + "time": "2018-04-06T07:35:03+00:00" }, { "name": "symfony/polyfill-iconv", @@ -1755,16 +1595,16 @@ }, { "name": "symfony/var-dumper", - "version": "v2.8.36", + "version": "v2.8.38", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "e6a3e8c832096f8902a3e80169fca5d202e7e0d3" + "reference": "942a8142104deb3254f7da292a923b6d4eac8081" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/e6a3e8c832096f8902a3e80169fca5d202e7e0d3", - "reference": "e6a3e8c832096f8902a3e80169fca5d202e7e0d3", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/942a8142104deb3254f7da292a923b6d4eac8081", + "reference": "942a8142104deb3254f7da292a923b6d4eac8081", "shasum": "" }, "require": { @@ -1819,11 +1659,11 @@ "debug", "dump" ], - "time": "2018-01-31T10:36:06+00:00" + "time": "2018-04-03T05:20:27+00:00" }, { "name": "symfony/yaml", - "version": "v2.8.36", + "version": "v2.8.38", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", @@ -1998,21 +1838,21 @@ }, { "name": "codeception/codeception", - "version": "2.4.0", + "version": "2.4.1", "source": { "type": "git", "url": "https://github.com/Codeception/Codeception.git", - "reference": "c50789a9a62cc0eefc0252e88a5f04f8c47b55f4" + "reference": "bca3547632556875f1cdd567d6057cc14fe472b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Codeception/zipball/c50789a9a62cc0eefc0252e88a5f04f8c47b55f4", - "reference": "c50789a9a62cc0eefc0252e88a5f04f8c47b55f4", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/bca3547632556875f1cdd567d6057cc14fe472b8", + "reference": "bca3547632556875f1cdd567d6057cc14fe472b8", "shasum": "" }, "require": { "behat/gherkin": "^4.4.0", - "codeception/phpunit-wrapper": "^6.0|^7.0", + "codeception/phpunit-wrapper": "^6.0.9|^7.0.6", "codeception/stub": "^1.0", "ext-json": "*", "ext-mbstring": "*", @@ -2085,20 +1925,20 @@ "functional testing", "unit testing" ], - "time": "2018-02-27T00:09:12+00:00" + "time": "2018-03-31T22:30:43+00:00" }, { "name": "codeception/phpunit-wrapper", - "version": "6.0.8", + "version": "6.0.9", "source": { "type": "git", "url": "https://github.com/Codeception/phpunit-wrapper.git", - "reference": "e18f3ea1f841bfd2cecaf6e183e584127b9d467b" + "reference": "450f1cfc5f49539c421061e64338f5edb8baad6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/e18f3ea1f841bfd2cecaf6e183e584127b9d467b", - "reference": "e18f3ea1f841bfd2cecaf6e183e584127b9d467b", + "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/450f1cfc5f49539c421061e64338f5edb8baad6a", + "reference": "450f1cfc5f49539c421061e64338f5edb8baad6a", "shasum": "" }, "require": { @@ -2131,7 +1971,7 @@ } ], "description": "PHPUnit classes used by Codeception", - "time": "2018-03-16T10:17:47+00:00" + "time": "2018-03-31T18:50:01+00:00" }, { "name": "codeception/stub", @@ -2324,16 +2164,16 @@ }, { "name": "guzzlehttp/guzzle", - "version": "6.3.0", + "version": "6.3.2", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699" + "reference": "68d0ea14d5a3f42a20e87632a5f84931e2709c90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/f4db5a78a5ea468d4831de7f0bf9d9415e348699", - "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/68d0ea14d5a3f42a20e87632a5f84931e2709c90", + "reference": "68d0ea14d5a3f42a20e87632a5f84931e2709c90", "shasum": "" }, "require": { @@ -2343,7 +2183,7 @@ }, "require-dev": { "ext-curl": "*", - "phpunit/phpunit": "^4.0 || ^5.0", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4", "psr/log": "^1.0" }, "suggest": { @@ -2352,7 +2192,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "6.2-dev" + "dev-master": "6.3-dev" } }, "autoload": { @@ -2385,7 +2225,7 @@ "rest", "web service" ], - "time": "2017-06-22T18:50:49+00:00" + "time": "2018-03-26T16:33:04+00:00" }, { "name": "guzzlehttp/promises", @@ -3397,16 +3237,16 @@ }, { "name": "symfony/browser-kit", - "version": "v3.4.6", + "version": "v3.4.8", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "490f27762705c8489bd042fe3e9377a191dba9b4" + "reference": "840bb6f0d5b3701fd768b68adf7193c2d0f98f79" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/490f27762705c8489bd042fe3e9377a191dba9b4", - "reference": "490f27762705c8489bd042fe3e9377a191dba9b4", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/840bb6f0d5b3701fd768b68adf7193c2d0f98f79", + "reference": "840bb6f0d5b3701fd768b68adf7193c2d0f98f79", "shasum": "" }, "require": { @@ -3450,20 +3290,20 @@ ], "description": "Symfony BrowserKit Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:37:34+00:00" + "time": "2018-03-19T22:32:39+00:00" }, { "name": "symfony/css-selector", - "version": "v3.4.6", + "version": "v3.4.8", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "544655f1fc078a9cd839fdda2b7b1e64627c826a" + "reference": "519a80d7c1d95c6cc0b67f686d15fe27c6910de0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/544655f1fc078a9cd839fdda2b7b1e64627c826a", - "reference": "544655f1fc078a9cd839fdda2b7b1e64627c826a", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/519a80d7c1d95c6cc0b67f686d15fe27c6910de0", + "reference": "519a80d7c1d95c6cc0b67f686d15fe27c6910de0", "shasum": "" }, "require": { @@ -3503,20 +3343,20 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2018-02-03T14:55:07+00:00" + "time": "2018-03-19T22:32:39+00:00" }, { "name": "symfony/dom-crawler", - "version": "v3.4.6", + "version": "v3.4.8", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "2bb5d3101cc01f4fe580e536daf4f1959bc2d24d" + "reference": "1a4cffeb059226ff6bee9f48acb388faf674afff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/2bb5d3101cc01f4fe580e536daf4f1959bc2d24d", - "reference": "2bb5d3101cc01f4fe580e536daf4f1959bc2d24d", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/1a4cffeb059226ff6bee9f48acb388faf674afff", + "reference": "1a4cffeb059226ff6bee9f48acb388faf674afff", "shasum": "" }, "require": { @@ -3559,20 +3399,20 @@ ], "description": "Symfony DomCrawler Component", "homepage": "https://symfony.com", - "time": "2018-02-22T10:48:49+00:00" + "time": "2018-03-19T22:32:39+00:00" }, { "name": "symfony/finder", - "version": "v3.4.6", + "version": "v3.4.8", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "a479817ce0a9e4adfd7d39c6407c95d97c254625" + "reference": "bd14efe8b1fabc4de82bf50dce62f05f9a102433" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/a479817ce0a9e4adfd7d39c6407c95d97c254625", - "reference": "a479817ce0a9e4adfd7d39c6407c95d97c254625", + "url": "https://api.github.com/repos/symfony/finder/zipball/bd14efe8b1fabc4de82bf50dce62f05f9a102433", + "reference": "bd14efe8b1fabc4de82bf50dce62f05f9a102433", "shasum": "" }, "require": { @@ -3608,20 +3448,20 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2018-03-05T18:28:11+00:00" + "time": "2018-04-04T05:07:11+00:00" }, { "name": "symfony/process", - "version": "v3.4.6", + "version": "v3.4.8", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "cc4aea21f619116aaf1c58016a944e4821c8e8af" + "reference": "4b7d64e852886319e93ddfdecff0d744ab87658b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/cc4aea21f619116aaf1c58016a944e4821c8e8af", - "reference": "cc4aea21f619116aaf1c58016a944e4821c8e8af", + "url": "https://api.github.com/repos/symfony/process/zipball/4b7d64e852886319e93ddfdecff0d744ab87658b", + "reference": "4b7d64e852886319e93ddfdecff0d744ab87658b", "shasum": "" }, "require": { @@ -3657,7 +3497,7 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2018-02-12T17:55:00+00:00" + "time": "2018-04-03T05:22:50+00:00" }, { "name": "victorjonsson/markdowndocs", @@ -3759,7 +3599,6 @@ "aliases": [], "minimum-stability": "stable", "stability-flags": { - "roave/security-advisories": 20, "victorjonsson/markdowndocs": 20 }, "prefer-stable": false, diff --git a/system/defines.php b/system/defines.php index 6615cf562..329265a05 100644 --- a/system/defines.php +++ b/system/defines.php @@ -8,7 +8,7 @@ // Some standard defines define('GRAV', true); -define('GRAV_VERSION', '1.4.2'); +define('GRAV_VERSION', '1.4.3'); define('GRAV_TESTING', false); define('DS', '/'); diff --git a/system/src/Grav/Common/Config/Setup.php b/system/src/Grav/Common/Config/Setup.php index 316b090d5..e9180fea8 100644 --- a/system/src/Grav/Common/Config/Setup.php +++ b/system/src/Grav/Common/Config/Setup.php @@ -137,7 +137,8 @@ class Setup extends Data // Pre-load setup.php which contains our initial configuration. // Configuration may contain dynamic parts, which is why we need to always load it. - $file = GRAV_ROOT . '/setup.php'; + // If "GRAVE_SETUP_PATH" has been defined, use it, otherwise use defaults. + $file = defined('GRAV_SETUP_PATH') ? GRAV_SETUP_PATH : GRAV_ROOT . '/setup.php'; $setup = is_file($file) ? (array) include $file : []; // Add default streams defined in beginning of the class. diff --git a/system/src/Grav/Common/GPM/Installer.php b/system/src/Grav/Common/GPM/Installer.php index a32e1e1b0..6c385b8d8 100644 --- a/system/src/Grav/Common/GPM/Installer.php +++ b/system/src/Grav/Common/GPM/Installer.php @@ -43,6 +43,11 @@ class Installer */ protected static $error = 0; + /** + * @var integer Zip Error Code + */ + protected static $error_zip = 0; + /** * @var string Post install message */ @@ -189,60 +194,11 @@ class Installer return $extracted_folder; } - self::$error = self::getZipError($archive); + self::$error = self::ZIP_EXTRACT_ERROR; + self::$error_zip = $archive; return false; } - /** - * Output a more useful ZIP error - * - * @param $res - * @return string - */ - protected static function getZipError($res) - { - switch($res){ - case ZipArchive::ER_EXISTS: - $error = "File already exists."; - break; - - case ZipArchive::ER_INCONS: - $error = "Zip archive inconsistent."; - break; - - case ZipArchive::ER_MEMORY: - $error = "Malloc failure."; - break; - - case ZipArchive::ER_NOENT: - $error = "No such file."; - break; - - case ZipArchive::ER_NOZIP: - $error = "Not a zip archive."; - break; - - case ZipArchive::ER_OPEN: - $error = "Can't open file."; - break; - - case ZipArchive::ER_READ: - $error = "Read error."; - break; - - case ZipArchive::ER_SEEK: - $error = "Seek error."; - break; - - default: - $error = self::ZIP_EXTRACT_ERROR; - break; - } - - return $error; - } - - /** * Instantiates and returns the package installer class * @@ -509,7 +465,42 @@ class Installer break; case self::ZIP_EXTRACT_ERROR: - $msg = 'An error occurred while extracting the package'; + $msg = 'Unable to extract the package. '; + if (self::$error_zip) { + switch(self::$error_zip) { + case \ZipArchive::ER_EXISTS: + $msg .= "File already exists."; + break; + + case \ZipArchive::ER_INCONS: + $msg .= "Zip archive inconsistent."; + break; + + case \ZipArchive::ER_MEMORY: + $msg .= "Malloc failure."; + break; + + case \ZipArchive::ER_NOENT: + $msg .= "No such file."; + break; + + case \ZipArchive::ER_NOZIP: + $msg .= "Not a zip archive."; + break; + + case \ZipArchive::ER_OPEN: + $msg .= "Can't open file."; + break; + + case \ZipArchive::ER_READ: + $msg .= "Read error."; + break; + + case \ZipArchive::ER_SEEK: + $msg .= "Seek error."; + break; + } + } break; default: diff --git a/system/src/Grav/Common/Markdown/ParsedownGravTrait.php b/system/src/Grav/Common/Markdown/ParsedownGravTrait.php index 8c384c385..59be69b0e 100644 --- a/system/src/Grav/Common/Markdown/ParsedownGravTrait.php +++ b/system/src/Grav/Common/Markdown/ParsedownGravTrait.php @@ -243,19 +243,6 @@ trait ParsedownGravTrait return $excerpt; } - /** - * Return Text as-is to get around Parsedown security fixes - * which break these fields - * - * @param $text - * @param $nestable - * @return mixed - */ - public function html($text, $nestable) - { - return $text; - } - // For extending this class via plugins public function __call($method, $args) { diff --git a/system/src/Grav/Common/Page/Medium/AudioMedium.php b/system/src/Grav/Common/Page/Medium/AudioMedium.php index c3bac7bd6..aae359776 100644 --- a/system/src/Grav/Common/Page/Medium/AudioMedium.php +++ b/system/src/Grav/Common/Page/Medium/AudioMedium.php @@ -25,7 +25,6 @@ class AudioMedium extends Medium return [ 'name' => 'audio', - 'handler' => 'html', 'text' => 'Your browser does not support the audio tag.', 'attributes' => $attributes ]; diff --git a/system/src/Grav/Common/Page/Medium/VideoMedium.php b/system/src/Grav/Common/Page/Medium/VideoMedium.php index f7923c367..b3c8eed85 100644 --- a/system/src/Grav/Common/Page/Medium/VideoMedium.php +++ b/system/src/Grav/Common/Page/Medium/VideoMedium.php @@ -25,8 +25,7 @@ class VideoMedium extends Medium return [ 'name' => 'video', - 'handler' => 'html', - 'text' => 'Your2 browser does not support the video tag.', + 'text' => 'Your browser does not support the video tag.', 'attributes' => $attributes ]; } diff --git a/system/src/Grav/Common/Twig/TwigExtension.php b/system/src/Grav/Common/Twig/TwigExtension.php index 6de7e106b..fb27ec823 100644 --- a/system/src/Grav/Common/Twig/TwigExtension.php +++ b/system/src/Grav/Common/Twig/TwigExtension.php @@ -371,25 +371,14 @@ class TwigExtension extends \Twig_Extension implements \Twig_Extension_GlobalsIn * * @param array $input * @param string $filter - * @param array|int $direction + * @param int $direction + * @param int $sort_flags * * @return array */ - public function sortByKeyFilter($input, $filter, $direction = SORT_ASC) + public function sortByKeyFilter($input, $filter, $direction = SORT_ASC, $sort_flags = SORT_REGULAR) { - $output = []; - - if (!is_array($input) || !$input) { - return $output; - } - - foreach ($input as $key => $row) { - $output[$key] = $row[$filter]; - } - - array_multisort($output, $direction, $input); - - return $input; + return Utils::sortArrayByKey($input, $filter, $direction, $sort_flags); } /** diff --git a/system/src/Grav/Common/Utils.php b/system/src/Grav/Common/Utils.php index 9193a6708..2736fd904 100644 --- a/system/src/Grav/Common/Utils.php +++ b/system/src/Grav/Common/Utils.php @@ -966,6 +966,32 @@ abstract class Utils return $ordered + $array; } + /** + * Sort an array by a key value in the array + * + * @param $array + * @param $array_key + * @param int $direction + * @param int $sort_flags + * @return array + */ + public static function sortArrayByKey($array, $array_key, $direction = SORT_DESC, $sort_flags = SORT_REGULAR ) + { + $output = []; + + if (!is_array($array) || !$array) { + return $output; + } + + foreach ($array as $key => $row) { + $output[$key] = $row[$array_key]; + } + + array_multisort($output, $direction, $sort_flags, $array); + + return $array; + } + /** * Get's path based on a token * diff --git a/tests/unit/Grav/Common/Markdown/ParsedownTest.php b/tests/unit/Grav/Common/Markdown/ParsedownTest.php index 88bccabfb..e73e11f01 100644 --- a/tests/unit/Grav/Common/Markdown/ParsedownTest.php +++ b/tests/unit/Grav/Common/Markdown/ParsedownTest.php @@ -315,7 +315,7 @@ class ParsedownTest extends \Codeception\TestCase\Test $this->parsedown->text('[cnn.com](http://www.cnn.com)')); $this->assertSame('

google.com

', $this->parsedown->text('[google.com](https://www.google.com)')); - $this->assertSame('

complex url

', + $this->assertSame('

complex url

', $this->parsedown->text('[complex url](https://github.com/getgrav/grav/issues/new?title=[add-resource]%20New%20Plugin/Theme&body=Hello%20**There**)')); } @@ -689,7 +689,7 @@ class ParsedownTest extends \Codeception\TestCase\Test $this->parsedown->text('[Relative Target](../item2-3?target=_blank)')); $this->assertSame('

Relative Rel

', $this->parsedown->text('[Relative Rel](../item2-3?rel=nofollow)')); - $this->assertSame('

Relative Mixed

', + $this->assertSame('

Relative Mixed

', $this->parsedown->text('[Relative Mixed](../item2-3?foo=bar&baz=qux&rel=nofollow&class=button)')); }