From 3cafc2996e43c04f0b1c870fd640f0efbabd1891 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danyi=20D=C3=A1vid?= Date: Thu, 23 Apr 2020 18:26:12 +0200 Subject: [PATCH] * many things --- composer.json | 34 +- composer.lock | 2212 ++++++++++++----- config/autoload/dependencies.global.php | 27 +- config/autoload/development.local.php.dist | 5 +- config/autoload/doctrine.global.php | 4 +- config/autoload/loslog.global.php | 30 + config/autoload/router.global.php | 12 - config/autoload/zend-expressive.global.php | 6 +- config/config.php | 16 +- config/container.php | 14 +- config/development.config.php.dist | 3 +- config/pipeline.php | 102 +- config/routes.php | 36 +- public/index.php | 19 +- src/ApiLibs/AbstractHandler/CrudHandler.php | 166 ++ src/ApiLibs/ConfigProvider.php | 43 + .../Middleware/CorsMiddlewareFactory.php | 23 + src/App/Action/ExportAlbumAction.php | 27 - src/App/Action/ExportAlbumFactory.php | 15 - src/App/Action/GetImageFactory.php | 15 - src/App/Action/HomePageAction.php | 18 - src/App/Action/ListGalleriesAction.php | 24 - src/App/Action/ListGalleriesFactory.php | 15 - src/App/ConfigProvider.php | 14 +- src/App/Entity/Album.php | 276 +- src/App/Entity/Collection.php | 238 ++ src/App/Entity/Image.php | 401 +-- src/App/Handler/Album.php | 35 + src/App/Handler/AlbumFactory.php | 18 + src/App/Handler/Collection.php | 35 + src/App/Handler/CollectionFactory.php | 18 + src/App/Handler/ExportAlbum.php | 29 + src/App/Handler/ExportAlbumFactory.php | 18 + .../GetImage.php} | 14 +- src/App/Handler/GetImageFactory.php | 18 + src/App/Handler/HomePage.php | 20 + src/App/Handler/Image.php | 35 + src/App/Handler/ImageFactory.php | 18 + src/App/Handler/ListGalleries.php | 26 + src/App/Handler/ListGalleriesFactory.php | 18 + src/App/Middleware/PreFlightMiddleware.php | 34 - src/App/Response/JsonCorsResponse.php | 32 - src/App/Service/GalleryService.php | 413 +-- src/App/Service/GalleryServiceFactory.php | 2 + test/AppTest/Action/HomePageActionTest.php | 6 +- test/AppTest/Action/HomePageFactoryTest.php | 8 +- test/AppTest/Action/PingActionTest.php | 2 +- 47 files changed, 3232 insertions(+), 1362 deletions(-) create mode 100644 config/autoload/loslog.global.php delete mode 100644 config/autoload/router.global.php create mode 100644 src/ApiLibs/AbstractHandler/CrudHandler.php create mode 100644 src/ApiLibs/ConfigProvider.php create mode 100644 src/ApiLibs/Middleware/CorsMiddlewareFactory.php delete mode 100644 src/App/Action/ExportAlbumAction.php delete mode 100644 src/App/Action/ExportAlbumFactory.php delete mode 100644 src/App/Action/GetImageFactory.php delete mode 100644 src/App/Action/HomePageAction.php delete mode 100644 src/App/Action/ListGalleriesAction.php delete mode 100644 src/App/Action/ListGalleriesFactory.php create mode 100644 src/App/Entity/Collection.php create mode 100644 src/App/Handler/Album.php create mode 100644 src/App/Handler/AlbumFactory.php create mode 100644 src/App/Handler/Collection.php create mode 100644 src/App/Handler/CollectionFactory.php create mode 100644 src/App/Handler/ExportAlbum.php create mode 100644 src/App/Handler/ExportAlbumFactory.php rename src/App/{Action/GetImageAction.php => Handler/GetImage.php} (73%) create mode 100644 src/App/Handler/GetImageFactory.php create mode 100644 src/App/Handler/HomePage.php create mode 100644 src/App/Handler/Image.php create mode 100644 src/App/Handler/ImageFactory.php create mode 100644 src/App/Handler/ListGalleries.php create mode 100644 src/App/Handler/ListGalleriesFactory.php delete mode 100644 src/App/Middleware/PreFlightMiddleware.php delete mode 100644 src/App/Response/JsonCorsResponse.php diff --git a/composer.json b/composer.json index 9c9da34..756de8f 100644 --- a/composer.json +++ b/composer.json @@ -11,28 +11,36 @@ "prefer-stable": true, "require": { "php": "^7.1", - "dasprid/container-interop-doctrine": "^1.0", - "imagine/imagine": "^0.7.1", + "dasprid/container-interop-doctrine": "^1.1", + "imagine/imagine": "^1.0", + "los/loslog": "^3.1", "roave/security-advisories": "dev-master", - "symfony/yaml": "*", - "zendframework/zend-component-installer": "^1.0", - "zendframework/zend-config": "*", + "symfony/console": "^4.1", + "symfony/yaml": "^4.1", + "tuupola/cors-middleware": "^0.9.0", + "zendframework/zend-component-installer": "^2.1.1", + "zendframework/zend-config": "^3.1", "zendframework/zend-config-aggregator": "^1.0", - "zendframework/zend-expressive": "^2.0.2", - "zendframework/zend-expressive-fastroute": "^2.0", - "zendframework/zend-expressive-helpers": "^4.0", + "zendframework/zend-expressive": "^3.0", + "zendframework/zend-expressive-fastroute": "^3.0", + "zendframework/zend-expressive-helpers": "^5.0", "zendframework/zend-servicemanager": "^3.3", - "zendframework/zend-stdlib": "^3.1" + "zendframework/zend-stdlib": "^3.1", + "zendframework/zend-json": "^3.1", + "ext-zip": "*", + "ext-fileinfo": "*", + "ext-json": "*" }, "require-dev": { - "phpunit/phpunit": "^6.0.8 || ^5.7.15", - "squizlabs/php_codesniffer": "^2.8.1", + "phpunit/phpunit": "^7.0.1", + "squizlabs/php_codesniffer": "^2.9.1", "zfcampus/zf-development-mode": "^3.1", - "filp/whoops": "^2.1.7" + "filp/whoops": "^2.1.12" }, "autoload": { "psr-4": { - "App\\": "src/App/" + "App\\": "src/App/", + "ApiLibs\\": "src/ApiLibs/" } }, "autoload-dev": { diff --git a/composer.lock b/composer.lock index 8ae0d96..73890cb 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": "0d2243f5ed579595868f13b7ebc30f7f", + "content-hash": "9cfc6f9ac99a01c82f1b981940cb9554", "packages": [ { "name": "container-interop/container-interop", @@ -39,16 +39,16 @@ }, { "name": "dasprid/container-interop-doctrine", - "version": "1.0.0", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/DASPRiD/container-interop-doctrine.git", - "reference": "a4833d25dcfa42165c4ddec0c7062528206eeadc" + "reference": "b9f3afc00ce997e469d7fdd6fed7b8d400763290" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/DASPRiD/container-interop-doctrine/zipball/a4833d25dcfa42165c4ddec0c7062528206eeadc", - "reference": "a4833d25dcfa42165c4ddec0c7062528206eeadc", + "url": "https://api.github.com/repos/DASPRiD/container-interop-doctrine/zipball/b9f3afc00ce997e469d7fdd6fed7b8d400763290", + "reference": "b9f3afc00ce997e469d7fdd6fed7b8d400763290", "shasum": "" }, "require": { @@ -74,20 +74,20 @@ ], "description": "Doctrine factories for container-interop", "homepage": "https://github.com/DASPRiD/container-interop-doctrine", - "time": "2017-06-30T14:14:39+00:00" + "time": "2018-01-24T23:25:49+00:00" }, { "name": "doctrine/annotations", - "version": "v1.5.0", + "version": "v1.6.0", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "5beebb01b025c94e93686b7a0ed3edae81fe3e7f" + "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/5beebb01b025c94e93686b7a0ed3edae81fe3e7f", - "reference": "5beebb01b025c94e93686b7a0ed3edae81fe3e7f", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", + "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", "shasum": "" }, "require": { @@ -96,12 +96,12 @@ }, "require-dev": { "doctrine/cache": "1.*", - "phpunit/phpunit": "^5.7" + "phpunit/phpunit": "^6.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.5.x-dev" + "dev-master": "1.6.x-dev" } }, "autoload": { @@ -142,20 +142,20 @@ "docblock", "parser" ], - "time": "2017-07-22T10:58:02+00:00" + "time": "2017-12-06T07:11:42+00:00" }, { "name": "doctrine/cache", - "version": "v1.7.0", + "version": "v1.8.0", "source": { "type": "git", "url": "https://github.com/doctrine/cache.git", - "reference": "53d9518ffeb019c51d542ff60cb578f076d3ff16" + "reference": "d768d58baee9a4862ca783840eca1b9add7a7f57" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/53d9518ffeb019c51d542ff60cb578f076d3ff16", - "reference": "53d9518ffeb019c51d542ff60cb578f076d3ff16", + "url": "https://api.github.com/repos/doctrine/cache/zipball/d768d58baee9a4862ca783840eca1b9add7a7f57", + "reference": "d768d58baee9a4862ca783840eca1b9add7a7f57", "shasum": "" }, "require": { @@ -166,8 +166,9 @@ }, "require-dev": { "alcaeus/mongo-php-adapter": "^1.1", + "doctrine/coding-standard": "^4.0", "mongodb/mongodb": "^1.1", - "phpunit/phpunit": "^5.7", + "phpunit/phpunit": "^7.0", "predis/predis": "~1.0" }, "suggest": { @@ -176,7 +177,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7.x-dev" + "dev-master": "1.8.x-dev" } }, "autoload": { @@ -211,12 +212,12 @@ } ], "description": "Caching library offering an object-oriented API for many cache backends", - "homepage": "http://www.doctrine-project.org", + "homepage": "https://www.doctrine-project.org", "keywords": [ "cache", "caching" ], - "time": "2017-07-22T13:00:15+00:00" + "time": "2018-08-21T18:01:43+00:00" }, { "name": "doctrine/collections", @@ -287,33 +288,39 @@ }, { "name": "doctrine/common", - "version": "v2.8.0", + "version": "v2.9.0", "source": { "type": "git", "url": "https://github.com/doctrine/common.git", - "reference": "ed349f953d443963c590b008b37b864b8a3c4b21" + "reference": "a210246d286c77d2b89040f8691ba7b3a713d2c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/common/zipball/ed349f953d443963c590b008b37b864b8a3c4b21", - "reference": "ed349f953d443963c590b008b37b864b8a3c4b21", + "url": "https://api.github.com/repos/doctrine/common/zipball/a210246d286c77d2b89040f8691ba7b3a713d2c1", + "reference": "a210246d286c77d2b89040f8691ba7b3a713d2c1", "shasum": "" }, "require": { - "doctrine/annotations": "1.*", - "doctrine/cache": "1.*", - "doctrine/collections": "1.*", - "doctrine/inflector": "1.*", - "doctrine/lexer": "1.*", - "php": "~7.1" + "doctrine/annotations": "^1.0", + "doctrine/cache": "^1.0", + "doctrine/collections": "^1.0", + "doctrine/event-manager": "^1.0", + "doctrine/inflector": "^1.0", + "doctrine/lexer": "^1.0", + "doctrine/persistence": "^1.0", + "doctrine/reflection": "^1.0", + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^5.7" + "doctrine/coding-standard": "^1.0", + "phpunit/phpunit": "^6.3", + "squizlabs/php_codesniffer": "^3.0", + "symfony/phpunit-bridge": "^4.0.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8.x-dev" + "dev-master": "2.9.x-dev" } }, "autoload": { @@ -345,10 +352,14 @@ { "name": "Johannes Schmitt", "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" } ], "description": "Common Library for Doctrine projects", - "homepage": "http://www.doctrine-project.org", + "homepage": "https://www.doctrine-project.org", "keywords": [ "annotations", "collections", @@ -356,31 +367,36 @@ "persistence", "spl" ], - "time": "2017-07-22T09:01:43+00:00" + "time": "2018-07-12T21:16:12+00:00" }, { "name": "doctrine/dbal", - "version": "v2.6.1", + "version": "v2.8.0", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "1a086f853425b1f5349775ce57e45a772d2d2ba5" + "reference": "5140a64c08b4b607b9bedaae0cedd26f04a0e621" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/1a086f853425b1f5349775ce57e45a772d2d2ba5", - "reference": "1a086f853425b1f5349775ce57e45a772d2d2ba5", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/5140a64c08b4b607b9bedaae0cedd26f04a0e621", + "reference": "5140a64c08b4b607b9bedaae0cedd26f04a0e621", "shasum": "" }, "require": { - "doctrine/common": "^2.7.1", + "doctrine/cache": "^1.0", + "doctrine/event-manager": "^1.0", "ext-pdo": "*", "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^5.4.6", + "doctrine/coding-standard": "^4.0", + "jetbrains/phpstorm-stubs": "^2018.1.2", + "phpstan/phpstan": "^0.10.1", + "phpunit/phpunit": "^7.1.2", "phpunit/phpunit-mock-objects": "!=3.2.4,!=3.2.5", - "symfony/console": "2.*||^3.0" + "symfony/console": "^2.0.5|^3.0|^4.0", + "symfony/phpunit-bridge": "^3.4.5|^4.0.5" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." @@ -391,7 +407,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6.x-dev" + "dev-master": "2.8.x-dev", + "dev-develop": "3.0.x-dev" } }, "autoload": { @@ -429,24 +446,98 @@ "persistence", "queryobject" ], - "time": "2017-07-28T10:40:18+00:00" + "time": "2018-07-13T03:16:35+00:00" }, { - "name": "doctrine/inflector", - "version": "v1.2.0", + "name": "doctrine/event-manager", + "version": "v1.0.0", "source": { "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "e11d84c6e018beedd929cff5220969a3c6d1d462" + "url": "https://github.com/doctrine/event-manager.git", + "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/e11d84c6e018beedd929cff5220969a3c6d1d462", - "reference": "e11d84c6e018beedd929cff5220969a3c6d1d462", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/a520bc093a0170feeb6b14e9d83f3a14452e64b3", + "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3", "shasum": "" }, "require": { - "php": "^7.0" + "php": "^7.1" + }, + "conflict": { + "doctrine/common": "<2.9@dev" + }, + "require-dev": { + "doctrine/coding-standard": "^4.0", + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "Doctrine Event Manager component", + "homepage": "https://www.doctrine-project.org/projects/event-manager.html", + "keywords": [ + "event", + "eventdispatcher", + "eventmanager" + ], + "time": "2018-06-11T11:59:03+00:00" + }, + { + "name": "doctrine/inflector", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "5527a48b7313d15261292c149e55e26eae771b0a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a", + "reference": "5527a48b7313d15261292c149e55e26eae771b0a", + "shasum": "" + }, + "require": { + "php": "^7.1" }, "require-dev": { "phpunit/phpunit": "^6.2" @@ -454,7 +545,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "1.3.x-dev" } }, "autoload": { @@ -496,7 +587,7 @@ "singularize", "string" ], - "time": "2017-07-22T12:18:28+00:00" + "time": "2018-01-09T20:05:19+00:00" }, { "name": "doctrine/instantiator", @@ -608,32 +699,34 @@ }, { "name": "doctrine/orm", - "version": "dev-master", + "version": "v2.6.2", "source": { "type": "git", "url": "https://github.com/doctrine/doctrine2.git", - "reference": "a0c0d3bf2a7f49020ad7e54d7d3319a251574230" + "reference": "d2b4dd71d2a276edd65d0c170375b445f8a4a4a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/doctrine2/zipball/a0c0d3bf2a7f49020ad7e54d7d3319a251574230", - "reference": "a0c0d3bf2a7f49020ad7e54d7d3319a251574230", + "url": "https://api.github.com/repos/doctrine/doctrine2/zipball/d2b4dd71d2a276edd65d0c170375b445f8a4a4a8", + "reference": "d2b4dd71d2a276edd65d0c170375b445f8a4a4a8", "shasum": "" }, "require": { - "doctrine/annotations": "~1.4", + "doctrine/annotations": "~1.5", "doctrine/cache": "~1.6", "doctrine/collections": "^1.4", "doctrine/common": "^2.7.1", - "doctrine/dbal": ">=2.5-dev,<2.7-dev", + "doctrine/dbal": "^2.6", "doctrine/instantiator": "~1.1", "ext-pdo": "*", "php": "^7.1", "symfony/console": "~3.0|~4.0" }, "require-dev": { - "phpunit/phpunit": "^6.0", - "symfony/yaml": "~3.0|~4.0" + "doctrine/coding-standard": "^1.0", + "phpunit/phpunit": "^6.5", + "squizlabs/php_codesniffer": "^3.2", + "symfony/yaml": "~3.4|~4.0" }, "suggest": { "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" @@ -684,7 +777,160 @@ "database", "orm" ], - "time": "2017-08-11 20:29:45" + "time": "2018-07-12T20:47:13+00:00" + }, + { + "name": "doctrine/persistence", + "version": "v1.0.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/persistence.git", + "reference": "af1ec238659a83e320f03e0e454e200f689b4b97" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/af1ec238659a83e320f03e0e454e200f689b4b97", + "reference": "af1ec238659a83e320f03e0e454e200f689b4b97", + "shasum": "" + }, + "require": { + "doctrine/annotations": "^1.0", + "doctrine/cache": "^1.0", + "doctrine/collections": "^1.0", + "doctrine/event-manager": "^1.0", + "doctrine/reflection": "^1.0", + "php": "^7.1" + }, + "conflict": { + "doctrine/common": "<2.9@dev" + }, + "require-dev": { + "doctrine/coding-standard": "^4.0", + "phpstan/phpstan": "^0.8", + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "Doctrine Persistence abstractions.", + "homepage": "https://doctrine-project.org/projects/persistence.html", + "keywords": [ + "persistence" + ], + "time": "2018-07-12T12:37:50+00:00" + }, + { + "name": "doctrine/reflection", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/reflection.git", + "reference": "02538d3f95e88eb397a5f86274deb2c6175c2ab6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/reflection/zipball/02538d3f95e88eb397a5f86274deb2c6175c2ab6", + "reference": "02538d3f95e88eb397a5f86274deb2c6175c2ab6", + "shasum": "" + }, + "require": { + "doctrine/annotations": "^1.0", + "ext-tokenizer": "*", + "php": "^7.1" + }, + "require-dev": { + "doctrine/coding-standard": "^4.0", + "doctrine/common": "^2.8", + "phpstan/phpstan": "^0.9.2", + "phpstan/phpstan-phpunit": "^0.9.4", + "phpunit/phpunit": "^7.0", + "squizlabs/php_codesniffer": "^3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "Doctrine Reflection component", + "homepage": "https://www.doctrine-project.org/projects/reflection.html", + "keywords": [ + "reflection" + ], + "time": "2018-06-14T14:45:07+00:00" }, { "name": "fig/http-message-util", @@ -736,78 +982,26 @@ ], "time": "2017-02-09T16:10:21+00:00" }, - { - "name": "http-interop/http-middleware", - "version": "0.4.1", - "source": { - "type": "git", - "url": "https://github.com/http-interop/http-middleware.git", - "reference": "9a801fe60e70d5d608b61d56b2dcde29516c81b9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/http-interop/http-middleware/zipball/9a801fe60e70d5d608b61d56b2dcde29516c81b9", - "reference": "9a801fe60e70d5d608b61d56b2dcde29516c81b9", - "shasum": "" - }, - "require": { - "php": ">=5.3.0", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Interop\\Http\\ServerMiddleware\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP server-side middleware", - "keywords": [ - "factory", - "http", - "middleware", - "psr", - "psr-17", - "psr-7", - "request", - "response" - ], - "time": "2017-01-14T15:23:42+00:00" - }, { "name": "imagine/imagine", - "version": "v0.7.1", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/avalanche123/Imagine.git", - "reference": "a9a702a946073cbca166718f1b02a1e72d742daa" + "reference": "f2f39f5900ed69480dfc2f23cb56b591b282d501" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/avalanche123/Imagine/zipball/a9a702a946073cbca166718f1b02a1e72d742daa", - "reference": "a9a702a946073cbca166718f1b02a1e72d742daa", + "url": "https://api.github.com/repos/avalanche123/Imagine/zipball/f2f39f5900ed69480dfc2f23cb56b591b282d501", + "reference": "f2f39f5900ed69480dfc2f23cb56b591b282d501", "shasum": "" }, "require": { "php": ">=5.3.2" }, "require-dev": { - "sami/sami": "^3.3", - "symfony/phpunit-bridge": "^3.2" + "friendsofphp/php-cs-fixer": "2.2.*", + "symfony/phpunit-bridge": "^3.2 || ^4.0" }, "suggest": { "ext-gd": "to use the GD implementation", @@ -821,8 +1015,8 @@ } }, "autoload": { - "psr-0": { - "Imagine": "lib/" + "psr-4": { + "Imagine\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -844,25 +1038,151 @@ "image manipulation", "image processing" ], - "time": "2017-05-16T10:31:22+00:00" + "time": "2018-09-27T12:22:55+00:00" }, { - "name": "nikic/fast-route", - "version": "v1.2.0", + "name": "los/loslog", + "version": "3.1.0", "source": { "type": "git", - "url": "https://github.com/nikic/FastRoute.git", - "reference": "b5f95749071c82a8e0f58586987627054400cdf6" + "url": "https://github.com/Lansoweb/LosLog.git", + "reference": "a6dc0138f2db721ffa134d495972c20b2da2e7b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/FastRoute/zipball/b5f95749071c82a8e0f58586987627054400cdf6", - "reference": "b5f95749071c82a8e0f58586987627054400cdf6", + "url": "https://api.github.com/repos/Lansoweb/LosLog/zipball/a6dc0138f2db721ffa134d495972c20b2da2e7b6", + "reference": "a6dc0138f2db721ffa134d495972c20b2da2e7b6", + "shasum": "" + }, + "require": { + "php": "^7.1", + "psr/container": "^1.0", + "psr/log": "^1.0", + "zendframework/zend-diactoros": "^1.7", + "zendframework/zend-log": "^2.9", + "zendframework/zend-stratigility": "^3.0" + }, + "require-dev": { + "mikey179/vfsstream": "^1.6", + "phpstan/phpstan": "^0.9.2", + "phpunit/phpunit": "^7.0", + "rollbar/rollbar": "^1.4", + "satooshi/php-coveralls": "^2.0", + "squizlabs/php_codesniffer": "^2.7", + "zendframework/zend-coding-standard": "^1.0" + }, + "suggest": { + "rollbar/rollbar": "Needed if you want to use Rollbar logger" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-develop": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "LosMiddleware\\LosLog\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Leandro Silva", + "email": "leandro@leandrosilva.info", + "homepage": "http://leandrosilva.info" + } + ], + "description": "LosLog provides some log utility", + "homepage": "http://github.com/Lansoweb/LosLog", + "keywords": [ + "expressive", + "log", + "los", + "module", + "zf2", + "zf3" + ], + "time": "2018-03-16T13:02:56+00:00" + }, + { + "name": "neomerx/cors-psr7", + "version": "v1.0.13", + "source": { + "type": "git", + "url": "https://github.com/neomerx/cors-psr7.git", + "reference": "2556e2013f16a55532c95928455257d5b6bbc6e2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/neomerx/cors-psr7/zipball/2556e2013f16a55532c95928455257d5b6bbc6e2", + "reference": "2556e2013f16a55532c95928455257d5b6bbc6e2", + "shasum": "" + }, + "require": { + "php": ">=5.6.0", + "psr/http-message": "^1.0", + "psr/log": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^5.7", + "scrutinizer/ocular": "^1.1", + "squizlabs/php_codesniffer": "^3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Neomerx\\Cors\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "neomerx", + "email": "info@neomerx.com" + } + ], + "description": "Framework agnostic (PSR-7) CORS implementation (www.w3.org/TR/cors/)", + "homepage": "https://github.com/neomerx/cors-psr7", + "keywords": [ + "Cross Origin Resource Sharing", + "Cross-Origin Resource Sharing", + "cors", + "neomerx", + "psr-7", + "psr7", + "w3.org", + "www.w3.org" + ], + "time": "2018-05-23T16:10:11+00:00" + }, + { + "name": "nikic/fast-route", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/FastRoute.git", + "reference": "181d480e08d9476e61381e04a71b34dc0432e812" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/FastRoute/zipball/181d480e08d9476e61381e04a71b34dc0432e812", + "reference": "181d480e08d9476e61381e04a71b34dc0432e812", "shasum": "" }, "require": { "php": ">=5.4.0" }, + "require-dev": { + "phpunit/phpunit": "^4.8.35|~5.7" + }, "type": "library", "autoload": { "psr-4": { @@ -887,7 +1207,7 @@ "router", "routing" ], - "time": "2017-01-19T11:35:12+00:00" + "time": "2018-02-13T20:26:39+00:00" }, { "name": "psr/container", @@ -938,6 +1258,58 @@ ], "time": "2017-02-14T16:28:37+00:00" }, + { + "name": "psr/http-factory", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "378bfe27931ecc54ff824a20d6f6bfc303bbd04c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/378bfe27931ecc54ff824a20d6f6bfc303bbd04c", + "reference": "378bfe27931ecc54ff824a20d6f6bfc303bbd04c", + "shasum": "" + }, + "require": { + "php": ">=7.0.0", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "time": "2018-07-30T21:54:04+00:00" + }, { "name": "psr/http-message", "version": "1.0.1", @@ -988,6 +1360,112 @@ ], "time": "2016-08-06T14:39:51+00:00" }, + { + "name": "psr/http-server-handler", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-server-handler.git", + "reference": "439d92054dc06097f2406ec074a2627839955a02" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/439d92054dc06097f2406ec074a2627839955a02", + "reference": "439d92054dc06097f2406ec074a2627839955a02", + "shasum": "" + }, + "require": { + "php": ">=7.0", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Server\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP server-side request handler", + "keywords": [ + "handler", + "http", + "http-interop", + "psr", + "psr-15", + "psr-7", + "request", + "response", + "server" + ], + "time": "2018-01-22T17:04:15+00:00" + }, + { + "name": "psr/http-server-middleware", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-server-middleware.git", + "reference": "ea17eb1fb2c8df6db919cc578451a8013c6a0ae5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/ea17eb1fb2c8df6db919cc578451a8013c6a0ae5", + "reference": "ea17eb1fb2c8df6db919cc578451a8013c6a0ae5", + "shasum": "" + }, + "require": { + "php": ">=7.0", + "psr/http-message": "^1.0", + "psr/http-server-handler": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Server\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP server-side middleware", + "keywords": [ + "http", + "http-interop", + "middleware", + "psr", + "psr-15", + "psr-7", + "request", + "response" + ], + "time": "2018-01-22T17:08:31+00:00" + }, { "name": "psr/log", "version": "1.0.2", @@ -1038,30 +1516,27 @@ { "name": "roave/security-advisories", "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "9df1a9e73fc7caa573adaf98d159623048a7feed" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/9df1a9e73fc7caa573adaf98d159623048a7feed", - "reference": "9df1a9e73fc7caa573adaf98d159623048a7feed", - "shasum": "" - }, "conflict": { - "adodb/adodb-php": "<5.20.6", - "amphp/artax": ">=2,<2.0.6|<1.0.6", + "3f/pygmentize": "<1.2", + "adodb/adodb-php": "<5.20.12", + "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1", + "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", + "brightlocal/phpwhois": "<=4.2.5", "bugsnag/bugsnag-laravel": ">=2,<2.0.2", - "cakephp/cakephp": ">=3,<3.0.15|>=2,<2.4.99|>=2.5,<2.5.99|>=2.6,<2.6.12|>=1.3,<1.3.18|>=2.7,<2.7.6|>=3.1,<3.1.4", + "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|>=3.4,<3.4.14|>=3.5,<3.5.17|>=3.6,<3.6.4", "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4", - "cartalyst/sentry": "<2.1", + "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.28", - "contao/core-bundle": ">=4,<4.4.1", + "contao/core": ">=2,<3.5.35", + "contao/core-bundle": ">=4,<4.4.18|>=4.5,<4.5.8", + "contao/listing-bundle": ">=4,<4.4.8", + "contao/newsletter-bundle": ">=4,<4.1", + "david-garcia/phpwhois": "<=4.3.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", @@ -1072,75 +1547,117 @@ "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.3.4", - "drupal/drupal": ">=8,<8.3.4", + "drupal/core": ">=7,<7.59|>=8,<8.4.8|>=8.5,<8.5.3", + "drupal/drupal": ">=7,<7.59|>=8,<8.4.8|>=8.5,<8.5.3", + "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", + "ezyang/htmlpurifier": "<4.1.1", "firebase/php-jwt": "<2", "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2", "friendsofsymfony/user-bundle": ">=1.2,<1.3.5", + "fuel/core": "<1.8.1", + "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/auth": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.10", + "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.42|>=5.6,<5.6.30", "illuminate/database": ">=4,<4.0.99|>=4.1,<4.1.29", + "illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15", + "ivankristianto/phpwhois": "<=4.3", + "james-heinrich/getid3": "<1.9.9", "joomla/session": "<1.3.1", - "laravel/framework": ">=4,<4.0.99|>=4.1,<4.1.29", + "jsmitty12/phpwhois": "<5.1", + "kazist/phpwhois": "<=4.2.6", + "kreait/firebase-php": ">=3.2,<3.8.1", + "laravel/framework": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.42|>=5.6,<5.6.30", "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10", - "magento/magento1ce": ">=1.5.0.1,<1.9.3.2", + "magento/magento1ce": "<1.9.3.9", "magento/magento1ee": ">=1.9,<1.14.3.2", - "magento/magento2ce": ">=2,<2.2", + "magento/product-community-edition": ">=2,<2.2.5", "monolog/monolog": ">=1.8,<1.12", "namshi/jose": "<2.2", "onelogin/php-saml": "<2.10.4", + "openid/php-openid": "<2.3", "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", + "paypal/merchant-sdk-php": "<3.12", "phpmailer/phpmailer": ">=5,<5.2.24", + "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3", + "phpwhois/phpwhois": "<=4.2.5", + "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", + "robrichards/xmlseclibs": ">=1,<3.0.2", "sabre/dav": ">=1.6,<1.6.99|>=1.7,<1.7.11|>=1.8,<1.8.9", - "shopware/shopware": "<4.4|>=5,<5.2.16", - "silverstripe/cms": ">=3.1,<3.1.11|>=3,<=3.0.11", + "sensiolabs/connect": "<4.2.3", + "serluck/phpwhois": "<=4.2.6", + "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.8.1|>=1.9,<1.9.1|>=1.10,<1.10.3|>=2,<2.3.3", - "simplesamlphp/simplesamlphp": "<1.14.15", + "simple-updates/phpwhois": "<=1", + "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", + "slim/slim": "<2.6", + "smarty/smarty": "<3.1.33", "socalnick/scn-social-auth": "<1.15.2", - "squizlabs/php_codesniffer": ">=1,<2.8.1", + "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1", + "stormpath/sdk": ">=0,<9.9.99", "swiftmailer/swiftmailer": ">=4,<5.4.5", + "sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2", + "sylius/sylius": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2", "symfony/dependency-injection": ">=2,<2.0.17", - "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.7", + "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-foundation": ">=2,<2.7.49|>=2.8,<2.8.44|>=3,<3.3.18|>=3.4,<3.4.14|>=4,<4.0.14|>=4.1,<4.1.3", "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.7.30,<2.7.32|>=2.8.23,<2.8.25|>=3.2.10,<3.2.12|>=3.3.3,<3.3.5|>=2.3,<2.3.37|>=2.4,<2.6.13|>=2.7,<2.7.9|>=2,<2.0.25|>=2.1,<2.1.13|>=2.2,<2.2.9", - "symfony/security-core": ">=2.7.30,<2.7.32|>=2.8.23,<2.8.25|>=3.2.10,<3.2.12|>=3.3.3,<3.3.5|>=2.8,<2.8.6|>=3,<3.0.6|>=2.4,<2.6.13|>=2.7,<2.7.9", - "symfony/security-http": ">=2.4,<2.7.13|>=2.3,<2.3.41|>=2.8,<2.8.6|>=3,<3.0.6", + "symfony/security": ">=2,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", + "symfony/security-bundle": ">=2,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", + "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<2.8.37|>=3,<3.3.17|>=3.4,<3.4.7|>=4,<4.0.7", + "symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", + "symfony/security-guard": ">=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", + "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", "symfony/serializer": ">=2,<2.0.11", - "symfony/symfony": ">=2,<2.3.41|>=2.4,<2.7.13|>=2.7.30,<2.7.32|>=2.8.23,<2.8.25|>=3.2.10,<3.2.12|>=3.3.3,<3.3.5|>=2.8,<2.8.6|>=3,<3.0.6", + "symfony/symfony": ">=2,<2.7.49|>=2.8,<2.8.44|>=3,<3.3.18|>=3.4,<3.4.14|>=4,<4.0.14|>=4.1,<4.1.3", "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.0-beta1,<2.1.3|>=2.1,<2.1.2", + "thelia/thelia": ">=2.1,<2.1.2|>=2.1.0-beta1,<2.1.3", + "theonedemon/phpwhois": "<=4.2.5", + "titon/framework": ">=0,<9.9.99", + "truckersmp/phpwhois": "<=4.3.1", "twig/twig": "<1.20", - "typo3/cms": ">=6.2,<6.2.30|>=8,<8.6.1|>=7,<7.6.16", - "typo3/flow": ">=2.3,<2.3.16|>=3,<3.0.10|>=3.1,<3.1.7|>=3.2,<3.2.7|>=3.3,<3.3.5|>=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1", + "typo3/cms": ">=6.2,<6.2.30|>=7,<7.6.30|>=8,<8.7.17|>=9,<9.3.2", + "typo3/cms-core": ">=8,<8.7.17|>=9,<9.3.2", + "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.5", + "yiisoft/yii2": "<2.0.15", "yiisoft/yii2-bootstrap": "<2.0.4", - "yiisoft/yii2-dev": "<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-diactoros": ">=1,<1.8.4", + "zendframework/zend-feed": ">=1,<2.10.3", "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-http": ">=1,<2.8.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", @@ -1149,10 +1666,11 @@ "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/zendframework": "<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" @@ -1170,49 +1688,48 @@ } ], "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it", - "time": "2017-08-08T18:44:50+00:00" + "time": "2018-10-05T18:14:02+00:00" }, { "name": "symfony/console", - "version": "v3.3.6", + "version": "v4.1.6", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "b0878233cb5c4391347e5495089c7af11b8e6201" + "reference": "dc7122fe5f6113cfaba3b3de575d31112c9aa60b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/b0878233cb5c4391347e5495089c7af11b8e6201", - "reference": "b0878233cb5c4391347e5495089c7af11b8e6201", + "url": "https://api.github.com/repos/symfony/console/zipball/dc7122fe5f6113cfaba3b3de575d31112c9aa60b", + "reference": "dc7122fe5f6113cfaba3b3de575d31112c9aa60b", "shasum": "" }, "require": { - "php": ">=5.5.9", - "symfony/debug": "~2.8|~3.0", + "php": "^7.1.3", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/dependency-injection": "<3.3" + "symfony/dependency-injection": "<3.4", + "symfony/process": "<3.3" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~3.3", - "symfony/dependency-injection": "~3.3", - "symfony/event-dispatcher": "~2.8|~3.0", - "symfony/filesystem": "~2.8|~3.0", - "symfony/http-kernel": "~2.8|~3.0", - "symfony/process": "~2.8|~3.0" + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/lock": "~3.4|~4.0", + "symfony/process": "~3.4|~4.0" }, "suggest": { - "psr/log": "For using the console logger", + "psr/log-implementation": "For using the console logger", "symfony/event-dispatcher": "", - "symfony/filesystem": "", + "symfony/lock": "", "symfony/process": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "4.1-dev" } }, "autoload": { @@ -1239,44 +1756,40 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2017-07-29T21:27:59+00:00" + "time": "2018-10-03T08:15:46+00:00" }, { - "name": "symfony/debug", - "version": "v3.3.6", + "name": "symfony/polyfill-ctype", + "version": "v1.9.0", "source": { "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "7c13ae8ce1e2adbbd574fc39de7be498e1284e13" + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/7c13ae8ce1e2adbbd574fc39de7be498e1284e13", - "reference": "7c13ae8ce1e2adbbd574fc39de7be498e1284e13", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", "shasum": "" }, "require": { - "php": ">=5.5.9", - "psr/log": "~1.0" + "php": ">=5.3.3" }, - "conflict": { - "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" - }, - "require-dev": { - "symfony/http-kernel": "~2.8|~3.0" + "suggest": { + "ext-ctype": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "1.9-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Debug\\": "" + "Symfony\\Polyfill\\Ctype\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "files": [ + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1284,31 +1797,37 @@ "MIT" ], "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" + }, + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" } ], - "description": "Symfony Debug Component", + "description": "Symfony polyfill for ctype functions", "homepage": "https://symfony.com", - "time": "2017-07-28T15:27:31+00:00" + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "time": "2018-08-06T14:22:27+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.4.0", + "version": "v1.9.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "f29dca382a6485c3cbe6379f0c61230167681937" + "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/f29dca382a6485c3cbe6379f0c61230167681937", - "reference": "f29dca382a6485c3cbe6379f0c61230167681937", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d0cd638f4634c16d8df4508e847f14e9e43168b8", + "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8", "shasum": "" }, "require": { @@ -1320,7 +1839,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -1354,27 +1873,31 @@ "portable", "shim" ], - "time": "2017-06-09T14:24:12+00:00" + "time": "2018-08-06T14:22:27+00:00" }, { "name": "symfony/yaml", - "version": "v3.3.6", + "version": "v4.1.6", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "ddc23324e6cfe066f3dd34a37ff494fa80b617ed" + "reference": "367e689b2fdc19965be435337b50bc8adf2746c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/ddc23324e6cfe066f3dd34a37ff494fa80b617ed", - "reference": "ddc23324e6cfe066f3dd34a37ff494fa80b617ed", + "url": "https://api.github.com/repos/symfony/yaml/zipball/367e689b2fdc19965be435337b50bc8adf2746c9", + "reference": "367e689b2fdc19965be435337b50bc8adf2746c9", "shasum": "" }, "require": { - "php": ">=5.5.9" + "php": "^7.1.3", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/console": "<3.4" }, "require-dev": { - "symfony/console": "~2.8|~3.0" + "symfony/console": "~3.4|~4.0" }, "suggest": { "symfony/console": "For validating YAML files using the lint command" @@ -1382,7 +1905,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "4.1-dev" } }, "autoload": { @@ -1409,37 +1932,199 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2017-07-23T12:43:26+00:00" + "time": "2018-10-02T16:36:10+00:00" }, { - "name": "zendframework/zend-component-installer", - "version": "1.0.0", + "name": "tuupola/callable-handler", + "version": "0.4.0", "source": { "type": "git", - "url": "https://github.com/zendframework/zend-component-installer.git", - "reference": "0ca44807dbcf356b75a869c61b533f917ccbc5ae" + "url": "https://github.com/tuupola/callable-handler.git", + "reference": "662744a6a4a52235be5bd73ac04de4375eff3fc9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-component-installer/zipball/0ca44807dbcf356b75a869c61b533f917ccbc5ae", - "reference": "0ca44807dbcf356b75a869c61b533f917ccbc5ae", + "url": "https://api.github.com/repos/tuupola/callable-handler/zipball/662744a6a4a52235be5bd73ac04de4375eff3fc9", + "reference": "662744a6a4a52235be5bd73ac04de4375eff3fc9", + "shasum": "" + }, + "require": { + "php": "^7.1", + "psr/http-server-middleware": "^1.0" + }, + "require-dev": { + "codedungeon/phpunit-result-printer": "^0.4.4", + "overtrue/phplint": "^1.0", + "phpunit/phpunit": "^6.5", + "squizlabs/php_codesniffer": "^3.2", + "tuupola/http-factory": "^0.4.0", + "zendframework/zend-diactoros": "^1.6" + }, + "type": "library", + "autoload": { + "psr-4": { + "Tuupola\\Middleware\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mika Tuupola", + "email": "tuupola@appelsiini.net", + "homepage": "https://appelsiini.net/", + "role": "Developer" + } + ], + "description": "Compatibility layer for PSR-7 double pass and PSR-15 middlewares.", + "homepage": "https://github.com/tuupola/callable-handler", + "keywords": [ + "middleware", + "psr-15", + "psr-7" + ], + "time": "2018-08-02T11:15:40+00:00" + }, + { + "name": "tuupola/cors-middleware", + "version": "0.9.0", + "source": { + "type": "git", + "url": "https://github.com/tuupola/cors-middleware.git", + "reference": "d76b26cf4f10e913569dc7c08fb9df9abe9b0604" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tuupola/cors-middleware/zipball/d76b26cf4f10e913569dc7c08fb9df9abe9b0604", + "reference": "d76b26cf4f10e913569dc7c08fb9df9abe9b0604", + "shasum": "" + }, + "require": { + "neomerx/cors-psr7": "^1.0", + "php": "^7.1", + "psr/http-server-middleware": "^1.0", + "tuupola/callable-handler": "^0.3.0|^0.4.0", + "tuupola/http-factory": "^0.4.0" + }, + "require-dev": { + "codedungeon/phpunit-result-printer": "^0.4.4", + "equip/dispatch": "^2.0", + "overtrue/phplint": "^1.0", + "phpunit/phpunit": "^6.5", + "squizlabs/php_codesniffer": "^3.2", + "zendframework/zend-diactoros": "^1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Tuupola\\Middleware\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mika Tuupola", + "email": "tuupola@appelsiini.net", + "homepage": "http://www.appelsiini.net/", + "role": "Developer" + } + ], + "description": "PSR-7 and PSR-15 CORS middleware", + "homepage": "https://github.com/tuupola/cors-middleware", + "keywords": [ + "cors", + "middleware", + "psr-15", + "psr-7" + ], + "time": "2018-08-21T07:44:14+00:00" + }, + { + "name": "tuupola/http-factory", + "version": "0.4.2", + "source": { + "type": "git", + "url": "https://github.com/tuupola/http-factory.git", + "reference": "c7e2712d5c4f49ddae704ae1f42854f437ddb028" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tuupola/http-factory/zipball/c7e2712d5c4f49ddae704ae1f42854f437ddb028", + "reference": "c7e2712d5c4f49ddae704ae1f42854f437ddb028", + "shasum": "" + }, + "require": { + "php": "^7.1", + "psr/http-factory": "^1.0" + }, + "require-dev": { + "http-interop/http-factory-tests": "^0.5.0", + "overtrue/phplint": "^1.0", + "phpunit/phpunit": "^6.5", + "squizlabs/php_codesniffer": "^3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Tuupola\\Http\\Factory\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mika Tuupola", + "email": "tuupola@appelsiini.net", + "homepage": "http://www.appelsiini.net/", + "role": "Developer" + } + ], + "description": "Lightweight autodiscovering PSR-17 HTTP factories", + "homepage": "https://github.com/tuupola/http-factory", + "keywords": [ + "http", + "psr-17", + "psr-7" + ], + "time": "2018-08-09T09:02:33+00:00" + }, + { + "name": "zendframework/zend-component-installer", + "version": "2.1.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-component-installer.git", + "reference": "788b74439fff056b848c47aeb3d8b63cf2fb2161" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-component-installer/zipball/788b74439fff056b848c47aeb3d8b63cf2fb2161", + "reference": "788b74439fff056b848c47aeb3d8b63cf2fb2161", "shasum": "" }, "require": { "composer-plugin-api": "^1.0", - "php": "^5.6 || ^7.0" + "php": "^7.1" }, "require-dev": { - "composer/composer": "^1.3.2", - "malukenho/docheader": "^0.1.5", - "mikey179/vfsstream": "^1.6", - "phpunit/phpunit": "^6.0.7 || ^5.7.14", + "composer/composer": "^1.5.2", + "malukenho/docheader": "^0.1.6", + "mikey179/vfsstream": "^1.6.5", + "phpunit/phpunit": "^5.7.23 || ^6.4.3", "zendframework/zend-coding-standard": "~1.0.0" }, "type": "composer-plugin", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "2.1.x-dev", + "dev-develop": "2.2.x-dev" }, "class": "Zend\\ComponentInstaller\\ComponentInstaller" }, @@ -1453,20 +2138,27 @@ "BSD-3-Clause" ], "description": "Composer plugin for automating component registration in zend-mvc and Expressive applications", - "time": "2017-04-25T16:43:54+00:00" + "keywords": [ + "ZendFramework", + "component installer", + "composer", + "plugin", + "zf" + ], + "time": "2018-03-21T16:53:56+00:00" }, { "name": "zendframework/zend-config", - "version": "3.1.0", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/zendframework/zend-config.git", - "reference": "a12e4a592bf66d9629b84960e268f3752e53abe4" + "reference": "6796f5dcba52c84ef2501d7313618989b5ef3023" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-config/zipball/a12e4a592bf66d9629b84960e268f3752e53abe4", - "reference": "a12e4a592bf66d9629b84960e268f3752e53abe4", + "url": "https://api.github.com/repos/zendframework/zend-config/zipball/6796f5dcba52c84ef2501d7313618989b5ef3023", + "reference": "6796f5dcba52c84ef2501d7313618989b5ef3023", "shasum": "" }, "require": { @@ -1479,23 +2171,23 @@ "container-interop/container-interop": "<1.2.0" }, "require-dev": { - "malukenho/docheader": "^0.1.5", - "phpunit/phpunit": "^5.7 || ^6.0", + "malukenho/docheader": "^0.1.6", + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2", "zendframework/zend-coding-standard": "~1.0.0", - "zendframework/zend-filter": "^2.7.1", - "zendframework/zend-i18n": "^2.7.3", - "zendframework/zend-servicemanager": "^2.7.8 || ^3.2.1" + "zendframework/zend-filter": "^2.7.2", + "zendframework/zend-i18n": "^2.7.4", + "zendframework/zend-servicemanager": "^2.7.8 || ^3.3" }, "suggest": { - "zendframework/zend-filter": "^2.7.1; install if you want to use the Filter processor", - "zendframework/zend-i18n": "^2.7.3; install if you want to use the Translator processor", - "zendframework/zend-servicemanager": "^2.7.8 || ^3.2.1; if you need an extensible plugin manager for use with the Config Factory" + "zendframework/zend-filter": "^2.7.2; install if you want to use the Filter processor", + "zendframework/zend-i18n": "^2.7.4; install if you want to use the Translator processor", + "zendframework/zend-servicemanager": "^2.7.8 || ^3.3; if you need an extensible plugin manager for use with the Config Factory" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev", - "dev-develop": "3.2-dev" + "dev-master": "3.2.x-dev", + "dev-develop": "3.3.x-dev" } }, "autoload": { @@ -1508,47 +2200,49 @@ "BSD-3-Clause" ], "description": "provides a nested object property based user interface for accessing this configuration data within application code", - "homepage": "https://github.com/zendframework/zend-config", "keywords": [ + "ZendFramework", "config", - "zf2" + "zf" ], - "time": "2017-02-22T14:31:10+00:00" + "time": "2018-04-24T19:26:44+00:00" }, { "name": "zendframework/zend-config-aggregator", - "version": "1.0.0", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/zendframework/zend-config-aggregator.git", - "reference": "9494f491db02112c48777f1948a3b7ef71d674ab" + "reference": "2a08547b64119a73b6700bde3301d978258dfcb5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-config-aggregator/zipball/9494f491db02112c48777f1948a3b7ef71d674ab", - "reference": "9494f491db02112c48777f1948a3b7ef71d674ab", + "url": "https://api.github.com/repos/zendframework/zend-config-aggregator/zipball/2a08547b64119a73b6700bde3301d978258dfcb5", + "reference": "2a08547b64119a73b6700bde3301d978258dfcb5", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^5.6 || ^7.0", + "zendframework/zend-stdlib": "^2.7.7 || ^3.1.0" }, "require-dev": { "malukenho/docheader": "^0.1.5", "mikey179/vfsstream": "^1.6", - "phpunit/phpunit": "^5.7", + "phpunit/phpunit": "^5.7.21 || ^6.3", "zendframework/zend-coding-standard": "~1.0.0", "zendframework/zend-config": "^2.6 || ^3.0", "zendframework/zend-servicemanager": "^2.7.7 || ^3.1.1" }, "suggest": { "zendframework/zend-config": "Allows loading configuration from XML, INI, YAML, and JSON files", - "zendframework/zend-stdlib": "Allows removing configuration keys and globbing on Windows platform" + "zendframework/zend-config-aggregator-modulemanager": "Allows loading configuration from zend-mvc Module classes", + "zendframework/zend-config-aggregator-parameters": "Allows usage of templated parameters within your configuration" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev", - "dev-develop": "1.1-dev" + "dev-master": "1.1.x-dev", + "dev-develop": "1.2.x-dev" } }, "autoload": { @@ -1558,34 +2252,33 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD 3-Clause" + "BSD-3-Clause" ], - "authors": [ - { - "name": "Mateusz Tymek", - "email": "mtymek@gmail.com" - } + "description": "Lightweight library for collecting and merging configuration from different sources", + "keywords": [ + "ZendFramework", + "config-aggregator", + "zf" ], - "description": "Lightweight library for merging and caching application config", - "time": "2017-04-24T21:19:47+00:00" + "time": "2018-04-04T20:37:31+00:00" }, { "name": "zendframework/zend-diactoros", - "version": "1.4.0", + "version": "1.8.6", "source": { "type": "git", "url": "https://github.com/zendframework/zend-diactoros.git", - "reference": "b03f285a333f51e58c95cce54109a4a9ed691436" + "reference": "20da13beba0dde8fb648be3cc19765732790f46e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/b03f285a333f51e58c95cce54109a4a9ed691436", - "reference": "b03f285a333f51e58c95cce54109a4a9ed691436", + "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/20da13beba0dde8fb648be3cc19765732790f46e", + "reference": "20da13beba0dde8fb648be3cc19765732790f46e", "shasum": "" }, "require": { - "php": "^5.4 || ^7.0", - "psr/http-message": "~1.0" + "php": "^5.6 || ^7.0", + "psr/http-message": "^1.0" }, "provide": { "psr/http-message-implementation": "1.0" @@ -1593,17 +2286,29 @@ "require-dev": { "ext-dom": "*", "ext-libxml": "*", - "phpunit/phpunit": "^4.6 || ^5.5", - "zendframework/zend-coding-standard": "~1.0.0" + "php-http/psr7-integration-tests": "dev-master", + "phpunit/phpunit": "^5.7.16 || ^6.0.8 || ^7.2.7", + "zendframework/zend-coding-standard": "~1.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev", - "dev-develop": "1.5-dev" + "dev-master": "1.8.x-dev", + "dev-develop": "1.9.x-dev", + "dev-release-2.0": "2.0.x-dev" } }, "autoload": { + "files": [ + "src/functions/create_uploaded_file.php", + "src/functions/marshal_headers_from_sapi.php", + "src/functions/marshal_method_from_sapi.php", + "src/functions/marshal_protocol_version_from_sapi.php", + "src/functions/marshal_uri_from_sapi.php", + "src/functions/normalize_server.php", + "src/functions/normalize_uploaded_files.php", + "src/functions/parse_cookie_header.php" + ], "psr-4": { "Zend\\Diactoros\\": "src/" } @@ -1619,34 +2324,34 @@ "psr", "psr-7" ], - "time": "2017-04-06T16:18:34+00:00" + "time": "2018-09-05T19:29:37+00:00" }, { "name": "zendframework/zend-escaper", - "version": "2.5.2", + "version": "2.6.0", "source": { "type": "git", "url": "https://github.com/zendframework/zend-escaper.git", - "reference": "2dcd14b61a72d8b8e27d579c6344e12c26141d4e" + "reference": "31d8aafae982f9568287cb4dce987e6aff8fd074" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-escaper/zipball/2dcd14b61a72d8b8e27d579c6344e12c26141d4e", - "reference": "2dcd14b61a72d8b8e27d579c6344e12c26141d4e", + "url": "https://api.github.com/repos/zendframework/zend-escaper/zipball/31d8aafae982f9568287cb4dce987e6aff8fd074", + "reference": "31d8aafae982f9568287cb4dce987e6aff8fd074", "shasum": "" }, "require": { - "php": ">=5.5" + "php": "^5.6 || ^7.0" }, "require-dev": { - "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "~4.0" + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2", + "zendframework/zend-coding-standard": "~1.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev", - "dev-develop": "2.6-dev" + "dev-master": "2.6.x-dev", + "dev-develop": "2.7.x-dev" } }, "autoload": { @@ -1658,57 +2363,64 @@ "license": [ "BSD-3-Clause" ], - "homepage": "https://github.com/zendframework/zend-escaper", + "description": "Securely and safely escape HTML, HTML attributes, JavaScript, CSS, and URLs", "keywords": [ + "ZendFramework", "escaper", - "zf2" + "zf" ], - "time": "2016-06-30T19:48:38+00:00" + "time": "2018-04-25T15:48:53+00:00" }, { "name": "zendframework/zend-expressive", - "version": "2.0.3", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/zendframework/zend-expressive.git", - "reference": "293145df73f288b16107d1388995282c4e8599fd" + "reference": "a57c75703e781e3a8e812b83413443f3ce550a0f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-expressive/zipball/293145df73f288b16107d1388995282c4e8599fd", - "reference": "293145df73f288b16107d1388995282c4e8599fd", + "url": "https://api.github.com/repos/zendframework/zend-expressive/zipball/a57c75703e781e3a8e812b83413443f3ce550a0f", + "reference": "a57c75703e781e3a8e812b83413443f3ce550a0f", "shasum": "" }, "require": { "fig/http-message-util": "^1.1.2", - "php": "^5.6 || ^7.0", + "php": "^7.1", "psr/container": "^1.0", "psr/http-message": "^1.0.1", - "zendframework/zend-diactoros": "^1.3.10", - "zendframework/zend-expressive-router": "^2.1", - "zendframework/zend-expressive-template": "^1.0.4", - "zendframework/zend-stratigility": "^2.0.1" + "psr/http-server-middleware": "^1.0", + "zendframework/zend-expressive-router": "^3.0", + "zendframework/zend-expressive-template": "^2.0", + "zendframework/zend-httphandlerrunner": "^1.0.1", + "zendframework/zend-stratigility": "^3.0" }, "conflict": { - "container-interop/container-interop": "<1.2.0" + "container-interop/container-interop": "<1.2.0", + "zendframework/zend-diactoros": "<1.7.1" }, "require-dev": { - "filp/whoops": "^2.1.6 || ^1.1.10", - "malukenho/docheader": "^0.1.5", - "mockery/mockery": "^0.9.5", - "phpunit/phpunit": "^6.0.8 || ^5.7.15", + "filp/whoops": "^1.1.10 || ^2.1.13", + "malukenho/docheader": "^0.1.6", + "mockery/mockery": "^1.0", + "phpstan/phpstan": "^0.9.2", + "phpstan/phpstan-strict-rules": "^0.9", + "phpunit/phpunit": "^7.0.1", "zendframework/zend-coding-standard": "~1.0.0", - "zendframework/zend-expressive-aurarouter": "^2.0", - "zendframework/zend-expressive-fastroute": "^2.0", - "zendframework/zend-expressive-zendrouter": "^2.0.1", - "zendframework/zend-servicemanager": "^3.3 || ^2.7.8" + "zendframework/zend-diactoros": "^1.7.1 || ^2.0", + "zendframework/zend-expressive-aurarouter": "^3.0", + "zendframework/zend-expressive-fastroute": "^3.0", + "zendframework/zend-expressive-zendrouter": "^3.0", + "zendframework/zend-servicemanager": "^2.7.8 || ^3.3" }, "suggest": { - "aura/di": "^3.2 to make use of Aura.Di dependency injection container", "filp/whoops": "^2.1 to use the Whoops error handler", - "xtreamwayz/pimple-container-interop": "^1.0 to use Pimple for dependency injection", + "psr/http-message-implementation": "Please install a psr/http-message-implementation to consume Expressive; e.g., zendframework/zend-diactoros", + "zendframework/zend-auradi-config": "^1.0 to use Aura.Di dependency injection container", "zendframework/zend-expressive-helpers": "^3.0 for its UrlHelper, ServerUrlHelper, and BodyParseMiddleware", - "zendframework/zend-expressive-tooling": "For migration and development tools; require it with the --dev flag", + "zendframework/zend-expressive-tooling": "^1.0 for migration and development tools; require it with the --dev flag", + "zendframework/zend-pimple-config": "^1.0 to use Pimple for dependency injection container", "zendframework/zend-servicemanager": "^3.3 to use zend-servicemanager for dependency injection" }, "bin": [ @@ -1717,11 +2429,17 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev", - "dev-develop": "2.1-dev" + "dev-master": "3.2.x-dev", + "dev-develop": "3.3.x-dev" + }, + "zf": { + "config-provider": "Zend\\Expressive\\ConfigProvider" } }, "autoload": { + "files": [ + "src/constants.php" + ], "psr-4": { "Zend\\Expressive\\": "src/" } @@ -1730,47 +2448,63 @@ "license": [ "BSD-3-Clause" ], - "description": "PSR-7 Middleware Microframework based on Stratigility", + "description": "PSR-15 Middleware Microframework", "keywords": [ + "PSR-11", + "ZendFramework", + "expressive", "http", "middleware", "psr", - "psr-7" + "psr-15", + "psr-7", + "zend-expressive", + "zf" ], - "time": "2017-03-28T15:56:53+00:00" + "time": "2018-09-27T21:32:28+00:00" }, { "name": "zendframework/zend-expressive-fastroute", - "version": "2.0.0", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/zendframework/zend-expressive-fastroute.git", - "reference": "646ca5818f4a887f9111c1d815434155383fd508" + "reference": "da91f1ba3d03e3aad58d9f0290518f8e28e2e8f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-expressive-fastroute/zipball/646ca5818f4a887f9111c1d815434155383fd508", - "reference": "646ca5818f4a887f9111c1d815434155383fd508", + "url": "https://api.github.com/repos/zendframework/zend-expressive-fastroute/zipball/da91f1ba3d03e3aad58d9f0290518f8e28e2e8f0", + "reference": "da91f1ba3d03e3aad58d9f0290518f8e28e2e8f0", "shasum": "" }, "require": { - "fig/http-message-util": "^1.1", - "nikic/fast-route": "^1.0.0", - "php": "^5.6 || ^7.0", - "psr/http-message": "^1.0", - "zendframework/zend-expressive-router": "^2.0", - "zendframework/zend-stdlib": "^3.1" + "fig/http-message-util": "^1.1.2", + "nikic/fast-route": "^1.2", + "php": "^7.1", + "psr/container": "^1.0", + "psr/http-message": "^1.0.1", + "zendframework/zend-expressive-router": "^3.0", + "zendframework/zend-stdlib": "^2.0 || ^3.1" + }, + "conflict": { + "container-interop/container-interop": "<1.2.0" }, "require-dev": { - "malukenho/docheader": "^0.1.5", - "phpunit/phpunit": "^4.7 || ^5.6", - "zendframework/zend-coding-standard": "~1.0.0" + "malukenho/docheader": "^0.1.6", + "mikey179/vfsstream": "^1.6.5", + "phpunit/phpunit": "^7.0.2", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-diactoros": "^1.7.1", + "zendframework/zend-stratigility": "^3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev", - "dev-develop": "2.1-dev" + "dev-master": "3.0.x-dev", + "dev-develop": "3.1.x-dev" + }, + "zf": { + "config-provider": "Zend\\Expressive\\Router\\FastRouteRouter\\ConfigProvider" } }, "autoload": { @@ -1785,52 +2519,53 @@ "description": "FastRoute integration for Expressive", "keywords": [ "FastRoute", + "ZendFramework", "expressive", "http", "middleware", "psr", - "psr-7" + "psr-7", + "zend-expressive", + "zf" ], - "time": "2017-01-11T22:05:53+00:00" + "time": "2018-08-02T14:10:40+00:00" }, { "name": "zendframework/zend-expressive-helpers", - "version": "4.0.0", + "version": "5.1.2", "source": { "type": "git", "url": "https://github.com/zendframework/zend-expressive-helpers.git", - "reference": "c49acbb77b8c7d54d3b78e1474ed968b65c4d80c" + "reference": "c4db15318ae53965794f46618535fc61dd058ea7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-expressive-helpers/zipball/c49acbb77b8c7d54d3b78e1474ed968b65c4d80c", - "reference": "c49acbb77b8c7d54d3b78e1474ed968b65c4d80c", + "url": "https://api.github.com/repos/zendframework/zend-expressive-helpers/zipball/c4db15318ae53965794f46618535fc61dd058ea7", + "reference": "c4db15318ae53965794f46618535fc61dd058ea7", "shasum": "" }, "require": { - "http-interop/http-middleware": "^0.4.1", - "php": "^5.6 || ^7.0", + "php": "^7.1", "psr/container": "^1.0", "psr/http-message": "^1.0.1", - "zendframework/zend-expressive-router": "^2.1" + "psr/http-server-middleware": "^1.0", + "zendframework/zend-expressive-router": "^3.0" }, "require-dev": { - "malukenho/docheader": "^0.1.5", - "mockery/mockery": "^0.9.5", - "phpunit/phpunit": "^6.0.8 || ^5.7.15", + "malukenho/docheader": "^0.1.6", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^7.0.2", "zendframework/zend-coding-standard": "~1.0.0", - "zendframework/zend-diactoros": "^1.3.10" - }, - "suggest": { - "aura/di": "^3.2 to make use of Aura.Di dependency injection container", - "mouf/pimple-interop": "^1.0 to use Pimple for dependency injection", - "zendframework/zend-servicemanager": "^3.3 to use zend-servicemanager for dependency injection" + "zendframework/zend-diactoros": "^1.7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev", - "dev-develop": "4.1-dev" + "dev-master": "5.1.x-dev", + "dev-develop": "5.2.x-dev" + }, + "zf": { + "config-provider": "Zend\\Expressive\\Helper\\ConfigProvider" } }, "autoload": { @@ -1844,49 +2579,56 @@ ], "description": "Helper/Utility classes for Expressive", "keywords": [ + "ZendFramework", "expressive", "http", "middleware", "psr", - "psr-7" + "psr-7", + "zend-expressive", + "zf" ], - "time": "2017-03-13T21:52:53+00:00" + "time": "2018-07-26T20:05:23+00:00" }, { "name": "zendframework/zend-expressive-router", - "version": "2.1.0", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/zendframework/zend-expressive-router.git", - "reference": "88d711aee740ac8fbd684472469e16b85435cc79" + "reference": "072d6b0620f7e1e616cb60062425b4eedd1a0447" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-expressive-router/zipball/88d711aee740ac8fbd684472469e16b85435cc79", - "reference": "88d711aee740ac8fbd684472469e16b85435cc79", + "url": "https://api.github.com/repos/zendframework/zend-expressive-router/zipball/072d6b0620f7e1e616cb60062425b4eedd1a0447", + "reference": "072d6b0620f7e1e616cb60062425b4eedd1a0447", "shasum": "" }, "require": { - "fig/http-message-util": "^1.1", - "http-interop/http-middleware": "^0.4.1", - "php": "^5.6 || ^7.0", - "psr/http-message": "^1.0" + "fig/http-message-util": "^1.1.2", + "php": "^7.1", + "psr/container": "^1.0", + "psr/http-message": "^1.0.1", + "psr/http-server-middleware": "^1.0" }, "require-dev": { - "malukenho/docheader": "^0.1.5", - "phpunit/phpunit": "^4.7 || ^5.6", + "malukenho/docheader": "^0.1.6", + "phpunit/phpunit": "^7.0.2", "zendframework/zend-coding-standard": "~1.0.0" }, "suggest": { - "zendframework/zend-expressive-aurarouter": "^1.0 to use the Aura.Router routing adapter", - "zendframework/zend-expressive-fastroute": "^1.2 to use the FastRoute routing adapter", - "zendframework/zend-expressive-zendrouter": "^1.2 to use the zend-router routing adapter" + "zendframework/zend-expressive-aurarouter": "^3.0 to use the Aura.Router routing adapter", + "zendframework/zend-expressive-fastroute": "^3.0 to use the FastRoute routing adapter", + "zendframework/zend-expressive-zendrouter": "^3.0 to use the zend-router routing adapter" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1-dev", - "dev-develop": "2.2-dev" + "dev-master": "3.1.x-dev", + "dev-develop": "3.2.x-dev" + }, + "zf": { + "config-provider": "Zend\\Expressive\\Router\\ConfigProvider" } }, "autoload": { @@ -1900,45 +2642,49 @@ ], "description": "Router subcomponent for Expressive", "keywords": [ + "ZendFramework", "expressive", "http", "middleware", "psr", - "psr-7" + "psr-7", + "zend-expressive", + "zf" ], - "time": "2017-01-24T22:28:12+00:00" + "time": "2018-06-05T15:28:00+00:00" }, { "name": "zendframework/zend-expressive-template", - "version": "1.0.4", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/zendframework/zend-expressive-template.git", - "reference": "23922f96b32ab6e64fc551ec06b81fd047828765" + "reference": "b8b9ece61ed598a58223638933e2fd703ae4a5e9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-expressive-template/zipball/23922f96b32ab6e64fc551ec06b81fd047828765", - "reference": "23922f96b32ab6e64fc551ec06b81fd047828765", + "url": "https://api.github.com/repos/zendframework/zend-expressive-template/zipball/b8b9ece61ed598a58223638933e2fd703ae4a5e9", + "reference": "b8b9ece61ed598a58223638933e2fd703ae4a5e9", "shasum": "" }, "require": { - "php": ">=5.5" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^4.7", + "malukenho/docheader": "^0.1.6", + "phpunit/phpunit": "^7.0.2", "zendframework/zend-coding-standard": "~1.0.0" }, "suggest": { - "zendframework/zend-expressive-platesrenderer": "^0.1 to use the Plates template renderer", - "zendframework/zend-expressive-twigrenderer": "^0.1 to use the Twig template renderer", - "zendframework/zend-expressive-zendviewrenderer": "^0.1 to use the zend-view PhpRenderer template renderer" + "zendframework/zend-expressive-platesrenderer": "^2.0 to use the Plates template renderer", + "zendframework/zend-expressive-twigrenderer": "^2.0 to use the Twig template renderer", + "zendframework/zend-expressive-zendviewrenderer": "^2.0 to use the zend-view PhpRenderer template renderer" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev", - "dev-develop": "1.1-dev" + "dev-master": "2.0.x-dev", + "dev-develop": "2.1.x-dev" } }, "autoload": { @@ -1952,23 +2698,201 @@ ], "description": "Template subcomponent for Expressive", "keywords": [ + "ZendFramework", "expressive", - "template" + "template", + "zend-expressive", + "zf" ], - "time": "2017-01-11T18:42:34+00:00" + "time": "2018-03-15T15:42:46+00:00" }, { - "name": "zendframework/zend-servicemanager", - "version": "3.3.0", + "name": "zendframework/zend-httphandlerrunner", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/zendframework/zend-servicemanager.git", - "reference": "c3036efb81f71bfa36cc9962ee5d4474f36581d0" + "url": "https://github.com/zendframework/zend-httphandlerrunner.git", + "reference": "5e4c1e82a8bb1585020eafd32c49ece5a6ee98df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-servicemanager/zipball/c3036efb81f71bfa36cc9962ee5d4474f36581d0", - "reference": "c3036efb81f71bfa36cc9962ee5d4474f36581d0", + "url": "https://api.github.com/repos/zendframework/zend-httphandlerrunner/zipball/5e4c1e82a8bb1585020eafd32c49ece5a6ee98df", + "reference": "5e4c1e82a8bb1585020eafd32c49ece5a6ee98df", + "shasum": "" + }, + "require": { + "php": "^7.1", + "psr/http-message": "^1.0", + "psr/http-message-implementation": "^1.0", + "psr/http-server-handler": "^1.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.3", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-diactoros": "^1.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + }, + "zf": { + "config-provider": "Zend\\HttpHandlerRunner\\ConfigProvider" + } + }, + "autoload": { + "psr-4": { + "Zend\\HttpHandlerRunner\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Execute PSR-15 RequestHandlerInterface instances and emit responses they generate.", + "keywords": [ + "ZendFramework", + "components", + "expressive", + "psr-15", + "psr-7", + "zf" + ], + "time": "2018-02-21T20:33:02+00:00" + }, + { + "name": "zendframework/zend-json", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-json.git", + "reference": "4dd940e8e6f32f1d36ea6b0677ea57c540c7c19c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-json/zipball/4dd940e8e6f32f1d36ea6b0677ea57c540c7c19c", + "reference": "4dd940e8e6f32f1d36ea6b0677ea57c540c7c19c", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.23 || ^6.4.3", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-stdlib": "^2.7.7 || ^3.1" + }, + "suggest": { + "zendframework/zend-json-server": "For implementing JSON-RPC servers", + "zendframework/zend-xml2json": "For converting XML documents to JSON" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1.x-dev", + "dev-develop": "3.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Json\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides convenience methods for serializing native PHP to JSON and decoding JSON to native PHP", + "keywords": [ + "ZendFramework", + "json", + "zf" + ], + "time": "2018-01-04T17:51:34+00:00" + }, + { + "name": "zendframework/zend-log", + "version": "2.10.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-log.git", + "reference": "9cec3b092acb39963659c2f32441cccc56b3f430" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-log/zipball/9cec3b092acb39963659c2f32441cccc56b3f430", + "reference": "9cec3b092acb39963659c2f32441cccc56b3f430", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0", + "psr/log": "^1.0", + "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", + "zendframework/zend-stdlib": "^2.7 || ^3.0" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "mikey179/vfsstream": "^1.6", + "phpunit/phpunit": "^5.7.15 || ^6.0.8", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-db": "^2.6", + "zendframework/zend-escaper": "^2.5", + "zendframework/zend-filter": "^2.5", + "zendframework/zend-mail": "^2.6.1", + "zendframework/zend-validator": "^2.10.1" + }, + "suggest": { + "ext-mongo": "mongo extension to use Mongo writer", + "ext-mongodb": "mongodb extension to use MongoDB writer", + "zendframework/zend-console": "Zend\\Console component to use the RequestID log processor", + "zendframework/zend-db": "Zend\\Db component to use the database log writer", + "zendframework/zend-escaper": "Zend\\Escaper component, for use in the XML log formatter", + "zendframework/zend-mail": "Zend\\Mail component to use the email log writer", + "zendframework/zend-validator": "Zend\\Validator component to block invalid log messages" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.10.x-dev", + "dev-develop": "2.11.x-dev" + }, + "zf": { + "component": "Zend\\Log", + "config-provider": "Zend\\Log\\ConfigProvider" + } + }, + "autoload": { + "psr-4": { + "Zend\\Log\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "component for general purpose logging", + "homepage": "https://github.com/zendframework/zend-log", + "keywords": [ + "log", + "logging", + "zf2" + ], + "time": "2018-04-09T21:59:51+00:00" + }, + { + "name": "zendframework/zend-servicemanager", + "version": "3.3.2", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-servicemanager.git", + "reference": "9f35a104b8d4d3b32da5f4a3b6efc0dd62e5af42" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-servicemanager/zipball/9f35a104b8d4d3b32da5f4a3b6efc0dd62e5af42", + "reference": "9f35a104b8d4d3b32da5f4a3b6efc0dd62e5af42", "shasum": "" }, "require": { @@ -1982,10 +2906,10 @@ "psr/container-implementation": "^1.0" }, "require-dev": { - "mikey179/vfsstream": "^1.6", + "mikey179/vfsstream": "^1.6.5", "ocramius/proxy-manager": "^1.0 || ^2.0", - "phpbench/phpbench": "^0.10.0", - "phpunit/phpunit": "^5.7 || ^6.0.6", + "phpbench/phpbench": "^0.13.0", + "phpunit/phpunit": "^5.7.25 || ^6.4.4", "zendframework/zend-coding-standard": "~1.0.0" }, "suggest": { @@ -2000,7 +2924,7 @@ "extra": { "branch-alias": { "dev-master": "3.3-dev", - "dev-develop": "3.4-dev" + "dev-develop": "4.0-dev" } }, "autoload": { @@ -2012,41 +2936,46 @@ "license": [ "BSD-3-Clause" ], - "homepage": "https://github.com/zendframework/zend-servicemanager", + "description": "Factory-Driven Dependency Injection Container", "keywords": [ + "PSR-11", + "ZendFramework", + "dependency-injection", + "di", + "dic", "service-manager", "servicemanager", "zf" ], - "time": "2017-03-01T22:08:02+00:00" + "time": "2018-01-29T16:48:37+00:00" }, { "name": "zendframework/zend-stdlib", - "version": "3.1.0", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/zendframework/zend-stdlib.git", - "reference": "debedcfc373a293f9250cc9aa03cf121428c8e78" + "reference": "66536006722aff9e62d1b331025089b7ec71c065" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/debedcfc373a293f9250cc9aa03cf121428c8e78", - "reference": "debedcfc373a293f9250cc9aa03cf121428c8e78", + "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/66536006722aff9e62d1b331025089b7ec71c065", + "reference": "66536006722aff9e62d1b331025089b7ec71c065", "shasum": "" }, "require": { "php": "^5.6 || ^7.0" }, "require-dev": { - "athletic/athletic": "~0.1", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "^2.6.2" + "phpbench/phpbench": "^0.13", + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2", + "zendframework/zend-coding-standard": "~1.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev", - "dev-develop": "3.2-dev" + "dev-master": "3.2.x-dev", + "dev-develop": "3.3.x-dev" } }, "autoload": { @@ -2058,38 +2987,43 @@ "license": [ "BSD-3-Clause" ], - "homepage": "https://github.com/zendframework/zend-stdlib", + "description": "SPL extensions, array utilities, error handlers, and more", "keywords": [ + "ZendFramework", "stdlib", - "zf2" + "zf" ], - "time": "2016-09-13T14:38:50+00:00" + "time": "2018-08-28T21:34:05+00:00" }, { "name": "zendframework/zend-stratigility", - "version": "2.0.1", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/zendframework/zend-stratigility.git", - "reference": "229e7d94010d09d9e68096ff6f1d35f354d8dac9" + "reference": "75b64558201807514734a9f46386816f2900d7f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-stratigility/zipball/229e7d94010d09d9e68096ff6f1d35f354d8dac9", - "reference": "229e7d94010d09d9e68096ff6f1d35f354d8dac9", + "url": "https://api.github.com/repos/zendframework/zend-stratigility/zipball/75b64558201807514734a9f46386816f2900d7f7", + "reference": "75b64558201807514734a9f46386816f2900d7f7", "shasum": "" }, "require": { - "http-interop/http-middleware": "^0.4.1", - "php": "^5.6 || ^7.0", + "fig/http-message-util": "^1.1", + "php": "^7.1", "psr/http-message": "^1.0", + "psr/http-server-middleware": "^1.0", "zendframework/zend-escaper": "^2.3" }, + "conflict": { + "zendframework/zend-diactoros": "<1.7.1" + }, "require-dev": { - "malukenho/docheader": "^0.1.5", - "phpunit/phpunit": "^5.7", + "malukenho/docheader": "^0.1.6", + "phpunit/phpunit": "^7.0.1", "zendframework/zend-coding-standard": "~1.0.0", - "zendframework/zend-diactoros": "^1.0" + "zendframework/zend-diactoros": "^1.7.1" }, "suggest": { "psr/http-message-implementation": "Please install a psr/http-message-implementation to consume Stratigility; e.g., zendframework/zend-diactoros" @@ -2097,11 +3031,17 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.0-dev", - "dev-develop": "2.1.0-dev" + "dev-master": "3.0.x-dev", + "dev-develop": "3.1.x-dev" } }, "autoload": { + "files": [ + "src/functions/double-pass-middleware.php", + "src/functions/host.php", + "src/functions/middleware.php", + "src/functions/path.php" + ], "psr-4": { "Zend\\Stratigility\\": "src/" } @@ -2110,29 +3050,31 @@ "license": [ "BSD-3-Clause" ], - "description": "Middleware for PHP", - "homepage": "https://github.com/zendframework/zend-stratigility", + "description": "PSR-7 middleware foundation for building and dispatching middleware pipelines", "keywords": [ + "ZendFramework", "http", "middleware", - "psr-7" + "psr-15", + "psr-7", + "zf" ], - "time": "2017-01-25T19:16:16+00:00" + "time": "2018-07-24T20:39:18+00:00" } ], "packages-dev": [ { "name": "filp/whoops", - "version": "2.1.10", + "version": "2.2.1", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "ffbbd2c06c64b08fb47974eed5dbce4ca2bb0eec" + "reference": "e79cd403fb77fc8963a99ecc30e80ddd885b3311" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/ffbbd2c06c64b08fb47974eed5dbce4ca2bb0eec", - "reference": "ffbbd2c06c64b08fb47974eed5dbce4ca2bb0eec", + "url": "https://api.github.com/repos/filp/whoops/zipball/e79cd403fb77fc8963a99ecc30e80ddd885b3311", + "reference": "e79cd403fb77fc8963a99ecc30e80ddd885b3311", "shasum": "" }, "require": { @@ -2140,9 +3082,9 @@ "psr/log": "^1.0.1" }, "require-dev": { - "mockery/mockery": "0.9.*", - "phpunit/phpunit": "^4.8 || ^5.0", - "symfony/var-dumper": "^2.6 || ^3.0" + "mockery/mockery": "^0.9 || ^1.0", + "phpunit/phpunit": "^4.8.35 || ^5.7", + "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0" }, "suggest": { "symfony/var-dumper": "Pretty print complex values better with var-dumper available", @@ -2151,7 +3093,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "2.2-dev" } }, "autoload": { @@ -2177,44 +3119,50 @@ "exception", "handling", "library", - "whoops", - "zf2" + "throwable", + "whoops" ], - "time": "2017-08-03T18:23:40+00:00" + "time": "2018-06-30T13:14:06+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.6.1", + "version": "1.8.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "8e6e04167378abf1ddb4d3522d8755c5fd90d102" + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/8e6e04167378abf1ddb4d3522d8755c5fd90d102", - "reference": "8e6e04167378abf1ddb4d3522d8755c5fd90d102", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", "shasum": "" }, "require": { - "php": ">=5.4.0" + "php": "^7.1" + }, + "replace": { + "myclabs/deep-copy": "self.version" }, "require-dev": { - "doctrine/collections": "1.*", - "phpunit/phpunit": "~4.1" + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" }, "type": "library", "autoload": { "psr-4": { "DeepCopy\\": "src/DeepCopy/" - } + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "description": "Create deep copies (clones) of your objects", - "homepage": "https://github.com/myclabs/DeepCopy", "keywords": [ "clone", "copy", @@ -2222,26 +3170,26 @@ "object", "object graph" ], - "time": "2017-04-12T18:52:22+00:00" + "time": "2018-06-11T23:09:50+00:00" }, { "name": "phar-io/manifest", - "version": "1.0.1", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0" + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0", - "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", "shasum": "" }, "require": { "ext-dom": "*", "ext-phar": "*", - "phar-io/version": "^1.0.1", + "phar-io/version": "^2.0", "php": "^5.6 || ^7.0" }, "type": "library", @@ -2277,20 +3225,20 @@ } ], "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "time": "2017-03-05T18:14:27+00:00" + "time": "2018-07-08T19:23:20+00:00" }, { "name": "phar-io/version", - "version": "1.0.1", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df" + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df", - "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df", + "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", "shasum": "" }, "require": { @@ -2324,20 +3272,20 @@ } ], "description": "Library for handling version information and constraints", - "time": "2017-03-05T17:38:23+00:00" + "time": "2018-07-08T19:19:57+00:00" }, { "name": "phpdocumentor/reflection-common", - "version": "1.0", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", - "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", "shasum": "" }, "require": { @@ -2378,33 +3326,39 @@ "reflection", "static analysis" ], - "time": "2015-12-27T11:43:31+00:00" + "time": "2017-09-11T18:02:19+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "3.2.2", + "version": "4.3.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "4aada1f93c72c35e22fb1383b47fee43b8f1d157" + "reference": "94fd0001232e47129dd3504189fa1c7225010d08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/4aada1f93c72c35e22fb1383b47fee43b8f1d157", - "reference": "4aada1f93c72c35e22fb1383b47fee43b8f1d157", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", + "reference": "94fd0001232e47129dd3504189fa1c7225010d08", "shasum": "" }, "require": { - "php": ">=5.5", - "phpdocumentor/reflection-common": "^1.0@dev", - "phpdocumentor/type-resolver": "^0.3.0", + "php": "^7.0", + "phpdocumentor/reflection-common": "^1.0.0", + "phpdocumentor/type-resolver": "^0.4.0", "webmozart/assert": "^1.0" }, "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^4.4" + "doctrine/instantiator": "~1.0.5", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^6.4" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.x-dev" + } + }, "autoload": { "psr-4": { "phpDocumentor\\Reflection\\": [ @@ -2423,20 +3377,20 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2017-08-08T06:39:58+00:00" + "time": "2017-11-30T07:14:17+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "0.3.0", + "version": "0.4.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "fb3933512008d8162b3cdf9e18dba9309b7c3773" + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/fb3933512008d8162b3cdf9e18dba9309b7c3773", - "reference": "fb3933512008d8162b3cdf9e18dba9309b7c3773", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", "shasum": "" }, "require": { @@ -2470,37 +3424,37 @@ "email": "me@mikevanriel.com" } ], - "time": "2017-06-03T08:32:36+00:00" + "time": "2017-07-14T14:27:02+00:00" }, { "name": "phpspec/prophecy", - "version": "v1.7.0", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "93d39f1f7f9326d746203c7c056f300f7f126073" + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/93d39f1f7f9326d746203c7c056f300f7f126073", - "reference": "93d39f1f7f9326d746203c7c056f300f7f126073", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", "shasum": "" }, "require": { "doctrine/instantiator": "^1.0.2", "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", - "sebastian/comparator": "^1.1|^2.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", + "sebastian/comparator": "^1.1|^2.0|^3.0", "sebastian/recursion-context": "^1.0|^2.0|^3.0" }, "require-dev": { "phpspec/phpspec": "^2.5|^3.2", - "phpunit/phpunit": "^4.8 || ^5.6.5" + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6.x-dev" + "dev-master": "1.8.x-dev" } }, "autoload": { @@ -2533,45 +3487,44 @@ "spy", "stub" ], - "time": "2017-03-02T20:05:34+00:00" + "time": "2018-08-05T17:53:17+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "5.2.2", + "version": "6.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "8ed1902a57849e117b5651fc1a5c48110946c06b" + "reference": "848f78b3309780fef7ec8c4666b7ab4e6b09b22f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/8ed1902a57849e117b5651fc1a5c48110946c06b", - "reference": "8ed1902a57849e117b5651fc1a5c48110946c06b", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/848f78b3309780fef7ec8c4666b7ab4e6b09b22f", + "reference": "848f78b3309780fef7ec8c4666b7ab4e6b09b22f", "shasum": "" }, "require": { "ext-dom": "*", "ext-xmlwriter": "*", - "php": "^7.0", - "phpunit/php-file-iterator": "^1.4.2", + "php": "^7.1", + "phpunit/php-file-iterator": "^2.0", "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^1.4.11 || ^2.0", + "phpunit/php-token-stream": "^3.0", "sebastian/code-unit-reverse-lookup": "^1.0.1", - "sebastian/environment": "^3.0", + "sebastian/environment": "^3.1", "sebastian/version": "^2.0.1", "theseer/tokenizer": "^1.1" }, "require-dev": { - "ext-xdebug": "^2.5", - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^7.0" }, "suggest": { - "ext-xdebug": "^2.5.5" + "ext-xdebug": "^2.6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.2.x-dev" + "dev-master": "6.0-dev" } }, "autoload": { @@ -2586,7 +3539,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -2597,29 +3550,32 @@ "testing", "xunit" ], - "time": "2017-08-03T12:40:43+00:00" + "time": "2018-10-04T03:41:23+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "1.4.2", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5" + "reference": "050bedf145a257b1ff02746c31894800e5122946" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5", - "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", + "reference": "050bedf145a257b1ff02746c31894800e5122946", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -2634,7 +3590,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -2644,7 +3600,7 @@ "filesystem", "iterator" ], - "time": "2016-10-03T07:40:28+00:00" + "time": "2018-09-13T20:33:42+00:00" }, { "name": "phpunit/php-text-template", @@ -2689,28 +3645,28 @@ }, { "name": "phpunit/php-timer", - "version": "1.0.9", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + "reference": "8b8454ea6958c3dee38453d3bd571e023108c91f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/8b8454ea6958c3dee38453d3bd571e023108c91f", + "reference": "8b8454ea6958c3dee38453d3bd571e023108c91f", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -2725,7 +3681,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -2734,33 +3690,33 @@ "keywords": [ "timer" ], - "time": "2017-02-26T11:10:40+00:00" + "time": "2018-02-01T13:07:23+00:00" }, { "name": "phpunit/php-token-stream", - "version": "2.0.0", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "ecb0b2cdaa0add708fe6f329ef65ae0c5225130b" + "reference": "21ad88bbba7c3d93530d93994e0a33cd45f02ace" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/ecb0b2cdaa0add708fe6f329ef65ae0c5225130b", - "reference": "ecb0b2cdaa0add708fe6f329ef65ae0c5225130b", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/21ad88bbba7c3d93530d93994e0a33cd45f02ace", + "reference": "21ad88bbba7c3d93530d93994e0a33cd45f02ace", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": "^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^6.2.4" + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -2783,57 +3739,57 @@ "keywords": [ "tokenizer" ], - "time": "2017-08-03T14:17:41+00:00" + "time": "2018-02-01T13:16:43+00:00" }, { "name": "phpunit/phpunit", - "version": "6.3.0", + "version": "7.4.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "9501bab711403a1ab5b8378a8adb4ec3db3debdb" + "reference": "f3837fa1e07758057ae06e8ddec6d06ba183f126" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9501bab711403a1ab5b8378a8adb4ec3db3debdb", - "reference": "9501bab711403a1ab5b8378a8adb4ec3db3debdb", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f3837fa1e07758057ae06e8ddec6d06ba183f126", + "reference": "f3837fa1e07758057ae06e8ddec6d06ba183f126", "shasum": "" }, "require": { + "doctrine/instantiator": "^1.1", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", - "myclabs/deep-copy": "^1.6.1", - "phar-io/manifest": "^1.0.1", - "phar-io/version": "^1.0", - "php": "^7.0", + "myclabs/deep-copy": "^1.7", + "phar-io/manifest": "^1.0.2", + "phar-io/version": "^2.0", + "php": "^7.1", "phpspec/prophecy": "^1.7", - "phpunit/php-code-coverage": "^5.2.2", - "phpunit/php-file-iterator": "^1.4.2", + "phpunit/php-code-coverage": "^6.0.7", + "phpunit/php-file-iterator": "^2.0.1", "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^1.0.9", - "phpunit/phpunit-mock-objects": "^4.0.3", - "sebastian/comparator": "^2.0.2", - "sebastian/diff": "^2.0", + "phpunit/php-timer": "^2.0", + "sebastian/comparator": "^3.0", + "sebastian/diff": "^3.0", "sebastian/environment": "^3.1", "sebastian/exporter": "^3.1", "sebastian/global-state": "^2.0", "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^1.0", + "sebastian/resource-operations": "^2.0", "sebastian/version": "^2.0.1" }, "conflict": { - "phpdocumentor/reflection-docblock": "3.0.2", - "phpunit/dbunit": "<3.0" + "phpunit/phpunit-mock-objects": "*" }, "require-dev": { "ext-pdo": "*" }, "suggest": { + "ext-soap": "*", "ext-xdebug": "*", - "phpunit/php-invoker": "^1.1" + "phpunit/php-invoker": "^2.0" }, "bin": [ "phpunit" @@ -2841,7 +3797,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "6.3.x-dev" + "dev-master": "7.4-dev" } }, "autoload": { @@ -2867,66 +3823,7 @@ "testing", "xunit" ], - "time": "2017-08-04T05:20:39+00:00" - }, - { - "name": "phpunit/phpunit-mock-objects", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "2f789b59ab89669015ad984afa350c4ec577ade0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/2f789b59ab89669015ad984afa350c4ec577ade0", - "reference": "2f789b59ab89669015ad984afa350c4ec577ade0", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.5", - "php": "^7.0", - "phpunit/php-text-template": "^1.2.1", - "sebastian/exporter": "^3.0" - }, - "conflict": { - "phpunit/phpunit": "<6.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "suggest": { - "ext-soap": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" - ], - "time": "2017-08-03T14:08:16+00:00" + "time": "2018-10-05T04:05:24+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -2975,30 +3872,30 @@ }, { "name": "sebastian/comparator", - "version": "2.0.2", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "ae068fede81d06e7bb9bb46a367210a3d3e1fe6a" + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/ae068fede81d06e7bb9bb46a367210a3d3e1fe6a", - "reference": "ae068fede81d06e7bb9bb46a367210a3d3e1fe6a", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", "shasum": "" }, "require": { - "php": "^7.0", - "sebastian/diff": "^2.0", - "sebastian/exporter": "^3.0" + "php": "^7.1", + "sebastian/diff": "^3.0", + "sebastian/exporter": "^3.1" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -3029,38 +3926,39 @@ } ], "description": "Provides the functionality to compare PHP values for equality", - "homepage": "http://www.github.com/sebastianbergmann/comparator", + "homepage": "https://github.com/sebastianbergmann/comparator", "keywords": [ "comparator", "compare", "equality" ], - "time": "2017-08-03T07:14:59+00:00" + "time": "2018-07-12T15:12:46+00:00" }, { "name": "sebastian/diff", - "version": "2.0.1", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd" + "reference": "366541b989927187c4ca70490a35615d3fef2dce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", - "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/366541b989927187c4ca70490a35615d3fef2dce", + "reference": "366541b989927187c4ca70490a35615d3fef2dce", "shasum": "" }, "require": { - "php": "^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^6.2" + "phpunit/phpunit": "^7.0", + "symfony/process": "^2 || ^3.3 || ^4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -3085,9 +3983,12 @@ "description": "Diff implementation", "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ - "diff" + "diff", + "udiff", + "unidiff", + "unified diff" ], - "time": "2017-08-03T08:09:46+00:00" + "time": "2018-06-10T07:54:39+00:00" }, { "name": "sebastian/environment", @@ -3404,25 +4305,25 @@ }, { "name": "sebastian/resource-operations", - "version": "1.0.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", "shasum": "" }, "require": { - "php": ">=5.6.0" + "php": "^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -3442,7 +4343,7 @@ ], "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2015-07-28T20:34:47+00:00" + "time": "2018-10-04T04:07:39+00:00" }, { "name": "sebastian/version", @@ -3607,16 +4508,16 @@ }, { "name": "webmozart/assert", - "version": "1.2.0", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/webmozart/assert.git", - "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" + "reference": "0df1908962e7a3071564e857d86874dad1ef204a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", - "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", + "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a", + "reference": "0df1908962e7a3071564e857d86874dad1ef204a", "shasum": "" }, "require": { @@ -3653,29 +4554,29 @@ "check", "validate" ], - "time": "2016-11-23T20:04:58+00:00" + "time": "2018-01-29T19:49:41+00:00" }, { "name": "zfcampus/zf-development-mode", - "version": "3.1.0", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/zfcampus/zf-development-mode.git", - "reference": "ffef6ab8cf84ee1d1a77a2b51ba2240d2707c05d" + "reference": "419004a320bab017d28f2bc5e7857dde7e19aecf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zfcampus/zf-development-mode/zipball/ffef6ab8cf84ee1d1a77a2b51ba2240d2707c05d", - "reference": "ffef6ab8cf84ee1d1a77a2b51ba2240d2707c05d", + "url": "https://api.github.com/repos/zfcampus/zf-development-mode/zipball/419004a320bab017d28f2bc5e7857dde7e19aecf", + "reference": "419004a320bab017d28f2bc5e7857dde7e19aecf", "shasum": "" }, "require": { "php": "^5.6 || ^7.0" }, "require-dev": { - "mikey179/vfsstream": "^1.6", - "phpunit/phpunit": "^5.4", - "squizlabs/php_codesniffer": "^2.3.1" + "mikey179/vfsstream": "^1.6.5", + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.5", + "zendframework/zend-coding-standard": "~1.0.0" }, "bin": [ "bin/zf-development-mode" @@ -3683,8 +4584,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev", - "dev-develop": "3.2-dev" + "dev-master": "3.2.x-dev", + "dev-develop": "3.3.x-dev" } }, "autoload": { @@ -3697,12 +4598,12 @@ "BSD-3-Clause" ], "description": "Zend Framework development mode script", - "homepage": "http://github.com/zfcampus/zf-development-mode", "keywords": [ + "ZendFramework", "framework", - "zf2" + "zf" ], - "time": "2017-01-09T23:34:49+00:00" + "time": "2018-05-07T15:44:42+00:00" } ], "aliases": [], @@ -3713,7 +4614,10 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^7.1" + "php": "^7.1", + "ext-zip": "*", + "ext-fileinfo": "*", + "ext-json": "*" }, "platform-dev": [] } diff --git a/config/autoload/dependencies.global.php b/config/autoload/dependencies.global.php index 4777cd7..80e251b 100644 --- a/config/autoload/dependencies.global.php +++ b/config/autoload/dependencies.global.php @@ -1,10 +1,6 @@ [ // Use 'aliases' to alias a service name to another service. The // key is the alias name, the value is the service to which it points. - 'aliases' => [ - 'Zend\Expressive\Delegate\DefaultDelegate' => Delegate\NotFoundDelegate::class, - ], + 'aliases' => [], // Use 'invokables' for constructor-less services, or services that do // not require arguments to the constructor. Map a service name to the // class name. - 'invokables' => [ - // Fully\Qualified\InterfaceName::class => Fully\Qualified\ClassName::class, - Helper\ServerUrlHelper::class => Helper\ServerUrlHelper::class, - ], + 'invokables' => [], // Use 'factories' for services provided by callbacks/factory classes. - 'factories' => [ - Application::class => Container\ApplicationFactory::class, - Delegate\NotFoundDelegate::class => Container\NotFoundDelegateFactory::class, - Helper\ServerUrlMiddleware::class => Helper\ServerUrlMiddlewareFactory::class, - Helper\UrlHelper::class => Helper\UrlHelperFactory::class, - Helper\UrlHelperMiddleware::class => Helper\UrlHelperMiddlewareFactory::class, - - Zend\Stratigility\Middleware\ErrorHandler::class => Container\ErrorHandlerFactory::class, - Middleware\ErrorResponseGenerator::class => Container\ErrorResponseGeneratorFactory::class, - Middleware\NotFoundHandler::class => Container\NotFoundHandlerFactory::class, - ], + 'factories' => [], ], ]; diff --git a/config/autoload/development.local.php.dist b/config/autoload/development.local.php.dist index 9c8aa17..7e921bf 100644 --- a/config/autoload/development.local.php.dist +++ b/config/autoload/development.local.php.dist @@ -1,5 +1,4 @@ true, ], ], -]; +]; \ No newline at end of file diff --git a/config/autoload/doctrine.global.php b/config/autoload/doctrine.global.php index e29ecfe..3f7e720 100644 --- a/config/autoload/doctrine.global.php +++ b/config/autoload/doctrine.global.php @@ -6,10 +6,10 @@ return [ 'orm_default' => [ 'class' => \Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain::class, 'drivers' => [ - 'App\Entity' => 'my_entity', + 'App\Entity' => 'app_entity', ], ], - 'my_entity' => [ + 'app_entity' => [ 'class' => \Doctrine\ORM\Mapping\Driver\AnnotationDriver::class, 'cache' => 'array', 'paths' => __DIR__ . '/../../src/App/Entity', diff --git a/config/autoload/loslog.global.php b/config/autoload/loslog.global.php new file mode 100644 index 0000000..fcd90c2 --- /dev/null +++ b/config/autoload/loslog.global.php @@ -0,0 +1,30 @@ + [ + 'factories' => [ + LosMiddleware\LosLog\LosLog::class => LosMiddleware\LosLog\LosLogFactory::class, + LosMiddleware\LosLog\HttpLog::class => LosMiddleware\LosLog\HttpLogFactory::class, + Psr\Log\LoggerInterface::class => LosMiddleware\LosLog\LoggerFactory::class, + ], + 'delegators' => [ + ErrorHandler::class => [ + LosMiddleware\LosLog\ErrorHandlerListenerDelegatorFactory::class, + ], + ], + ], + 'loslog' => [ + 'log_dir' => 'data/logs', + 'error_logger_file' => 'error.log', + 'exception_logger_file' => 'exception.log', + 'static_logger_file' => 'static.log', + 'http_logger_file' => 'http.log', + 'log_request' => false, + 'log_response' => false, + 'full' => false, + ], +]; diff --git a/config/autoload/router.global.php b/config/autoload/router.global.php deleted file mode 100644 index 0505bee..0000000 --- a/config/autoload/router.global.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'invokables' => [ - RouterInterface::class => FastRouteRouter::class, - ], - ], -]; diff --git a/config/autoload/zend-expressive.global.php b/config/autoload/zend-expressive.global.php index dd4acd1..7ae42e6 100644 --- a/config/autoload/zend-expressive.global.php +++ b/config/autoload/zend-expressive.global.php @@ -1,5 +1,7 @@ false, 'zend-expressive' => [ - // Enable programmatic pipeline: Any `middleware_pipeline` or `routes` - // configuration will be ignored when creating the `Application` instance. - 'programmatic_pipeline' => true, - // Provide templates for the error handling middleware to use when // generating responses. 'error_handler' => [ diff --git a/config/config.php b/config/config.php index 4170efa..dbae4e9 100644 --- a/config/config.php +++ b/config/config.php @@ -1,5 +1,7 @@ 'data/config-cache.php', + 'config_cache_path' => 'data/cache/config-cache.php', ]; $aggregator = new ConfigAggregator([ + \Zend\Expressive\ConfigProvider::class, + \Zend\Expressive\Helper\ConfigProvider::class, + \Zend\Expressive\Router\FastRouteRouter\ConfigProvider::class, + \Zend\Expressive\Router\ConfigProvider::class, + \Zend\HttpHandlerRunner\ConfigProvider::class, + \Zend\Log\ConfigProvider::class, + // Include cache configuration new ArrayProvider($cacheConfig), // Default App module config App\ConfigProvider::class, + ApiLibs\ConfigProvider::class, // Load application config in a pre-defined order in such a way that local settings // overwrite global settings. (Loaded as first to last): @@ -23,10 +33,10 @@ $aggregator = new ConfigAggregator([ // - `*.global.php` // - `local.php` // - `*.local.php` - new PhpFileProvider('config/autoload/{{,*.}global,{,*.}local}.php'), + new PhpFileProvider(realpath(__DIR__) . '/autoload/{{,*.}global,{,*.}local}.php'), // Load development config if it exists - new PhpFileProvider('config/development.config.php'), + new PhpFileProvider(realpath(__DIR__) . '/development.config.php'), ], $cacheConfig['config_cache_path']); return $aggregator->getMergedConfig(); diff --git a/config/container.php b/config/container.php index e565faa..740fe23 100644 --- a/config/container.php +++ b/config/container.php @@ -1,16 +1,14 @@ configureServiceManager($container); - -// Inject config -$container->setService('config', $config); - -return $container; +return new ServiceManager($dependencies); diff --git a/config/development.config.php.dist b/config/development.config.php.dist index f9e594a..d17d6d6 100644 --- a/config/development.config.php.dist +++ b/config/development.config.php.dist @@ -1,5 +1,4 @@ pipe(ErrorHandler::class); + $app->pipe(ServerUrlMiddleware::class); -// The error handler should be the first (most outer) middleware to catch -// all Exceptions. -$app->pipe(ErrorHandler::class); -$app->pipe(App\Middleware\PreFlightMiddleware::class); -$app->pipe(ServerUrlMiddleware::class); + // Pipe more middleware here that you want to execute on every request: + // - bootstrapping + // - pre-conditions + // - modifications to outgoing responses + // + // Piped Middleware may be either callables or service names. Middleware may + // also be passed as an array; each item in the array must resolve to + // middleware eventually (i.e., callable or service name). + // + // Middleware can be attached to specific paths, allowing you to mix and match + // applications under a common domain. The handlers in each middleware + // attached this way will see a URI with the matched path segment removed. + // + // i.e., path of "/api/member/profile" only passes "/member/profile" to $apiMiddleware + // - $app->pipe('/api', $apiMiddleware); + // - $app->pipe('/docs', $apiDocMiddleware); + // - $app->pipe('/files', $filesMiddleware); -// Pipe more middleware here that you want to execute on every request: -// - bootstrapping -// - pre-conditions -// - modifications to outgoing responses -// -// Piped Middleware may be either callables or service names. Middleware may -// also be passed as an array; each item in the array must resolve to -// middleware eventually (i.e., callable or service name). -// -// Middleware can be attached to specific paths, allowing you to mix and match -// applications under a common domain. The handlers in each middleware -// attached this way will see a URI with the MATCHED PATH SEGMENT REMOVED!!! -// -// - $app->pipe('/api', $apiMiddleware); -// - $app->pipe('/docs', $apiDocMiddleware); -// - $app->pipe('/files', $filesMiddleware); + // Register the routing middleware in the middleware pipeline. + // This middleware registers the Zend\Expressive\Router\RouteResult request attribute. + $app->pipe(RouteMiddleware::class); -// Register the routing middleware in the middleware pipeline -$app->pipeRoutingMiddleware(); -$app->pipe(ImplicitHeadMiddleware::class); -$app->pipe(ImplicitOptionsMiddleware::class); -$app->pipe(UrlHelperMiddleware::class); + // The following handle routing failures for common conditions: + // - HEAD request but no routes answer that method + // - OPTIONS request but no routes answer that method + // - method not allowed + // Order here matters; the MethodNotAllowedMiddleware should be placed + // after the Implicit*Middleware. + $app->pipe(ImplicitHeadMiddleware::class); + $app->pipe(CorsMiddleware::class); + $app->pipe(MethodNotAllowedMiddleware::class); -// Add more middleware here that needs to introspect the routing results; this -// might include: -// -// - route-based authentication -// - route-based validation -// - etc. + // Seed the UrlHelper with the routing results: + $app->pipe(UrlHelperMiddleware::class); -// Register the dispatch middleware in the middleware pipeline -$app->pipeDispatchMiddleware(); + // Add more middleware here that needs to introspect the routing results; this + // might include: + // + // - route-based authentication + // - route-based validation + // - etc. -// At this point, if no Response is return by any middleware, the -// NotFoundHandler kicks in; alternately, you can provide other fallback -// middleware to execute. -$app->pipe(NotFoundHandler::class); + // Register the dispatch middleware in the middleware pipeline + $app->pipe(DispatchMiddleware::class); + + // At this point, if no Response is returned by any middleware, the + // NotFoundHandler kicks in; alternately, you can provide other fallback + // middleware to execute. + $app->pipe(NotFoundHandler::class); +}; diff --git a/config/routes.php b/config/routes.php index 541b106..660d337 100644 --- a/config/routes.php +++ b/config/routes.php @@ -1,32 +1,44 @@ get('/', App\Action\HomePageAction::class, 'home'); - * $app->post('/album', App\Action\AlbumCreateAction::class, 'album.create'); - * $app->put('/album/:id', App\Action\AlbumUpdateAction::class, 'album.put'); - * $app->patch('/album/:id', App\Action\AlbumUpdateAction::class, 'album.patch'); - * $app->delete('/album/:id', App\Action\AlbumDeleteAction::class, 'album.delete'); + * $app->get('/', App\Handler\HomePageHandler::class, 'home'); + * $app->post('/album', App\Handler\AlbumCreateHandler::class, 'album.create'); + * $app->put('/album/:id', App\Handler\AlbumUpdateHandler::class, 'album.put'); + * $app->patch('/album/:id', App\Handler\AlbumUpdateHandler::class, 'album.patch'); + * $app->delete('/album/:id', App\Handler\AlbumDeleteHandler::class, 'album.delete'); * * Or with multiple request methods: * - * $app->route('/contact', App\Action\ContactAction::class, ['GET', 'POST', ...], 'contact'); + * $app->route('/contact', App\Handler\ContactHandler::class, ['GET', 'POST', ...], 'contact'); * * Or handling all request methods: * - * $app->route('/contact', App\Action\ContactAction::class)->setName('contact'); + * $app->route('/contact', App\Handler\ContactHandler::class)->setName('contact'); * * or: * * $app->route( * '/contact', - * App\Action\ContactAction::class, + * App\Handler\ContactHandler::class, * Zend\Expressive\Router\Route::HTTP_METHOD_ANY, * 'contact' * ); */ +return function (Application $app, MiddlewareFactory $factory, ContainerInterface $container) : void { + $app->get('/', App\Handler\HomePage::class, 'home'); + $app->get('/api/galleries', App\Handler\ListGalleries::class, 'api.galleries'); + $app->get('/image/{slug}/{image}[/{thumb}]', App\Handler\GetImage::class, 'download.image'); + $app->get('/export-album/{slug}.zip', App\Handler\ExportAlbum::class, 'export.album'); -$app->get('/', App\Action\HomePageAction::class, 'home'); -$app->get('/api/galleries', App\Action\ListGalleriesAction::class, 'api.galleries'); -$app->get('/image/{slug}/{image}[/{thumb}]', App\Action\GetImageAction::class, 'download.image'); -$app->get('/export-album/{slug}.zip', App\Action\ExportAlbumAction::class, 'export.album'); + $app->get('/api/album[/{id:\d+}]', App\Handler\Album::class, 'api.album'); + $app->get('/api/image[/{id:\d+}]', App\Handler\Image::class, 'api.image'); + $app->get('/api/collection[/{id:\d+}]', App\Handler\Collection::class, 'api.gallery'); +}; diff --git a/public/index.php b/public/index.php index 0fad61d..fd11502 100644 --- a/public/index.php +++ b/public/index.php @@ -1,9 +1,9 @@ get(\Zend\Expressive\Application::class); + $factory = $container->get(\Zend\Expressive\MiddlewareFactory::class); - // Import programmatic/declarative middleware pipeline and routing + // Execute programmatic/declarative middleware pipeline and routing // configuration statements - require 'config/pipeline.php'; - require 'config/routes.php'; + (require 'config/pipeline.php')($app, $factory, $container); + (require 'config/routes.php')($app, $factory, $container); $app->run(); -}); +})(); diff --git a/src/ApiLibs/AbstractHandler/CrudHandler.php b/src/ApiLibs/AbstractHandler/CrudHandler.php new file mode 100644 index 0000000..31b7ecc --- /dev/null +++ b/src/ApiLibs/AbstractHandler/CrudHandler.php @@ -0,0 +1,166 @@ +getMethod()); + $id = $request->getAttribute(static::IDENTIFIER_NAME); + + switch ($requestMethod) { + case 'GET': + return isset($id) + ? $this->get($request) + : $this->getList($request); + case 'POST': + return $this->create($request); + case 'PUT': + return $this->update($request); + case 'DELETE': + return isset($id) + ? $this->delete($request) + : $this->deleteList($request); + case 'HEAD': + return $this->head($request); + case 'OPTIONS': + return $this->options($request); + case 'PATCH': + return $this->patch($request); + default: + return $this->notAllowed(); + } + } + + public function get(ServerRequestInterface $request): ResponseInterface + { + return $this->notAllowed(); + } + + public function getList(ServerRequestInterface $request): ResponseInterface + { + return $this->notAllowed(); + } + + public function create(ServerRequestInterface $request): ResponseInterface + { + return $this->notAllowed(); + } + + public function update(ServerRequestInterface $request): ResponseInterface + { + return $this->notAllowed(); + } + + public function delete(ServerRequestInterface $request): ResponseInterface + { + return $this->notAllowed(); + } + + public function deleteList(ServerRequestInterface $request): ResponseInterface + { + return $this->notAllowed(); + } + + public function head(ServerRequestInterface $request): ResponseInterface + { + return $this->notAllowed(); + } + + public function options(ServerRequestInterface $request): ResponseInterface + { + return new EmptyResponse(200); + } + + public function patch(ServerRequestInterface $request): ResponseInterface + { + return $this->notAllowed(); + } + + final public function notAllowed(): ResponseInterface + { + return $this->createResponse(['content' => 'Method not allowed'], 405); + } + + final protected function createResponse($data, $status = 200): ResponseInterface + { + return new JsonResponse($data, $status); + } + + /** + * + * @param ServerRequestInterface $request + * @return array|object + */ + public function getRequestData(ServerRequestInterface $request) + { + $body = $request->getParsedBody(); + + if (!empty($body)) { + return $body; + } + + return $this->parseRequestData( + $request->getBody()->getContents(), + $request->getHeaderLine('content-type') + ); + } + + /** + * + * @param string $input + * @param string $contentType + * @return mixed + */ + private function parseRequestData($input, $contentType) + { + $contentTypeParts = preg_split('/\s*[;,]\s*/', $contentType); + $parser = $this->returnParserContentType($contentTypeParts[0]); + + return $parser($input); + } + + /** + * + * @param string $contentType + * @return callable + */ + private function returnParserContentType(string $contentType): callable + { + if ($contentType === 'application/x-www-form-urlencoded') { + return function ($input) { + parse_str($input, $data); + return $data; + }; + } elseif ($contentType === 'application/json') { + return function ($input) { + $jsonDecoder = new Json(); + try { + return $jsonDecoder->decode($input, Json::TYPE_ARRAY); + } catch (\Exception $e) { + return false; + } + }; + } elseif ($contentType === 'multipart/form-data') { + return function ($input) { + return $input; + }; + } + + return function ($input) { + return $input; + }; + } +} \ No newline at end of file diff --git a/src/ApiLibs/ConfigProvider.php b/src/ApiLibs/ConfigProvider.php new file mode 100644 index 0000000..91e03f2 --- /dev/null +++ b/src/ApiLibs/ConfigProvider.php @@ -0,0 +1,43 @@ + $this->getDependencies(), + ]; + } + + /** + * Returns the container dependencies + * + * @return array + */ + public function getDependencies() + { + return [ + 'invokables' => [], + 'factories' => [ + \Tuupola\Middleware\CorsMiddleware::class => Middleware\CorsMiddlewareFactory::class, + ], + ]; + } +} diff --git a/src/ApiLibs/Middleware/CorsMiddlewareFactory.php b/src/ApiLibs/Middleware/CorsMiddlewareFactory.php new file mode 100644 index 0000000..5c7a73a --- /dev/null +++ b/src/ApiLibs/Middleware/CorsMiddlewareFactory.php @@ -0,0 +1,23 @@ + [ + "Authorization", + "If-Match", + "If-Unmodified-Since", + "Content-type", + ], + ]); + } +} diff --git a/src/App/Action/ExportAlbumAction.php b/src/App/Action/ExportAlbumAction.php deleted file mode 100644 index 2b491ad..0000000 --- a/src/App/Action/ExportAlbumAction.php +++ /dev/null @@ -1,27 +0,0 @@ -galleryService = $galleryService; - } - - public function process(ServerRequestInterface $request, DelegateInterface $delegate) - { - $slug = $request->getAttribute('slug', false); - $this->galleryService->getExportFileName($slug); - return new Response\RedirectResponse("/export/{$slug}.zip"); - } - -} diff --git a/src/App/Action/ExportAlbumFactory.php b/src/App/Action/ExportAlbumFactory.php deleted file mode 100644 index b9e75e9..0000000 --- a/src/App/Action/ExportAlbumFactory.php +++ /dev/null @@ -1,15 +0,0 @@ -get(GalleryService::class); - return new ExportAlbumAction($galleryService); - } -} diff --git a/src/App/Action/GetImageFactory.php b/src/App/Action/GetImageFactory.php deleted file mode 100644 index e41ab28..0000000 --- a/src/App/Action/GetImageFactory.php +++ /dev/null @@ -1,15 +0,0 @@ -get(GalleryService::class); - return new GetImageAction($galleryService); - } -} diff --git a/src/App/Action/HomePageAction.php b/src/App/Action/HomePageAction.php deleted file mode 100644 index e02d352..0000000 --- a/src/App/Action/HomePageAction.php +++ /dev/null @@ -1,18 +0,0 @@ - 'Congratulations! You have reahced the end of the internet.', - ]); - } -} diff --git a/src/App/Action/ListGalleriesAction.php b/src/App/Action/ListGalleriesAction.php deleted file mode 100644 index 3c9c7a6..0000000 --- a/src/App/Action/ListGalleriesAction.php +++ /dev/null @@ -1,24 +0,0 @@ -galleryService = $galleryService; - } - - public function process(ServerRequestInterface $request, DelegateInterface $delegate) - { - return new JsonCorsResponse($this->galleryService->loadGalleryData(true)); - } -} diff --git a/src/App/Action/ListGalleriesFactory.php b/src/App/Action/ListGalleriesFactory.php deleted file mode 100644 index 4b31f72..0000000 --- a/src/App/Action/ListGalleriesFactory.php +++ /dev/null @@ -1,15 +0,0 @@ -get(GalleryService::class); - return new ListGalleriesAction($galleryService); - } -} diff --git a/src/App/ConfigProvider.php b/src/App/ConfigProvider.php index 2e25d6e..0f77a92 100644 --- a/src/App/ConfigProvider.php +++ b/src/App/ConfigProvider.php @@ -1,5 +1,7 @@ [ - Action\HomePageAction::class => Action\HomePageAction::class, + Handler\HomePage::class => Handler\HomePage::class, ], 'factories' => [ 'doctrine.entity_manager.orm_default' => EntityManagerFactory::class, 'doctrine.hydrator' => Hydrator\DoctrineObjectFactory::class, - Action\ListGalleriesAction::class => Action\ListGalleriesFactory::class, - Action\GetImageAction::class => Action\GetImageFactory::class, - Action\ExportAlbumAction::class => Action\ExportAlbumFactory::class, + Handler\ListGalleries::class => Handler\ListGalleriesFactory::class, + Handler\GetImage::class => Handler\GetImageFactory::class, + Handler\ExportAlbum::class => Handler\ExportAlbumFactory::class, + + Handler\Album::class => Handler\AlbumFactory::class, + Handler\Collection::class => Handler\CollectionFactory::class, + Handler\Image::class => Handler\ImageFactory::class, Service\GalleryService::class => Service\GalleryServiceFactory::class, ], diff --git a/src/App/Entity/Album.php b/src/App/Entity/Album.php index 76f6fc5..2cd9a10 100644 --- a/src/App/Entity/Album.php +++ b/src/App/Entity/Album.php @@ -1,20 +1,274 @@ images = new ArrayCollection(); + } + + /** + * @return int + */ + public function getId(): int + { + return $this->id; + } + + /** + * @param int $id + * @return Album + */ + public function setId(int $id): Album + { + $this->id = $id; + return $this; + } + + /** + * @return string + */ + public function getName(): string + { + return $this->name; + } + + /** + * @param string $name + * @return Album + */ + public function setName(string $name): Album + { + $this->name = $name; + return $this; + } + + /** + * @return string + */ + public function getSlug(): string + { + return $this->slug; + } + + /** + * @param string $slug + * @return Album + */ + public function setSlug(string $slug): Album + { + $this->slug = $slug; + return $this; + } + + /** + * @return string + */ + public function getDir(): string + { + return $this->dir; + } + + /** + * @param string $dir + * @return Album + */ + public function setDir(string $dir): Album + { + $this->dir = $dir; + return $this; + } + + /** + * @return int + */ + public function getType(): int + { + return $this->type; + } + + /** + * @param int $type + * @return Album + */ + public function setType(int $type): Album + { + $this->type = $type; + return $this; + } + + /** + * @return bool + */ + public function isPublic(): bool + { + return $this->public; + } + + /** + * @param bool $public + * @return Album + */ + public function setPublic(bool $public): Album + { + $this->public = $public; + return $this; + } + + /** + * @return Image + */ + public function getCoverImage(): Image + { + return $this->coverImage; + } + + /** + * @param Image $coverImage + * @return Album + */ + public function setCoverImage(Image $coverImage): Album + { + $this->coverImage = $coverImage; + return $this; + } + + /** + * @return Image[]|DoctrineCollection + */ + public function getImages(): DoctrineCollection + { + return $this->images; + } + + /** + * @param Image[]|DoctrineCollection $images + * @return Album + */ + public function setImages($images): Album + { + $this->images = $images; + return $this; + } + + public function addImage(Image $image): Album + { + if (!$this->images->contains($image)) { + $this->images->add($image); + } + return $this; + } + + public function removeImage(Image $image): Album + { + if ($this->images->contains($image)) { + $this->images->removeElement($image); + } + return $this; + } + + public function setDeepSerialize(bool $val): Album + { + $this->deepSerialize = $val; + return $this; + } + + /** + * Returns data for json serializer + * @return array + */ + public function jsonSerialize(): array + { + $serialized = [ + 'id' => $this->getId(), + 'name' => $this->getName(), + 'slug' => $this->getSlug(), + 'dir' => $this->getDir(), + 'type' => $this->getType(), + 'public' => $this->isPublic(), + 'coverImage' => $this->getCoverImage(), + ]; + if ($this->deepSerialize) { + array_push($serialized, [ + 'images' => $this->getImages()->getValues(), + ]); + } + return $serialized; + } } diff --git a/src/App/Entity/Collection.php b/src/App/Entity/Collection.php new file mode 100644 index 0000000..318cd8b --- /dev/null +++ b/src/App/Entity/Collection.php @@ -0,0 +1,238 @@ +images = new ArrayCollection(); + } + + /** + * @return int + */ + public function getId(): int + { + return $this->id; + } + + /** + * @param int $id + * @return Collection + */ + public function setId(int $id): Collection + { + $this->id = $id; + return $this; + } + + /** + * @return string + */ + public function getName(): string + { + return $this->name; + } + + /** + * @param string $name + * @return Collection + */ + public function setName(string $name): Collection + { + $this->name = $name; + return $this; + } + + /** + * @return string + */ + public function getSlug(): string + { + return $this->slug; + } + + /** + * @param string $slug + * @return Collection + */ + public function setSlug(string $slug): Collection + { + $this->slug = $slug; + return $this; + } + + /** + * @return string + */ + public function getShareHash(): ?string + { + return $this->shareHash; + } + + /** + * @param string $shareHash + * @return Collection + */ + public function setShareHash(?string $shareHash): Collection + { + $this->shareHash = $shareHash; + return $this; + } + + /** + * @return bool + */ + public function isPublic(): bool + { + return $this->public; + } + + /** + * @param bool $public + * @return Collection + */ + public function setPublic(bool $public): Collection + { + $this->public = $public; + return $this; + } + + /** + * @return Image[]|DoctrineCollection + */ + public function getImages(): DoctrineCollection + { + return $this->images; + } + + /** + * @param Image[]|DoctrineCollection $images + * @return Collection + */ + public function setImages(DoctrineCollection $images): Collection + { + $this->images = $images; + return $this; + } + + /** + * @param Image $image + * @return Collection + */ + public function addImage(Image $image): Collection + { + if (!$this->images->contains($image)) { + $this->images->add($image); + } + return $this; + } + + /** + * @param Image $image + * @return Collection + */ + public function removeImage(Image $image): Collection + { + if ($this->images->contains($image)) { + $this->images->removeElement($image); + } + return $this; + } + + /** + * + * @param bool $val + * @return Collection + */ + public function setDeepSerialize(bool $val): Collection + { + $this->deepSerialize = $val; + return $this; + } + + /** + * Returns data for json serializer + * @return array + */ + public function jsonSerialize(): array + { + $serialized = [ + 'id' => $this->getId(), + 'name' => $this->getName(), + 'slug' => $this->getSlug(), + 'shareHash' => $this->getShareHash(), + 'public' => $this->isPublic(), + ]; + if ($this->deepSerialize) { + array_push($serialized, [ + 'images' => $this->getImages()->getValues(), + ]); + } + return $serialized; + } +} diff --git a/src/App/Entity/Image.php b/src/App/Entity/Image.php index 3ceb212..7d92888 100644 --- a/src/App/Entity/Image.php +++ b/src/App/Entity/Image.php @@ -1,227 +1,258 @@ id; - } + /** + * @return int + */ + public function getId(): ?int + { + return $this->id; + } - /** - * @param mixed $id - * @return Image - */ - public function setId(?int $id): Image - { - $this->id = $id; - return $this; - } + /** + * @param mixed $id + * @return Image + */ + public function setId(?int $id): Image + { + $this->id = $id; + return $this; + } - /** - * @return string - */ - public function getDir(): ?string - { - return $this->dir; - } + /** + * @return string + */ + public function getDir(): ?string + { + return $this->dir; + } - /** - * @param string $dir - * @return Image - */ - public function setDir(?string $dir): Image - { - $this->dir = $dir; - return $this; - } + /** + * @param string $dir + * @return Image + */ + public function setDir(?string $dir): Image + { + $this->dir = $dir; + return $this; + } - /** - * @return string - */ - public function getLabel(): ?string - { - return $this->label; - } + /** + * @return string + */ + public function getLabel(): ?string + { + return $this->label; + } - /** - * @param string $label - * @return Image - */ - public function setLabel(?string $label): Image - { - $this->label = $label; - return $this; - } + /** + * @param string $label + * @return Image + */ + public function setLabel(?string $label): Image + { + $this->label = $label; + return $this; + } - /** - * @return string - */ - public function getPath(): ?string - { - return $this->path; - } + /** + * @return string + */ + public function getPath(): ?string + { + return $this->path; + } - /** - * @param string $path - * @return Image - */ - public function setPath(?string $path): Image - { - $this->path = $path; - return $this; - } + /** + * @param string $path + * @return Image + */ + public function setPath(?string $path): Image + { + $this->path = $path; + return $this; + } - /** - * @return int - */ - public function getWidth(): ?int - { - return $this->width; - } + /** + * @return int + */ + public function getWidth(): ?int + { + return $this->width; + } - /** - * @param int $width - * @return Image - */ - public function setWidth(?int $width): Image - { - $this->width = $width; - return $this; - } + /** + * @param int $width + * @return Image + */ + public function setWidth(?int $width): Image + { + $this->width = $width; + return $this; + } - /** - * @return int - */ - public function getHeight(): ?int - { - return $this->height; - } + /** + * @return int + */ + public function getHeight(): ?int + { + return $this->height; + } - /** - * @param int $height - * @return Image - */ - public function setHeight(?int $height): Image - { - $this->height = $height; - return $this; - } + /** + * @param int $height + * @return Image + */ + public function setHeight(?int $height): Image + { + $this->height = $height; + return $this; + } - /** - * @return int - */ - public function getThumbWidth(): ?int - { - return $this->thumbWidth; - } + /** + * @return int + */ + public function getThumbWidth(): ?int + { + return $this->thumbWidth; + } - /** - * @param int $width - * @return Image - */ - public function setThumbWidth(?int $width): Image - { - $this->thumbWidth = $width; - return $this; - } + /** + * @param int $width + * @return Image + */ + public function setThumbWidth(?int $width): Image + { + $this->thumbWidth = $width; + return $this; + } - /** - * @return int - */ - public function getThumbHeight(): ?int - { - return $this->thumbHeight; - } + /** + * @return int + */ + public function getThumbHeight(): ?int + { + return $this->thumbHeight; + } - /** - * @param int $height - * @return Image - */ - public function setThumbHeight(?int $height): Image - { - $this->thumbHeight = $height; - return $this; - } + /** + * @param int $height + * @return Image + */ + public function setThumbHeight(?int $height): Image + { + $this->thumbHeight = $height; + return $this; + } - public function jsonSerialize() - { - return [ - 'dir' => $this->getDir(), - 'label' => $this->getLabel(), - 'path' => $this->getPath(), - 'width' => $this->getWidth(), - 'height' => $this->getHeight(), - 'thumbWidth' => $this->getThumbWidth(), - 'thumbHeight' => $this->getThumbHeight(), - ]; - } + /** + * @return Album + */ + public function getAlbum(): Album + { + return $this->album; + } + + /** + * @param Album $album + * @return Image + */ + public function setAlbum(Album $album): Image + { + $this->album = $album; + return $this; + } + + /** + * Returns data for json serializer + * @return array + */ + public function jsonSerialize(): array + { + return [ + 'dir' => $this->getDir(), + 'label' => $this->getLabel(), + 'path' => $this->getPath(), + 'width' => $this->getWidth(), + 'height' => $this->getHeight(), + 'thumbWidth' => $this->getThumbWidth(), + 'thumbHeight' => $this->getThumbHeight(), + ]; + } } \ No newline at end of file diff --git a/src/App/Handler/Album.php b/src/App/Handler/Album.php new file mode 100644 index 0000000..1ff0a2d --- /dev/null +++ b/src/App/Handler/Album.php @@ -0,0 +1,35 @@ +galleryService = $galleryService; + } + + /** + * @param ServerRequestInterface $request + * @return ResponseInterface + * @throws \Doctrine\ORM\ORMException + * @throws \Doctrine\ORM\OptimisticLockException + * @throws \Doctrine\ORM\TransactionRequiredException + */ + public function get(ServerRequestInterface $request): ResponseInterface + { + $id = (int)$request->getAttribute('id'); + return new JsonResponse($this->galleryService->getAlbum($id)); + } + +} diff --git a/src/App/Handler/AlbumFactory.php b/src/App/Handler/AlbumFactory.php new file mode 100644 index 0000000..6bfa9fc --- /dev/null +++ b/src/App/Handler/AlbumFactory.php @@ -0,0 +1,18 @@ +get(GalleryService::class); + return new Album($galleryService); + } +} diff --git a/src/App/Handler/Collection.php b/src/App/Handler/Collection.php new file mode 100644 index 0000000..a2f66d9 --- /dev/null +++ b/src/App/Handler/Collection.php @@ -0,0 +1,35 @@ +galleryService = $galleryService; + } + + /** + * @param ServerRequestInterface $request + * @return ResponseInterface + * @throws \Doctrine\ORM\ORMException + * @throws \Doctrine\ORM\OptimisticLockException + * @throws \Doctrine\ORM\TransactionRequiredException + */ + public function get(ServerRequestInterface $request): ResponseInterface + { + $id = (int)$request->getAttribute('id'); + return new JsonResponse($this->galleryService->getCollection($id)); + } + +} diff --git a/src/App/Handler/CollectionFactory.php b/src/App/Handler/CollectionFactory.php new file mode 100644 index 0000000..bcf4b81 --- /dev/null +++ b/src/App/Handler/CollectionFactory.php @@ -0,0 +1,18 @@ +get(GalleryService::class); + return new Collection($galleryService); + } +} diff --git a/src/App/Handler/ExportAlbum.php b/src/App/Handler/ExportAlbum.php new file mode 100644 index 0000000..72c62aa --- /dev/null +++ b/src/App/Handler/ExportAlbum.php @@ -0,0 +1,29 @@ +galleryService = $galleryService; + } + + public function handle(ServerRequestInterface $request): ResponseInterface + { + $slug = $request->getAttribute('slug', false); + $this->galleryService->getExportFileName($slug); + return new RedirectResponse("/export/{$slug}.zip"); + } + +} diff --git a/src/App/Handler/ExportAlbumFactory.php b/src/App/Handler/ExportAlbumFactory.php new file mode 100644 index 0000000..6acb058 --- /dev/null +++ b/src/App/Handler/ExportAlbumFactory.php @@ -0,0 +1,18 @@ +get(GalleryService::class); + return new ExportAlbum($galleryService); + } +} diff --git a/src/App/Action/GetImageAction.php b/src/App/Handler/GetImage.php similarity index 73% rename from src/App/Action/GetImageAction.php rename to src/App/Handler/GetImage.php index 59fe5ae..b4b5647 100644 --- a/src/App/Action/GetImageAction.php +++ b/src/App/Handler/GetImage.php @@ -1,15 +1,17 @@ galleryService = $galleryService; } - public function process(ServerRequestInterface $request, DelegateInterface $delegate) + public function handle(ServerRequestInterface $request): ResponseInterface { $slug = $request->getAttribute('slug', false); $image = $request->getAttribute('image', false); @@ -33,8 +35,6 @@ class GetImageAction implements ServerMiddlewareInterface ->withHeader('Content-Transfer-Encoding', 'Binary') ->withHeader('Content-Description', 'File Transfer') ->withHeader('Pragma', 'public') -// ->withHeader('Expires', '0') -// ->withHeader('Cache-Control', 'must-revalidate') ->withBody($imageStream) ->withHeader('Content-Length', "{$imageStream->getSize()}"); } diff --git a/src/App/Handler/GetImageFactory.php b/src/App/Handler/GetImageFactory.php new file mode 100644 index 0000000..15593da --- /dev/null +++ b/src/App/Handler/GetImageFactory.php @@ -0,0 +1,18 @@ +get(GalleryService::class); + return new GetImage($galleryService); + } +} diff --git a/src/App/Handler/HomePage.php b/src/App/Handler/HomePage.php new file mode 100644 index 0000000..97e0a02 --- /dev/null +++ b/src/App/Handler/HomePage.php @@ -0,0 +1,20 @@ + 'Congratulations! You have reahced the end of the internet.', + ]); + } +} diff --git a/src/App/Handler/Image.php b/src/App/Handler/Image.php new file mode 100644 index 0000000..7ab3187 --- /dev/null +++ b/src/App/Handler/Image.php @@ -0,0 +1,35 @@ +galleryService = $galleryService; + } + + /** + * @param ServerRequestInterface $request + * @return ResponseInterface + * @throws \Doctrine\ORM\ORMException + * @throws \Doctrine\ORM\OptimisticLockException + * @throws \Doctrine\ORM\TransactionRequiredException + */ + public function get(ServerRequestInterface $request): ResponseInterface + { + $id = (int)$request->getAttribute('id'); + return new JsonResponse($this->galleryService->getImage($id)); + } + +} diff --git a/src/App/Handler/ImageFactory.php b/src/App/Handler/ImageFactory.php new file mode 100644 index 0000000..b03e6a5 --- /dev/null +++ b/src/App/Handler/ImageFactory.php @@ -0,0 +1,18 @@ +get(GalleryService::class); + return new Image($galleryService); + } +} diff --git a/src/App/Handler/ListGalleries.php b/src/App/Handler/ListGalleries.php new file mode 100644 index 0000000..18d92ae --- /dev/null +++ b/src/App/Handler/ListGalleries.php @@ -0,0 +1,26 @@ +galleryService = $galleryService; + } + + public function handle(ServerRequestInterface $request): ResponseInterface + { + return new JsonResponse($this->galleryService->loadGalleryData(true)); + } +} diff --git a/src/App/Handler/ListGalleriesFactory.php b/src/App/Handler/ListGalleriesFactory.php new file mode 100644 index 0000000..5b899d7 --- /dev/null +++ b/src/App/Handler/ListGalleriesFactory.php @@ -0,0 +1,18 @@ +get(GalleryService::class); + return new ListGalleries($galleryService); + } +} diff --git a/src/App/Middleware/PreFlightMiddleware.php b/src/App/Middleware/PreFlightMiddleware.php deleted file mode 100644 index 6674105..0000000 --- a/src/App/Middleware/PreFlightMiddleware.php +++ /dev/null @@ -1,34 +0,0 @@ -getMethod()); - if ($requestMethod == 'OPTIONS') { - return $response - ->withHeader('Accept', 'OPTIONS,GET,POST,PUT,PATCH,DELETE') - ->withHeader('Access-Control-Allow-Origin', '*') - ->withHeader('Access-Control-Allow-Methods', 'OPTIONS,GET,POST,PUT,PATCH,DELETE') - ->withHeader('Access-Control-Allow-Headers', implode(",", self::ALLOW_HEADERS)); - } - return $next($request, $response); - } -} diff --git a/src/App/Response/JsonCorsResponse.php b/src/App/Response/JsonCorsResponse.php deleted file mode 100644 index 7b71dd9..0000000 --- a/src/App/Response/JsonCorsResponse.php +++ /dev/null @@ -1,32 +0,0 @@ - 'image/jpeg', - 'jpeg' => 'image/jpeg', - 'png' => 'image/png', - ]; - protected $config; + protected $contentTypeMap = [ + 'jpg' => 'image/jpeg', + 'jpeg' => 'image/jpeg', + 'png' => 'image/png', + ]; + protected $config; - /** - * @var EntityManager - */ - protected $em; + /** + * @var EntityManager + */ + protected $em; - public function __construct(EntityManager $entityManager) - { - $this->em = $entityManager; - } - - public function getExportFileName(string $slug) - { - $config = $this->getConfig(); - if (!isset($config['galleries'][$slug])) { - return false; - } - $dir = $config['galleries'][$slug]['dir']; - return $this->ensureExportFileExists($dir, "{$slug}.zip"); - } - - private function ensureExportFileExists(string $dir, string $filename) - { - $exportName = self::EXPORT_DIR . $filename; - if(file_exists($exportName)) { - return $exportName; - } - $exportLock = sprintf("data/tmp/%s.lock", $dir); - - if(file_exists($exportLock)) { - return false; + public function __construct(EntityManager $entityManager) + { + $this->em = $entityManager; } - $images = array_map('basename', glob($this->getImageDir($dir) . "*.{jpg,jpeg,png}", GLOB_BRACE)); - - $zipName = tempnam("data/tmp", "export"); - touch($exportLock); - $zipArchive = new \ZipArchive(); - $zipArchive->open($zipName, \ZipArchive::CREATE); - foreach ($images as $image) { - ini_set("max_execution_time", 60); - $zipArchive->addFile( - sprintf(self::IMAGE_BASEDIR,$dir) . $image, - "{$dir}/{$image}" - ); - } - $zipArchive->close(); - rename($zipName, $exportName); - unlink($exportLock); - return $exportName; - } - - public function loadGalleryData($includeHidden = false) - { - $config = $this->getConfig(); - $albums = []; - foreach ($config['galleries'] as $id => $data) { - if ($includeHidden || $data['public']) { - $galleryImages = $this->loadGalleryImages($data['dir']); - $albums[] = [ - 'slug' => $id, - 'name' => $data['name'], - 'coverImage' => isset($data['cover']) - ? $this->getCoverImage($galleryImages, $data['cover']) - : null, - 'date' => $this->getGalleryDate($data['dir']), - 'type' => $data['type'], - 'isNew' => $data['new'], - 'isPublic' => $data['public'], - 'images' => $galleryImages, - ]; - } - } - return $albums; - } - - private function getCoverImage(array &$images, string $coverFileName): Image - { - $filtered = array_values(array_filter($images, function(Image $image) use ($coverFileName) { - return $image->getPath() == $coverFileName; - })); - return array_pop($filtered); - } - - private function getGalleryDate(string $dir): string - { - $timestamp = sprintf("@%s", filemtime($this->getImageDir($dir))); - $date = new \DateTime($timestamp); - return $date->format("Y-m-d"); - } - - /** - * @param string $dir - * @return Image[] - * @todo implement label for image in some way - */ - private function loadGalleryImages(string $dir): array - { - $images = array_map('basename', glob( - sprintf(self::IMAGE_BASEDIR . "*.{jpg,jpeg,png}", $dir), - GLOB_BRACE - )); - $imagine = new Imagine(); - return array_map(function ($imagePath) use ($dir, $imagine) { - $imageEntity = $this->em->getRepository(Image::class)->findOneBy([ - 'dir' => $dir, - 'path' => $imagePath, - ]); - $this->ensureThumbnailExists($dir, $imagePath); - if (null === $imageEntity) { - $image = $imagine->open($this->getImageDir($dir) . $imagePath); - $imageSize = $image->getSize(); - unset($image); - - $thumb = $imagine->open($this->getThumbDir($dir) . $imagePath); - $thumbSize = $thumb->getSize(); - unset($thumb); - - $imageEntity = new Image(); - $imageEntity->setLabel("") - ->setDir($dir) - ->setPath($imagePath) - ->setWidth($imageSize->getWidth()) - ->setHeight($imageSize->getHeight()) - ->setThumbWidth($thumbSize->getWidth()) - ->setThumbHeight($thumbSize->getHeight()) - ; - $this->em->persist($imageEntity); - $this->em->flush(); - } - return $imageEntity; - }, $images); - } - - private function ensureThumbnailExists(string $dir, string $imageName) { - set_time_limit(30); - $imageDir = $this->getImageDir($dir); - $thumbPath = $imageDir . "thumb_" . self::THUMBNAIL_SIZE; - @mkdir($thumbPath); - $thumbImageName = $thumbPath . "/" . $imageName; - - if (!file_exists($thumbImageName)) { - $thumbSize = new Box(self::THUMBNAIL_SIZE, self::THUMBNAIL_SIZE * 10); - $imagine = new Imagine(); - $image = $imagine->open($imageDir . $imageName) - ->thumbnail($thumbSize, ImageInterface::THUMBNAIL_INSET); - $image->effects()->sharpen(); - $image->save($thumbImageName); + /** + * @param int $id + * @return Album|null + * @throws \Doctrine\ORM\ORMException + * @throws \Doctrine\ORM\OptimisticLockException + * @throws \Doctrine\ORM\TransactionRequiredException + */ + public function getAlbum(int $id): ?Album + { + /** @var Album|null $result */ + $result = $this->em->find(Album::class, $id); + return $result; } - return $thumbImageName; - } - - public function getImageFileName(string $slug, string $image, $isThumbnail = false): string - { - $config = $this->getConfig(); - $dir = $config['galleries'][$slug]['dir']; - $this->ensureThumbnailExists($config['galleries'][$slug]['dir'], $image); - return $isThumbnail - ? ($this->getThumbDir($dir) . $image) - : ($this->getImageDir($dir) . $image); - } - - private function getImageDir($dir): string { - return sprintf(self::IMAGE_BASEDIR, $dir); - } - - private function getThumbDir($dir): string { - return sprintf(self::IMAGE_BASEDIR, "{$dir}/thumb_" . self::THUMBNAIL_SIZE); - } - - private function getConfig() - { - if (null === $this->config) { - $parser = new Parser(); - $configReader = new Yaml([$parser, 'parse']); - $this->config = $configReader->fromFile(self::CONFIG_FILE); + /** + * @param int $id + * @return Collection|null + * @throws \Doctrine\ORM\ORMException + * @throws \Doctrine\ORM\OptimisticLockException + * @throws \Doctrine\ORM\TransactionRequiredException + */ + public function getCollection(int $id): ?Collection + { + /** @var Collection|null $result */ + $result = $this->em->find(Collection::class, $id); + return $result; + } + + /** + * @param int $id + * @return Image|null + * @throws \Doctrine\ORM\ORMException + * @throws \Doctrine\ORM\OptimisticLockException + * @throws \Doctrine\ORM\TransactionRequiredException + */ + public function getImage(int $id): ?Image + { + /** @var Image|null $result */ + $result = $this->em->find(Image::class, $id); + return $result; + } + + public function getExportFileName(string $slug) + { + $config = $this->getConfig(); + if (!isset($config['galleries'][$slug])) { + return false; + } + $dir = $config['galleries'][$slug]['dir']; + return $this->ensureExportFileExists($dir, "{$slug}.zip"); + } + + private function ensureExportFileExists(string $dir, string $filename) + { + $exportName = self::EXPORT_DIR . $filename; + if (file_exists($exportName)) { + return $exportName; + } + $exportLock = sprintf("data/tmp/%s.lock", $dir); + + if (file_exists($exportLock)) { + return false; + } + + $images = array_map('basename', glob($this->getImageDir($dir) . "*.{jpg,jpeg,png}", GLOB_BRACE)); + + $zipName = tempnam("data/tmp", "export"); + touch($exportLock); + $zipArchive = new \ZipArchive(); + $zipArchive->open($zipName, \ZipArchive::CREATE); + foreach ($images as $image) { + ini_set("max_execution_time", 60); + $zipArchive->addFile( + sprintf(self::IMAGE_BASEDIR, $dir) . $image, + "{$dir}/{$image}" + ); + } + $zipArchive->close(); + rename($zipName, $exportName); + unlink($exportLock); + return $exportName; + } + + public function loadGalleryData($includeHidden = false) + { + $config = $this->getConfig(); + $albums = []; + foreach ($config['galleries'] as $id => $data) { + if ($includeHidden || $data['public']) { + $galleryImages = $this->loadGalleryImages($data['dir']); + $albums[] = [ + 'slug' => $id, + 'name' => $data['name'], + 'coverImage' => isset($data['cover']) + ? $this->getCoverImage($galleryImages, $data['cover']) + : null, + 'date' => $this->getGalleryDate($data['dir']), + 'type' => $data['type'], + 'isNew' => $data['new'], + 'isPublic' => $data['public'], + 'images' => $galleryImages, + ]; + } + } + return $albums; + } + + private function getCoverImage(array &$images, string $coverFileName): Image + { + $filtered = array_values(array_filter($images, function (Image $image) use ($coverFileName) { + return $image->getPath() == $coverFileName; + })); + return array_pop($filtered); + } + + private function getGalleryDate(string $dir): string + { + $timestamp = sprintf("@%s", filemtime($this->getImageDir($dir))); + $date = new \DateTime($timestamp); + return $date->format("Y-m-d"); + } + + /** + * @param string $dir + * @return Image[] + * @todo implement label for image in some way + */ + private function loadGalleryImages(string $dir): array + { + $images = array_map('basename', glob( + sprintf(self::IMAGE_BASEDIR . "*.{jpg,jpeg,png}", $dir), + GLOB_BRACE + )); + $imagine = new Imagine(); + return array_map(function ($imagePath) use ($dir, $imagine) { + $imageEntity = $this->em->getRepository(Image::class)->findOneBy([ + 'dir' => $dir, + 'path' => $imagePath, + ]); + $this->ensureThumbnailExists($dir, $imagePath); + if (null === $imageEntity) { + $image = $imagine->open($this->getImageDir($dir) . $imagePath); + $imageSize = $image->getSize(); + unset($image); + + $thumb = $imagine->open($this->getThumbDir($dir) . $imagePath); + $thumbSize = $thumb->getSize(); + unset($thumb); + + $imageEntity = new Image(); + $imageEntity->setLabel("") + ->setDir($dir) + ->setPath($imagePath) + ->setWidth($imageSize->getWidth()) + ->setHeight($imageSize->getHeight()) + ->setThumbWidth($thumbSize->getWidth()) + ->setThumbHeight($thumbSize->getHeight()); + $this->em->persist($imageEntity); + $this->em->flush(); + } + return $imageEntity; + }, $images); + } + + private function ensureThumbnailExists(string $dir, string $imageName) + { + set_time_limit(30); + $imageDir = $this->getImageDir($dir); + $thumbPath = $imageDir . "thumb_" . self::THUMBNAIL_SIZE; + @mkdir($thumbPath); + $thumbImageName = $thumbPath . "/" . $imageName; + + if (!file_exists($thumbImageName)) { + $thumbSize = new Box(self::THUMBNAIL_SIZE, self::THUMBNAIL_SIZE * 10); + $imagine = new Imagine(); + $image = $imagine->open($imageDir . $imageName) + ->thumbnail($thumbSize, ImageInterface::THUMBNAIL_INSET); + $image->effects()->sharpen(); + $image->save($thumbImageName); + } + + return $thumbImageName; + } + + public function getImageFileName(string $slug, string $image, $isThumbnail = false): string + { + $config = $this->getConfig(); + $dir = $config['galleries'][$slug]['dir']; + $this->ensureThumbnailExists($config['galleries'][$slug]['dir'], $image); + return $isThumbnail + ? ($this->getThumbDir($dir) . $image) + : ($this->getImageDir($dir) . $image); + } + + private function getImageDir($dir): string + { + return sprintf(self::IMAGE_BASEDIR, $dir); + } + + private function getThumbDir($dir): string + { + return sprintf(self::IMAGE_BASEDIR, "{$dir}/thumb_" . self::THUMBNAIL_SIZE); + } + + private function getConfig() + { + if (null === $this->config) { + $parser = new Parser(); + $configReader = new Yaml([$parser, 'parse']); + $this->config = $configReader->fromFile(self::CONFIG_FILE); + } + return $this->config; } - return $this->config; - } } \ No newline at end of file diff --git a/src/App/Service/GalleryServiceFactory.php b/src/App/Service/GalleryServiceFactory.php index fb4d395..f3655b9 100644 --- a/src/App/Service/GalleryServiceFactory.php +++ b/src/App/Service/GalleryServiceFactory.php @@ -1,5 +1,7 @@ router->reveal(), null); + $homePage = new HomePage($this->router->reveal(), null); $response = $homePage->process( $this->prophesize(ServerRequestInterface::class)->reveal(), $this->prophesize(DelegateInterface::class)->reveal() @@ -40,7 +40,7 @@ class HomePageActionTest extends TestCase ->render('app::home-page', Argument::type('array')) ->willReturn(''); - $homePage = new HomePageAction($this->router->reveal(), $renderer->reveal()); + $homePage = new HomePage($this->router->reveal(), $renderer->reveal()); $response = $homePage->process( $this->prophesize(ServerRequestInterface::class)->reveal(), diff --git a/test/AppTest/Action/HomePageFactoryTest.php b/test/AppTest/Action/HomePageFactoryTest.php index 627a20c..eb63c67 100644 --- a/test/AppTest/Action/HomePageFactoryTest.php +++ b/test/AppTest/Action/HomePageFactoryTest.php @@ -2,8 +2,8 @@ namespace AppTest\Action; -use App\Action\HomePageAction; -use App\Action\HomePageFactory; +use App\Handler\HomePage; +use App\Handler\HomePageFactory; use Interop\Container\ContainerInterface; use PHPUnit\Framework\TestCase; use Zend\Expressive\Router\RouterInterface; @@ -31,7 +31,7 @@ class HomePageFactoryTest extends TestCase $homePage = $factory($this->container->reveal()); - $this->assertInstanceOf(HomePageAction::class, $homePage); + $this->assertInstanceOf(HomePage::class, $homePage); } public function testFactoryWithTemplate() @@ -46,6 +46,6 @@ class HomePageFactoryTest extends TestCase $homePage = $factory($this->container->reveal()); - $this->assertInstanceOf(HomePageAction::class, $homePage); + $this->assertInstanceOf(HomePage::class, $homePage); } } diff --git a/test/AppTest/Action/PingActionTest.php b/test/AppTest/Action/PingActionTest.php index 71a22fb..0b55d63 100644 --- a/test/AppTest/Action/PingActionTest.php +++ b/test/AppTest/Action/PingActionTest.php @@ -2,7 +2,7 @@ namespace AppTest\Action; -use App\Action\PingAction; +use App\Handler\PingAction; use Interop\Http\ServerMiddleware\DelegateInterface; use PHPUnit\Framework\TestCase; use Psr\Http\Message\ServerRequestInterface;