diff --git a/README.md b/README.md index a2107f3a..ebd7e77f 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ * Apache2 * mpm_event 권장 -* PHP 7.0 이상 +* PHP 7.2 이상 * php-fpm 권장 * php에서 curl을 실행가능해야 합니다. * MySQL 5.6 이상, 또는 MariaDB 10.0 이상 @@ -32,13 +32,13 @@ sudo -u www-data git clone ssh://git@storage.hided.net:2525/devsam/core.git git clone ssh://git@storage.hided.net:2525/devsam/image.git ``` -> 이미지는 별도의 업데이트 기능을 제공하지 않습니다. 수동으로 git pull을 해야합니다. +> 이미지는 git hook을 이용한 업데이트 기능을 제공하지만 아직 범용성 있는 설계가 되어있진 않습니다. ### 설치 이후 해당 경로를 웹 브라우저를 통해 접근하여 설치를 진행할 수 있습니다. -Database 수는 로그인 관리 서버 1개, 내부 서버 5개로, 총 6개의 Database가 필요합니다. 내부 설정을 고쳐서 서버 수를 늘리거나 줄일 경우 그에 맞는 Database 수가 필요합니다. 또한 Database마다 관리할 별도의 계정을 만드는 것을 추천합니다. +Database 수는 로그인 관리 서버 1개, 내부 서버 7개로, 총 8개의 Database가 필요합니다. 내부 설정을 고쳐서 서버 수를 늘리거나 줄일 경우 그에 맞는 Database 수가 필요합니다. 또한 Database마다 관리할 별도의 계정을 만드는 것을 추천합니다. 설치 이후에는 서버관리 페이지에서 **업데이트** 명령을 통해 원 클릭 업데이트가 가능합니다. diff --git a/composer.json b/composer.json index ea4ebc53..9e01db8e 100644 --- a/composer.json +++ b/composer.json @@ -17,7 +17,7 @@ "vlucas/valitron": "^1.4", "php-extended/php-tail": "^2.1", "pguardiario/phpuri": "^1.0", - "symfony/lock": "^3.4" + "symfony/lock": "^4.1" }, "autoload": { "psr-4": { diff --git a/composer.lock b/composer.lock index 5ce4f436..aaf17568 100644 --- a/composer.lock +++ b/composer.lock @@ -1,10 +1,10 @@ { "_readme": [ "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "a329d39be5161c87438d41f9adf4417b", + "content-hash": "1414d4ab0c85125f75e200bf7231489d", "packages": [ { "name": "brandonwamboldt/utilphp", @@ -90,16 +90,16 @@ }, { "name": "guzzlehttp/guzzle", - "version": "6.3.2", + "version": "6.3.3", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "68d0ea14d5a3f42a20e87632a5f84931e2709c90" + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/68d0ea14d5a3f42a20e87632a5f84931e2709c90", - "reference": "68d0ea14d5a3f42a20e87632a5f84931e2709c90", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba", + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba", "shasum": "" }, "require": { @@ -109,7 +109,7 @@ }, "require-dev": { "ext-curl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", "psr/log": "^1.0" }, "suggest": { @@ -151,7 +151,7 @@ "rest", "web service" ], - "time": "2018-03-26T16:33:04+00:00" + "time": "2018-04-22T15:46:56+00:00" }, { "name": "guzzlehttp/promises", @@ -271,16 +271,16 @@ }, { "name": "leafo/scssphp", - "version": "v0.7.5", + "version": "v0.7.6", "source": { "type": "git", "url": "https://github.com/leafo/scssphp.git", - "reference": "8b538d828bbb75276974605c4a1a435e939da74e" + "reference": "585f6ae84de62ffecf69c23805f25d78d7e4b794" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/leafo/scssphp/zipball/8b538d828bbb75276974605c4a1a435e939da74e", - "reference": "8b538d828bbb75276974605c4a1a435e939da74e", + "url": "https://api.github.com/repos/leafo/scssphp/zipball/585f6ae84de62ffecf69c23805f25d78d7e4b794", + "reference": "585f6ae84de62ffecf69c23805f25d78d7e4b794", "shasum": "" }, "require": { @@ -319,7 +319,7 @@ "scss", "stylesheet" ], - "time": "2018-02-09T02:04:21+00:00" + "time": "2018-05-24T02:18:53+00:00" }, { "name": "league/plates", @@ -454,54 +454,6 @@ ], "time": "2017-06-19T01:22:40+00:00" }, - { - "name": "paragonie/random_compat", - "version": "v2.0.12", - "source": { - "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "258c89a6b97de7dfaf5b8c7607d0478e236b04fb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/258c89a6b97de7dfaf5b8c7607d0478e236b04fb", - "reference": "258c89a6b97de7dfaf5b8c7607d0478e236b04fb", - "shasum": "" - }, - "require": { - "php": ">=5.2.0" - }, - "require-dev": { - "phpunit/phpunit": "4.*|5.*" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." - }, - "type": "library", - "autoload": { - "files": [ - "lib/random.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" - } - ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", - "keywords": [ - "csprng", - "pseudorandom", - "random" - ], - "time": "2018-04-04T21:24:14+00:00" - }, { "name": "pguardiario/phpuri", "version": "1.0", @@ -528,16 +480,16 @@ }, { "name": "php-extended/php-system", - "version": "1.3.0", + "version": "1.4.0", "source": { "type": "git", - "url": "https://github.com/php-extended/php-system.git", - "reference": "66727d5dc0a665916bd7e08bcfb9820e7be1d20c" + "url": "https://gitlab.com/php-extended/php-system.git", + "reference": "9e6b3c2009ef56dc123efc43900e40cdf217ace0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-extended/php-system/zipball/66727d5dc0a665916bd7e08bcfb9820e7be1d20c", - "reference": "66727d5dc0a665916bd7e08bcfb9820e7be1d20c", + "url": "https://gitlab.com/api/v4/projects/php-extended%2Fphp-system/repository/archive.zip?sha=9e6b3c2009ef56dc123efc43900e40cdf217ace0", + "reference": "9e6b3c2009ef56dc123efc43900e40cdf217ace0", "shasum": "" }, "type": "library", @@ -553,31 +505,31 @@ "authors": [ { "name": "Anastaszor", - "role": "developer" + "role": "Developer" } ], "description": "A generic way to find informations about the running system", - "homepage": "https://github.com/php-extended/php-system", + "homepage": "https://gitlab.com/php-extended/php-system", "keywords": [ "operating system", "os", "php", "system" ], - "time": "2017-01-14T11:56:24+00:00" + "time": "2018-06-07T06:03:27+00:00" }, { "name": "php-extended/php-tail", - "version": "2.1.1", + "version": "2.2.0", "source": { "type": "git", - "url": "https://github.com/php-extended/php-tail.git", - "reference": "eabf7bee64f8c30fe9b9e1176562fdb903c54ae7" + "url": "https://gitlab.com/php-extended/php-tail.git", + "reference": "19fbd3a79ccc071954f28296b2c44754335304a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-extended/php-tail/zipball/eabf7bee64f8c30fe9b9e1176562fdb903c54ae7", - "reference": "eabf7bee64f8c30fe9b9e1176562fdb903c54ae7", + "url": "https://gitlab.com/api/v4/projects/php-extended%2Fphp-tail/repository/archive.zip?sha=19fbd3a79ccc071954f28296b2c44754335304a0", + "reference": "19fbd3a79ccc071954f28296b2c44754335304a0", "shasum": "" }, "require": { @@ -596,11 +548,11 @@ "authors": [ { "name": "Anastaszor", - "role": "developer" + "role": "Developer" } ], "description": "A smart way to tail files depending of the environment", - "homepage": "https://github.com/php-extended/php-tail", + "homepage": "https://gitlab.com/php-extended/php-tail", "keywords": [ "cheat", "mighty", @@ -608,7 +560,7 @@ "php", "tail" ], - "time": "2017-07-25T13:52:42+00:00" + "time": "2018-06-07T06:04:58+00:00" }, { "name": "psr/http-message", @@ -752,22 +704,21 @@ }, { "name": "symfony/lock", - "version": "v3.4.9", + "version": "v4.1.0", "source": { "type": "git", "url": "https://github.com/symfony/lock.git", - "reference": "3a707193326d31603824706e34a95af899a59788" + "reference": "a1df50492e927ad00ca271f29adb2949a14f2a5a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/lock/zipball/3a707193326d31603824706e34a95af899a59788", - "reference": "3a707193326d31603824706e34a95af899a59788", + "url": "https://api.github.com/repos/symfony/lock/zipball/a1df50492e927ad00ca271f29adb2949a14f2a5a", + "reference": "a1df50492e927ad00ca271f29adb2949a14f2a5a", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "psr/log": "~1.0", - "symfony/polyfill-php70": "~1.0" + "php": "^7.1.3", + "psr/log": "~1.0" }, "require-dev": { "predis/predis": "~1.0" @@ -775,7 +726,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.1-dev" } }, "autoload": { @@ -810,96 +761,40 @@ "redlock", "semaphore" ], - "time": "2018-04-29T14:44:26+00:00" - }, - { - "name": "symfony/polyfill-php70", - "version": "v1.8.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "77454693d8f10dd23bb24955cffd2d82db1007a6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/77454693d8f10dd23bb24955cffd2d82db1007a6", - "reference": "77454693d8f10dd23bb24955cffd2d82db1007a6", - "shasum": "" - }, - "require": { - "paragonie/random_compat": "~1.0|~2.0", - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php70\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2018-04-26T10:06:28+00:00" + "time": "2018-05-30T07:26:09+00:00" }, { "name": "vlucas/valitron", - "version": "v1.4.2", + "version": "v1.4.3", "source": { "type": "git", "url": "https://github.com/vlucas/valitron.git", - "reference": "87775d76268beda2afa085bdd6e44b17e98907c6" + "reference": "3c5463315bfa23b17f8949b100a960d035234e43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/valitron/zipball/87775d76268beda2afa085bdd6e44b17e98907c6", - "reference": "87775d76268beda2afa085bdd6e44b17e98907c6", + "url": "https://api.github.com/repos/vlucas/valitron/zipball/3c5463315bfa23b17f8949b100a960d035234e43", + "reference": "3c5463315bfa23b17f8949b100a960d035234e43", "shasum": "" }, "require": { "php": ">=5.3.2" }, "require-dev": { - "phpunit/phpunit": "~4.0" + "phpunit/phpunit": "^4.8.35 || ^5.5 || ^6.5" + }, + "suggest": { + "ext-mbstring": "It can support the multiple bytes string length." }, "type": "library", "autoload": { - "psr-0": { - "Valitron": "src/" + "psr-4": { + "Valitron\\": "src/Valitron" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD" + "BSD-3-Clause" ], "authors": [ { @@ -915,7 +810,7 @@ "validation", "validator" ], - "time": "2017-10-30T23:15:06+00:00" + "time": "2018-05-06T10:45:26+00:00" } ], "packages-dev": [], diff --git a/composer.phar b/composer.phar index 041775a1..4055d874 100644 Binary files a/composer.phar and b/composer.phar differ diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index e8398d99..0f375530 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -6,21 +6,14 @@ $vendorDir = dirname(dirname(__FILE__)); $baseDir = dirname($vendorDir); return array( - 'ArithmeticError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php', - 'AssertionError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/AssertionError.php', 'DB' => $vendorDir . '/sergeytsalkov/meekrodb/db.class.php', 'DBHelper' => $vendorDir . '/sergeytsalkov/meekrodb/db.class.php', 'DBTransaction' => $vendorDir . '/sergeytsalkov/meekrodb/db.class.php', - 'DivisionByZeroError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php', - 'Error' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/Error.php', 'FB' => $vendorDir . '/firephp/firephp-core/lib/FirePHPCore/fb.php', 'FirePHP' => $vendorDir . '/firephp/firephp-core/lib/FirePHPCore/FirePHP.class.php', 'MeekroDB' => $vendorDir . '/sergeytsalkov/meekrodb/db.class.php', 'MeekroDBEval' => $vendorDir . '/sergeytsalkov/meekrodb/db.class.php', 'MeekroDBException' => $vendorDir . '/sergeytsalkov/meekrodb/db.class.php', - 'ParseError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/ParseError.php', - 'SessionUpdateTimestampHandlerInterface' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/SessionUpdateTimestampHandlerInterface.php', - 'TypeError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/TypeError.php', 'WhereClause' => $vendorDir . '/sergeytsalkov/meekrodb/db.class.php', 'kakao\\KakaoKey' => $baseDir . '/d_setting/KakaoKey.php', 'sammo\\RootDB' => $baseDir . '/d_setting/RootDB.php', diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php index 350100b3..325499f6 100644 --- a/vendor/composer/autoload_files.php +++ b/vendor/composer/autoload_files.php @@ -6,10 +6,8 @@ $vendorDir = dirname(dirname(__FILE__)); $baseDir = dirname($vendorDir); return array( - '5255c38a0faeba867671b61dfda6d864' => $vendorDir . '/paragonie/random_compat/lib/random.php', 'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php', 'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php', - '023d27dca8066ef29e6739335ea73bad' => $vendorDir . '/symfony/polyfill-php70/bootstrap.php', '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php', '5b154887902198b16314243c6e0e3e19' => $vendorDir . '/pguardiario/phpuri/phpuri.php', '870dc64919afa8b0f700701bb2c6a783' => $baseDir . '/f_config/config.php', diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php index fef8e6b2..bf34e7c9 100644 --- a/vendor/composer/autoload_namespaces.php +++ b/vendor/composer/autoload_namespaces.php @@ -7,5 +7,4 @@ $baseDir = dirname($vendorDir); return array( 'utilphp\\' => array($vendorDir . '/brandonwamboldt/utilphp/src'), - 'Valitron' => array($vendorDir . '/vlucas/valitron/src'), ); diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php index c11d2d90..720e426f 100644 --- a/vendor/composer/autoload_psr4.php +++ b/vendor/composer/autoload_psr4.php @@ -8,7 +8,7 @@ $baseDir = dirname($vendorDir); return array( 'sammo\\' => array($baseDir . '/src/sammo'), 'kakao\\' => array($baseDir . '/src/kakao'), - 'Symfony\\Polyfill\\Php70\\' => array($vendorDir . '/symfony/polyfill-php70'), + 'Valitron\\' => array($vendorDir . '/vlucas/valitron/src/Valitron'), 'Symfony\\Component\\Lock\\' => array($vendorDir . '/symfony/lock'), 'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'), 'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src'), diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 0811ecbf..29fea1b1 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -7,10 +7,8 @@ namespace Composer\Autoload; class ComposerStaticInit67b09c83b85c3bc0027caefe5bba171a { public static $files = array ( - '5255c38a0faeba867671b61dfda6d864' => __DIR__ . '/..' . '/paragonie/random_compat/lib/random.php', 'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php', 'a0edc8309cc5e1d60e3047b5df6b7052' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/functions_include.php', - '023d27dca8066ef29e6739335ea73bad' => __DIR__ . '/..' . '/symfony/polyfill-php70/bootstrap.php', '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php', '5b154887902198b16314243c6e0e3e19' => __DIR__ . '/..' . '/pguardiario/phpuri/phpuri.php', '870dc64919afa8b0f700701bb2c6a783' => __DIR__ . '/../..' . '/f_config/config.php', @@ -25,9 +23,12 @@ class ComposerStaticInit67b09c83b85c3bc0027caefe5bba171a array ( 'kakao\\' => 6, ), + 'V' => + array ( + 'Valitron\\' => 9, + ), 'S' => array ( - 'Symfony\\Polyfill\\Php70\\' => 23, 'Symfony\\Component\\Lock\\' => 23, ), 'P' => @@ -63,9 +64,9 @@ class ComposerStaticInit67b09c83b85c3bc0027caefe5bba171a array ( 0 => __DIR__ . '/../..' . '/src/kakao', ), - 'Symfony\\Polyfill\\Php70\\' => + 'Valitron\\' => array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-php70', + 0 => __DIR__ . '/..' . '/vlucas/valitron/src/Valitron', ), 'Symfony\\Component\\Lock\\' => array ( @@ -121,31 +122,17 @@ class ComposerStaticInit67b09c83b85c3bc0027caefe5bba171a 0 => __DIR__ . '/..' . '/brandonwamboldt/utilphp/src', ), ), - 'V' => - array ( - 'Valitron' => - array ( - 0 => __DIR__ . '/..' . '/vlucas/valitron/src', - ), - ), ); public static $classMap = array ( - 'ArithmeticError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php', - 'AssertionError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/AssertionError.php', 'DB' => __DIR__ . '/..' . '/sergeytsalkov/meekrodb/db.class.php', 'DBHelper' => __DIR__ . '/..' . '/sergeytsalkov/meekrodb/db.class.php', 'DBTransaction' => __DIR__ . '/..' . '/sergeytsalkov/meekrodb/db.class.php', - 'DivisionByZeroError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php', - 'Error' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/Error.php', 'FB' => __DIR__ . '/..' . '/firephp/firephp-core/lib/FirePHPCore/fb.php', 'FirePHP' => __DIR__ . '/..' . '/firephp/firephp-core/lib/FirePHPCore/FirePHP.class.php', 'MeekroDB' => __DIR__ . '/..' . '/sergeytsalkov/meekrodb/db.class.php', 'MeekroDBEval' => __DIR__ . '/..' . '/sergeytsalkov/meekrodb/db.class.php', 'MeekroDBException' => __DIR__ . '/..' . '/sergeytsalkov/meekrodb/db.class.php', - 'ParseError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/ParseError.php', - 'SessionUpdateTimestampHandlerInterface' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/SessionUpdateTimestampHandlerInterface.php', - 'TypeError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/TypeError.php', 'WhereClause' => __DIR__ . '/..' . '/sergeytsalkov/meekrodb/db.class.php', 'kakao\\KakaoKey' => __DIR__ . '/../..' . '/d_setting/KakaoKey.php', 'sammo\\RootDB' => __DIR__ . '/../..' . '/d_setting/RootDB.php', diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 5c44110b..b9f77723 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -87,17 +87,17 @@ }, { "name": "guzzlehttp/guzzle", - "version": "6.3.2", - "version_normalized": "6.3.2.0", + "version": "6.3.3", + "version_normalized": "6.3.3.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "68d0ea14d5a3f42a20e87632a5f84931e2709c90" + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/68d0ea14d5a3f42a20e87632a5f84931e2709c90", - "reference": "68d0ea14d5a3f42a20e87632a5f84931e2709c90", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba", + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba", "shasum": "" }, "require": { @@ -107,13 +107,13 @@ }, "require-dev": { "ext-curl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", "psr/log": "^1.0" }, "suggest": { "psr/log": "Required for using the Log middleware" }, - "time": "2018-03-26T16:33:04+00:00", + "time": "2018-04-22T15:46:56+00:00", "type": "library", "extra": { "branch-alias": { @@ -274,17 +274,17 @@ }, { "name": "leafo/scssphp", - "version": "v0.7.5", - "version_normalized": "0.7.5.0", + "version": "v0.7.6", + "version_normalized": "0.7.6.0", "source": { "type": "git", "url": "https://github.com/leafo/scssphp.git", - "reference": "8b538d828bbb75276974605c4a1a435e939da74e" + "reference": "585f6ae84de62ffecf69c23805f25d78d7e4b794" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/leafo/scssphp/zipball/8b538d828bbb75276974605c4a1a435e939da74e", - "reference": "8b538d828bbb75276974605c4a1a435e939da74e", + "url": "https://api.github.com/repos/leafo/scssphp/zipball/585f6ae84de62ffecf69c23805f25d78d7e4b794", + "reference": "585f6ae84de62ffecf69c23805f25d78d7e4b794", "shasum": "" }, "require": { @@ -294,7 +294,7 @@ "phpunit/phpunit": "~4.6", "squizlabs/php_codesniffer": "~2.5" }, - "time": "2018-02-09T02:04:21+00:00", + "time": "2018-05-24T02:18:53+00:00", "bin": [ "bin/pscss" ], @@ -463,56 +463,6 @@ "psr-3" ] }, - { - "name": "paragonie/random_compat", - "version": "v2.0.12", - "version_normalized": "2.0.12.0", - "source": { - "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "258c89a6b97de7dfaf5b8c7607d0478e236b04fb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/258c89a6b97de7dfaf5b8c7607d0478e236b04fb", - "reference": "258c89a6b97de7dfaf5b8c7607d0478e236b04fb", - "shasum": "" - }, - "require": { - "php": ">=5.2.0" - }, - "require-dev": { - "phpunit/phpunit": "4.*|5.*" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." - }, - "time": "2018-04-04T21:24:14+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "lib/random.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" - } - ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", - "keywords": [ - "csprng", - "pseudorandom", - "random" - ] - }, { "name": "pguardiario/phpuri", "version": "1.0", @@ -541,20 +491,20 @@ }, { "name": "php-extended/php-system", - "version": "1.3.0", - "version_normalized": "1.3.0.0", + "version": "1.4.0", + "version_normalized": "1.4.0.0", "source": { "type": "git", - "url": "https://github.com/php-extended/php-system.git", - "reference": "66727d5dc0a665916bd7e08bcfb9820e7be1d20c" + "url": "https://gitlab.com/php-extended/php-system.git", + "reference": "9e6b3c2009ef56dc123efc43900e40cdf217ace0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-extended/php-system/zipball/66727d5dc0a665916bd7e08bcfb9820e7be1d20c", - "reference": "66727d5dc0a665916bd7e08bcfb9820e7be1d20c", + "url": "https://gitlab.com/api/v4/projects/php-extended%2Fphp-system/repository/archive.zip?sha=9e6b3c2009ef56dc123efc43900e40cdf217ace0", + "reference": "9e6b3c2009ef56dc123efc43900e40cdf217ace0", "shasum": "" }, - "time": "2017-01-14T11:56:24+00:00", + "time": "2018-06-07T06:03:27+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -569,11 +519,11 @@ "authors": [ { "name": "Anastaszor", - "role": "developer" + "role": "Developer" } ], "description": "A generic way to find informations about the running system", - "homepage": "https://github.com/php-extended/php-system", + "homepage": "https://gitlab.com/php-extended/php-system", "keywords": [ "operating system", "os", @@ -583,23 +533,23 @@ }, { "name": "php-extended/php-tail", - "version": "2.1.1", - "version_normalized": "2.1.1.0", + "version": "2.2.0", + "version_normalized": "2.2.0.0", "source": { "type": "git", - "url": "https://github.com/php-extended/php-tail.git", - "reference": "eabf7bee64f8c30fe9b9e1176562fdb903c54ae7" + "url": "https://gitlab.com/php-extended/php-tail.git", + "reference": "19fbd3a79ccc071954f28296b2c44754335304a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-extended/php-tail/zipball/eabf7bee64f8c30fe9b9e1176562fdb903c54ae7", - "reference": "eabf7bee64f8c30fe9b9e1176562fdb903c54ae7", + "url": "https://gitlab.com/api/v4/projects/php-extended%2Fphp-tail/repository/archive.zip?sha=19fbd3a79ccc071954f28296b2c44754335304a0", + "reference": "19fbd3a79ccc071954f28296b2c44754335304a0", "shasum": "" }, "require": { "php-extended/php-system": "^1.2" }, - "time": "2017-07-25T13:52:42+00:00", + "time": "2018-06-07T06:04:58+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -614,11 +564,11 @@ "authors": [ { "name": "Anastaszor", - "role": "developer" + "role": "Developer" } ], "description": "A smart way to tail files depending of the environment", - "homepage": "https://github.com/php-extended/php-tail", + "homepage": "https://gitlab.com/php-extended/php-tail", "keywords": [ "cheat", "mighty", @@ -775,32 +725,31 @@ }, { "name": "symfony/lock", - "version": "v3.4.9", - "version_normalized": "3.4.9.0", + "version": "v4.1.0", + "version_normalized": "4.1.0.0", "source": { "type": "git", "url": "https://github.com/symfony/lock.git", - "reference": "3a707193326d31603824706e34a95af899a59788" + "reference": "a1df50492e927ad00ca271f29adb2949a14f2a5a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/lock/zipball/3a707193326d31603824706e34a95af899a59788", - "reference": "3a707193326d31603824706e34a95af899a59788", + "url": "https://api.github.com/repos/symfony/lock/zipball/a1df50492e927ad00ca271f29adb2949a14f2a5a", + "reference": "a1df50492e927ad00ca271f29adb2949a14f2a5a", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "psr/log": "~1.0", - "symfony/polyfill-php70": "~1.0" + "php": "^7.1.3", + "psr/log": "~1.0" }, "require-dev": { "predis/predis": "~1.0" }, - "time": "2018-04-29T14:44:26+00:00", + "time": "2018-05-30T07:26:09+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.1-dev" } }, "installation-source": "dist", @@ -837,99 +786,41 @@ "semaphore" ] }, - { - "name": "symfony/polyfill-php70", - "version": "v1.8.0", - "version_normalized": "1.8.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "77454693d8f10dd23bb24955cffd2d82db1007a6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/77454693d8f10dd23bb24955cffd2d82db1007a6", - "reference": "77454693d8f10dd23bb24955cffd2d82db1007a6", - "shasum": "" - }, - "require": { - "paragonie/random_compat": "~1.0|~2.0", - "php": ">=5.3.3" - }, - "time": "2018-04-26T10:06:28+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php70\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ] - }, { "name": "vlucas/valitron", - "version": "v1.4.2", - "version_normalized": "1.4.2.0", + "version": "v1.4.3", + "version_normalized": "1.4.3.0", "source": { "type": "git", "url": "https://github.com/vlucas/valitron.git", - "reference": "87775d76268beda2afa085bdd6e44b17e98907c6" + "reference": "3c5463315bfa23b17f8949b100a960d035234e43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/valitron/zipball/87775d76268beda2afa085bdd6e44b17e98907c6", - "reference": "87775d76268beda2afa085bdd6e44b17e98907c6", + "url": "https://api.github.com/repos/vlucas/valitron/zipball/3c5463315bfa23b17f8949b100a960d035234e43", + "reference": "3c5463315bfa23b17f8949b100a960d035234e43", "shasum": "" }, "require": { "php": ">=5.3.2" }, "require-dev": { - "phpunit/phpunit": "~4.0" + "phpunit/phpunit": "^4.8.35 || ^5.5 || ^6.5" }, - "time": "2017-10-30T23:15:06+00:00", + "suggest": { + "ext-mbstring": "It can support the multiple bytes string length." + }, + "time": "2018-05-06T10:45:26+00:00", "type": "library", "installation-source": "dist", "autoload": { - "psr-0": { - "Valitron": "src/" + "psr-4": { + "Valitron\\": "src/Valitron" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD" + "BSD-3-Clause" ], "authors": [ { diff --git a/vendor/guzzlehttp/guzzle/CHANGELOG.md b/vendor/guzzlehttp/guzzle/CHANGELOG.md index 25fcbb3e..17badd75 100644 --- a/vendor/guzzlehttp/guzzle/CHANGELOG.md +++ b/vendor/guzzlehttp/guzzle/CHANGELOG.md @@ -1,5 +1,10 @@ # Change Log +## 6.3.3 - 2018-04-22 + +* Fix: Default headers when decode_content is specified + + ## 6.3.2 - 2018-03-26 * Fix: Release process diff --git a/vendor/guzzlehttp/guzzle/composer.json b/vendor/guzzlehttp/guzzle/composer.json index 0ebf81e0..1f328e30 100644 --- a/vendor/guzzlehttp/guzzle/composer.json +++ b/vendor/guzzlehttp/guzzle/composer.json @@ -19,7 +19,7 @@ }, "require-dev": { "ext-curl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", "psr/log": "^1.0" }, "autoload": { diff --git a/vendor/guzzlehttp/guzzle/src/Client.php b/vendor/guzzlehttp/guzzle/src/Client.php index 6b35d892..80417918 100644 --- a/vendor/guzzlehttp/guzzle/src/Client.php +++ b/vendor/guzzlehttp/guzzle/src/Client.php @@ -331,7 +331,7 @@ class Client implements ClientInterface && $options['decode_content'] !== true ) { // Ensure that we don't have the header in different case and set the new value. - $options['_conditional'] = Psr7\_caseless_remove(['Accept-Encoding'], $modify['set_headers']); + $options['_conditional'] = Psr7\_caseless_remove(['Accept-Encoding'], $options['_conditional']); $modify['set_headers']['Accept-Encoding'] = $options['decode_content']; } diff --git a/vendor/guzzlehttp/guzzle/src/ClientInterface.php b/vendor/guzzlehttp/guzzle/src/ClientInterface.php index 8de39166..2dbcffa4 100644 --- a/vendor/guzzlehttp/guzzle/src/ClientInterface.php +++ b/vendor/guzzlehttp/guzzle/src/ClientInterface.php @@ -12,7 +12,7 @@ use Psr\Http\Message\UriInterface; */ interface ClientInterface { - const VERSION = '6.3.2'; + const VERSION = '6.3.3'; /** * Send an HTTP request. diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php b/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php index 4c404077..f6993943 100644 --- a/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php +++ b/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php @@ -377,8 +377,8 @@ class SetCookie // Check if any of the invalid characters are present in the cookie name if (preg_match( '/[\x00-\x20\x22\x28-\x29\x2c\x2f\x3a-\x40\x5c\x7b\x7d\x7f]/', - $name) - ) { + $name + )) { return 'Cookie name must not contain invalid characters: ASCII ' . 'Control characters (0-31;127), space, tab and the ' . 'following characters: ()<>@,;:\"/?={}'; diff --git a/vendor/guzzlehttp/guzzle/src/Middleware.php b/vendor/guzzlehttp/guzzle/src/Middleware.php index 6c33eec4..d4ad75c9 100644 --- a/vendor/guzzlehttp/guzzle/src/Middleware.php +++ b/vendor/guzzlehttp/guzzle/src/Middleware.php @@ -73,7 +73,7 @@ final class Middleware /** * Middleware that pushes history data to an ArrayAccess container. * - * @param array $container Container to hold the history (by reference). + * @param array|\ArrayAccess $container Container to hold the history (by reference). * * @return callable Returns a function that accepts the next handler. * @throws \InvalidArgumentException if container is not an array or ArrayAccess. diff --git a/vendor/leafo/scssphp/example/Server.php b/vendor/leafo/scssphp/example/Server.php index a8dc0457..6ea97018 100644 --- a/vendor/leafo/scssphp/example/Server.php +++ b/vendor/leafo/scssphp/example/Server.php @@ -207,7 +207,7 @@ class Server $elapsed = round((microtime(true) - $start), 4); $v = Version::VERSION; - $t = date('r'); + $t = gmdate('r'); $css = "/* compiled by scssphp $v on $t (${elapsed}s) */\n\n" . $css; $etag = md5($css); @@ -329,7 +329,7 @@ class Server try { list($css, $etag) = $this->compile($input, $output); - $lastModified = gmdate('D, d M Y H:i:s', filemtime($output)) . ' GMT'; + $lastModified = gmdate('r', filemtime($output)); header('Last-Modified: ' . $lastModified); header('Content-type: text/css'); @@ -371,7 +371,7 @@ class Server return; } - $lastModified = gmdate('D, d M Y H:i:s', $mtime) . ' GMT'; + $lastModified = gmdate('r', $mtime); header('Last-Modified: ' . $lastModified); echo file_get_contents($output); @@ -510,8 +510,6 @@ class Server $this->scss = $scss; $this->showErrorsAsCSS = false; - if (! ini_get('date.timezone')) { - throw new ServerException('Default date.timezone not set'); - } + date_default_timezone_set('UTC'); } } diff --git a/vendor/leafo/scssphp/src/Compiler.php b/vendor/leafo/scssphp/src/Compiler.php index 292e960e..72df991e 100644 --- a/vendor/leafo/scssphp/src/Compiler.php +++ b/vendor/leafo/scssphp/src/Compiler.php @@ -316,9 +316,16 @@ class Compiler $out->parent = $this->scope; $out->selectors = $selectors; $out->depth = $this->env->depth; - $out->sourceName = $this->env->block->sourceName; - $out->sourceLine = $this->env->block->sourceLine; - $out->sourceColumn = $this->env->block->sourceColumn; + + if ($this->env->block instanceof Block) { + $out->sourceName = $this->env->block->sourceName; + $out->sourceLine = $this->env->block->sourceLine; + $out->sourceColumn = $this->env->block->sourceColumn; + } else { + $out->sourceName = null; + $out->sourceLine = null; + $out->sourceColumn = null; + } return $out; } @@ -2694,7 +2701,9 @@ class Compiler $b = round($b); if (count($value) === 5 && $value[4] !== 1) { // rgba - return 'rgba(' . $r . ', ' . $g . ', ' . $b . ', ' . $value[4] . ')'; + $a = new Node\Number($value[4], ''); + + return 'rgba(' . $r . ', ' . $g . ', ' . $b . ', ' . $a . ')'; } $h = sprintf('#%02x%02x%02x', $r, $g, $b); @@ -4331,7 +4340,7 @@ class Compiler protected function libRgba($args) { if ($color = $this->coerceColor($args[0])) { - $num = ! isset($args[1]) ? $args[3] : $args[1]; + $num = isset($args[3]) ? $args[3] : $args[1]; $alpha = $this->assertNumber($num); $color[4] = $alpha; @@ -4526,7 +4535,7 @@ class Compiler ]; if ($firstAlpha != 1.0 || $secondAlpha != 1.0) { - $new[] = $firstAlpha * $weight + $secondAlpha * ($weight - 1); + $new[] = $firstAlpha * $weight + $secondAlpha * (1 - $weight); } return $this->fixColor($new); diff --git a/vendor/leafo/scssphp/src/Parser.php b/vendor/leafo/scssphp/src/Parser.php index 6fdea3e2..de86f094 100644 --- a/vendor/leafo/scssphp/src/Parser.php +++ b/vendor/leafo/scssphp/src/Parser.php @@ -1302,6 +1302,21 @@ class Parser { $s = $this->seek(); + if ($this->literal('url(') && $this->match('data:([a-z]+)\/([a-z0-9.+-]+);base64,', $m, false)) { + $len = strspn($this->buffer, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwyxz0123456789+/=', $this->count); + + $this->count += $len; + + if ($this->literal(')')) { + $content = substr($this->buffer, $s, $this->count - $s); + $out = [Type::T_KEYWORD, $content]; + + return true; + } + } + + $this->seek($s); + if ($this->literal('not', false) && $this->whitespace() && $this->value($inner)) { $out = [Type::T_UNARY, 'not', $inner, $this->inParens]; diff --git a/vendor/leafo/scssphp/src/Version.php b/vendor/leafo/scssphp/src/Version.php index 3b8dcd00..c8a56a5b 100644 --- a/vendor/leafo/scssphp/src/Version.php +++ b/vendor/leafo/scssphp/src/Version.php @@ -18,5 +18,5 @@ namespace Leafo\ScssPhp; */ class Version { - const VERSION = 'v0.7.5'; + const VERSION = 'v0.7.6'; } diff --git a/vendor/paragonie/random_compat/LICENSE b/vendor/paragonie/random_compat/LICENSE deleted file mode 100644 index 45c7017d..00000000 --- a/vendor/paragonie/random_compat/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 Paragon Initiative Enterprises - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - diff --git a/vendor/paragonie/random_compat/build-phar.sh b/vendor/paragonie/random_compat/build-phar.sh deleted file mode 100644 index b4a5ba31..00000000 --- a/vendor/paragonie/random_compat/build-phar.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash - -basedir=$( dirname $( readlink -f ${BASH_SOURCE[0]} ) ) - -php -dphar.readonly=0 "$basedir/other/build_phar.php" $* \ No newline at end of file diff --git a/vendor/paragonie/random_compat/composer.json b/vendor/paragonie/random_compat/composer.json deleted file mode 100644 index 1c5978c6..00000000 --- a/vendor/paragonie/random_compat/composer.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "paragonie/random_compat", - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", - "keywords": [ - "csprng", - "random", - "pseudorandom" - ], - "license": "MIT", - "type": "library", - "authors": [ - { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" - } - ], - "support": { - "issues": "https://github.com/paragonie/random_compat/issues", - "email": "info@paragonie.com", - "source": "https://github.com/paragonie/random_compat" - }, - "require": { - "php": ">=5.2.0" - }, - "require-dev": { - "phpunit/phpunit": "4.*|5.*" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." - }, - "autoload": { - "files": [ - "lib/random.php" - ] - } -} diff --git a/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey b/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey deleted file mode 100644 index eb50ebfc..00000000 --- a/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN PUBLIC KEY----- -MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEEd+wCqJDrx5B4OldM0dQE0ZMX+lx1ZWm -pui0SUqD4G29L3NGsz9UhJ/0HjBdbnkhIK5xviT0X5vtjacF6ajgcCArbTB+ds+p -+h7Q084NuSuIpNb6YPfoUFgC/CL9kAoc ------END PUBLIC KEY----- diff --git a/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey.asc b/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey.asc deleted file mode 100644 index 6a1d7f30..00000000 --- a/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey.asc +++ /dev/null @@ -1,11 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: GnuPG v2.0.22 (MingW32) - -iQEcBAABAgAGBQJWtW1hAAoJEGuXocKCZATaJf0H+wbZGgskK1dcRTsuVJl9IWip -QwGw/qIKI280SD6/ckoUMxKDCJiFuPR14zmqnS36k7N5UNPnpdTJTS8T11jttSpg -1LCmgpbEIpgaTah+cELDqFCav99fS+bEiAL5lWDAHBTE/XPjGVCqeehyPYref4IW -NDBIEsvnHPHPLsn6X5jq4+Yj5oUixgxaMPiR+bcO4Sh+RzOVB6i2D0upWfRXBFXA -NNnsg9/zjvoC7ZW73y9uSH+dPJTt/Vgfeiv52/v41XliyzbUyLalf02GNPY+9goV -JHG1ulEEBJOCiUD9cE1PUIJwHA/HqyhHIvV350YoEFiHl8iSwm7SiZu5kPjaq74= -=B6+8 ------END PGP SIGNATURE----- diff --git a/vendor/paragonie/random_compat/lib/byte_safe_strings.php b/vendor/paragonie/random_compat/lib/byte_safe_strings.php deleted file mode 100644 index 3de86b22..00000000 --- a/vendor/paragonie/random_compat/lib/byte_safe_strings.php +++ /dev/null @@ -1,181 +0,0 @@ - RandomCompat_strlen($binary_string)) { - return ''; - } - - return (string) mb_substr($binary_string, $start, $length, '8bit'); - } - - } else { - - /** - * substr() implementation that isn't brittle to mbstring.func_overload - * - * This version just uses the default substr() - * - * @param string $binary_string - * @param int $start - * @param int $length (optional) - * - * @throws TypeError - * - * @return string - */ - function RandomCompat_substr($binary_string, $start, $length = null) - { - if (!is_string($binary_string)) { - throw new TypeError( - 'RandomCompat_substr(): First argument should be a string' - ); - } - - if (!is_int($start)) { - throw new TypeError( - 'RandomCompat_substr(): Second argument should be an integer' - ); - } - - if ($length !== null) { - if (!is_int($length)) { - throw new TypeError( - 'RandomCompat_substr(): Third argument should be an integer, or omitted' - ); - } - - return (string) substr($binary_string, $start, $length); - } - - return (string) substr($binary_string, $start); - } - } -} diff --git a/vendor/paragonie/random_compat/lib/cast_to_int.php b/vendor/paragonie/random_compat/lib/cast_to_int.php deleted file mode 100644 index 9a4fab99..00000000 --- a/vendor/paragonie/random_compat/lib/cast_to_int.php +++ /dev/null @@ -1,75 +0,0 @@ - operators might accidentally let a float - * through. - * - * @param int|float $number The number we want to convert to an int - * @param bool $fail_open Set to true to not throw an exception - * - * @return float|int - * @psalm-suppress InvalidReturnType - * - * @throws TypeError - */ - function RandomCompat_intval($number, $fail_open = false) - { - if (is_int($number) || is_float($number)) { - $number += 0; - } elseif (is_numeric($number)) { - $number += 0; - } - - if ( - is_float($number) - && - $number > ~PHP_INT_MAX - && - $number < PHP_INT_MAX - ) { - $number = (int) $number; - } - - if (is_int($number)) { - return (int) $number; - } elseif (!$fail_open) { - throw new TypeError( - 'Expected an integer.' - ); - } - return $number; - } -} diff --git a/vendor/paragonie/random_compat/lib/error_polyfill.php b/vendor/paragonie/random_compat/lib/error_polyfill.php deleted file mode 100644 index 6a91990c..00000000 --- a/vendor/paragonie/random_compat/lib/error_polyfill.php +++ /dev/null @@ -1,49 +0,0 @@ -= 70000) { - return; -} - -if (!defined('RANDOM_COMPAT_READ_BUFFER')) { - define('RANDOM_COMPAT_READ_BUFFER', 8); -} - -$RandomCompatDIR = dirname(__FILE__); - -require_once $RandomCompatDIR . '/byte_safe_strings.php'; -require_once $RandomCompatDIR . '/cast_to_int.php'; -require_once $RandomCompatDIR . '/error_polyfill.php'; - -if (!is_callable('random_bytes')) { - /** - * PHP 5.2.0 - 5.6.x way to implement random_bytes() - * - * We use conditional statements here to define the function in accordance - * to the operating environment. It's a micro-optimization. - * - * In order of preference: - * 1. Use libsodium if available. - * 2. fread() /dev/urandom if available (never on Windows) - * 3. mcrypt_create_iv($bytes, MCRYPT_DEV_URANDOM) - * 4. COM('CAPICOM.Utilities.1')->GetRandom() - * - * See RATIONALE.md for our reasoning behind this particular order - */ - if (extension_loaded('libsodium')) { - // See random_bytes_libsodium.php - if (PHP_VERSION_ID >= 50300 && is_callable('\\Sodium\\randombytes_buf')) { - require_once $RandomCompatDIR . '/random_bytes_libsodium.php'; - } elseif (method_exists('Sodium', 'randombytes_buf')) { - require_once $RandomCompatDIR . '/random_bytes_libsodium_legacy.php'; - } - } - - /** - * Reading directly from /dev/urandom: - */ - if (DIRECTORY_SEPARATOR === '/') { - // DIRECTORY_SEPARATOR === '/' on Unix-like OSes -- this is a fast - // way to exclude Windows. - $RandomCompatUrandom = true; - $RandomCompat_basedir = ini_get('open_basedir'); - - if (!empty($RandomCompat_basedir)) { - $RandomCompat_open_basedir = explode( - PATH_SEPARATOR, - strtolower($RandomCompat_basedir) - ); - $RandomCompatUrandom = (array() !== array_intersect( - array('/dev', '/dev/', '/dev/urandom'), - $RandomCompat_open_basedir - )); - $RandomCompat_open_basedir = null; - } - - if ( - !is_callable('random_bytes') - && - $RandomCompatUrandom - && - @is_readable('/dev/urandom') - ) { - // Error suppression on is_readable() in case of an open_basedir - // or safe_mode failure. All we care about is whether or not we - // can read it at this point. If the PHP environment is going to - // panic over trying to see if the file can be read in the first - // place, that is not helpful to us here. - - // See random_bytes_dev_urandom.php - require_once $RandomCompatDIR . '/random_bytes_dev_urandom.php'; - } - // Unset variables after use - $RandomCompat_basedir = null; - } else { - $RandomCompatUrandom = false; - } - - /** - * mcrypt_create_iv() - * - * We only want to use mcypt_create_iv() if: - * - * - random_bytes() hasn't already been defined - * - the mcrypt extensions is loaded - * - One of these two conditions is true: - * - We're on Windows (DIRECTORY_SEPARATOR !== '/') - * - We're not on Windows and /dev/urandom is readabale - * (i.e. we're not in a chroot jail) - * - Special case: - * - If we're not on Windows, but the PHP version is between - * 5.6.10 and 5.6.12, we don't want to use mcrypt. It will - * hang indefinitely. This is bad. - * - If we're on Windows, we want to use PHP >= 5.3.7 or else - * we get insufficient entropy errors. - */ - if ( - !is_callable('random_bytes') - && - // Windows on PHP < 5.3.7 is broken, but non-Windows is not known to be. - (DIRECTORY_SEPARATOR === '/' || PHP_VERSION_ID >= 50307) - && - // Prevent this code from hanging indefinitely on non-Windows; - // see https://bugs.php.net/bug.php?id=69833 - ( - DIRECTORY_SEPARATOR !== '/' || - (PHP_VERSION_ID <= 50609 || PHP_VERSION_ID >= 50613) - ) - && - extension_loaded('mcrypt') - ) { - // See random_bytes_mcrypt.php - require_once $RandomCompatDIR . '/random_bytes_mcrypt.php'; - } - $RandomCompatUrandom = null; - - /** - * This is a Windows-specific fallback, for when the mcrypt extension - * isn't loaded. - */ - if ( - !is_callable('random_bytes') - && - extension_loaded('com_dotnet') - && - class_exists('COM') - ) { - $RandomCompat_disabled_classes = preg_split( - '#\s*,\s*#', - strtolower(ini_get('disable_classes')) - ); - - if (!in_array('com', $RandomCompat_disabled_classes)) { - try { - $RandomCompatCOMtest = new COM('CAPICOM.Utilities.1'); - if (method_exists($RandomCompatCOMtest, 'GetRandom')) { - // See random_bytes_com_dotnet.php - require_once $RandomCompatDIR . '/random_bytes_com_dotnet.php'; - } - } catch (com_exception $e) { - // Don't try to use it. - } - } - $RandomCompat_disabled_classes = null; - $RandomCompatCOMtest = null; - } - - /** - * throw new Exception - */ - if (!is_callable('random_bytes')) { - /** - * We don't have any more options, so let's throw an exception right now - * and hope the developer won't let it fail silently. - * - * @param mixed $length - * @psalm-suppress MissingReturnType - * @throws Exception - * @return string - */ - function random_bytes($length) - { - unset($length); // Suppress "variable not used" warnings. - throw new Exception( - 'There is no suitable CSPRNG installed on your system' - ); - return ''; - } - } -} - -if (!is_callable('random_int')) { - require_once $RandomCompatDIR . '/random_int.php'; -} - -$RandomCompatDIR = null; diff --git a/vendor/paragonie/random_compat/lib/random_bytes_com_dotnet.php b/vendor/paragonie/random_compat/lib/random_bytes_com_dotnet.php deleted file mode 100644 index fc1926e5..00000000 --- a/vendor/paragonie/random_compat/lib/random_bytes_com_dotnet.php +++ /dev/null @@ -1,88 +0,0 @@ -GetRandom($bytes, 0)); - if (RandomCompat_strlen($buf) >= $bytes) { - /** - * Return our random entropy buffer here: - */ - return RandomCompat_substr($buf, 0, $bytes); - } - ++$execCount; - } while ($execCount < $bytes); - - /** - * If we reach here, PHP has failed us. - */ - throw new Exception( - 'Could not gather sufficient random data' - ); - } -} \ No newline at end of file diff --git a/vendor/paragonie/random_compat/lib/random_bytes_dev_urandom.php b/vendor/paragonie/random_compat/lib/random_bytes_dev_urandom.php deleted file mode 100644 index df5b9152..00000000 --- a/vendor/paragonie/random_compat/lib/random_bytes_dev_urandom.php +++ /dev/null @@ -1,167 +0,0 @@ - 0); - - /** - * Is our result valid? - */ - if (is_string($buf)) { - if (RandomCompat_strlen($buf) === $bytes) { - /** - * Return our random entropy buffer here: - */ - return $buf; - } - } - } - - /** - * If we reach here, PHP has failed us. - */ - throw new Exception( - 'Error reading from source device' - ); - } -} diff --git a/vendor/paragonie/random_compat/lib/random_bytes_libsodium.php b/vendor/paragonie/random_compat/lib/random_bytes_libsodium.php deleted file mode 100644 index 4af1a242..00000000 --- a/vendor/paragonie/random_compat/lib/random_bytes_libsodium.php +++ /dev/null @@ -1,88 +0,0 @@ - 2147483647) { - $buf = ''; - for ($i = 0; $i < $bytes; $i += 1073741824) { - $n = ($bytes - $i) > 1073741824 - ? 1073741824 - : $bytes - $i; - $buf .= \Sodium\randombytes_buf($n); - } - } else { - $buf = \Sodium\randombytes_buf($bytes); - } - - if ($buf !== false) { - if (RandomCompat_strlen($buf) === $bytes) { - return $buf; - } - } - - /** - * If we reach here, PHP has failed us. - */ - throw new Exception( - 'Could not gather sufficient random data' - ); - } -} diff --git a/vendor/paragonie/random_compat/lib/random_bytes_libsodium_legacy.php b/vendor/paragonie/random_compat/lib/random_bytes_libsodium_legacy.php deleted file mode 100644 index 705af526..00000000 --- a/vendor/paragonie/random_compat/lib/random_bytes_libsodium_legacy.php +++ /dev/null @@ -1,92 +0,0 @@ - 2147483647) { - for ($i = 0; $i < $bytes; $i += 1073741824) { - $n = ($bytes - $i) > 1073741824 - ? 1073741824 - : $bytes - $i; - $buf .= Sodium::randombytes_buf((int) $n); - } - } else { - $buf .= Sodium::randombytes_buf((int) $bytes); - } - - if (is_string($buf)) { - if (RandomCompat_strlen($buf) === $bytes) { - return $buf; - } - } - - /** - * If we reach here, PHP has failed us. - */ - throw new Exception( - 'Could not gather sufficient random data' - ); - } -} diff --git a/vendor/paragonie/random_compat/lib/random_bytes_mcrypt.php b/vendor/paragonie/random_compat/lib/random_bytes_mcrypt.php deleted file mode 100644 index aac9c013..00000000 --- a/vendor/paragonie/random_compat/lib/random_bytes_mcrypt.php +++ /dev/null @@ -1,77 +0,0 @@ - operators might accidentally let a float - * through. - */ - - try { - $min = RandomCompat_intval($min); - } catch (TypeError $ex) { - throw new TypeError( - 'random_int(): $min must be an integer' - ); - } - - try { - $max = RandomCompat_intval($max); - } catch (TypeError $ex) { - throw new TypeError( - 'random_int(): $max must be an integer' - ); - } - - /** - * Now that we've verified our weak typing system has given us an integer, - * let's validate the logic then we can move forward with generating random - * integers along a given range. - */ - if ($min > $max) { - throw new Error( - 'Minimum value must be less than or equal to the maximum value' - ); - } - - if ($max === $min) { - return (int) $min; - } - - /** - * Initialize variables to 0 - * - * We want to store: - * $bytes => the number of random bytes we need - * $mask => an integer bitmask (for use with the &) operator - * so we can minimize the number of discards - */ - $attempts = $bits = $bytes = $mask = $valueShift = 0; - - /** - * At this point, $range is a positive number greater than 0. It might - * overflow, however, if $max - $min > PHP_INT_MAX. PHP will cast it to - * a float and we will lose some precision. - */ - $range = $max - $min; - - /** - * Test for integer overflow: - */ - if (!is_int($range)) { - - /** - * Still safely calculate wider ranges. - * Provided by @CodesInChaos, @oittaa - * - * @ref https://gist.github.com/CodesInChaos/03f9ea0b58e8b2b8d435 - * - * We use ~0 as a mask in this case because it generates all 1s - * - * @ref https://eval.in/400356 (32-bit) - * @ref http://3v4l.org/XX9r5 (64-bit) - */ - $bytes = PHP_INT_SIZE; - $mask = ~0; - - } else { - - /** - * $bits is effectively ceil(log($range, 2)) without dealing with - * type juggling - */ - while ($range > 0) { - if ($bits % 8 === 0) { - ++$bytes; - } - ++$bits; - $range >>= 1; - $mask = $mask << 1 | 1; - } - $valueShift = $min; - } - - $val = 0; - /** - * Now that we have our parameters set up, let's begin generating - * random integers until one falls between $min and $max - */ - do { - /** - * The rejection probability is at most 0.5, so this corresponds - * to a failure probability of 2^-128 for a working RNG - */ - if ($attempts > 128) { - throw new Exception( - 'random_int: RNG is broken - too many rejections' - ); - } - - /** - * Let's grab the necessary number of random bytes - */ - $randomByteString = random_bytes($bytes); - - /** - * Let's turn $randomByteString into an integer - * - * This uses bitwise operators (<< and |) to build an integer - * out of the values extracted from ord() - * - * Example: [9F] | [6D] | [32] | [0C] => - * 159 + 27904 + 3276800 + 201326592 => - * 204631455 - */ - $val &= 0; - for ($i = 0; $i < $bytes; ++$i) { - $val |= ord($randomByteString[$i]) << ($i * 8); - } - - /** - * Apply mask - */ - $val &= $mask; - $val += $valueShift; - - ++$attempts; - /** - * If $val overflows to a floating point number, - * ... or is larger than $max, - * ... or smaller than $min, - * then try again. - */ - } while (!is_int($val) || $val > $max || $val < $min); - - return (int) $val; - } -} diff --git a/vendor/paragonie/random_compat/other/build_phar.php b/vendor/paragonie/random_compat/other/build_phar.php deleted file mode 100644 index 70ef4b2e..00000000 --- a/vendor/paragonie/random_compat/other/build_phar.php +++ /dev/null @@ -1,57 +0,0 @@ -buildFromDirectory(dirname(__DIR__).'/lib'); -rename( - dirname(__DIR__).'/lib/index.php', - dirname(__DIR__).'/lib/random.php' -); - -/** - * If we pass an (optional) path to a private key as a second argument, we will - * sign the Phar with OpenSSL. - * - * If you leave this out, it will produce an unsigned .phar! - */ -if ($argc > 1) { - if (!@is_readable($argv[1])) { - echo 'Could not read the private key file:', $argv[1], "\n"; - exit(255); - } - $pkeyFile = file_get_contents($argv[1]); - - $private = openssl_get_privatekey($pkeyFile); - if ($private !== false) { - $pkey = ''; - openssl_pkey_export($private, $pkey); - $phar->setSignatureAlgorithm(Phar::OPENSSL, $pkey); - - /** - * Save the corresponding public key to the file - */ - if (!@is_readable($dist.'/random_compat.phar.pubkey')) { - $details = openssl_pkey_get_details($private); - file_put_contents( - $dist.'/random_compat.phar.pubkey', - $details['key'] - ); - } - } else { - echo 'An error occurred reading the private key from OpenSSL.', "\n"; - exit(255); - } -} diff --git a/vendor/paragonie/random_compat/psalm-autoload.php b/vendor/paragonie/random_compat/psalm-autoload.php deleted file mode 100644 index d71d1b81..00000000 --- a/vendor/paragonie/random_compat/psalm-autoload.php +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - - - - - - diff --git a/vendor/php-extended/php-system/composer.json b/vendor/php-extended/php-system/composer.json index 3b068bb4..ba279f80 100644 --- a/vendor/php-extended/php-system/composer.json +++ b/vendor/php-extended/php-system/composer.json @@ -2,7 +2,7 @@ "name" : "php-extended/php-system", "description" : "A generic way to find informations about the running system", "type" : "library", - "homepage" : "https://github.com/php-extended/php-system", + "homepage" : "https://gitlab.com/php-extended/php-system", "license" : "MIT", "authors" : [{ "name" : "Anastaszor", @@ -10,8 +10,8 @@ } ], "support" : { - "issues" : "https://github.com/php-extended/php-system/issues", - "source" : "https://github.com/php-extended/php-system" + "issues" : "https://gitlab.com/php-extended/php-system/issues", + "source" : "https://gitlab.com/php-extended/php-system" }, "autoload" : { "psr-4" : { diff --git a/vendor/php-extended/php-tail/composer.json b/vendor/php-extended/php-tail/composer.json index 4f8568c5..1e9a29b1 100644 --- a/vendor/php-extended/php-tail/composer.json +++ b/vendor/php-extended/php-tail/composer.json @@ -9,8 +9,8 @@ } ], "support" : { - "issues" : "https://github.com/php-extended/php-tail/issues", - "source" : "https://github.com/php-extended/php-tail" + "issues" : "https://gitlab.com/php-extended/php-tail/issues", + "source" : "https://gitlab.com/php-extended/php-tail" }, "keywords" : [ "php", @@ -24,7 +24,7 @@ "PhpExtended\\Tail\\" : "src/" } }, - "homepage" : "https://github.com/php-extended/php-tail", + "homepage" : "https://gitlab.com/php-extended/php-tail", "require" : { "php-extended/php-system" : "^1.2" } diff --git a/vendor/symfony/lock/Key.php b/vendor/symfony/lock/Key.php index 8be4f3a2..7fddafe9 100644 --- a/vendor/symfony/lock/Key.php +++ b/vendor/symfony/lock/Key.php @@ -22,12 +22,9 @@ final class Key private $expiringTime; private $state = array(); - /** - * @param string $resource - */ - public function __construct($resource) + public function __construct(string $resource) { - $this->resource = (string) $resource; + $this->resource = $resource; } public function __toString() @@ -35,39 +32,22 @@ final class Key return $this->resource; } - /** - * @param string $stateKey - * - * @return bool - */ - public function hasState($stateKey) + public function hasState(string $stateKey): bool { return isset($this->state[$stateKey]); } - /** - * @param string $stateKey - * @param mixed $state - */ - public function setState($stateKey, $state) + public function setState(string $stateKey, $state): void { $this->state[$stateKey] = $state; } - /** - * @param string $stateKey - */ - public function removeState($stateKey) + public function removeState(string $stateKey): void { unset($this->state[$stateKey]); } - /** - * @param $stateKey - * - * @return mixed - */ - public function getState($stateKey) + public function getState(string $stateKey) { return $this->state[$stateKey]; } diff --git a/vendor/symfony/lock/Lock.php b/vendor/symfony/lock/Lock.php index 77fd032b..f32ad351 100644 --- a/vendor/symfony/lock/Lock.php +++ b/vendor/symfony/lock/Lock.php @@ -41,12 +41,12 @@ final class Lock implements LockInterface, LoggerAwareInterface * @param float|null $ttl Maximum expected lock duration in seconds * @param bool $autoRelease Whether to automatically release the lock or not when the lock instance is destroyed */ - public function __construct(Key $key, StoreInterface $store, $ttl = null, $autoRelease = true) + public function __construct(Key $key, StoreInterface $store, float $ttl = null, bool $autoRelease = true) { $this->store = $store; $this->key = $key; $this->ttl = $ttl; - $this->autoRelease = (bool) $autoRelease; + $this->autoRelease = $autoRelease; $this->logger = new NullLogger(); } @@ -105,22 +105,25 @@ final class Lock implements LockInterface, LoggerAwareInterface /** * {@inheritdoc} */ - public function refresh() + public function refresh($ttl = null) { - if (!$this->ttl) { + if (null === $ttl) { + $ttl = $this->ttl; + } + if (!$ttl) { throw new InvalidArgumentException('You have to define an expiration duration.'); } try { $this->key->resetLifetime(); - $this->store->putOffExpiration($this->key, $this->ttl); + $this->store->putOffExpiration($this->key, $ttl); $this->dirty = true; if ($this->key->isExpired()) { throw new LockExpiredException(sprintf('Failed to put off the expiration of the "%s" lock within the specified time.', $this->key)); } - $this->logger->info('Expiration defined for "{resource}" lock for "{ttl}" seconds.', array('resource' => $this->key, 'ttl' => $this->ttl)); + $this->logger->info('Expiration defined for "{resource}" lock for "{ttl}" seconds.', array('resource' => $this->key, 'ttl' => $ttl)); } catch (LockConflictedException $e) { $this->dirty = false; $this->logger->notice('Failed to define an expiration for the "{resource}" lock, someone else acquired the lock.', array('resource' => $this->key)); @@ -154,7 +157,7 @@ final class Lock implements LockInterface, LoggerAwareInterface } /** - * @return bool + * {@inheritdoc} */ public function isExpired() { @@ -162,9 +165,7 @@ final class Lock implements LockInterface, LoggerAwareInterface } /** - * Returns the remaining lifetime. - * - * @return float|null Remaining lifetime in seconds. Null when the lock won't expire. + * {@inheritdoc} */ public function getRemainingLifetime() { diff --git a/vendor/symfony/lock/LockInterface.php b/vendor/symfony/lock/LockInterface.php index 437a4cc2..0d1c02ec 100644 --- a/vendor/symfony/lock/LockInterface.php +++ b/vendor/symfony/lock/LockInterface.php @@ -24,7 +24,7 @@ interface LockInterface { /** * Acquires the lock. If the lock is acquired by someone else, the parameter `blocking` determines whether or not - * the the call should block until the release of the lock. + * the call should block until the release of the lock. * * @param bool $blocking Whether or not the Lock should wait for the release of someone else * @@ -38,10 +38,12 @@ interface LockInterface /** * Increase the duration of an acquired lock. * + * @param float|null $ttl Maximum expected lock duration in seconds + * * @throws LockConflictedException If the lock is acquired by someone else * @throws LockAcquiringException If the lock can not be refreshed */ - public function refresh(); + public function refresh(/* $ttl = null */); /** * Returns whether or not the lock is acquired. @@ -56,4 +58,16 @@ interface LockInterface * @throws LockReleasingException If the lock can not be released */ public function release(); + + /** + * @return bool + */ + public function isExpired(); + + /** + * Returns the remaining lifetime. + * + * @return float|null Remaining lifetime in seconds. Null when the lock won't expire. + */ + public function getRemainingLifetime(); } diff --git a/vendor/symfony/lock/Store/FlockStore.php b/vendor/symfony/lock/Store/FlockStore.php index 287d6fb5..bf72eaef 100644 --- a/vendor/symfony/lock/Store/FlockStore.php +++ b/vendor/symfony/lock/Store/FlockStore.php @@ -36,7 +36,7 @@ class FlockStore implements StoreInterface * * @throws LockStorageException If the lock directory doesn’t exist or is not writable */ - public function __construct($lockPath = null) + public function __construct(string $lockPath = null) { if (null === $lockPath) { $lockPath = sys_get_temp_dir(); @@ -78,8 +78,7 @@ class FlockStore implements StoreInterface ); // Silence error reporting - set_error_handler(function () { - }); + set_error_handler(function ($type, $msg) use (&$error) { $error = $msg; }); if (!$handle = fopen($fileName, 'r')) { if ($handle = fopen($fileName, 'x')) { chmod($fileName, 0444); @@ -91,8 +90,7 @@ class FlockStore implements StoreInterface restore_error_handler(); if (!$handle) { - $error = error_get_last(); - throw new LockStorageException($error['message'], 0, null); + throw new LockStorageException($error, 0, null); } // On Windows, even if PHP doc says the contrary, LOCK_NB works, see diff --git a/vendor/symfony/lock/Store/MemcachedStore.php b/vendor/symfony/lock/Store/MemcachedStore.php index 8e9db10c..f1c5c112 100644 --- a/vendor/symfony/lock/Store/MemcachedStore.php +++ b/vendor/symfony/lock/Store/MemcachedStore.php @@ -38,7 +38,7 @@ class MemcachedStore implements StoreInterface * @param \Memcached $memcached * @param int $initialTtl the expiration delay of locks in seconds */ - public function __construct(\Memcached $memcached, $initialTtl = 300) + public function __construct(\Memcached $memcached, int $initialTtl = 300) { if (!static::isSupported()) { throw new InvalidArgumentException('Memcached extension is required'); @@ -149,12 +149,8 @@ class MemcachedStore implements StoreInterface /** * Retrieve an unique token for the given key. - * - * @param Key $key - * - * @return string */ - private function getToken(Key $key) + private function getToken(Key $key): string { if (!$key->hasState(__CLASS__)) { $token = base64_encode(random_bytes(32)); diff --git a/vendor/symfony/lock/Store/RedisStore.php b/vendor/symfony/lock/Store/RedisStore.php index 4d057337..291e0f52 100644 --- a/vendor/symfony/lock/Store/RedisStore.php +++ b/vendor/symfony/lock/Store/RedisStore.php @@ -32,7 +32,7 @@ class RedisStore implements StoreInterface * @param \Redis|\RedisArray|\RedisCluster|\Predis\Client $redisClient * @param float $initialTtl the expiration delay of locks in seconds */ - public function __construct($redisClient, $initialTtl = 300.0) + public function __construct($redisClient, float $initialTtl = 300.0) { if (!$redisClient instanceof \Redis && !$redisClient instanceof \RedisArray && !$redisClient instanceof \RedisCluster && !$redisClient instanceof \Predis\Client && !$redisClient instanceof RedisProxy) { throw new InvalidArgumentException(sprintf('%s() expects parameter 1 to be Redis, RedisArray, RedisCluster or Predis\Client, %s given', __METHOD__, is_object($redisClient) ? get_class($redisClient) : gettype($redisClient))); @@ -124,13 +124,9 @@ class RedisStore implements StoreInterface /** * Evaluates a script in the corresponding redis client. * - * @param string $script - * @param string $resource - * @param array $args - * * @return mixed */ - private function evaluate($script, $resource, array $args) + private function evaluate(string $script, string $resource, array $args) { if ($this->redis instanceof \Redis || $this->redis instanceof \RedisCluster || $this->redis instanceof RedisProxy) { return $this->redis->eval($script, array_merge(array($resource), $args), 1); @@ -149,12 +145,8 @@ class RedisStore implements StoreInterface /** * Retrieves an unique token for the given key. - * - * @param Key $key - * - * @return string */ - private function getToken(Key $key) + private function getToken(Key $key): string { if (!$key->hasState(__CLASS__)) { $token = base64_encode(random_bytes(32)); diff --git a/vendor/symfony/lock/Store/RetryTillSaveStore.php b/vendor/symfony/lock/Store/RetryTillSaveStore.php index dfc3b266..bf69a75f 100644 --- a/vendor/symfony/lock/Store/RetryTillSaveStore.php +++ b/vendor/symfony/lock/Store/RetryTillSaveStore.php @@ -37,7 +37,7 @@ class RetryTillSaveStore implements StoreInterface, LoggerAwareInterface * @param int $retrySleep Duration in ms between 2 retry * @param int $retryCount Maximum amount of retry */ - public function __construct(StoreInterface $decorated, $retrySleep = 100, $retryCount = PHP_INT_MAX) + public function __construct(StoreInterface $decorated, int $retrySleep = 100, int $retryCount = PHP_INT_MAX) { $this->decorated = $decorated; $this->retrySleep = $retrySleep; diff --git a/vendor/symfony/lock/Store/SemaphoreStore.php b/vendor/symfony/lock/Store/SemaphoreStore.php index a6cc9ea8..8913e391 100644 --- a/vendor/symfony/lock/Store/SemaphoreStore.php +++ b/vendor/symfony/lock/Store/SemaphoreStore.php @@ -13,7 +13,6 @@ namespace Symfony\Component\Lock\Store; use Symfony\Component\Lock\Exception\InvalidArgumentException; use Symfony\Component\Lock\Exception\LockConflictedException; -use Symfony\Component\Lock\Exception\NotSupportedException; use Symfony\Component\Lock\Key; use Symfony\Component\Lock\StoreInterface; @@ -27,23 +26,13 @@ class SemaphoreStore implements StoreInterface /** * Returns whether or not the store is supported. * - * @param bool|null $blocking when not null, checked again the blocking mode - * * @return bool * * @internal */ - public static function isSupported($blocking = null) + public static function isSupported() { - if (!extension_loaded('sysvsem')) { - return false; - } - - if (false === $blocking && \PHP_VERSION_ID < 50601) { - return false; - } - - return true; + return extension_loaded('sysvsem'); } public function __construct() @@ -76,16 +65,7 @@ class SemaphoreStore implements StoreInterface } $resource = sem_get(crc32($key)); - - if (\PHP_VERSION_ID < 50601) { - if (!$blocking) { - throw new NotSupportedException(sprintf('The store "%s" does not supports non blocking locks.', get_class($this))); - } - - $acquired = sem_acquire($resource); - } else { - $acquired = sem_acquire($resource, !$blocking); - } + $acquired = sem_acquire($resource, !$blocking); if (!$acquired) { throw new LockConflictedException(); diff --git a/vendor/symfony/lock/Tests/LockTest.php b/vendor/symfony/lock/Tests/LockTest.php index 7913644b..654d58d5 100644 --- a/vendor/symfony/lock/Tests/LockTest.php +++ b/vendor/symfony/lock/Tests/LockTest.php @@ -97,6 +97,20 @@ class LockTest extends TestCase $lock->refresh(); } + public function testRefreshCustom() + { + $key = new Key(uniqid(__METHOD__, true)); + $store = $this->getMockBuilder(StoreInterface::class)->getMock(); + $lock = new Lock($key, $store, 10); + + $store + ->expects($this->once()) + ->method('putOffExpiration') + ->with($key, 20); + + $lock->refresh(20); + } + public function testIsAquired() { $key = new Key(uniqid(__METHOD__, true)); diff --git a/vendor/symfony/lock/Tests/Store/BlockingStoreTestTrait.php b/vendor/symfony/lock/Tests/Store/BlockingStoreTestTrait.php index 93e5a547..1e3436eb 100644 --- a/vendor/symfony/lock/Tests/Store/BlockingStoreTestTrait.php +++ b/vendor/symfony/lock/Tests/Store/BlockingStoreTestTrait.php @@ -31,6 +31,7 @@ trait BlockingStoreTestTrait * This test is time sensible: the $clockDelay could be adjust. * * @requires extension pcntl + * @requires extension posix * @requires function pcntl_sigwaitinfo */ public function testBlockingLocks() @@ -38,12 +39,6 @@ trait BlockingStoreTestTrait // Amount a microsecond used to order async actions $clockDelay = 50000; - if (\PHP_VERSION_ID < 50600 || defined('HHVM_VERSION_ID')) { - $this->markTestSkipped('The PHP engine does not keep resource in child forks'); - - return; - } - /** @var StoreInterface $store */ $store = $this->getStore(); $key = new Key(uniqid(__METHOD__, true)); diff --git a/vendor/symfony/lock/Tests/Store/SemaphoreStoreTest.php b/vendor/symfony/lock/Tests/Store/SemaphoreStoreTest.php index bb37ec1f..eeb95d58 100644 --- a/vendor/symfony/lock/Tests/Store/SemaphoreStoreTest.php +++ b/vendor/symfony/lock/Tests/Store/SemaphoreStoreTest.php @@ -27,10 +27,6 @@ class SemaphoreStoreTest extends AbstractStoreTest */ protected function getStore() { - if (\PHP_VERSION_ID < 50601) { - $this->markTestSkipped('Non blocking semaphore are supported by PHP version greater or equals than 5.6.1'); - } - return new SemaphoreStore(); } } diff --git a/vendor/symfony/lock/composer.json b/vendor/symfony/lock/composer.json index 9a6e7687..1ca9a4da 100644 --- a/vendor/symfony/lock/composer.json +++ b/vendor/symfony/lock/composer.json @@ -16,8 +16,7 @@ } ], "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-php70": "~1.0", + "php": "^7.1.3", "psr/log": "~1.0" }, "require-dev": { @@ -32,7 +31,7 @@ "minimum-stability": "dev", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.1-dev" } } } diff --git a/vendor/symfony/polyfill-php70/LICENSE b/vendor/symfony/polyfill-php70/LICENSE deleted file mode 100644 index 24fa32c2..00000000 --- a/vendor/symfony/polyfill-php70/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2015-2018 Fabien Potencier - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/symfony/polyfill-php70/Php70.php b/vendor/symfony/polyfill-php70/Php70.php deleted file mode 100644 index 39e66450..00000000 --- a/vendor/symfony/polyfill-php70/Php70.php +++ /dev/null @@ -1,74 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Polyfill\Php70; - -/** - * @author Nicolas Grekas - * - * @internal - */ -final class Php70 -{ - public static function intdiv($dividend, $divisor) - { - $dividend = self::intArg($dividend, __FUNCTION__, 1); - $divisor = self::intArg($divisor, __FUNCTION__, 2); - - if (0 === $divisor) { - throw new \DivisionByZeroError('Division by zero'); - } - if (-1 === $divisor && ~PHP_INT_MAX === $dividend) { - throw new \ArithmeticError('Division of PHP_INT_MIN by -1 is not an integer'); - } - - return ($dividend - ($dividend % $divisor)) / $divisor; - } - - public static function preg_replace_callback_array(array $patterns, $subject, $limit = -1, &$count = 0) - { - $count = 0; - $result = (string) $subject; - if (0 === $limit = self::intArg($limit, __FUNCTION__, 3)) { - return $result; - } - - foreach ($patterns as $pattern => $callback) { - $result = preg_replace_callback($pattern, $callback, $result, $limit, $c); - $count += $c; - } - - return $result; - } - - public static function error_clear_last() - { - static $handler; - if (!$handler) { - $handler = function() { return false; }; - } - set_error_handler($handler); - @trigger_error(''); - restore_error_handler(); - } - - private static function intArg($value, $caller, $pos) - { - if (\is_int($value)) { - return $value; - } - if (!\is_numeric($value) || PHP_INT_MAX <= ($value += 0) || ~PHP_INT_MAX >= $value) { - throw new \TypeError(sprintf('%s() expects parameter %d to be integer, %s given', $caller, $pos, gettype($value))); - } - - return (int) $value; - } -} diff --git a/vendor/symfony/polyfill-php70/README.md b/vendor/symfony/polyfill-php70/README.md deleted file mode 100644 index 04988c6f..00000000 --- a/vendor/symfony/polyfill-php70/README.md +++ /dev/null @@ -1,28 +0,0 @@ -Symfony Polyfill / Php70 -======================== - -This component provides features unavailable in releases prior to PHP 7.0: - -- [`intdiv`](http://php.net/intdiv) -- [`preg_replace_callback_array`](http://php.net/preg_replace_callback_array) -- [`error_clear_last`](http://php.net/error_clear_last) -- `random_bytes` and `random_int` (from [paragonie/random_compat](https://github.com/paragonie/random_compat)) -- [`*Error` throwable classes](http://php.net/Error) -- [`PHP_INT_MIN`](http://php.net/manual/en/reserved.constants.php#constant.php-int-min) -- `SessionUpdateTimestampHandlerInterface` - -More information can be found in the -[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md). - -Compatibility notes -=================== - -To write portable code between PHP5 and PHP7, some care must be taken: -- `\*Error` exceptions must be caught before `\Exception`; -- after calling `error_clear_last()`, the result of `$e = error_get_last()` must be - verified using `isset($e['message'][0])` instead of `null !== $e`. - -License -======= - -This library is released under the [MIT license](LICENSE). diff --git a/vendor/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php b/vendor/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php deleted file mode 100644 index 68191244..00000000 --- a/vendor/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php +++ /dev/null @@ -1,5 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -use Symfony\Polyfill\Php70 as p; - -if (PHP_VERSION_ID < 70000) { - if (!defined('PHP_INT_MIN')) { - define('PHP_INT_MIN', ~PHP_INT_MAX); - } - if (!function_exists('intdiv')) { - function intdiv($dividend, $divisor) { return p\Php70::intdiv($dividend, $divisor); } - } - if (!function_exists('preg_replace_callback_array')) { - function preg_replace_callback_array(array $patterns, $subject, $limit = -1, &$count = 0) { return p\Php70::preg_replace_callback_array($patterns, $subject, $limit, $count); } - } - if (!function_exists('error_clear_last')) { - function error_clear_last() { return p\Php70::error_clear_last(); } - } -} diff --git a/vendor/symfony/polyfill-php70/composer.json b/vendor/symfony/polyfill-php70/composer.json deleted file mode 100644 index 871045d2..00000000 --- a/vendor/symfony/polyfill-php70/composer.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "symfony/polyfill-php70", - "type": "library", - "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", - "keywords": ["polyfill", "shim", "compatibility", "portable"], - "homepage": "https://symfony.com", - "license": "MIT", - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "require": { - "php": ">=5.3.3", - "paragonie/random_compat": "~1.0|~2.0" - }, - "autoload": { - "psr-4": { "Symfony\\Polyfill\\Php70\\": "" }, - "files": [ "bootstrap.php" ], - "classmap": [ "Resources/stubs" ] - }, - "minimum-stability": "dev", - "extra": { - "branch-alias": { - "dev-master": "1.8-dev" - } - } -} diff --git a/vendor/vlucas/valitron/README.md b/vendor/vlucas/valitron/README.md index 0d520fd2..4da73cbc 100644 --- a/vendor/vlucas/valitron/README.md +++ b/vendor/vlucas/valitron/README.md @@ -86,6 +86,19 @@ if($v->validate()) { } ``` +Or use dot syntax to validate all members of a numeric array: + +```php +$v = new Valitron\Validator(array('values' => array(50, 90))); +$v->rule('max', 'values.*', 100); +if($v->validate()) { + echo "Yay! We're all good!"; +} else { + // Errors + print_r($v->errors()); +} +``` + Setting language and language dir globally: ```php @@ -121,6 +134,7 @@ V::lang('ar'); * `notIn` - Negation of `in` rule (not in array of values) * `ip` - Valid IP address * `email` - Valid email address + * `emailDNS` - Valid email address with active DNS record * `url` - Valid URL * `urlActive` - Valid URL with active DNS record * `alpha` - Alphabetic characters only diff --git a/vendor/vlucas/valitron/composer.json b/vendor/vlucas/valitron/composer.json index e3faef91..30e5c962 100644 --- a/vendor/vlucas/valitron/composer.json +++ b/vendor/vlucas/valitron/composer.json @@ -4,7 +4,7 @@ "description": "Simple, elegant, stand-alone validation library with NO dependencies", "keywords": ["validation", "validator", "valid"], "homepage": "http://github.com/vlucas/valitron", - "license" : "BSD", + "license" : "BSD-3-Clause", "authors" : [ { "name": "Vance Lucas", @@ -16,11 +16,19 @@ "php": ">=5.3.2" }, "require-dev": { - "phpunit/phpunit": "~4.0" + "phpunit/phpunit": "^4.8.35 || ^5.5 || ^6.5" + }, + "suggest": { + "ext-mbstring": "It can support the multiple bytes string length." }, "autoload": { - "psr-0": { - "Valitron": "src/" + "psr-4": { + "Valitron\\": "src/Valitron" + } + }, + "autoload-dev": { + "psr-4": { + "Valitron\\": "tests/Valitron" } }, "scripts": { diff --git a/vendor/vlucas/valitron/lang/lt.php b/vendor/vlucas/valitron/lang/lt.php new file mode 100644 index 00000000..cace602d --- /dev/null +++ b/vendor/vlucas/valitron/lang/lt.php @@ -0,0 +1,33 @@ + "yra privalomas", + 'equals' => "reikšmė turi būti tokia pati, kaip „%s“", + 'different' => "turi būti kitokia, nei „%s“", + 'accepted' => "turi būti priimta", + 'numeric' => "turi būti sveikasis skaičius", + 'integer' => "turi būti skaičius", + 'length' => "turi būti %d ženklų ilgio", + 'min' => "turi būti bent %s", + 'max' => "turi būti ne daugiau kaip %s", + 'in' => "turi neteisingą vertę", + 'notIn' => "turi neteisingą vertę", + 'ip' => "nėra teisingas IP adresas", + 'email' => "nėra teisingas el. pašto adresas", + 'url' => "nėra teisingas URL", + 'urlActive' => "turi būti aktyvus domenas", + 'alpha' => "turi turėti tik raides a-ž", + 'alphaNum' => "turi turėti tik raides a-ž ir/ar skaičius 0-9", + 'slug' => "turi turėti tik raides a-ž, skaičius 0-9, brukšnelius ir apatinius brukšnelius", + 'regex' => "yra neteisingų ženklų", + 'date' => "nėra teisinga data", + 'dateFormat' => "turi būti „%s“ formato data", + 'dateBefore' => "turi būti data, ankstesnė nei „%s“", + 'dateAfter' => "turi būti data, vėlesnė nei „%s“", + 'contains' => "turi turėti %s", + 'boolean' => "turi būti būlio (taip/ne) tipo", + 'lengthBetween' => "turi būti nuo %d iki %d ilgio", + 'creditCard' => "turi būti teisingas kreditinės kortelės numeris", + 'lengthMin' => "turi būti bent %d ženklų ilgio", + 'lengthMax' => "turi būti ne ilgesnis nei %d ženklų", + 'instanceOf' => "turi būti „%s“ atvejis" +); diff --git a/vendor/vlucas/valitron/lang/sv.php b/vendor/vlucas/valitron/lang/sv.php new file mode 100644 index 00000000..94884cfc --- /dev/null +++ b/vendor/vlucas/valitron/lang/sv.php @@ -0,0 +1,34 @@ + "är obligatorisk", + 'equals' => "måste vara samma som '%s'", + 'different' => "får inte vara samma som '%s'", + 'accepted' => "måste accepteras", + 'numeric' => "måste vara numerisk", + 'integer' => "måste vara ett heltal", + 'length' => "måste vara %d tecken långt", + 'min' => "måste vara minst %s", + 'max' => "får inte vara mer än %s", + 'in' => "innehåller ogiltigt värde", + 'notIn' => "innehåller ogiltigt värde", + 'ip' => "är inte en giltlig IP-adress", + 'email' => "är inte en giltlig e-postadress", + 'url' => "är inte en giltlig URL", + 'urlActive' => "måste vara ett aktivt domännamn", + 'alpha' => "får bara inehålla bokstäver a-z", + 'alphaNum' => "får bara inehålla bokstäver a-z och/eller siffror 0-9", + 'slug' => "får bara inehålla bokstäver a-z och/eller siffror 0-9, bindesträck og understräck", + 'regex' => "inehåller ogiltliga tecken", + 'date' => "är inte ett giltligt datum", + 'dateFormat' => "måste vara ett datum med formatet '%s'", + 'dateBefore' => "måste vara ett datum före '%s'", + 'dateAfter' => "måste vara ett datum efter '%s'", + 'contains' => "måste innehålla %s", + 'boolean' => "måste vara ett booleskt värde", + 'lengthBetween' => "måste vara mellan %d och %d tecken långt", + 'creditCard' => "måste vara et gyldig kredittkortnummer", + 'lengthMin' => "måste vara minst %d tecken långt", + 'lengthMax' => "får itne överstiga %d tecken", + 'instanceOf' => "måste vara en instans av '%s'" +); diff --git a/vendor/vlucas/valitron/lang/zh-cn.php b/vendor/vlucas/valitron/lang/zh-cn.php index d1548150..97835b4f 100644 --- a/vendor/vlucas/valitron/lang/zh-cn.php +++ b/vendor/vlucas/valitron/lang/zh-cn.php @@ -24,5 +24,10 @@ return array( 'dateFormat' => "日期的格式应该为 '%s'", 'dateBefore' => "日期必须在 '%s' 之前", 'dateAfter' => "日期必须在 '%s' 之后", - 'contains' => "必须包含 %s" + 'contains' => "必须包含 %s", + 'boolean' => "必须是真或假", + 'lengthBetween' => "长度只能介于 %d 和 %d 之间", + 'creditCard' => "信用卡号码不正确", + 'lengthMin' => "长度必须大于 %d", + 'lengthMax' => "长度必须小于 %d" ); diff --git a/vendor/vlucas/valitron/src/Valitron/Validator.php b/vendor/vlucas/valitron/src/Valitron/Validator.php index c629ca4f..0f70856a 100644 --- a/vendor/vlucas/valitron/src/Valitron/Validator.php +++ b/vendor/vlucas/valitron/src/Valitron/Validator.php @@ -77,6 +77,11 @@ class Validator */ protected $validUrlPrefixes = array('http://', 'https://', 'ftp://'); + /** + * @var bool + */ + protected $stop_on_first_fail = false; + /** * Setup validation * @@ -173,9 +178,9 @@ class Validator */ protected function validateEquals($field, $value, array $params) { - $field2 = $params[0]; - - return isset($this->_fields[$field2]) && $value == $this->_fields[$field2]; + // extract the second field value, this accounts for nested array values + list($field2Value, $multiple) = $this->getPart($this->_fields, explode('.', $params[0])); + return isset($field2Value) && $value == $field2Value; } /** @@ -189,9 +194,9 @@ class Validator */ protected function validateDifferent($field, $value, array $params) { - $field2 = $params[0]; - - return isset($this->_fields[$field2]) && $value != $this->_fields[$field2]; + // extract the second field value, this accounts for nested array values + list($field2Value, $multiple) = $this->getPart($this->_fields, explode('.', $params[0])); + return isset($field2Value) && $value != $field2Value; } /** @@ -246,7 +251,7 @@ class Validator { if (isset($params[0]) && (bool) $params[0]){ //strict mode - return preg_match('/^-?([0-9])+$/i', $value); + return preg_match('/^([0-9]|-[1-9]|-?[1-9][0-9]*)$/i', $value); } return filter_var($value, \FILTER_VALIDATE_INT) !== false; @@ -500,6 +505,26 @@ class Validator return filter_var($value, \FILTER_VALIDATE_EMAIL) !== false; } + /** + * Validate that a field is a valid e-mail address and the domain name is active + * + * @param string $field + * @param mixed $value + * @return bool + */ + protected function validateEmailDNS($field, $value) + { + if ($this->validateEmail($field, $value)) { + $domain = ltrim(stristr($value, '@'), '@') . '.'; + if (function_exists('idn_to_ascii') && defined('INTL_IDNA_VARIANT_UTS46')) { + $domain = idn_to_ascii($domain, 0, INTL_IDNA_VARIANT_UTS46); + } + return checkdnsrr($domain, 'ANY'); + } + + return false; + } + /** * Validate that a field is a valid URL by syntax * @@ -945,6 +970,7 @@ class Validator */ public function validate() { + $set_to_break = false; foreach ($this->_validations as $v) { foreach ($v['fields'] as $field) { list($values, $multiple) = $this->getPart($this->_fields, explode('.', $field)); @@ -979,13 +1005,26 @@ class Validator if (!$result) { $this->error($field, $v['message'], $v['params']); + if($this->stop_on_first_fail) { + $set_to_break = true; + break; + } } } + if($set_to_break) break; } return count($this->errors()) === 0; } + /** + * Should the validation stop a rule is failed + * @param bool $stop + */ + public function stopOnFirstFail($stop = true) { + $this->stop_on_first_fail = (bool) $stop; + } + /** * Returns all rule callbacks, the static and instance ones. * @@ -1092,7 +1131,7 @@ class Validator } /** - * Returns true if either a valdiator with the given name has been + * Returns true if either a validator with the given name has been * registered or there is a default validator by that name. * * @param string $name @@ -1160,6 +1199,8 @@ class Validator } /** + * Add label to rule + * * @param string $value * @internal param array $labels * @return $this @@ -1173,6 +1214,8 @@ class Validator } /** + * Add labels to rules + * * @param array $labels * @return $this */