diff --git a/composer.lock b/composer.lock index 5f19d34a2269128ff994dc7ea4825d62ca9de72f..95515ffaf377f51012f53e18d7cab3706d46e5c7 100644 --- a/composer.lock +++ b/composer.lock @@ -917,21 +917,21 @@ }, { "name": "myclabs/php-enum", - "version": "1.6.6", + "version": "1.7.1", "source": { "type": "git", "url": "https://github.com/myclabs/php-enum.git", - "reference": "32c4202886c51fbe5cc3a7c34ec5c9a4a790345e" + "reference": "f46847626b8739de22e4ebc6b56010f317d4448d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/php-enum/zipball/32c4202886c51fbe5cc3a7c34ec5c9a4a790345e", - "reference": "32c4202886c51fbe5cc3a7c34ec5c9a4a790345e", + "url": "https://api.github.com/repos/myclabs/php-enum/zipball/f46847626b8739de22e4ebc6b56010f317d4448d", + "reference": "f46847626b8739de22e4ebc6b56010f317d4448d", "shasum": "" }, "require": { "ext-json": "*", - "php": ">=5.4" + "php": ">=7.1" }, "require-dev": { "phpunit/phpunit": "^4.8.35|^5.7|^6.0", @@ -958,31 +958,32 @@ "keywords": [ "enum" ], - "time": "2019-02-04T21:18:49+00:00" + "time": "2019-05-05T10:12:03+00:00" }, { "name": "ocramius/package-versions", - "version": "1.2.0", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/Ocramius/PackageVersions.git", - "reference": "ad8a245decad4897cc6b432743913dad0d69753c" + "reference": "a4d4b60d0e60da2487bd21a2c6ac089f85570dbb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/ad8a245decad4897cc6b432743913dad0d69753c", - "reference": "ad8a245decad4897cc6b432743913dad0d69753c", + "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/a4d4b60d0e60da2487bd21a2c6ac089f85570dbb", + "reference": "a4d4b60d0e60da2487bd21a2c6ac089f85570dbb", "shasum": "" }, "require": { - "composer-plugin-api": "^1.0", - "php": "~7.0" + "composer-plugin-api": "^1.0.0", + "php": "^7.1.0" }, "require-dev": { - "composer/composer": "^1.3", + "composer/composer": "^1.6.3", + "doctrine/coding-standard": "^5.0.1", "ext-zip": "*", - "humbug/humbug": "dev-master", - "phpunit/phpunit": "^6.4" + "infection/infection": "^0.7.1", + "phpunit/phpunit": "^7.0.0" }, "type": "composer-plugin", "extra": { @@ -1007,7 +1008,7 @@ } ], "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", - "time": "2017-11-24T11:07:03+00:00" + "time": "2019-02-21T12:16:21+00:00" }, { "name": "ocramius/proxy-manager", @@ -1183,16 +1184,16 @@ }, { "name": "pear/archive_tar", - "version": "1.4.6", + "version": "1.4.7", "source": { "type": "git", "url": "https://github.com/pear/Archive_Tar.git", - "reference": "b8e33f9063a7cd1d20f079014f8382b3a7aee47e" + "reference": "7e48add6f8edc3027dd98ad15964b1a28fd0c845" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pear/Archive_Tar/zipball/b8e33f9063a7cd1d20f079014f8382b3a7aee47e", - "reference": "b8e33f9063a7cd1d20f079014f8382b3a7aee47e", + "url": "https://api.github.com/repos/pear/Archive_Tar/zipball/7e48add6f8edc3027dd98ad15964b1a28fd0c845", + "reference": "7e48add6f8edc3027dd98ad15964b1a28fd0c845", "shasum": "" }, "require": { @@ -1245,7 +1246,7 @@ "archive", "tar" ], - "time": "2019-02-01T11:10:38+00:00" + "time": "2019-04-08T13:15:55+00:00" }, { "name": "pear/console_getopt", @@ -1466,16 +1467,16 @@ }, { "name": "pear/pear-core-minimal", - "version": "v1.10.7", + "version": "v1.10.9", "source": { "type": "git", "url": "https://github.com/pear/pear-core-minimal.git", - "reference": "19a3e0fcd50492c4357372f623f55f1b144346da" + "reference": "742be8dd68c746a01e4b0a422258e9c9cae1c37f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/19a3e0fcd50492c4357372f623f55f1b144346da", - "reference": "19a3e0fcd50492c4357372f623f55f1b144346da", + "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/742be8dd68c746a01e4b0a422258e9c9cae1c37f", + "reference": "742be8dd68c746a01e4b0a422258e9c9cae1c37f", "shasum": "" }, "require": { @@ -1506,7 +1507,7 @@ } ], "description": "Minimal set of PEAR core files to be used as composer dependency", - "time": "2018-12-05T20:03:52+00:00" + "time": "2019-03-13T18:15:44+00:00" }, { "name": "pear/pear_exception", @@ -2480,7 +2481,7 @@ }, { "name": "symfony/expression-language", - "version": "v3.4.22", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", @@ -2588,16 +2589,16 @@ }, { "name": "symfony/options-resolver", - "version": "v3.4.22", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "0f1cbaee6b356e72c0e025f9a4e9d76a25bf4793" + "reference": "ed3b397f9c07c8ca388b2a1ef744403b4d4ecc44" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/0f1cbaee6b356e72c0e025f9a4e9d76a25bf4793", - "reference": "0f1cbaee6b356e72c0e025f9a4e9d76a25bf4793", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/ed3b397f9c07c8ca388b2a1ef744403b4d4ecc44", + "reference": "ed3b397f9c07c8ca388b2a1ef744403b4d4ecc44", "shasum": "" }, "require": { @@ -2638,7 +2639,7 @@ "configuration", "options" ], - "time": "2019-01-16T09:39:14+00:00" + "time": "2019-04-10T16:00:48+00:00" }, { "name": "symfony/polyfill-apcu", @@ -2756,16 +2757,16 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "v1.10.0", + "version": "v1.11.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "c79c051f5b3a46be09205c73b80b346e4153e494" + "reference": "fe5e94c604826c35a32fa832f35bd036b6799609" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494", - "reference": "c79c051f5b3a46be09205c73b80b346e4153e494", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fe5e94c604826c35a32fa832f35bd036b6799609", + "reference": "fe5e94c604826c35a32fa832f35bd036b6799609", "shasum": "" }, "require": { @@ -2777,7 +2778,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "1.11-dev" } }, "autoload": { @@ -2811,7 +2812,7 @@ "portable", "shim" ], - "time": "2018-09-21T13:07:52+00:00" + "time": "2019-02-06T07:57:58+00:00" }, { "name": "symfony/polyfill-php70", @@ -5822,16 +5823,16 @@ }, { "name": "zendframework/zend-uri", - "version": "2.6.2", + "version": "2.7.0", "source": { "type": "git", "url": "https://github.com/zendframework/zend-uri.git", - "reference": "2b0bc8b999b9b417f2c59e14511e669aa4b6286f" + "reference": "b2785cd38fe379a784645449db86f21b7739b1ee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-uri/zipball/2b0bc8b999b9b417f2c59e14511e669aa4b6286f", - "reference": "2b0bc8b999b9b417f2c59e14511e669aa4b6286f", + "url": "https://api.github.com/repos/zendframework/zend-uri/zipball/b2785cd38fe379a784645449db86f21b7739b1ee", + "reference": "b2785cd38fe379a784645449db86f21b7739b1ee", "shasum": "" }, "require": { @@ -5846,8 +5847,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6.x-dev", - "dev-develop": "2.7.x-dev" + "dev-master": "2.7.x-dev", + "dev-develop": "2.8.x-dev" } }, "autoload": { @@ -5865,7 +5866,7 @@ "uri", "zf" ], - "time": "2019-02-26T21:06:10+00:00" + "time": "2019-02-27T21:39:04+00:00" }, { "name": "zendframework/zend-validator", @@ -6477,16 +6478,16 @@ }, { "name": "composer/semver", - "version": "1.4.2", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573" + "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/c7cb9a2095a074d131b65a8a0cd294479d785573", - "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573", + "url": "https://api.github.com/repos/composer/semver/zipball/46d9139568ccb8d9e7cdd4539cab7347568a5e2e", + "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e", "shasum": "" }, "require": { @@ -6535,20 +6536,20 @@ "validation", "versioning" ], - "time": "2016-08-30T16:08:34+00:00" + "time": "2019-03-19T17:25:45+00:00" }, { "name": "composer/xdebug-handler", - "version": "1.3.2", + "version": "1.3.3", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "d17708133b6c276d6e42ef887a877866b909d892" + "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/d17708133b6c276d6e42ef887a877866b909d892", - "reference": "d17708133b6c276d6e42ef887a877866b909d892", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/46867cbf8ca9fb8d60c506895449eb799db1184f", + "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f", "shasum": "" }, "require": { @@ -6579,325 +6580,38 @@ "Xdebug", "performance" ], - "time": "2019-01-28T20:25:53+00:00" - }, - { - "name": "doctrine/collections", - "version": "v1.5.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/collections.git", - "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/a01ee38fcd999f34d9bfbcee59dbda5105449cbf", - "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "require-dev": { - "doctrine/coding-standard": "~0.1@dev", - "phpunit/phpunit": "^5.7" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, - "autoload": { - "psr-0": { - "Doctrine\\Common\\Collections\\": "lib/" - } - }, - "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" - } - ], - "description": "Collections Abstraction library", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "array", - "collections", - "iterator" - ], - "time": "2017-07-22T10:37:32+00:00" - }, - { - "name": "doctrine/common", - "version": "v2.10.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/common.git", - "reference": "30e33f60f64deec87df728c02b107f82cdafad9d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/common/zipball/30e33f60f64deec87df728c02b107f82cdafad9d", - "reference": "30e33f60f64deec87df728c02b107f82cdafad9d", - "shasum": "" - }, - "require": { - "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.1", - "doctrine/reflection": "^1.0", - "php": "^7.1" - }, - "require-dev": { - "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.10.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": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, persistence interfaces, proxies, event system and much more.", - "homepage": "https://www.doctrine-project.org/projects/common.html", - "keywords": [ - "common", - "doctrine", - "php" - ], - "time": "2018-11-21T01:24:55+00:00" - }, - { - "name": "doctrine/event-manager", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/event-manager.git", - "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/a520bc093a0170feeb6b14e9d83f3a14452e64b3", - "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3", - "shasum": "" - }, - "require": { - "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" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" - } - }, - "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" - } - ], - "description": "Common String Manipulations with regard to casing and singular/plural rules.", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "inflection", - "pluralize", - "singularize", - "string" - ], - "time": "2018-01-09T20:05:19+00:00" + "time": "2019-05-27T17:52:04+00:00" }, { "name": "doctrine/instantiator", - "version": "1.0.5", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + "reference": "a2c590166b2133a4633738648b6b064edae0814a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/a2c590166b2133a4633738648b6b064edae0814a", + "reference": "a2c590166b2133a4633738648b6b064edae0814a", "shasum": "" }, "require": { - "php": ">=5.3,<8.0-DEV" + "php": "^7.1" }, "require-dev": { - "athletic/athletic": "~0.1.8", + "doctrine/coding-standard": "^6.0", "ext-pdo": "*", "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0" + "phpbench/phpbench": "^0.13", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-shim": "^0.11", + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { @@ -6917,169 +6631,12 @@ } ], "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", "keywords": [ "constructor", "instantiate" ], - "time": "2015-06-14T21:17:01+00:00" - }, - { - "name": "doctrine/persistence", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/persistence.git", - "reference": "c0f1c17602afc18b4cbd8e1c8125f264c9cf7d38" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/c0f1c17602afc18b4cbd8e1c8125f264c9cf7d38", - "reference": "c0f1c17602afc18b4cbd8e1c8125f264c9cf7d38", - "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.10@dev" - }, - "require-dev": { - "doctrine/coding-standard": "^5.0", - "phpstan/phpstan": "^0.8", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.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": "The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.", - "homepage": "https://doctrine-project.org/projects/persistence.html", - "keywords": [ - "mapper", - "object", - "odm", - "orm", - "persistence" - ], - "time": "2018-11-21T00:33:13+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" + "time": "2019-03-17T17:37:11+00:00" }, { "name": "friendsofphp/php-cs-fixer", @@ -7238,25 +6795,28 @@ }, { "name": "myclabs/deep-copy", - "version": "1.7.0", + "version": "1.9.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" + "reference": "e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72", + "reference": "e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.1" + }, + "replace": { + "myclabs/deep-copy": "self.version" }, "require-dev": { "doctrine/collections": "^1.0", "doctrine/common": "^2.6", - "phpunit/phpunit": "^4.1" + "phpunit/phpunit": "^7.1" }, "type": "library", "autoload": { @@ -7279,7 +6839,7 @@ "object", "object graph" ], - "time": "2017-10-19T19:58:43+00:00" + "time": "2019-04-07T13:18:21+00:00" }, { "name": "pdepend/pdepend", @@ -7591,16 +7151,16 @@ }, { "name": "phpspec/prophecy", - "version": "1.8.0", + "version": "1.8.1", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" + "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/1927e75f4ed19131ec9bcc3b002e07fb1173ee76", + "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76", "shasum": "" }, "require": { @@ -7621,8 +7181,8 @@ } }, "autoload": { - "psr-0": { - "Prophecy\\": "src/" + "psr-4": { + "Prophecy\\": "src/Prophecy" } }, "notification-url": "https://packagist.org/downloads/", @@ -7650,7 +7210,7 @@ "spy", "stub" ], - "time": "2018-08-05T17:53:17+00:00" + "time": "2019-06-13T12:50:23+00:00" }, { "name": "phpunit/php-code-coverage", @@ -8746,16 +8306,16 @@ }, { "name": "symfony/config", - "version": "v3.4.22", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "c9bc510c217075d42d4a927e285917d0c2001cf4" + "reference": "177a276c01575253c95cefe0866e3d1b57637fe0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/c9bc510c217075d42d4a927e285917d0c2001cf4", - "reference": "c9bc510c217075d42d4a927e285917d0c2001cf4", + "url": "https://api.github.com/repos/symfony/config/zipball/177a276c01575253c95cefe0866e3d1b57637fe0", + "reference": "177a276c01575253c95cefe0866e3d1b57637fe0", "shasum": "" }, "require": { @@ -8806,20 +8366,20 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2019-01-30T11:33:42+00:00" + "time": "2019-02-23T15:06:07+00:00" }, { "name": "symfony/console", - "version": "v3.4.23", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "71ce77f37af0c5ffb9590e43cc4f70e426945c5e" + "reference": "8e1d1e406dd31727fa70cd5a99cda202e9d6a5c6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/71ce77f37af0c5ffb9590e43cc4f70e426945c5e", - "reference": "71ce77f37af0c5ffb9590e43cc4f70e426945c5e", + "url": "https://api.github.com/repos/symfony/console/zipball/8e1d1e406dd31727fa70cd5a99cda202e9d6a5c6", + "reference": "8e1d1e406dd31727fa70cd5a99cda202e9d6a5c6", "shasum": "" }, "require": { @@ -8878,11 +8438,11 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2019-02-23T15:06:07+00:00" + "time": "2019-05-09T08:42:51+00:00" }, { "name": "symfony/css-selector", - "version": "v3.4.22", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", @@ -8935,16 +8495,16 @@ }, { "name": "symfony/debug", - "version": "v3.4.23", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "8d8a9e877b3fcdc50ddecf8dcea146059753f782" + "reference": "671fc55bd14800668b1d0a3708c3714940e30a8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/8d8a9e877b3fcdc50ddecf8dcea146059753f782", - "reference": "8d8a9e877b3fcdc50ddecf8dcea146059753f782", + "url": "https://api.github.com/repos/symfony/debug/zipball/671fc55bd14800668b1d0a3708c3714940e30a8c", + "reference": "671fc55bd14800668b1d0a3708c3714940e30a8c", "shasum": "" }, "require": { @@ -8987,20 +8547,20 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2019-02-24T15:45:11+00:00" + "time": "2019-05-18T13:32:47+00:00" }, { "name": "symfony/dependency-injection", - "version": "v3.4.22", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "b514f5b765cf3e4a56e9d8ebacf14b117f7a0ee1" + "reference": "8f2a0452f086a66f6d6cf53a432867b575887768" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/b514f5b765cf3e4a56e9d8ebacf14b117f7a0ee1", - "reference": "b514f5b765cf3e4a56e9d8ebacf14b117f7a0ee1", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/8f2a0452f086a66f6d6cf53a432867b575887768", + "reference": "8f2a0452f086a66f6d6cf53a432867b575887768", "shasum": "" }, "require": { @@ -9058,20 +8618,20 @@ ], "description": "Symfony DependencyInjection Component", "homepage": "https://symfony.com", - "time": "2019-01-30T17:48:51+00:00" + "time": "2019-05-19T14:11:39+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v3.4.22", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "ed5be1663fa66623b3a7004d5d51a14c4045399b" + "reference": "a088aafcefb4eef2520a290ed82e4374092a6dff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/ed5be1663fa66623b3a7004d5d51a14c4045399b", - "reference": "ed5be1663fa66623b3a7004d5d51a14c4045399b", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a088aafcefb4eef2520a290ed82e4374092a6dff", + "reference": "a088aafcefb4eef2520a290ed82e4374092a6dff", "shasum": "" }, "require": { @@ -9121,11 +8681,11 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2019-01-16T13:27:11+00:00" + "time": "2019-04-02T08:51:52+00:00" }, { "name": "symfony/filesystem", - "version": "v3.4.23", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", @@ -9175,16 +8735,16 @@ }, { "name": "symfony/finder", - "version": "v3.4.23", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "fcdde4aa38f48190ce70d782c166f23930084f9b" + "reference": "fa5d962a71f2169dfe1cbae217fa5a2799859f6c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/fcdde4aa38f48190ce70d782c166f23930084f9b", - "reference": "fcdde4aa38f48190ce70d782c166f23930084f9b", + "url": "https://api.github.com/repos/symfony/finder/zipball/fa5d962a71f2169dfe1cbae217fa5a2799859f6c", + "reference": "fa5d962a71f2169dfe1cbae217fa5a2799859f6c", "shasum": "" }, "require": { @@ -9220,20 +8780,20 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2019-02-22T14:44:53+00:00" + "time": "2019-05-24T12:25:55+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.10.0", + "version": "v1.11.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631" + "reference": "ab50dcf166d5f577978419edd37aa2bb8eabce0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9050816e2ca34a8e916c3a0ae8b9c2fccf68b631", - "reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/ab50dcf166d5f577978419edd37aa2bb8eabce0c", + "reference": "ab50dcf166d5f577978419edd37aa2bb8eabce0c", "shasum": "" }, "require": { @@ -9242,7 +8802,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "1.11-dev" } }, "autoload": { @@ -9275,20 +8835,20 @@ "portable", "shim" ], - "time": "2018-09-21T13:07:52+00:00" + "time": "2019-02-06T07:57:58+00:00" }, { "name": "symfony/process", - "version": "v3.4.23", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "009f8dda80930e89e8344a4e310b08f9ff07dd2e" + "reference": "afe411c2a6084f25cff55a01d0d4e1474c97ff13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/009f8dda80930e89e8344a4e310b08f9ff07dd2e", - "reference": "009f8dda80930e89e8344a4e310b08f9ff07dd2e", + "url": "https://api.github.com/repos/symfony/process/zipball/afe411c2a6084f25cff55a01d0d4e1474c97ff13", + "reference": "afe411c2a6084f25cff55a01d0d4e1474c97ff13", "shasum": "" }, "require": { @@ -9324,11 +8884,11 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2019-01-16T13:27:11+00:00" + "time": "2019-05-22T12:54:11+00:00" }, { "name": "symfony/stopwatch", - "version": "v3.4.22", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", @@ -9417,16 +8977,16 @@ }, { "name": "theseer/tokenizer", - "version": "1.1.0", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" + "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", - "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", + "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", "shasum": "" }, "require": { @@ -9453,7 +9013,7 @@ } ], "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "time": "2017-04-07T12:08:54+00:00" + "time": "2019-06-13T22:48:21+00:00" } ], "aliases": [], diff --git a/fid/config/vufind/fid.ini b/fid/config/vufind/fid.ini index 1307453b84bb97eecf21fbbc0f0fa9848614d626..849eafe4edef9e5f6245714de74eb9e0ef4b4894 100644 --- a/fid/config/vufind/fid.ini +++ b/fid/config/vufind/fid.ini @@ -1,2 +1,6 @@ [Client] -baseUrl = http://172.18.113.133/bbi-alpha.1 \ No newline at end of file +baseUrl = http://172.18.113.133/bbi-alpha.3 + +[Security] +access_levels[] = limited_access +access_levels[] = full_access \ No newline at end of file diff --git a/module/fid/config/module.config.php b/module/fid/config/module.config.php index c3b4267b42ac5d9b84041e21cc2d38783a42d232..d07e068a9a61af254c60eeb7a5246394270bfbc0 100644 --- a/module/fid/config/module.config.php +++ b/module/fid/config/module.config.php @@ -40,6 +40,7 @@ use VuFind\Auth\ILSAuthenticator as BaseILSAuthenticator; use VuFind\Db\Row\User as BaseUser; use VuFind\Db\Row\UserFactory; use Zend\Mvc\I18n\Translator; +use Zend\Mvc\Plugin\FlashMessenger\FlashMessenger; use Zend\ServiceManager\Factory\InvokableFactory; return [ @@ -52,11 +53,17 @@ return [ ErrorListener::class, LocaleListener::class, ], - 'view_helpers' => array( - 'invokables' => array( + 'view_helpers' => [ + 'invokables' => [ 'formLabel' => RegistrationFormLabel::class, - ), - ), + ], + ], + // TODO: add alias to vufind core + 'controller_plugins' => [ + 'aliases' => [ + 'flashmessenger' => FlashMessenger::class, + ] + ], 'service_manager' => [ 'aliases' => [ BaseILSAuthenticator::class => ILSAuthenticator::class, diff --git a/module/fid/src/Controller/UserController.php b/module/fid/src/Controller/UserController.php index c726f461f9c8ca0d53e2c74b5abef3818b0681fa..95acbf2586ec1036829d0f0e7d44f8ce5059a273 100644 --- a/module/fid/src/Controller/UserController.php +++ b/module/fid/src/Controller/UserController.php @@ -30,6 +30,7 @@ use fid\FormModel\UserUpdateModel; use fid\Service\Client; use fid\Service\ClientException; use fid\Service\DataTransferObject\Library; +use fid\Service\DataTransferObject\Permission; use fid\Service\DataTransferObject\User; use Symfony\Component\Serializer\SerializerAwareTrait; use Symfony\Component\Serializer\SerializerInterface; @@ -68,6 +69,11 @@ class UserController extends AbstractBase */ protected $client; + /** + * @var array + */ + protected $config; + /** * RegistrationController constructor. * @@ -76,19 +82,22 @@ class UserController extends AbstractBase * @param Authenticator $authenticator * @param AnnotationBuilder $builder * @param Client $client + * @param array $config */ public function __construct( ServiceLocatorInterface $serviceLocator, SerializerInterface $serializer, Authenticator $authenticator, AnnotationBuilder $builder, - Client $client + Client $client, + array $config ) { parent::__construct($serviceLocator); $this->authenticator = $authenticator; $this->serializer = $serializer; $this->builder = $builder; $this->client = $client; + $this->config = $config; } /** @@ -164,7 +173,8 @@ class UserController extends AbstractBase } $view = $this->createViewModel(); - $view->setVariables(compact('form', 'libraries')); + $accessLevels = $this->config['Security']['access_levels']; + $view->setVariables(compact('form', 'accessLevels', 'libraries')); $view->setTemplate('fid/user/create'); return $view; @@ -343,6 +353,7 @@ class UserController extends AbstractBase $user->setUsername($username = $model->getUsername()); $user->setPassword($password = $model->getPassword()); $user->setHomeLibrary($model->getHomeLibrary()); + $user->setPermissions([$model->getAccessLevel() => 'requested']); $user->setSalutation($model->getSalutation()); $user->setAcademicTitle($model->getAcademicTitle()); $user->setFirstname($model->getFirstname()); @@ -396,7 +407,12 @@ class UserController extends AbstractBase $message = $this->translate('fid::user_update_success'); $messenger->addSuccessMessage($message); } catch (ClientException $exception) { - $message = $this->translate('fid::user_update_error'); + if (in_array($exception->getCode(), [403])) { + $message = $this->translate('fid::user_update_error_' . $exception->getCode()); + } else { + $message = $this->translate('fid::user_update_error'); + } + $messenger->addErrorMessage($message); } @@ -442,7 +458,7 @@ class UserController extends AbstractBase try { $user = $this->client->requestUserDetails(); $user->setPassword($password = $model->getPassword()); - $this->client->requestUserUpdate($user); + $this->client->requestUserPasswordUpdate($user); $message = $this->translate('fid::password_change_success'); $message = sprintf($message, $username = $user->getUsername()); $messenger->addSuccessMessage($message); diff --git a/module/fid/src/Controller/UserControllerFactory.php b/module/fid/src/Controller/UserControllerFactory.php index 3e029c1210dfd02520cbbe53d89f869125737c33..6706b160fb3ee80b7f6e7290a5b9e0be7c9be989 100644 --- a/module/fid/src/Controller/UserControllerFactory.php +++ b/module/fid/src/Controller/UserControllerFactory.php @@ -26,6 +26,7 @@ use fid\Service\Client; use Psr\Container\ContainerInterface; use Symfony\Component\Serializer\SerializerInterface; use VuFind\Auth\Manager as AuthManager; +use VuFind\Config\PluginManager; use Zend\Form\Annotation\AnnotationBuilder; use Zend\ServiceManager\ServiceLocatorInterface; use Zend\Validator\ValidatorPluginManager; @@ -54,7 +55,9 @@ class UserControllerFactory /** @var SerializerInterface $serializer */ $serializer = $container->get(SerializerInterface::class); + $config = $container->get(PluginManager::class)->get('fid')->toArray(); + return new UserController($container, $serializer, $authManager, - $builder, $client); + $builder, $client, $config); } } \ No newline at end of file diff --git a/module/fid/src/FormModel/UserCreateModel.php b/module/fid/src/FormModel/UserCreateModel.php index ab2ae8adbd01c8e331576868983747e6ec419fd1..b70d5b33765d652f6ca58e3d28ff40057ff04127 100644 --- a/module/fid/src/FormModel/UserCreateModel.php +++ b/module/fid/src/FormModel/UserCreateModel.php @@ -155,6 +155,17 @@ class UserCreateModel */ protected $homeLibrary; + /** + * @var string + * @Annotation\Type("Zend\Form\Element\Radio") + * @Annotation\Required(true) + * @Annotation\Options({ + * "label": "label_access_level", + * "disable_inarray_validator": true + * }) + */ + protected $accessLevel; + /** * @var int|null * @Annotation\Type("Zend\Form\Element\Number") @@ -318,6 +329,23 @@ class UserCreateModel $this->yearOfBirth = $yearOfBirth; } + + /** + * @return string + */ + public function getAccessLevel(): string + { + return $this->accessLevel; + } + + /** + * @param string $accessLevel + */ + public function setAccessLevel(string $accessLevel): void + { + $this->accessLevel = $accessLevel; + } + /** * @return bool */ diff --git a/module/fid/src/Service/Client.php b/module/fid/src/Service/Client.php index 9211f4e79a849affb6d3a73c63a689cbeaff194a..32eb30ff41e86f0b9044905a69bce1dcac942c66 100644 --- a/module/fid/src/Service/Client.php +++ b/module/fid/src/Service/Client.php @@ -303,19 +303,19 @@ class Client */ public function requestUserUpdate(User $user): User { - $body = $this->serializer->serialize($user, 'json', - ['groups' => ['user:update:request']]); - $request = $this->buildRequest('put', "users/{$user->getId()}", $body); - $response = $this->sendAuthenticatedRequest($request); - - if ($response->getStatusCode() !== 200) { - $this->throwException($response); - } - /** @var User $result */ - $result = $this->serializer->deserialize((string)$response->getBody(), - User::class, 'json', ['groups' => ['user:update:response']]); + return $this->doRequestUserUpdate($user, ['user:update:request']); + } - return $this->session['user'] = $result; + /** + * @param User $user + * + * @return User + * @throws ClientException + */ + public function requestUserPasswordUpdate(User $user): User + { + return $this->doRequestUserUpdate($user, + ['user:update-password:request']); } /** @@ -345,6 +345,29 @@ class Client return $this->session['libraries'] = array_combine($keys, $list); } + /** + * @param User $user + * @param array $groups + * + * @return User + * @throws ClientException + */ + protected function doRequestUserUpdate(User $user, array $groups): User + { + $body = $this->serializer->serialize($user, 'json', compact('groups')); + $request = $this->buildRequest('put', "users/{$user->getId()}", $body); + $response = $this->sendAuthenticatedRequest($request); + + if ($response->getStatusCode() !== 200) { + $this->throwException($response); + } + /** @var User $result */ + $result = $this->serializer->deserialize((string)$response->getBody(), + User::class, 'json', ['groups' => ['user:update:response']]); + + return $this->session['user'] = $result; + } + /** * @return Logon diff --git a/module/fid/src/Service/DataTransferObject/User.php b/module/fid/src/Service/DataTransferObject/User.php index 946aeaee983d74c3cf388716b81ad66b31bcbefe..fc5695d8aa542af7ed7874b8b09b146e13eb4f7d 100644 --- a/module/fid/src/Service/DataTransferObject/User.php +++ b/module/fid/src/Service/DataTransferObject/User.php @@ -51,8 +51,7 @@ class User * @Groups({ * "user:details:response", * "user:creation:request", - * "user:update:request", - * "user:update:response", + * "user:update-password:request" * }) */ protected $password; @@ -165,6 +164,18 @@ class User */ protected $addresses = []; + /** + * @var array[] + * @Groups({ + * "user:details:response", + * "user:creation:request", + * "user:creation:response", + * "user:update:request", + * "user:update:response" + * }) + */ + protected $permissions = []; + /** * @return string|null */ @@ -361,4 +372,19 @@ class User $address->setUser($this); } } + /** + * @return array[] + */ + public function getPermissions(): array + { + return $this->permissions; + } + + /** + * @param array[] $permissions + */ + public function setPermissions(array $permissions): void + { + $this->permissions = $permissions; + } } diff --git a/module/fid/src/VuFind/Auth/ILSAuthenticator.php b/module/fid/src/VuFind/Auth/ILSAuthenticator.php index 912da0374f3a067eb6e8a79d2e6720f0b953249d..01f53ebca0ca47f0b8961964dfe2a34f78be57dd 100644 --- a/module/fid/src/VuFind/Auth/ILSAuthenticator.php +++ b/module/fid/src/VuFind/Auth/ILSAuthenticator.php @@ -54,10 +54,12 @@ class ILSAuthenticator } $data = [ + 'permissions' => $user->getPermissions(), 'username' => $user->getUsername(), 'firstname' => $user->getFirstname(), 'lastname' => $user->getLastname(), - 'email' => $user->getUsername() + 'email' => $user->getUsername(), + 'user' => $user ]; if ($address = $user->getAddresses()[0] ?? null) { diff --git a/themes/fid/languages/de.ini b/themes/fid/languages/de.ini new file mode 100644 index 0000000000000000000000000000000000000000..9703f4ce4e3068eab46c7f37d1d5afc960bb0a6c --- /dev/null +++ b/themes/fid/languages/de.ini @@ -0,0 +1 @@ +Username = E-Mail-Adresse \ No newline at end of file diff --git a/themes/fid/languages/en.ini b/themes/fid/languages/en.ini new file mode 100644 index 0000000000000000000000000000000000000000..8442ea4dba84c48c2f4fe53966ed3cc075db6677 --- /dev/null +++ b/themes/fid/languages/en.ini @@ -0,0 +1 @@ +Username = Email address \ No newline at end of file diff --git a/themes/fid/languages/fid/de.ini b/themes/fid/languages/fid/de.ini index e8d9cff11b8b259cb28bdb1213c07d8c5d91a309..44d6622ce9a6478dcdb4a927028788b100685753 100644 --- a/themes/fid/languages/fid/de.ini +++ b/themes/fid/languages/fid/de.ini @@ -22,8 +22,9 @@ label_college = "Hochschule" label_password = "Passwort" label_password_confirmation = "Passwort wiederholen" label_access_level = "Ich gehöre folgender Nutzergruppe an" -label_access_level_default = "HochschullehrerInnen, wissenschaftliche MitarbeiterInnen, Mitglied einer Fachgesellschaft, DoktorandInnen, StipendiatInnen oder externe WissenschaftlerInnen (z. B. Lehrbeauftragte)" -label_access_level_other = "Studierende, Sonstige" +label_access_level_full_access = "HochschullehrerInnen, wissenschaftliche MitarbeiterInnen, Mitglied einer Fachgesellschaft, DoktorandInnen, StipendiatInnen oder externe WissenschaftlerInnen (z. B. Lehrbeauftragte)" +label_access_level_limited_access = "Studierende, Sonstige" +label_access_level_unknown = "Unbekannte oder unbestätigte Gruppe(n)." label_delivery_address = "Privatadresse als Lieferadresse verwenden" Business = "Dienstadresse" @@ -56,6 +57,7 @@ user_create_error_autologon = "Vielen Dank. Ihre Registrierung war erfolgreich. user_create_success = "Vielen Dank für Ihre Registrierung." user_update_error = "Es ist ein unerwarteter Fehler beim Aktualisieren Ihres Profils aufgetreten." +user_update_error_403 = "Es ist ein Fehler beim Aktualisieren Ihres Profils aufgetreten: Keine Berechtigung." user_update_error_expired = "Bitte loggen Sie sich ein, um Ihr Profil zu editieren." user_update_success = "Ihr Profil wurde erfolgreich aktualisiert." @@ -69,3 +71,5 @@ password_change_error_autologon = "Ihr Passwort wurde gespeichert. Jedoch ist ei password_change_success = "Passwort erfolgreich gespeichert." Edit Account = "Profildaten ändern" + +access_level_requested = "Ihre Zugehörigkeit zur unten stehenden Gruppe wird derzeit noch überprüft." \ No newline at end of file diff --git a/themes/fid/languages/fid/en.ini b/themes/fid/languages/fid/en.ini index 865c3ab2300fbb1db052075b0a2e892f0a0d40bf..5f4b131105dd8331b10d4924b419f345667e9fa5 100644 --- a/themes/fid/languages/fid/en.ini +++ b/themes/fid/languages/fid/en.ini @@ -22,8 +22,9 @@ label_year_of_birth = "Year of birth (YYYY)" label_job_title = "Occupation" label_college = "University" label_access_level = "Please select your membership level" -label_access_level_default = "Professor, Research Associate/Assistant, Member of an Academic Association, PhD Student (also Scholarships), (Visiting) Lecturer" -label_access_level_other = "Student, Other" +label_access_level_full_access = "Professor, Research Associate/Assistant, Member of an Academic Association, PhD Student (also Scholarships), (Visiting) Lecturer" +label_access_level_limited_access = "Student, Other" +label_access_level_unknown = "Unknown or ungranted user group(s)." label_delivery_address = "Use the following address for deliveries" Business = "Office Address" @@ -57,6 +58,7 @@ user_create_success = "We have received your registration." user_update_success = "Your profile has been successfully updated." user_update_error = "An unexpected error has occurred when updating your profile." +user_update_error_403 = "An error has occurred when updating your profile: Forbidden." user_update_error_expired = "Please log in to edit your profile." password_reset_error = "An unexpected error has occurred." @@ -69,3 +71,5 @@ password_change_error_expired = "The link has already expired." password_change_error_autologon = "You password has been update. However, an unexpected error has occurred during the process of logging on." Edit Account = "Edit Account" + +access_level_requested = "Your membership status regarding the group below is currently being verified." \ No newline at end of file diff --git a/themes/fid/scss/compiled.scss b/themes/fid/scss/compiled.scss index 007403874441d35eb7d691f85fc7497e4737c7e3..9f6357ce4c11d67119bd3ac177b7eb6bdfcb0a12 100644 --- a/themes/fid/scss/compiled.scss +++ b/themes/fid/scss/compiled.scss @@ -18,27 +18,46 @@ @import 'customVariables'; @import 'customMixins'; -//.navbar { -// max-height: $navbar-height; -//} -// -//.mainbody { -// margin-left: $content-left-padding; -// margin-right: $content-right-padding; -//} -// -//.form-control { -// margin-right: $margin-right-width; -// max-width: $input-max-width; -//} -// -//.btn { -// margin-left: $button-left-margin; -// margin-right: $button-right-margin; -//} -// -form input:focus:required:invalid { - box-shadow: 0 0 2px 1px rgba(255,0,0,0.9); +.fid-user-create-form { + padding: 10px 0; + + h2 { + padding-bottom: 10px; + } + + .form-control { + margin: 0; + } + + .form-group { + & > .col-md-4, .col-md-6, .col-md-8, .col-md-10 { + padding: 0; + } + + &:after { + display: table; + content: " "; + clear: both; + } + + &.eula > :first-child * { + display: inline; + } + } + + input[type=checkbox] { + margin-top: 0; + margin-right: 10px; + vertical-align: middle; + display: inline-block; + } + + input[type=radio] { + margin-top: 0; + margin-right: 10px; + vertical-align: middle; + display: inline-block; + } } .registration { @@ -47,6 +66,4 @@ form input:focus:required:invalid { margin-right: $margin-right-width; padding-left: $margin-right-width; } -} - - +} \ No newline at end of file diff --git a/themes/fid/templates/fid/user/create.phtml b/themes/fid/templates/fid/user/create.phtml index 311209527653764865eefc0a061fb42b1fca95fa..35a227f3e846323370b0ecb4cc04cdae60720eaf 100644 --- a/themes/fid/templates/fid/user/create.phtml +++ b/themes/fid/templates/fid/user/create.phtml @@ -57,27 +57,24 @@ $formElementErrors->setTranslator($translator); $form = $this->form; $form->setAttribute('method', 'post'); $form->setAttribute('action', $this->url('fid/user/create')); -$form->setAttribute('class', 'form-horizontal registration'); +$form->setAttribute('class', 'fid-user-create-form registration'); $form->prepare(); $this->headTitle($this->translate('Profile Form')); $this->headTitle($this->translate("fid::user_create_form_title")); ?> -<h2><?= $this->translate("fid::user_create_form_title") ?></h2> - -<div class="subito-pg"> - * <?=$this->transEsc("This field is required")?> -</div> - <?= $this->flashmessages() ?> <?= $this->form()->openTag($form) ?> -<br/> +<h2><?= $this->translate("fid::user_create_form_title") ?></h2> + <div class="subito-pg"> + * <?=$this->transEsc("This field is required")?> + </div> <? /* username */ ?> <?php /** @var Element\Text $elemUsername */ $elemUsername = $form->get('username'); -$elemUsername->setLabelAttributes(['class' => 'inline col-md-4 col-sm-10']); +$elemUsername->setLabelAttributes(['class' => 'col-md-4']); $elemUsername->setAttributes(['class' => 'form-control', 'disabled' => 1]); ?> <div class="form-group"> @@ -95,7 +92,7 @@ $elemUsername->setAttributes(['class' => 'form-control', 'disabled' => 1]); <?php /** @var Element\Password $elemPassword */ $elemPassword = $form->get('password'); -$elemPassword->setLabelAttributes(['class' => 'inline col-md-4 col-sm-10']); +$elemPassword->setLabelAttributes(['class' => 'col-md-4']); $elemPassword->setAttributes(['class' => 'form-control']); ?> <div class="form-group"> @@ -108,7 +105,7 @@ $elemPassword->setAttributes(['class' => 'form-control']); <?php /** @var Element\Password $elemPasswordConfirmation */ $elemPasswordConfirmation = $form->get('passwordConfirmation'); -$elemPasswordConfirmation->setLabelAttributes(['class' => 'inline col-md-4 col-sm-10']); +$elemPasswordConfirmation->setLabelAttributes(['class' => 'col-md-4']); $elemPasswordConfirmation->setAttributes(['class' => 'form-control']); ?> <div class="form-group"> @@ -121,8 +118,8 @@ $elemPasswordConfirmation->setAttributes(['class' => 'form-control']); <?php /** @var Element\Select $elemHomeLibrary */ $elemHomeLibrary = $form->get('homeLibrary'); -$elemHomeLibrary->setLabelAttributes(['class' => 'inline col-md-4 col-sm-10']); -$elemHomeLibrary->setAttributes(['class' => 'inline col-sm-6']); +$elemHomeLibrary->setLabelAttributes(['class' => 'col-md-4']); +$elemHomeLibrary->setAttributes(['class' => 'form-control']); $elemHomeLibrary->setValueOptions($this->libraries); ?> <div class="form-group"> @@ -135,20 +132,19 @@ $elemHomeLibrary->setValueOptions($this->libraries); <?php /** @var Element\Select $elemSalutation */ $elemSalutation = $form->get('salutation'); -$elemSalutation->setLabelAttributes(['class' => 'inline col-md-4 col-sm-10']); -$elemSalutation->setAttributes(['class' => 'inline col-sm-2']); +$elemSalutation->setLabelAttributes(['class' => 'col-md-4']); +$elemSalutation->setAttributes(['class' => 'form-control']); ?> <div class="form-group"> <?= $this->formLabel($elemSalutation) ?> <?= $this->formSelect($elemSalutation) ?> - </div> <? /* academic title */ ?> <?php /** @var Element\Text $elemAcademicTitle */ $elemAcademicTitle = $form->get('academicTitle'); -$elemAcademicTitle->setLabelAttributes(['class' => 'inline col-md-4 col-sm-10']); +$elemAcademicTitle->setLabelAttributes(['class' => 'col-md-4']); $elemAcademicTitle->setAttributes(['class' => 'form-control']); ?> <div class="form-group"> @@ -160,7 +156,7 @@ $elemAcademicTitle->setAttributes(['class' => 'form-control']); <?php /** @var Element\Text $elemFirstname */ $elemFirstname = $form->get('firstname'); -$elemFirstname->setLabelAttributes(['class' => 'inline col-md-4 col-sm-10']); +$elemFirstname->setLabelAttributes(['class' => 'col-md-4']); $elemFirstname->setAttributes(['class' => 'form-control']); ?> <div class="form-group"> @@ -173,7 +169,7 @@ $elemFirstname->setAttributes(['class' => 'form-control']); <?php /** @var Element\Text $elemLastname */ $elemLastname = $form->get('lastname'); -$elemLastname->setLabelAttributes(['class' => 'inline col-md-4 col-sm-10']); +$elemLastname->setLabelAttributes(['class' => 'col-md-4']); $elemLastname->setAttributes(['class' => 'form-control']); ?> <div class="form-group"> @@ -186,7 +182,7 @@ $elemLastname->setAttributes(['class' => 'form-control']); <?php /** @var Element\Text $elemYearOfBirth */ $elemYearOfBirth = $form->get('yearOfBirth'); -$elemYearOfBirth->setLabelAttributes(['class' => 'inline col-md-4 col-sm-10']); +$elemYearOfBirth->setLabelAttributes(['class' => 'col-md-4']); $elemYearOfBirth->setAttributes(['class' => 'form-control']); ?> <div class="form-group"> @@ -199,7 +195,7 @@ $elemYearOfBirth->setAttributes(['class' => 'form-control']); <?php /** @var Element\Text $elemCollege */ $elemCollege = $form->get('college'); -$elemCollege->setLabelAttributes(['class' => 'inline col-md-4 col-sm-10']); +$elemCollege->setLabelAttributes(['class' => 'col-md-4']); $elemCollege->setAttributes(['class' => 'form-control']); ?> <div class="form-group"> @@ -212,7 +208,7 @@ $elemCollege->setAttributes(['class' => 'form-control']); <?php /** @var Element\Text $elemJobTitle */ $elemJobTitle = $form->get('jobTitle'); -$elemJobTitle->setLabelAttributes(['class' => 'inline col-md-4 col-sm-10']); +$elemJobTitle->setLabelAttributes(['class' => 'col-md-4']); $elemJobTitle->setAttributes(['class' => 'form-control']); ?> <div class="form-group"> @@ -221,27 +217,47 @@ $elemJobTitle->setAttributes(['class' => 'form-control']); <?= $this->formElementErrors($elemJobTitle) ?> </div> +<? /* role (user group) */ ?> +<?php +/** @var Element\Radio $accessLevel */ +$accessLevel = $form->get('accessLevel'); +$accessLevelValueOptions = array_map(function ($accessLevel) { + return "label_access_level_$accessLevel"; +}, array_combine($this->accessLevels, $this->accessLevels)); +$accessLevel->setValueOptions($accessLevelValueOptions); +?> +<div class="form-group"> + <div class="col-md-4"> + <?= $this->formLabel($accessLevel) ?> + </div> + <div class="col-md-8"> + <?= $this->formRadio($accessLevel) ?> + </div> + <?= $this->formElementErrors($accessLevel) ?> +</div> + <? /* eula privacy policy */ ?> <?php /** @var Checkbox $elemEulaAccepted */ $elemEulaAccepted = $form->get('eulaAccepted'); $elemEulaAccepted->setAttribute('id', $elemEulaAccepted->getAttribute('name') ?? 'eulaAccepted'); -$elemEulaAccepted->setAttributes(['class' => 'inline']); -$elemEulaAccepted->setLabelAttributes(['class' => 'inline']); ?> -<br /> -<div class="no-margin-l"> - <?= $this->formElement($elemEulaAccepted) ?> - <?= $this->formLabel()->openTag($elemEulaAccepted) ?> - <?= $this->translate("fid::policy_text") ?> - <?php $url = $this->url('fid/user/policy') ?> - <a target="_blank" href="<?= $url ?>"> - <?= $this->translate("fid::policy") ?> - </a> - <?= $this->translate("fid::terms_text") ?> - <?php $url = $this->url('fid/user/terms') ?> - <a target="_blank" href="<?= $url ?>"><?= $this->translate("fid::terms") ?>.</a> - <?= $this->formLabel()->closeTag($elemEulaAccepted) ?> +<div class="form-group eula"> + <div> + <?= $this->formElement($elemEulaAccepted) ?> + <?= $this->formLabel()->openTag($elemEulaAccepted) ?> + <?= $this->translate("fid::policy_text") ?> + <?php $url = $this->url('fid/user/policy') ?> + <a data-lightbox href="<?= $url ?>"> + <?= $this->translate("fid::policy") ?> + </a> + <?= $this->translate("fid::terms_text") ?> + <?php $url = $this->url('fid/user/terms') ?> + <a data-lightbox href="<?= $url ?>"> + <?= $this->translate("fid::terms") ?> + </a>. + <?= $this->formLabel()->closeTag($elemEulaAccepted) ?> + </div> <?= $this->formElementErrors($elemEulaAccepted) ?> </div> @@ -249,10 +265,10 @@ $elemEulaAccepted->setLabelAttributes(['class' => 'inline']); <?php /** @var Submit $elemSubmit */ $elemSubmit = $form->get('submit'); -$elemSubmit->setAttributes(['class' => 'btn btn-primary right']); +$elemSubmit->setAttributes(['class' => 'btn btn-primary']); ?> <div class="form-group"> - <div class="col-lg-11 col-md-9 col-sm-11 col-xs-12"> + <div class=""> <?= $this->formSubmit($elemSubmit) ?> </div> </div> diff --git a/themes/fid/templates/fid/user/update.phtml b/themes/fid/templates/fid/user/update.phtml index 9b2c8b78fe50e9b797eb0234cadcd9fbed733ad5..1ac47e76d9dc849de69f5b9c57b97194d7bca803 100644 --- a/themes/fid/templates/fid/user/update.phtml +++ b/themes/fid/templates/fid/user/update.phtml @@ -161,6 +161,7 @@ $elemYearOfBirth->setValue($user->getYearOfBirth()); $elemCollege = $form->get('college'); $elemCollege->setLabelAttributes(['class' => 'inline col-md-4 col-sm-10']); $elemCollege->setAttributes(['class' => 'form-control']); +$elemCollege->setValue($user->getCollege()); ?> <div class="form-group"> <?= $this->formLabel($elemCollege) ?> diff --git a/themes/fid/templates/myresearch/profile.phtml b/themes/fid/templates/myresearch/profile.phtml index 71e700165739a830a123d4f367df813c8f9a102d..e0279b2c5aff0b171ddf3f2acec1b3b147b7a1c8 100644 --- a/themes/fid/templates/myresearch/profile.phtml +++ b/themes/fid/templates/myresearch/profile.phtml @@ -8,16 +8,33 @@ $this->layout()->breadcrumbs = '<li><a href="' . $this->url('myresearch-home') . // Template for use by the renderArray helper: $arrTemplate = '<tr><th>%%LABEL%%:</th><td> %%VALUE%%</td></tr>'; + +$profile = $this->profile; +if (is_array($profile)) { + $permissions = $profile['user']->getPermissions(); + foreach (array_reverse($permissions) as $permission => $status) { + if (in_array($status, ['granted', 'requested'])) { + break; + } + } + + if ($status === 'requested') { + $this->flashMessenger()->getPluginFlashMessenger() + ->addInfoMessage($this->translate('fid::access_level_requested')); + } + + $profile['group'] = $this->translate('fid::label_access_level_' . $permission); +} ?> <div class="<?=$this->layoutClass('mainbody')?>"> <h2><?=$this->transEsc('Your Profile')?></h2> <?=$this->flashmessages();?> - <?php if (is_array($this->profile)): ?> <table class="table table-striped"> <?=$this->renderArray( - $arrTemplate, $this->profile, + $arrTemplate, + $profile, [ $this->transEsc('First Name') => 'firstname', $this->transEsc('Last Name') => 'lastname',