Merge branch 'release/2021.01-02'

This commit is contained in:
Björn Fromme
2021-02-04 21:03:42 +01:00
8 changed files with 210 additions and 120 deletions
+6
View File
@@ -19,6 +19,12 @@ provider: default
omit_containers: [dba] omit_containers: [dba]
use_dns_when_possible: true use_dns_when_possible: true
timezone: Europe/Berlin timezone: Europe/Berlin
webimage_extra_packages: [ ssh ]
hooks:
post-start:
- exec: "sudo chmod 600 /home/fromme/.ssh/authorized_keys"
- exec: "sudo service ssh start"
# This config.yaml was created with ddev version v1.14.0 # This config.yaml was created with ddev version v1.14.0
+2 -1
View File
@@ -4,6 +4,7 @@ services:
web: web:
environment: environment:
- TYPO3_CONTEXT=Development - TYPO3_CONTEXT=Development
- PHP_IDE_CONFIG=serverName=${DDEV_SITENAME}.ddev.site
volumes: volumes:
- ../public/typo3conf/ext/ep_theme/Resources/Private/Assets:/var/www/html/public/typo3conf/ext/ep_theme/Resources/Private/Assets:consistent - ../public/typo3conf/ext/ep_theme/Resources/Private/Assets:/var/www/html/public/typo3conf/ext/ep_theme/Resources/Private/Assets:consistent
ports:
- "9922:22"
Generated
+109 -108
View File
@@ -2149,16 +2149,16 @@
}, },
{ {
"name": "symfony/asset", "name": "symfony/asset",
"version": "v5.2.1", "version": "v5.2.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/asset.git", "url": "https://github.com/symfony/asset.git",
"reference": "d254631bc20fb82a5827602dc2fa84a3118ec3f5" "reference": "54a42aa50f9359d1184bf7e954521b45ca3d5828"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/asset/zipball/d254631bc20fb82a5827602dc2fa84a3118ec3f5", "url": "https://api.github.com/repos/symfony/asset/zipball/54a42aa50f9359d1184bf7e954521b45ca3d5828",
"reference": "d254631bc20fb82a5827602dc2fa84a3118ec3f5", "reference": "54a42aa50f9359d1184bf7e954521b45ca3d5828",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -2195,7 +2195,7 @@
"homepage": "https://symfony.com/contributors" "homepage": "https://symfony.com/contributors"
} }
], ],
"description": "Symfony Asset Component", "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"funding": [ "funding": [
{ {
@@ -2211,20 +2211,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2020-12-14T07:03:02+00:00" "time": "2021-01-27T10:01:46+00:00"
}, },
{ {
"name": "symfony/cache", "name": "symfony/cache",
"version": "v5.2.1", "version": "v5.2.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/cache.git", "url": "https://github.com/symfony/cache.git",
"reference": "5e61d63b1ef4fb4852994038267ad45e12f3ec52" "reference": "d6aed6c1bbf6f59e521f46437475a0ff4878d388"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/cache/zipball/5e61d63b1ef4fb4852994038267ad45e12f3ec52", "url": "https://api.github.com/repos/symfony/cache/zipball/d6aed6c1bbf6f59e521f46437475a0ff4878d388",
"reference": "5e61d63b1ef4fb4852994038267ad45e12f3ec52", "reference": "d6aed6c1bbf6f59e521f46437475a0ff4878d388",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -2283,7 +2283,7 @@
"homepage": "https://symfony.com/contributors" "homepage": "https://symfony.com/contributors"
} }
], ],
"description": "Symfony Cache component with PSR-6, PSR-16, and tags", "description": "Provides an extended PSR-6, PSR-16 (and tags) implementation",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"keywords": [ "keywords": [
"caching", "caching",
@@ -2303,7 +2303,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2020-12-10T19:16:15+00:00" "time": "2021-01-27T11:24:50+00:00"
}, },
{ {
"name": "symfony/cache-contracts", "name": "symfony/cache-contracts",
@@ -2383,16 +2383,16 @@
}, },
{ {
"name": "symfony/console", "name": "symfony/console",
"version": "v4.4.18", "version": "v4.4.19",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/console.git", "url": "https://github.com/symfony/console.git",
"reference": "12e071278e396cc3e1c149857337e9e192deca0b" "reference": "24026c44fc37099fa145707fecd43672831b837a"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/12e071278e396cc3e1c149857337e9e192deca0b", "url": "https://api.github.com/repos/symfony/console/zipball/24026c44fc37099fa145707fecd43672831b837a",
"reference": "12e071278e396cc3e1c149857337e9e192deca0b", "reference": "24026c44fc37099fa145707fecd43672831b837a",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -2449,7 +2449,7 @@
"homepage": "https://symfony.com/contributors" "homepage": "https://symfony.com/contributors"
} }
], ],
"description": "Symfony Console Component", "description": "Eases the creation of beautiful and testable command line interfaces",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"funding": [ "funding": [
{ {
@@ -2465,7 +2465,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2020-12-18T07:41:31+00:00" "time": "2021-01-27T09:09:26+00:00"
}, },
{ {
"name": "symfony/deprecation-contracts", "name": "symfony/deprecation-contracts",
@@ -2533,16 +2533,16 @@
}, },
{ {
"name": "symfony/expression-language", "name": "symfony/expression-language",
"version": "v4.4.18", "version": "v4.4.19",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/expression-language.git", "url": "https://github.com/symfony/expression-language.git",
"reference": "c1763368a38d5061e5aa03160b328075d000291b" "reference": "066402a1894fcaef22cbff1591c8a0bdf7f66e9b"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/expression-language/zipball/c1763368a38d5061e5aa03160b328075d000291b", "url": "https://api.github.com/repos/symfony/expression-language/zipball/066402a1894fcaef22cbff1591c8a0bdf7f66e9b",
"reference": "c1763368a38d5061e5aa03160b328075d000291b", "reference": "066402a1894fcaef22cbff1591c8a0bdf7f66e9b",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -2573,7 +2573,7 @@
"homepage": "https://symfony.com/contributors" "homepage": "https://symfony.com/contributors"
} }
], ],
"description": "Symfony ExpressionLanguage Component", "description": "Provides an engine that can compile and evaluate expressions",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"funding": [ "funding": [
{ {
@@ -2589,20 +2589,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2020-12-08T16:59:59+00:00" "time": "2021-01-27T09:09:26+00:00"
}, },
{ {
"name": "symfony/finder", "name": "symfony/finder",
"version": "v4.4.18", "version": "v4.4.19",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/finder.git", "url": "https://github.com/symfony/finder.git",
"reference": "ebd0965f2dc2d4e0f11487c16fbb041e50b5c09b" "reference": "25d79cfccfc12e84e7a63a248c3f0720fdd92db6"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/finder/zipball/ebd0965f2dc2d4e0f11487c16fbb041e50b5c09b", "url": "https://api.github.com/repos/symfony/finder/zipball/25d79cfccfc12e84e7a63a248c3f0720fdd92db6",
"reference": "ebd0965f2dc2d4e0f11487c16fbb041e50b5c09b", "reference": "25d79cfccfc12e84e7a63a248c3f0720fdd92db6",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -2631,7 +2631,7 @@
"homepage": "https://symfony.com/contributors" "homepage": "https://symfony.com/contributors"
} }
], ],
"description": "Symfony Finder Component", "description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"funding": [ "funding": [
{ {
@@ -2647,20 +2647,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2020-12-08T16:59:59+00:00" "time": "2021-01-27T09:09:26+00:00"
}, },
{ {
"name": "symfony/http-client", "name": "symfony/http-client",
"version": "v4.4.18", "version": "v4.4.19",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/http-client.git", "url": "https://github.com/symfony/http-client.git",
"reference": "dc518f62677944938026746e6e58ac37ebcc6238" "reference": "d8df50fe9229576b254c6822eb5cfff36c02c967"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/http-client/zipball/dc518f62677944938026746e6e58ac37ebcc6238", "url": "https://api.github.com/repos/symfony/http-client/zipball/d8df50fe9229576b254c6822eb5cfff36c02c967",
"reference": "dc518f62677944938026746e6e58ac37ebcc6238", "reference": "d8df50fe9229576b254c6822eb5cfff36c02c967",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -2677,7 +2677,7 @@
"symfony/http-client-implementation": "1.1" "symfony/http-client-implementation": "1.1"
}, },
"require-dev": { "require-dev": {
"guzzlehttp/promises": "^1.3.1", "guzzlehttp/promises": "^1.4",
"nyholm/psr7": "^1.0", "nyholm/psr7": "^1.0",
"php-http/httplug": "^1.0|^2.0", "php-http/httplug": "^1.0|^2.0",
"psr/http-client": "^1.0", "psr/http-client": "^1.0",
@@ -2708,7 +2708,7 @@
"homepage": "https://symfony.com/contributors" "homepage": "https://symfony.com/contributors"
} }
], ],
"description": "Symfony HttpClient component", "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"funding": [ "funding": [
{ {
@@ -2724,7 +2724,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2020-12-05T06:03:08+00:00" "time": "2021-01-27T09:09:26+00:00"
}, },
{ {
"name": "symfony/http-client-contracts", "name": "symfony/http-client-contracts",
@@ -2804,16 +2804,16 @@
}, },
{ {
"name": "symfony/http-foundation", "name": "symfony/http-foundation",
"version": "v5.2.1", "version": "v5.2.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/http-foundation.git", "url": "https://github.com/symfony/http-foundation.git",
"reference": "a1f6218b29897ab52acba58cfa905b83625bef8d" "reference": "20c554c0f03f7cde5ce230ed248470cccbc34c36"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/a1f6218b29897ab52acba58cfa905b83625bef8d", "url": "https://api.github.com/repos/symfony/http-foundation/zipball/20c554c0f03f7cde5ce230ed248470cccbc34c36",
"reference": "a1f6218b29897ab52acba58cfa905b83625bef8d", "reference": "20c554c0f03f7cde5ce230ed248470cccbc34c36",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -2854,7 +2854,7 @@
"homepage": "https://symfony.com/contributors" "homepage": "https://symfony.com/contributors"
} }
], ],
"description": "Symfony HttpFoundation Component", "description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"funding": [ "funding": [
{ {
@@ -2870,20 +2870,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2020-12-18T10:00:10+00:00" "time": "2021-02-03T04:42:09+00:00"
}, },
{ {
"name": "symfony/inflector", "name": "symfony/inflector",
"version": "v5.2.1", "version": "v5.2.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/inflector.git", "url": "https://github.com/symfony/inflector.git",
"reference": "e529917d701a057a12354845150be3e1c4b34084" "reference": "4c285002228d0e27480e5eee871f4e3f0a05a4eb"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/inflector/zipball/e529917d701a057a12354845150be3e1c4b34084", "url": "https://api.github.com/repos/symfony/inflector/zipball/4c285002228d0e27480e5eee871f4e3f0a05a4eb",
"reference": "e529917d701a057a12354845150be3e1c4b34084", "reference": "4c285002228d0e27480e5eee871f4e3f0a05a4eb",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -2914,7 +2914,7 @@
"homepage": "https://symfony.com/contributors" "homepage": "https://symfony.com/contributors"
} }
], ],
"description": "Symfony Inflector Component", "description": "Converts words between their singular and plural forms (English only)",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"keywords": [ "keywords": [
"inflection", "inflection",
@@ -2938,20 +2938,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2020-12-01T20:15:15+00:00" "time": "2021-01-10T16:29:19+00:00"
}, },
{ {
"name": "symfony/options-resolver", "name": "symfony/options-resolver",
"version": "v4.4.18", "version": "v4.4.19",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/options-resolver.git", "url": "https://github.com/symfony/options-resolver.git",
"reference": "157a252222251310fe50c71012b4e72f01325850" "reference": "cd8c6a2778d5f8b5e8fc4b7abdf126790b5d5095"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/options-resolver/zipball/157a252222251310fe50c71012b4e72f01325850", "url": "https://api.github.com/repos/symfony/options-resolver/zipball/cd8c6a2778d5f8b5e8fc4b7abdf126790b5d5095",
"reference": "157a252222251310fe50c71012b4e72f01325850", "reference": "cd8c6a2778d5f8b5e8fc4b7abdf126790b5d5095",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -2980,7 +2980,7 @@
"homepage": "https://symfony.com/contributors" "homepage": "https://symfony.com/contributors"
} }
], ],
"description": "Symfony OptionsResolver Component", "description": "Provides an improved replacement for the array_replace PHP function",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"keywords": [ "keywords": [
"config", "config",
@@ -3001,7 +3001,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2020-10-24T11:50:19+00:00" "time": "2021-01-27T09:09:26+00:00"
}, },
{ {
"name": "symfony/polyfill-ctype", "name": "symfony/polyfill-ctype",
@@ -3714,16 +3714,16 @@
}, },
{ {
"name": "symfony/process", "name": "symfony/process",
"version": "v4.4.18", "version": "v4.4.19",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/process.git", "url": "https://github.com/symfony/process.git",
"reference": "075316ff72233ce3d04a9743414292e834f2cb4a" "reference": "7e950b6366d4da90292c2e7fa820b3c1842b965a"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/075316ff72233ce3d04a9743414292e834f2cb4a", "url": "https://api.github.com/repos/symfony/process/zipball/7e950b6366d4da90292c2e7fa820b3c1842b965a",
"reference": "075316ff72233ce3d04a9743414292e834f2cb4a", "reference": "7e950b6366d4da90292c2e7fa820b3c1842b965a",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -3752,7 +3752,7 @@
"homepage": "https://symfony.com/contributors" "homepage": "https://symfony.com/contributors"
} }
], ],
"description": "Symfony Process Component", "description": "Executes commands in sub-processes",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"funding": [ "funding": [
{ {
@@ -3768,20 +3768,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2020-12-08T16:59:59+00:00" "time": "2021-01-27T09:09:26+00:00"
}, },
{ {
"name": "symfony/property-access", "name": "symfony/property-access",
"version": "v4.4.18", "version": "v4.4.19",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/property-access.git", "url": "https://github.com/symfony/property-access.git",
"reference": "439d92bc88fdda717f2c31335e8db41483ca5c8d" "reference": "94a1d9837396c71a0d8c31686c16693a15651622"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/property-access/zipball/439d92bc88fdda717f2c31335e8db41483ca5c8d", "url": "https://api.github.com/repos/symfony/property-access/zipball/94a1d9837396c71a0d8c31686c16693a15651622",
"reference": "439d92bc88fdda717f2c31335e8db41483ca5c8d", "reference": "94a1d9837396c71a0d8c31686c16693a15651622",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -3817,7 +3817,7 @@
"homepage": "https://symfony.com/contributors" "homepage": "https://symfony.com/contributors"
} }
], ],
"description": "Symfony PropertyAccess Component", "description": "Provides functions to read and write from/to an object or array using a simple string notation",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"keywords": [ "keywords": [
"access", "access",
@@ -3844,20 +3844,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2020-12-10T16:34:26+00:00" "time": "2021-01-27T09:09:26+00:00"
}, },
{ {
"name": "symfony/routing", "name": "symfony/routing",
"version": "v4.4.18", "version": "v4.4.19",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/routing.git", "url": "https://github.com/symfony/routing.git",
"reference": "80b042c20b035818daec844723e23b9825134ba0" "reference": "87529f6e305c7acb162840d1ea57922038072425"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/routing/zipball/80b042c20b035818daec844723e23b9825134ba0", "url": "https://api.github.com/repos/symfony/routing/zipball/87529f6e305c7acb162840d1ea57922038072425",
"reference": "80b042c20b035818daec844723e23b9825134ba0", "reference": "87529f6e305c7acb162840d1ea57922038072425",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -3869,7 +3869,7 @@
"symfony/yaml": "<3.4" "symfony/yaml": "<3.4"
}, },
"require-dev": { "require-dev": {
"doctrine/annotations": "~1.2", "doctrine/annotations": "^1.10.4",
"psr/log": "~1.0", "psr/log": "~1.0",
"symfony/config": "^4.2|^5.0", "symfony/config": "^4.2|^5.0",
"symfony/dependency-injection": "^3.4|^4.0|^5.0", "symfony/dependency-injection": "^3.4|^4.0|^5.0",
@@ -3907,7 +3907,7 @@
"homepage": "https://symfony.com/contributors" "homepage": "https://symfony.com/contributors"
} }
], ],
"description": "Symfony Routing Component", "description": "Maps an HTTP request to a set of configuration variables",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"keywords": [ "keywords": [
"router", "router",
@@ -3929,20 +3929,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2020-12-08T16:59:59+00:00" "time": "2021-01-27T09:09:26+00:00"
}, },
{ {
"name": "symfony/serializer", "name": "symfony/serializer",
"version": "v4.4.18", "version": "v4.4.19",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/serializer.git", "url": "https://github.com/symfony/serializer.git",
"reference": "f5a4c865c6c9d8af89915101c8a67efa7415f430" "reference": "6b383bc45777d14857b634e9f8fa2b8a2e69b66d"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/serializer/zipball/f5a4c865c6c9d8af89915101c8a67efa7415f430", "url": "https://api.github.com/repos/symfony/serializer/zipball/6b383bc45777d14857b634e9f8fa2b8a2e69b66d",
"reference": "f5a4c865c6c9d8af89915101c8a67efa7415f430", "reference": "6b383bc45777d14857b634e9f8fa2b8a2e69b66d",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -3950,23 +3950,24 @@
"symfony/polyfill-ctype": "~1.8" "symfony/polyfill-ctype": "~1.8"
}, },
"conflict": { "conflict": {
"phpdocumentor/type-resolver": "<0.2.1", "phpdocumentor/reflection-docblock": "<3.0|>=3.2.0,<3.2.2",
"phpdocumentor/type-resolver": "<0.3.0|1.3.*",
"symfony/dependency-injection": "<3.4", "symfony/dependency-injection": "<3.4",
"symfony/property-access": "<3.4", "symfony/property-access": "<3.4",
"symfony/property-info": "<3.4", "symfony/property-info": "<3.4",
"symfony/yaml": "<3.4" "symfony/yaml": "<3.4"
}, },
"require-dev": { "require-dev": {
"doctrine/annotations": "~1.0", "doctrine/annotations": "^1.10.4",
"doctrine/cache": "~1.0", "doctrine/cache": "~1.0",
"phpdocumentor/reflection-docblock": "^3.2|^4.0", "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0",
"symfony/cache": "^3.4|^4.0|^5.0", "symfony/cache": "^3.4|^4.0|^5.0",
"symfony/config": "^3.4|^4.0|^5.0", "symfony/config": "^3.4|^4.0|^5.0",
"symfony/dependency-injection": "^3.4|^4.0|^5.0", "symfony/dependency-injection": "^3.4|^4.0|^5.0",
"symfony/error-handler": "^4.4|^5.0", "symfony/error-handler": "^4.4|^5.0",
"symfony/http-foundation": "^3.4|^4.0|^5.0", "symfony/http-foundation": "^3.4|^4.0|^5.0",
"symfony/mime": "^4.4|^5.0", "symfony/mime": "^4.4|^5.0",
"symfony/property-access": "^3.4|^4.0|^5.0", "symfony/property-access": "^3.4.41|^4.4.9|^5.0.9",
"symfony/property-info": "^3.4.13|~4.0|^5.0", "symfony/property-info": "^3.4.13|~4.0|^5.0",
"symfony/validator": "^3.4|^4.0|^5.0", "symfony/validator": "^3.4|^4.0|^5.0",
"symfony/yaml": "^3.4|^4.0|^5.0" "symfony/yaml": "^3.4|^4.0|^5.0"
@@ -4004,7 +4005,7 @@
"homepage": "https://symfony.com/contributors" "homepage": "https://symfony.com/contributors"
} }
], ],
"description": "Symfony Serializer Component", "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"funding": [ "funding": [
{ {
@@ -4020,7 +4021,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2020-12-18T07:41:31+00:00" "time": "2021-01-27T09:09:26+00:00"
}, },
{ {
"name": "symfony/service-contracts", "name": "symfony/service-contracts",
@@ -4100,16 +4101,16 @@
}, },
{ {
"name": "symfony/string", "name": "symfony/string",
"version": "v5.2.1", "version": "v5.2.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/string.git", "url": "https://github.com/symfony/string.git",
"reference": "5bd67751d2e3f7d6f770c9154b8fbcb2aa05f7ed" "reference": "c95468897f408dd0aca2ff582074423dd0455122"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/string/zipball/5bd67751d2e3f7d6f770c9154b8fbcb2aa05f7ed", "url": "https://api.github.com/repos/symfony/string/zipball/c95468897f408dd0aca2ff582074423dd0455122",
"reference": "5bd67751d2e3f7d6f770c9154b8fbcb2aa05f7ed", "reference": "c95468897f408dd0aca2ff582074423dd0455122",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -4152,7 +4153,7 @@
"homepage": "https://symfony.com/contributors" "homepage": "https://symfony.com/contributors"
} }
], ],
"description": "Symfony String component", "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"keywords": [ "keywords": [
"grapheme", "grapheme",
@@ -4176,20 +4177,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2020-12-05T07:33:16+00:00" "time": "2021-01-25T15:14:59+00:00"
}, },
{ {
"name": "symfony/var-exporter", "name": "symfony/var-exporter",
"version": "v5.2.1", "version": "v5.2.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/var-exporter.git", "url": "https://github.com/symfony/var-exporter.git",
"reference": "fbc3507f23d263d75417e09a12d77c009f39676c" "reference": "5aed4875ab514c8cb9b6ff4772baa25fa4c10307"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/var-exporter/zipball/fbc3507f23d263d75417e09a12d77c009f39676c", "url": "https://api.github.com/repos/symfony/var-exporter/zipball/5aed4875ab514c8cb9b6ff4772baa25fa4c10307",
"reference": "fbc3507f23d263d75417e09a12d77c009f39676c", "reference": "5aed4875ab514c8cb9b6ff4772baa25fa4c10307",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -4222,7 +4223,7 @@
"homepage": "https://symfony.com/contributors" "homepage": "https://symfony.com/contributors"
} }
], ],
"description": "A blend of var_export() + serialize() to turn any serializable data structure to plain PHP code", "description": "Allows exporting any serializable PHP data structure to plain PHP code",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"keywords": [ "keywords": [
"clone", "clone",
@@ -4246,20 +4247,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2020-10-28T21:31:18+00:00" "time": "2021-01-27T10:01:46+00:00"
}, },
{ {
"name": "symfony/web-link", "name": "symfony/web-link",
"version": "v4.4.18", "version": "v4.4.19",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/web-link.git", "url": "https://github.com/symfony/web-link.git",
"reference": "4965045a9a0052537bef698be0e5859de27f4d32" "reference": "e063a969693e2c0804df709f661bd50e10f13665"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/web-link/zipball/4965045a9a0052537bef698be0e5859de27f4d32", "url": "https://api.github.com/repos/symfony/web-link/zipball/e063a969693e2c0804df709f661bd50e10f13665",
"reference": "4965045a9a0052537bef698be0e5859de27f4d32", "reference": "e063a969693e2c0804df709f661bd50e10f13665",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -4303,7 +4304,7 @@
"homepage": "https://symfony.com/contributors" "homepage": "https://symfony.com/contributors"
} }
], ],
"description": "Symfony WebLink Component", "description": "Manages links between resources",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"keywords": [ "keywords": [
"dns-prefetch", "dns-prefetch",
@@ -4331,20 +4332,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2020-10-24T11:50:19+00:00" "time": "2021-01-10T16:25:35+00:00"
}, },
{ {
"name": "symfony/yaml", "name": "symfony/yaml",
"version": "v4.4.18", "version": "v4.4.19",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/yaml.git", "url": "https://github.com/symfony/yaml.git",
"reference": "bbce94f14d73732340740366fcbe63363663a403" "reference": "17ed9f14c1aa05b1a5cf2e2c5ef2d0be28058ef9"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/yaml/zipball/bbce94f14d73732340740366fcbe63363663a403", "url": "https://api.github.com/repos/symfony/yaml/zipball/17ed9f14c1aa05b1a5cf2e2c5ef2d0be28058ef9",
"reference": "bbce94f14d73732340740366fcbe63363663a403", "reference": "17ed9f14c1aa05b1a5cf2e2c5ef2d0be28058ef9",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -4383,7 +4384,7 @@
"homepage": "https://symfony.com/contributors" "homepage": "https://symfony.com/contributors"
} }
], ],
"description": "Symfony Yaml Component", "description": "Loads and dumps YAML files",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"funding": [ "funding": [
{ {
@@ -4399,7 +4400,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2020-12-08T16:59:59+00:00" "time": "2021-01-27T09:09:26+00:00"
}, },
{ {
"name": "typo3/class-alias-loader", "name": "typo3/class-alias-loader",
@@ -57,14 +57,20 @@ class ContingentImportService implements SingletonInterface, LoggerAwareInterfac
* @var Connection * @var Connection
*/ */
protected $db; protected $db;
/**
* @var ImportTimestampService
*/
private $importTimestampService;
/** /**
* @param ConfigurationManagerInterface $manager * @param ConfigurationManagerInterface $manager
* @throws \Doctrine\DBAL\DBALException * @throws \Doctrine\DBAL\DBALException
*/ */
public function __construct(ConfigurationManagerInterface $manager) public function __construct(ConfigurationManagerInterface $manager, ImportTimestampService $importTimestampService)
{ {
$this->configurationManager = $manager; $this->configurationManager = $manager;
$this->importTimestampService = $importTimestampService;
$settings = GeneralUtility::removeDotsFromTS( $settings = GeneralUtility::removeDotsFromTS(
$this->configurationManager->getConfiguration(ConfigurationManagerInterface::CONFIGURATION_TYPE_FULL_TYPOSCRIPT) $this->configurationManager->getConfiguration(ConfigurationManagerInterface::CONFIGURATION_TYPE_FULL_TYPOSCRIPT)
); );
@@ -92,6 +98,14 @@ class ContingentImportService implements SingletonInterface, LoggerAwareInterfac
return $contingentCount; return $contingentCount;
} }
public function isImportRequired(): bool
{
return $this->importTimestampService->isImportRequired(
'fileadmin/xmlexportzimmer/uebertragung.info',
'fileadmin/contingents_import.info'
);
}
/** /**
* @param string $path * @param string $path
* @return int * @return int
@@ -85,6 +85,11 @@ class DateImportService implements SingletonInterface, LoggerAwareInterface
*/ */
protected $cacheService; protected $cacheService;
/**
* @var ImportTimestampService
*/
private $importTimestampService;
/** /**
* @var array * @var array
*/ */
@@ -96,10 +101,15 @@ class DateImportService implements SingletonInterface, LoggerAwareInterface
* @param ConfigurationManagerInterface $configurationManager * @param ConfigurationManagerInterface $configurationManager
* @param CacheService $cacheService * @param CacheService $cacheService
*/ */
public function __construct(ConfigurationManagerInterface $configurationManager, CacheService $cacheService) public function __construct
{ (
ConfigurationManagerInterface $configurationManager,
CacheService $cacheService,
ImportTimestampService $importTimestampService
) {
$this->configurationManager = $configurationManager; $this->configurationManager = $configurationManager;
$this->cacheService = $cacheService; $this->cacheService = $cacheService;
$this->importTimestampService = $importTimestampService;
$settings = GeneralUtility::removeDotsFromTS( $settings = GeneralUtility::removeDotsFromTS(
$this->configurationManager->getConfiguration(ConfigurationManagerInterface::CONFIGURATION_TYPE_FULL_TYPOSCRIPT) $this->configurationManager->getConfiguration(ConfigurationManagerInterface::CONFIGURATION_TYPE_FULL_TYPOSCRIPT)
@@ -133,6 +143,14 @@ class DateImportService implements SingletonInterface, LoggerAwareInterface
return $dateCount; return $dateCount;
} }
public function isImportRequired(): bool
{
return $this->importTimestampService->isImportRequired(
'fileadmin/xmlexport/uebertragung.info',
'fileadmin/products_import.info'
);
}
/** /**
* @param $path * @param $path
* *
@@ -246,7 +264,7 @@ class DateImportService implements SingletonInterface, LoggerAwareInterface
WHERE p.deleted = 0 AND p.hidden = 0 AND p.code = :code WHERE p.deleted = 0 AND p.hidden = 0 AND p.code = :code
'; ';
$products = $this->db->fetchAll($sql, ['code' => $code]); $products = $this->db->fetchAllAssociative($sql, ['code' => $code]);
// Skip import in case product can't be found // Skip import in case product can't be found
if (count($products) === 0) { if (count($products) === 0) {
@@ -748,7 +766,7 @@ class DateImportService implements SingletonInterface, LoggerAwareInterface
protected function getRoomMappings() protected function getRoomMappings()
{ {
$sql = 'SELECT code, type FROM tx_epproducts_domain_model_roommapping'; $sql = 'SELECT code, type FROM tx_epproducts_domain_model_roommapping';
$roomMappings = $this->db->fetchAll($sql); $roomMappings = $this->db->fetchAllAssociative($sql);
foreach ($roomMappings as $mapping) foreach ($roomMappings as $mapping)
{ {
$this->roomMappings[mb_strtolower($mapping['code'])] = $mapping['type']; $this->roomMappings[mb_strtolower($mapping['code'])] = $mapping['type'];
@@ -773,7 +791,7 @@ class DateImportService implements SingletonInterface, LoggerAwareInterface
) u ) u
LEFT JOIN tx_epproducts_domain_model_hotel h ON u.uid = h.uid LEFT JOIN tx_epproducts_domain_model_hotel h ON u.uid = h.uid
'; ';
$rows = $this->db->fetchAll($sql); $rows = $this->db->fetchAllAssociative($sql);
foreach ($rows as $row) foreach ($rows as $row)
{ {
$this->hotelMappings[$row['code']] = [ $this->hotelMappings[$row['code']] = [
@@ -809,7 +827,7 @@ class DateImportService implements SingletonInterface, LoggerAwareInterface
LIMIT 0,1 LIMIT 0,1
'; ';
return $this->db->fetchColumn($sql, ['uid' => $uid]); return $this->db->fetchOne($sql, ['uid' => $uid]);
} }
/** /**
@@ -0,0 +1,44 @@
<?php
namespace EP\EpProducts\Service;
use TYPO3\CMS\Core\Utility\GeneralUtility;
class ImportTimestampService
{
public function isImportRequired(string $uploadTimestampFile, string $importTimestampFile): bool
{
$updatedTimestampPath = GeneralUtility::getFileAbsFileName($uploadTimestampFile);
// No upload yet so no import required
if (!$updatedTimestampPath || !file_exists($updatedTimestampPath)) {
return false;
}
$line = trim(file($updatedTimestampPath)[0]);
$lastUploadAt = \DateTime::createFromFormat('d.m.Y H:i:s', $line);
$lastImportTimestampPath = GeneralUtility::getFileAbsFileName($importTimestampFile);
// No import yet so import required
if (!$lastImportTimestampPath || !file_exists($lastImportTimestampPath)) {
$now = new \DateTime('now');
file_put_contents($lastImportTimestampPath, $now->format('d.m.Y H:i:s'));
return true;
}
$line = trim(file($lastImportTimestampPath)[0]);
$lastImportAt = \DateTime::createFromFormat('d.m.Y H:i:s', $line);
if ($lastUploadAt > $lastImportAt) {
$now = new \DateTime('now');
file_put_contents($lastImportTimestampPath, $now->format('d.m.Y H:i:s'));
return true;
}
return false;
}
}
@@ -40,8 +40,11 @@ class ImportContingentsTask extends AbstractTask
$objectManager = GeneralUtility::makeInstance(ObjectManager::class); $objectManager = GeneralUtility::makeInstance(ObjectManager::class);
/** @var \EP\EpProducts\Service\ContingentImportService $importService */ /** @var \EP\EpProducts\Service\ContingentImportService $importService */
$importService = $objectManager->get(ContingentImportService::class); $importService = $objectManager->get(ContingentImportService::class);
$path = GeneralUtility::getFileAbsFileName('fileadmin/xmlexportzimmer'); if ($importService->isImportRequired()) {
$importService->import($path); $path = GeneralUtility::getFileAbsFileName('fileadmin/xmlexportzimmer');
$importService->import($path);
}
return true; return true;
} }
} }
@@ -40,8 +40,11 @@ class ImportDatesTask extends AbstractTask
$objectManager = GeneralUtility::makeInstance(ObjectManager::class); $objectManager = GeneralUtility::makeInstance(ObjectManager::class);
/** @var \EP\EpProducts\Service\DateImportService $importService */ /** @var \EP\EpProducts\Service\DateImportService $importService */
$importService = $objectManager->get(DateImportService::class); $importService = $objectManager->get(DateImportService::class);
$path = GeneralUtility::getFileAbsFileName('fileadmin/xmlexport'); if ($importService->isImportRequired()) {
$importService->import($path); $path = GeneralUtility::getFileAbsFileName('fileadmin/xmlexport');
$importService->import($path);
}
return true; return true;
} }
} }