From 1a7cc3b9820053f7ad3d11f000a6f2592b8039c4 Mon Sep 17 00:00:00 2001 From: Stefan Krenz Date: Fri, 21 Apr 2023 16:09:39 +0200 Subject: [PATCH] feat(Testing): Add test snapshots for OXID PE and OXID EE (#22) * Add snapshots for OXID PE and OXID EE * Refactor services * Remove blank line --- services.yaml | 69 +- src/Command/CleanUpCommand.php | 5 +- src/Command/TouchAllCommand.php | 11 +- src/Domain/Revision.php | 20 +- src/Entity/RevisionRepository.php | 5 +- src/Event/DatabaseSubscriber.php | 10 +- src/Event/ModifierCollectEvent.php | 8 +- src/Event/RepositoryCollectEvent.php | 8 +- src/Modifier/Category/HierarchyModifier.php | 10 +- .../Category/SubcategoriesModifier.php | 11 +- src/Modifier/Category/UrlModifier.php | 13 +- .../Common/AbstractActiveModifier.php | 24 +- .../Common/AbstractBlacklistModifier.php | 9 +- src/Modifier/Common/AbstractShopModifier.php | 14 +- src/Modifier/Common/AbstractUrlModifier.php | 13 +- src/Modifier/Common/AttributeModifier.php | 39 +- src/Modifier/Common/PriceModifier.php | 17 +- src/Modifier/Common/StockModifier.php | 13 +- src/Modifier/Manufacturer/UrlModifier.php | 13 +- src/Modifier/Product/BoostFieldModifier.php | 17 +- src/Modifier/Product/CategoryModifier.php | 14 +- src/Modifier/Product/MainCategoryModifier.php | 30 +- src/Modifier/Product/UrlModifier.php | 13 +- .../Product/VariantAttributesModifier.php | 34 +- src/Repository.php | 15 +- src/Repository/AbstractRepository.php | 27 +- src/Repository/ModifierList.php | 5 +- src/Repository/ProductRepository.php | 11 +- .../Extractor/ArticleAttribute.php | 8 +- .../Extractor/ArticleCategory.php | 12 +- .../Extractor/ArticleSelectList.php | 8 +- src/RevisionHandler/Extractor/Category.php | 8 +- .../Extractor/GraduatedPrices.php | 5 +- .../Extractor/Manufacturer.php | 8 +- src/RevisionHandler/Extractor/SelectList.php | 8 +- src/RevisionHandler/ModelDataExtractor.php | 8 +- src/Rpc/Handler/GetReplicationStatus.php | 5 +- src/Rpc/Handler/GetUpdates.php | 15 +- src/Rpc/Handler/ListLanguages.php | 5 +- src/Rpc/RpcService.php | 5 +- src/Rpc/SignatureCheck.php | 8 +- src/Service/CartService.php | 8 +- src/Service/TrackingRenderService.php | 8 +- src/Service/UserService.php | 5 +- src/Utils/BoostFields.php | 9 +- src/Utils/CategoryInheritance.php | 14 +- src/Utils/ContentParser.php | 5 +- src/Utils/TableTranslator.php | 9 +- src/Utils/TableTranslatorConfigurator.php | 5 +- ...p_with_data_set_Changes_in_english--0.json | 0 ...p_with_data_set_Changes_in_english--1.json | 0 ..._with_data_set_Changes_in_english--10.json | 0 ...p_with_data_set_Changes_in_english--2.json | 0 ...p_with_data_set_Changes_in_english--3.json | 0 ...p_with_data_set_Changes_in_english--4.json | 0 ...p_with_data_set_Changes_in_english--5.json | 0 ...p_with_data_set_Changes_in_english--6.json | 0 ...p_with_data_set_Changes_in_english--7.json | 0 ...p_with_data_set_Changes_in_english--8.json | 0 ...p_with_data_set_Changes_in_english--9.json | 0 ...op_with_data_set_Changes_in_german--0.json | 0 ...op_with_data_set_Changes_in_german--1.json | 0 ...p_with_data_set_Changes_in_german--10.json | 0 ...op_with_data_set_Changes_in_german--2.json | 0 ...op_with_data_set_Changes_in_german--3.json | 0 ...op_with_data_set_Changes_in_german--4.json | 0 ...op_with_data_set_Changes_in_german--5.json | 0 ...op_with_data_set_Changes_in_german--6.json | 0 ...op_with_data_set_Changes_in_german--7.json | 0 ...op_with_data_set_Changes_in_german--8.json | 0 ...op_with_data_set_Changes_in_german--9.json | 0 ...p_with_data_set_Changes_in_english--0.json | 857 ++++ ...p_with_data_set_Changes_in_english--1.json | 1939 +++++++++ ..._with_data_set_Changes_in_english--10.json | 643 +++ ...p_with_data_set_Changes_in_english--2.json | 3637 +++++++++++++++++ ...p_with_data_set_Changes_in_english--3.json | 3037 ++++++++++++++ ...p_with_data_set_Changes_in_english--4.json | 1972 +++++++++ ...p_with_data_set_Changes_in_english--5.json | 1982 +++++++++ ...p_with_data_set_Changes_in_english--6.json | 2042 +++++++++ ...p_with_data_set_Changes_in_english--7.json | 2177 ++++++++++ ...p_with_data_set_Changes_in_english--8.json | 2122 ++++++++++ ...p_with_data_set_Changes_in_english--9.json | 1992 +++++++++ ...op_with_data_set_Changes_in_german--0.json | 857 ++++ ...op_with_data_set_Changes_in_german--1.json | 1939 +++++++++ ...p_with_data_set_Changes_in_german--10.json | 653 +++ ...op_with_data_set_Changes_in_german--2.json | 3637 +++++++++++++++++ ...op_with_data_set_Changes_in_german--3.json | 3077 ++++++++++++++ ...op_with_data_set_Changes_in_german--4.json | 2182 ++++++++++ ...op_with_data_set_Changes_in_german--5.json | 2182 ++++++++++ ...op_with_data_set_Changes_in_german--6.json | 2182 ++++++++++ ...op_with_data_set_Changes_in_german--7.json | 2352 +++++++++++ ...op_with_data_set_Changes_in_german--8.json | 2322 +++++++++++ ...op_with_data_set_Changes_in_german--9.json | 2182 ++++++++++ ...p_with_data_set_Changes_in_english--0.json | 857 ++++ ...p_with_data_set_Changes_in_english--1.json | 1939 +++++++++ ..._with_data_set_Changes_in_english--10.json | 643 +++ ...p_with_data_set_Changes_in_english--2.json | 3637 +++++++++++++++++ ...p_with_data_set_Changes_in_english--3.json | 3037 ++++++++++++++ ...p_with_data_set_Changes_in_english--4.json | 1972 +++++++++ ...p_with_data_set_Changes_in_english--5.json | 1982 +++++++++ ...p_with_data_set_Changes_in_english--6.json | 2042 +++++++++ ...p_with_data_set_Changes_in_english--7.json | 2177 ++++++++++ ...p_with_data_set_Changes_in_english--8.json | 2122 ++++++++++ ...p_with_data_set_Changes_in_english--9.json | 1992 +++++++++ ...op_with_data_set_Changes_in_german--0.json | 857 ++++ ...op_with_data_set_Changes_in_german--1.json | 1939 +++++++++ ...p_with_data_set_Changes_in_german--10.json | 653 +++ ...op_with_data_set_Changes_in_german--2.json | 3637 +++++++++++++++++ ...op_with_data_set_Changes_in_german--3.json | 3077 ++++++++++++++ ...op_with_data_set_Changes_in_german--4.json | 2182 ++++++++++ ...op_with_data_set_Changes_in_german--5.json | 2182 ++++++++++ ...op_with_data_set_Changes_in_german--6.json | 2182 ++++++++++ ...op_with_data_set_Changes_in_german--7.json | 2352 +++++++++++ ...op_with_data_set_Changes_in_german--8.json | 2322 +++++++++++ ...op_with_data_set_Changes_in_german--9.json | 2182 ++++++++++ tests/Integration/IntegrationTestCase.php | 11 +- 116 files changed, 92147 insertions(+), 438 deletions(-) rename tests/Integration/Controller/__snapshots__/{ => ce}/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--0.json (100%) rename tests/Integration/Controller/__snapshots__/{ => ce}/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--1.json (100%) rename tests/Integration/Controller/__snapshots__/{ => ce}/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--10.json (100%) rename tests/Integration/Controller/__snapshots__/{ => ce}/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--2.json (100%) rename tests/Integration/Controller/__snapshots__/{ => ce}/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--3.json (100%) rename tests/Integration/Controller/__snapshots__/{ => ce}/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--4.json (100%) rename tests/Integration/Controller/__snapshots__/{ => ce}/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--5.json (100%) rename tests/Integration/Controller/__snapshots__/{ => ce}/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--6.json (100%) rename tests/Integration/Controller/__snapshots__/{ => ce}/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--7.json (100%) rename tests/Integration/Controller/__snapshots__/{ => ce}/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--8.json (100%) rename tests/Integration/Controller/__snapshots__/{ => ce}/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--9.json (100%) rename tests/Integration/Controller/__snapshots__/{ => ce}/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--0.json (100%) rename tests/Integration/Controller/__snapshots__/{ => ce}/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--1.json (100%) rename tests/Integration/Controller/__snapshots__/{ => ce}/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--10.json (100%) rename tests/Integration/Controller/__snapshots__/{ => ce}/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--2.json (100%) rename tests/Integration/Controller/__snapshots__/{ => ce}/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--3.json (100%) rename tests/Integration/Controller/__snapshots__/{ => ce}/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--4.json (100%) rename tests/Integration/Controller/__snapshots__/{ => ce}/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--5.json (100%) rename tests/Integration/Controller/__snapshots__/{ => ce}/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--6.json (100%) rename tests/Integration/Controller/__snapshots__/{ => ce}/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--7.json (100%) rename tests/Integration/Controller/__snapshots__/{ => ce}/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--8.json (100%) rename tests/Integration/Controller/__snapshots__/{ => ce}/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--9.json (100%) create mode 100644 tests/Integration/Controller/__snapshots__/ee/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--0.json create mode 100644 tests/Integration/Controller/__snapshots__/ee/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--1.json create mode 100644 tests/Integration/Controller/__snapshots__/ee/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--10.json create mode 100644 tests/Integration/Controller/__snapshots__/ee/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--2.json create mode 100644 tests/Integration/Controller/__snapshots__/ee/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--3.json create mode 100644 tests/Integration/Controller/__snapshots__/ee/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--4.json create mode 100644 tests/Integration/Controller/__snapshots__/ee/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--5.json create mode 100644 tests/Integration/Controller/__snapshots__/ee/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--6.json create mode 100644 tests/Integration/Controller/__snapshots__/ee/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--7.json create mode 100644 tests/Integration/Controller/__snapshots__/ee/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--8.json create mode 100644 tests/Integration/Controller/__snapshots__/ee/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--9.json create mode 100644 tests/Integration/Controller/__snapshots__/ee/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--0.json create mode 100644 tests/Integration/Controller/__snapshots__/ee/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--1.json create mode 100644 tests/Integration/Controller/__snapshots__/ee/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--10.json create mode 100644 tests/Integration/Controller/__snapshots__/ee/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--2.json create mode 100644 tests/Integration/Controller/__snapshots__/ee/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--3.json create mode 100644 tests/Integration/Controller/__snapshots__/ee/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--4.json create mode 100644 tests/Integration/Controller/__snapshots__/ee/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--5.json create mode 100644 tests/Integration/Controller/__snapshots__/ee/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--6.json create mode 100644 tests/Integration/Controller/__snapshots__/ee/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--7.json create mode 100644 tests/Integration/Controller/__snapshots__/ee/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--8.json create mode 100644 tests/Integration/Controller/__snapshots__/ee/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--9.json create mode 100644 tests/Integration/Controller/__snapshots__/pe/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--0.json create mode 100644 tests/Integration/Controller/__snapshots__/pe/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--1.json create mode 100644 tests/Integration/Controller/__snapshots__/pe/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--10.json create mode 100644 tests/Integration/Controller/__snapshots__/pe/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--2.json create mode 100644 tests/Integration/Controller/__snapshots__/pe/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--3.json create mode 100644 tests/Integration/Controller/__snapshots__/pe/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--4.json create mode 100644 tests/Integration/Controller/__snapshots__/pe/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--5.json create mode 100644 tests/Integration/Controller/__snapshots__/pe/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--6.json create mode 100644 tests/Integration/Controller/__snapshots__/pe/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--7.json create mode 100644 tests/Integration/Controller/__snapshots__/pe/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--8.json create mode 100644 tests/Integration/Controller/__snapshots__/pe/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--9.json create mode 100644 tests/Integration/Controller/__snapshots__/pe/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--0.json create mode 100644 tests/Integration/Controller/__snapshots__/pe/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--1.json create mode 100644 tests/Integration/Controller/__snapshots__/pe/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--10.json create mode 100644 tests/Integration/Controller/__snapshots__/pe/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--2.json create mode 100644 tests/Integration/Controller/__snapshots__/pe/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--3.json create mode 100644 tests/Integration/Controller/__snapshots__/pe/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--4.json create mode 100644 tests/Integration/Controller/__snapshots__/pe/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--5.json create mode 100644 tests/Integration/Controller/__snapshots__/pe/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--6.json create mode 100644 tests/Integration/Controller/__snapshots__/pe/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--7.json create mode 100644 tests/Integration/Controller/__snapshots__/pe/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--8.json create mode 100644 tests/Integration/Controller/__snapshots__/pe/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--9.json diff --git a/services.yaml b/services.yaml index 2c2379d..aaadb8f 100644 --- a/services.yaml +++ b/services.yaml @@ -6,13 +6,21 @@ services: public: false autowire: true autoconfigure: true + bind: + OxidEsales\Eshop\Core\Language $language: "@makaira.oxid.language" + Doctrine\DBAL\Connection $connection: "@makaira.oxid.database" + OxidEsales\Eshop\Core\UtilsObject $utilsObject: "@makaira.oxid.utils_object" + OxidEsales\Eshop\Application\Model\SeoEncoderArticle $seoEncoderArticle: "@makaira.oxid.seo_encoder_article" + OxidEsales\Eshop\Application\Model\SeoEncoderCategory $seoEncoderCategory: "@makaira.oxid.seo_encoder_category" + OxidEsales\Eshop\Application\Model\SeoEncoderManufacturer $seoEncoderManufacturer: "@makaira.oxid.seo_encoder_manufacturer" + OxidEsales\Eshop\Core\Session $session: "@makaira.oxid.session" + OxidEsales\Eshop\Application\Controller\FrontendController $frontendController: "@makaira.oxid.frontend_controller" + OxidEsales\Eshop\Core\TableViewNameGenerator $viewNameGenerator: "@makaira.oxid.table_view_name_generator" Makaira\OxidConnectEssential\: resource: './src/' exclude: './src/{Controller,Domain,Event,Oxid,Type,Exception,Core}/*' - OxidEsales\Eshop\Core\TableViewNameGenerator: ~ - Makaira\OxidConnectEssential\Command\CleanUpCommand: tags: - { name: 'console.command', command: 'makaira:cleanup' } @@ -35,7 +43,7 @@ services: public: true bind: $repositories: !tagged makaira_connect_essential.repository - $parentsPurchasable: '@=service("OxidEsales\\Eshop\\Core\\Config").getShopConfVar("blVariantParentBuyable")' + $parentsPurchasable: '@=service("makaira.oxid.config").getShopConfVar("blVariantParentBuyable")' Makaira\OxidConnectEssential\Rpc\RpcService: public: true @@ -194,13 +202,13 @@ services: Makaira\OxidConnectEssential\Modifier\Common\LongDescriptionModifier: bind: - $parseLongDesc: '@=service("OxidEsales\\Eshop\\Core\\Config").getShopConfVar("bl_perfParseLongDescinSmarty")' + $parseLongDesc: '@=service("makaira.oxid.config").getShopConfVar("bl_perfParseLongDescinSmarty")' Makaira\OxidConnectEssential\Modifier\Common\PriceModifier: bind: - $isNetto: '@=service("OxidEsales\\Eshop\\Core\\Config").getShopConfVar("blEnterNetPrice")' - $showNetto: '@=service("OxidEsales\\Eshop\\Core\\Config").getShopConfVar("blShowNetPrice")' - $defaultVAT: '@=service("OxidEsales\\Eshop\\Core\\Config").getShopConfVar("dDefaultVAT")' + $isNetto: '@=service("makaira.oxid.config").getShopConfVar("blEnterNetPrice")' + $showNetto: '@=service("makaira.oxid.config").getShopConfVar("blShowNetPrice")' + $defaultVAT: '@=service("makaira.oxid.config").getShopConfVar("dDefaultVAT")' tags: - { name: 'makaira.importer.modifier.product', priority: 1000 } - { name: 'makaira.importer.modifier.variant', priority: 1000 } @@ -215,7 +223,7 @@ services: Makaira\OxidConnectEssential\Modifier\Common\AbstractShopModifier: abstract: true bind: - $isMultiShop: '@=service("OxidEsales\\Eshop\\Core\\Config").isMall()' + $isMultiShop: '@=service("makaira.oxid.config").isMall()' Makaira\OxidConnectEssential\Modifier\Product\ShopModifier: public: false @@ -244,7 +252,7 @@ services: Makaira\OxidConnectEssential\Modifier\Common\StockModifier: bind: - $useStock: '@=service("OxidEsales\\Eshop\\Core\\Config").getShopConfVar("blUseStock")' + $useStock: '@=service("makaira.oxid.config").getShopConfVar("blUseStock")' tags: - { name: 'makaira.importer.modifier.product', priority: 1000 } - { name: 'makaira.importer.modifier.variant', priority: 1000 } @@ -275,48 +283,57 @@ services: ### Helper ### - Doctrine\DBAL\Driver\Connection: - alias: Doctrine\DBAL\Connection - - Doctrine\DBAL\Connection: + makaira.oxid.database: + class: Doctrine\DBAL\Connection factory: ['@OxidEsales\EshopCommunity\Internal\Framework\Database\ConnectionProviderInterface', 'get'] - OxidEsales\Eshop\Core\Language: + makaira.oxid.language: + class: OxidEsales\Eshop\Core\Language public: true factory: ['OxidEsales\Eshop\Core\Registry', 'getLang'] - OxidEsales\Eshop\Core\Config: + makaira.oxid.config: + class: OxidEsales\Eshop\Core\Config public: true factory: ['OxidEsales\Eshop\Core\Registry', 'getConfig'] - OxidEsales\Eshop\Core\UtilsObject: + makaira.oxid.utils_object: + class: OxidEsales\Eshop\Core\UtilsObject public: true factory: ['OxidEsales\Eshop\Core\UtilsObject', 'getInstance'] - OxidEsales\Eshop\Core\Session: + makaira.oxid.session: + class: OxidEsales\Eshop\Core\Session public: true factory: ['OxidEsales\Eshop\Core\Registry', 'getSession'] - OxidEsales\Eshop\Application\Controller\FrontendController: + makaira.oxid.frontend_controller: + class: OxidEsales\Eshop\Application\Controller\FrontendController public: true - factory: ['@OxidEsales\Eshop\Core\UtilsObject', 'oxNew'] + factory: ['@makaira.oxid.utils_object', 'oxNew'] arguments: ['OxidEsales\Eshop\Application\Controller\FrontendController'] - OxidEsales\Eshop\Application\Model\SeoEncoderCategory: + makaira.oxid.seo_encoder_category: + class: OxidEsales\Eshop\Application\Model\SeoEncoderCategory public: true - factory: ['@OxidEsales\Eshop\Core\UtilsObject', 'oxNew'] + factory: ['@makaira.oxid.utils_object', 'oxNew'] arguments: ['OxidEsales\Eshop\Application\Model\SeoEncoderCategory'] - OxidEsales\Eshop\Application\Model\SeoEncoderManufacturer: + makaira.oxid.seo_encoder_manufacturer: + class: OxidEsales\Eshop\Application\Model\SeoEncoderManufacturer public: true - factory: ['@OxidEsales\Eshop\Core\UtilsObject', 'oxNew'] + factory: ['@makaira.oxid.utils_object', 'oxNew'] arguments: ['OxidEsales\Eshop\Application\Model\SeoEncoderManufacturer'] - OxidEsales\Eshop\Application\Model\SeoEncoderArticle: + makaira.oxid.seo_encoder_article: + class: OxidEsales\Eshop\Application\Model\SeoEncoderArticle public: true - factory: ['@OxidEsales\Eshop\Core\UtilsObject', 'oxNew'] + factory: ['@makaira.oxid.utils_object', 'oxNew'] arguments: ['OxidEsales\Eshop\Application\Model\SeoEncoderArticle'] + makaira.oxid.table_view_name_generator: + class: OxidEsales\Eshop\Core\TableViewNameGenerator + Makaira\OxidConnectEssential\Service\UserService: public: true class: Makaira\OxidConnectEssential\Service\UserService @@ -325,7 +342,7 @@ services: public: true class: Makaira\OxidConnectEssential\Service\CartService bind: - $basket: '@=service("OxidEsales\\Eshop\\Core\\Session").getBasket()' + $basket: '@=service("makaira.oxid.session").getBasket()' Makaira\OxidConnectEssential\Service\ReviewService: public: true diff --git a/src/Command/CleanUpCommand.php b/src/Command/CleanUpCommand.php index 30342f4..bea8150 100644 --- a/src/Command/CleanUpCommand.php +++ b/src/Command/CleanUpCommand.php @@ -12,11 +12,8 @@ */ class CleanUpCommand extends Command { - private RevisionRepository $revisionRepository; - - public function __construct(RevisionRepository $revisionRepository) + public function __construct(private RevisionRepository $revisionRepository) { - $this->revisionRepository = $revisionRepository; parent::__construct('makaira:cleanup'); } diff --git a/src/Command/TouchAllCommand.php b/src/Command/TouchAllCommand.php index ccf7a48..2ece392 100644 --- a/src/Command/TouchAllCommand.php +++ b/src/Command/TouchAllCommand.php @@ -20,21 +20,12 @@ */ class TouchAllCommand extends Command { - /** - * @var iterable - */ - private iterable $repositories; - - private RevisionRepository $revisionRepository; - /** * @param iterable $repositories * @param RevisionRepository $revisionRepository */ - public function __construct(iterable $repositories, RevisionRepository $revisionRepository) + public function __construct(private iterable $repositories, private RevisionRepository $revisionRepository) { - $this->revisionRepository = $revisionRepository; - $this->repositories = $repositories; parent::__construct('makaira:touch-all'); } diff --git a/src/Domain/Revision.php b/src/Domain/Revision.php index de13548..6ed2427 100644 --- a/src/Domain/Revision.php +++ b/src/Domain/Revision.php @@ -14,14 +14,6 @@ class Revision public const TYPE_CATEGORY = 'category'; public const TYPE_MANUFACTURER = 'manufacturer'; - public string $type; - - public string $objectId; - - public ?DateTimeInterface $changed = null; - - public ?int $revision = null; - /** * @param string $type * @param string $objectId @@ -29,15 +21,11 @@ class Revision * @param int|null $revision */ public function __construct( - string $type, - string $objectId, - ?DateTimeInterface $changed = null, - ?int $revision = null + public string $type, + public string $objectId, + public ?DateTimeInterface $changed = null, + public ?int $revision = null ) { - $this->revision = $revision; - $this->changed = $changed; - $this->objectId = $objectId; - $this->type = $type; if (null === $changed) { $this->changed = new DateTimeImmutable(); } diff --git a/src/Entity/RevisionRepository.php b/src/Entity/RevisionRepository.php index 5ec6755..5c44c5a 100644 --- a/src/Entity/RevisionRepository.php +++ b/src/Entity/RevisionRepository.php @@ -15,8 +15,6 @@ */ class RevisionRepository { - private Connection $connection; - private ?Statement $fetchParentId = null; private ?Statement $insertRevision = null; @@ -24,9 +22,8 @@ class RevisionRepository /** * @param Connection $connection */ - public function __construct(Connection $connection) + public function __construct(private Connection $connection) { - $this->connection = $connection; } /** diff --git a/src/Event/DatabaseSubscriber.php b/src/Event/DatabaseSubscriber.php index 8ad1991..c7603fa 100644 --- a/src/Event/DatabaseSubscriber.php +++ b/src/Event/DatabaseSubscriber.php @@ -28,20 +28,14 @@ class DatabaseSubscriber implements EventSubscriberInterface */ private array $revisions = []; - private ModelDataExtractor $dataExtractor; - - private RevisionRepository $revisionRepository; - /** * @param ModelDataExtractor $dataExtractor * @param RevisionRepository $revisionRepository */ public function __construct( - ModelDataExtractor $dataExtractor, - RevisionRepository $revisionRepository + private ModelDataExtractor $dataExtractor, + private RevisionRepository $revisionRepository ) { - $this->revisionRepository = $revisionRepository; - $this->dataExtractor = $dataExtractor; } /** diff --git a/src/Event/ModifierCollectEvent.php b/src/Event/ModifierCollectEvent.php index 9b225a1..5d4fc7b 100644 --- a/src/Event/ModifierCollectEvent.php +++ b/src/Event/ModifierCollectEvent.php @@ -17,14 +17,8 @@ class ModifierCollectEvent extends Event { - /** - * @var ModifierList - */ - public ModifierList $modifierList; - - public function __construct(ModifierList $modifierList) + public function __construct(private ModifierList $modifierList) { - $this->modifierList = $modifierList; } public function addModifier(Modifier $modifier): void diff --git a/src/Event/RepositoryCollectEvent.php b/src/Event/RepositoryCollectEvent.php index e2c4677..157127f 100644 --- a/src/Event/RepositoryCollectEvent.php +++ b/src/Event/RepositoryCollectEvent.php @@ -17,14 +17,8 @@ class RepositoryCollectEvent extends Event { - /** - * @var Repository - */ - public Repository $repository; - - public function __construct(Repository $repository) + public function __construct(private Repository $repository) { - $this->repository = $repository; } public function addRepository(AbstractRepository $repository): void diff --git a/src/Modifier/Category/HierarchyModifier.php b/src/Modifier/Category/HierarchyModifier.php index 266bc4a..4d349ee 100644 --- a/src/Modifier/Category/HierarchyModifier.php +++ b/src/Modifier/Category/HierarchyModifier.php @@ -34,14 +34,8 @@ class HierarchyModifier extends Modifier ORDER BY oc.OXLEFT; "; - private Connection $database; - - private TableTranslator $tableTranslator; - - public function __construct(Connection $database, TableTranslator $tableTranslator) + public function __construct(private Connection $connection, private TableTranslator $tableTranslator) { - $this->database = $database; - $this->tableTranslator = $tableTranslator; } /** @@ -56,7 +50,7 @@ public function __construct(Connection $database, TableTranslator $tableTranslat public function apply(Type $category): Category { /** @var Result $resultStatement */ - $resultStatement = $this->database->executeQuery( + $resultStatement = $this->connection->executeQuery( $this->tableTranslator->translate($this->selectQuery), [ 'left' => $category->additionalData['OXLEFT'], diff --git a/src/Modifier/Category/SubcategoriesModifier.php b/src/Modifier/Category/SubcategoriesModifier.php index 673c2c0..2d2fe4c 100644 --- a/src/Modifier/Category/SubcategoriesModifier.php +++ b/src/Modifier/Category/SubcategoriesModifier.php @@ -2,6 +2,8 @@ namespace Makaira\OxidConnectEssential\Modifier\Category; +use Doctrine\DBAL\Driver\Exception as DBALDriverException; +use Doctrine\DBAL\Exception as DBALException; use Makaira\OxidConnectEssential\Modifier; use Makaira\OxidConnectEssential\Type; use Makaira\OxidConnectEssential\Utils\CategoryInheritance; @@ -9,19 +11,16 @@ class SubcategoriesModifier extends Modifier { - private CategoryInheritance $categoryInheritance; - - public function __construct(CategoryInheritance $categoryInheritance) + public function __construct(private CategoryInheritance $categoryInheritance) { - $this->categoryInheritance = $categoryInheritance; } /** * @param Category $category * * @return Category - * @throws \Doctrine\DBAL\Driver\Exception - * @throws \Doctrine\DBAL\Exception + * @throws DBALDriverException + * @throws DBALException */ public function apply(Type $category): Category { diff --git a/src/Modifier/Category/UrlModifier.php b/src/Modifier/Category/UrlModifier.php index 81b4683..3664afb 100644 --- a/src/Modifier/Category/UrlModifier.php +++ b/src/Modifier/Category/UrlModifier.php @@ -11,16 +11,13 @@ class UrlModifier extends AbstractUrlModifier { - private SeoEncoderCategory $encoder; - /** - * @param SeoEncoderCategory $encoder - * @param Language $oxLang + * @param SeoEncoderCategory $seoEncoderCategory + * @param Language $language */ - public function __construct(SeoEncoderCategory $encoder, Language $oxLang) + public function __construct(private SeoEncoderCategory $seoEncoderCategory, Language $language) { - $this->encoder = $encoder; - parent::__construct($oxLang); + parent::__construct($language); } /** @@ -43,7 +40,7 @@ protected function getUrl(Type $type, BaseModel $model, int $languageId): string $url = ''; if ($model instanceof Category) { - $url = $this->encoder->getCategoryUri($model, $languageId); + $url = $this->seoEncoderCategory->getCategoryUri($model, $languageId); } return $url; diff --git a/src/Modifier/Common/AbstractActiveModifier.php b/src/Modifier/Common/AbstractActiveModifier.php index 6cf8f1f..57a2183 100644 --- a/src/Modifier/Common/AbstractActiveModifier.php +++ b/src/Modifier/Common/AbstractActiveModifier.php @@ -20,31 +20,19 @@ abstract class AbstractActiveModifier extends Modifier private ?string $tableName = null; - private string $modelClass; - private ?BaseModel $model = null; - private Connection $database; - - private UtilsObject $utilsObject; - - private TableTranslator $tableTranslator; - /** - * @param Connection $database + * @param Connection $connection * @param class-string $modelClass * @param UtilsObject $utilsObject */ public function __construct( - Connection $database, - string $modelClass, - UtilsObject $utilsObject, - TableTranslator $tableTranslator + private Connection $connection, + private string $modelClass, + private UtilsObject $utilsObject, + private TableTranslator $tableTranslator ) { - $this->database = $database; - $this->modelClass = $modelClass; - $this->utilsObject = $utilsObject; - $this->tableTranslator = $tableTranslator; } /** @@ -66,7 +54,7 @@ public function apply(Type $product): Type WHERE OXID = '{$product->id}' AND {$this->activeSnippet}"; /** @var Result $resultStatement */ - $resultStatement = $this->database->executeQuery( + $resultStatement = $this->connection->executeQuery( $this->tableTranslator->translate($sql) ); $product->active = (bool)$resultStatement->fetchOne(); diff --git a/src/Modifier/Common/AbstractBlacklistModifier.php b/src/Modifier/Common/AbstractBlacklistModifier.php index 9b9d8d6..b224c75 100644 --- a/src/Modifier/Common/AbstractBlacklistModifier.php +++ b/src/Modifier/Common/AbstractBlacklistModifier.php @@ -17,14 +17,11 @@ abstract class AbstractBlacklistModifier extends Modifier { - protected ModuleSettingsProvider $moduleSettings; - /** - * @param ModuleSettingsProvider $moduleSettings + * @param ModuleSettingsProvider $moduleSettingsProvider */ - public function __construct(ModuleSettingsProvider $moduleSettings) + public function __construct(private ModuleSettingsProvider $moduleSettingsProvider) { - $this->moduleSettings = $moduleSettings; } /** @@ -36,7 +33,7 @@ public function __construct(ModuleSettingsProvider $moduleSettings) */ public function apply(Type $type) { - $blacklistedFields = (array) $this->moduleSettings->get($this->getBlacklistedFieldSetting()); + $blacklistedFields = (array) $this->moduleSettingsProvider->get($this->getBlacklistedFieldSetting()); foreach ($blacklistedFields as $blacklistedField) { if (isset($type->$blacklistedField)) { unset($type->$blacklistedField); diff --git a/src/Modifier/Common/AbstractShopModifier.php b/src/Modifier/Common/AbstractShopModifier.php index 68e3fa9..f59dd70 100644 --- a/src/Modifier/Common/AbstractShopModifier.php +++ b/src/Modifier/Common/AbstractShopModifier.php @@ -3,6 +3,7 @@ namespace Makaira\OxidConnectEssential\Modifier\Common; use Doctrine\DBAL\Connection; +use Doctrine\DBAL\Driver\Exception as DBALDriverException; use Doctrine\DBAL\Driver\Result; use Doctrine\DBAL\Exception as DBALException; use Makaira\OxidConnectEssential\Modifier; @@ -25,18 +26,12 @@ abstract class AbstractShopModifier extends Modifier private string $selectQuery; - private Connection $database; - - private bool $isMultiShop; - /** - * @param Connection $database + * @param Connection $connection * @param bool $isMultiShop */ - public function __construct(Connection $database, bool $isMultiShop) + public function __construct(private Connection $connection, private bool $isMultiShop) { - $this->isMultiShop = $isMultiShop; - $this->database = $database; $this->selectQuery = sprintf(self::QUERY_TEMPLATE, $this->getTableName()); } @@ -47,12 +42,13 @@ public function __construct(Connection $database, bool $isMultiShop) * * @return Type * @throws DBALException + * @throws DBALDriverException */ public function apply(Type $type) { if ($this->isMultiShop) { /** @var Result $resultStatement */ - $resultStatement = $this->database->executeQuery($this->selectQuery, [$type->additionalData['OXMAPID']]); + $resultStatement = $this->connection->executeQuery($this->selectQuery, [$type->additionalData['OXMAPID']]); $type->shop = $resultStatement->fetchFirstColumn(); } else { $type->shop = [$type->additionalData['OXSHOPID']]; diff --git a/src/Modifier/Common/AbstractUrlModifier.php b/src/Modifier/Common/AbstractUrlModifier.php index 801e8f6..1bdbf3d 100644 --- a/src/Modifier/Common/AbstractUrlModifier.php +++ b/src/Modifier/Common/AbstractUrlModifier.php @@ -20,16 +20,13 @@ abstract class AbstractUrlModifier extends Modifier { - private Language $oxLang; - /** * UrlModifier constructor. * - * @param Language $oxLang + * @param Language $language */ - public function __construct(Language $oxLang) + public function __construct(private Language $language) { - $this->oxLang = $oxLang; } /** @@ -39,7 +36,7 @@ public function __construct(Language $oxLang) * * @return Type */ - public function apply(Type $type) + public function apply(Type $type): Type { $objectData = array_merge((array) $type, $type->additionalData); $objectData['oxid'] = $objectData['id']; @@ -65,11 +62,11 @@ public function apply(Type $type) $object = $this->createModelInstance(); $object->assign($objectData); - $type->url = $this->getUrl($type, $object, (int) $this->oxLang->getBaseLanguage()); + $type->url = $this->getUrl($type, $object, (int) $this->language->getBaseLanguage()); $type->selfLinks = []; /** @var array $languageIds */ - $languageIds = $this->oxLang->getLanguageIds(); + $languageIds = $this->language->getLanguageIds(); foreach (array_keys($languageIds) as $id) { $key = $languageIds[$id]; $type->selfLinks[$key] = $this->getUrl($type, $object, $id); diff --git a/src/Modifier/Common/AttributeModifier.php b/src/Modifier/Common/AttributeModifier.php index 1d89456..4d94cd1 100644 --- a/src/Modifier/Common/AttributeModifier.php +++ b/src/Modifier/Common/AttributeModifier.php @@ -94,38 +94,23 @@ class AttributeModifier extends Modifier variant.oxid = :productId '; - private ModuleSettingsProvider $moduleSettings; - - private Connection $database; - private ?BaseModel $model = null; private string $activeSnippet = ''; - private string $modelClass; - - private UtilsObject $utilsObject; - - private TableTranslator $tableTranslator; - /** - * @param Connection $database + * @param Connection $connection * @param string $modelClass * @param ModuleSettingsProvider $moduleSettings * @param UtilsObject $utilsObject */ public function __construct( - Connection $database, - string $modelClass, - ModuleSettingsProvider $moduleSettings, - UtilsObject $utilsObject, - TableTranslator $tableTranslator + private Connection $connection, + private string $modelClass, + private ModuleSettingsProvider $moduleSettings, + private UtilsObject $utilsObject, + private TableTranslator $tableTranslator ) { - $this->modelClass = $modelClass; - $this->database = $database; - $this->moduleSettings = $moduleSettings; - $this->utilsObject = $utilsObject; - $this->tableTranslator = $tableTranslator; } /** @@ -143,7 +128,7 @@ public function apply(Type $product): Product $this->safeGuard(); /** @var Result $resultStatement */ - $resultStatement = $this->database->executeQuery( + $resultStatement = $this->connection->executeQuery( $this->tableTranslator->translate($this->selectAttributesQuery), ['productId' => $product->id,] ); @@ -182,7 +167,7 @@ public function apply(Type $product): Product ); /** @var Result $resultStatement */ - $resultStatement = $this->database->executeQuery( + $resultStatement = $this->connection->executeQuery( $this->tableTranslator->translate($query), ['productId' => $product->id] ); @@ -214,7 +199,7 @@ public function apply(Type $product): Product if (false === $product->isVariant) { /** @var Result $resultStatement */ $resultStatement = - $this->database->executeQuery( + $this->connection->executeQuery( $this->tableTranslator->translate($this->selectVariantsNameQuery), ['productId' => $product->id] ); @@ -222,7 +207,7 @@ public function apply(Type $product): Product $variantsName = $resultStatement->fetchAllAssociative(); /** @var Result $resultStatement */ - $resultStatement = $this->database->executeQuery( + $resultStatement = $this->connection->executeQuery( $this->tableTranslator->translate($this->selectVariantsQuery), ['productId' => $product->id] ); @@ -231,7 +216,7 @@ public function apply(Type $product): Product } else { /** @var Result $resultStatement */ $resultStatement = - $this->database->executeQuery( + $this->connection->executeQuery( $this->tableTranslator->translate($this->selectVariantNameQuery), ['productId' => $product->id] ); @@ -239,7 +224,7 @@ public function apply(Type $product): Product $variantsName = $resultStatement->fetchAllAssociative(); /** @var Result $resultStatement */ - $resultStatement = $this->database->executeQuery( + $resultStatement = $this->connection->executeQuery( $this->tableTranslator->translate($this->selectVariantQuery), ['productId' => $product->id] ); diff --git a/src/Modifier/Common/PriceModifier.php b/src/Modifier/Common/PriceModifier.php index 3e6eaa8..050920f 100644 --- a/src/Modifier/Common/PriceModifier.php +++ b/src/Modifier/Common/PriceModifier.php @@ -14,12 +14,6 @@ */ class PriceModifier extends Modifier { - private ?bool $isNetto; - - private ?bool $showNetto; - - private ?int $defaultVAT; - /** * PriceModifier constructor. * @@ -28,13 +22,10 @@ class PriceModifier extends Modifier * @param int|null $defaultVAT */ public function __construct( - ?bool $isNetto = false, - ?bool $showNetto = false, - ?int $defaultVAT = 19 + private ?bool $isNetto = false, + private ?bool $showNetto = false, + private ?int $defaultVAT = 19, ) { - $this->isNetto = (bool) $isNetto; - $this->showNetto = (bool) $showNetto; - $this->defaultVAT = (int) $defaultVAT; } /** @@ -49,7 +40,7 @@ public function apply(Type $type) if ($this->isNetto && !$this->showNetto) { $keys = array_merge(array_keys(get_object_vars($type)), array_keys($type->additionalData)); $priceKeys = array_filter($keys, static fn($key) => str_contains(strtolower($key), 'price')); - $vat = 1 + ($type->OXVAT ?? $this->defaultVAT) / 100.0; + $vat = 1 + ($type->OXVAT ?? (int) $this->defaultVAT) / 100.0; foreach ($priceKeys as $priceKey) { $type->{$priceKey} *= $vat; diff --git a/src/Modifier/Common/StockModifier.php b/src/Modifier/Common/StockModifier.php index 0b1d9f3..3c6d04c 100644 --- a/src/Modifier/Common/StockModifier.php +++ b/src/Modifier/Common/StockModifier.php @@ -12,14 +12,11 @@ class StockModifier extends Modifier { - private bool $useStock; - /** * @param bool $useStock */ - public function __construct(bool $useStock) + public function __construct(private bool $useStock) { - $this->useStock = $useStock; } /** @@ -35,10 +32,10 @@ public function apply(Type $type) $stockFlag = (int) $type->additionalData['OXSTOCKFLAG']; $stock = (int) $type->additionalData['OXSTOCK'] + (int) $type->additionalData['OXVARSTOCK']; - // 1 --> Standard - // 2 --> Wenn ausverkauft offline - // 3 --> Wenn ausverkauft nicht bestellbar - // 4 --> Fremdlager + // 1 --> Default + // 2 --> If sold-out, go offline + // 3 --> If sold-out, become not purchasable + // 4 --> Handled externally $onStock = (2 !== $stockFlag) || (0 < $stock); if (4 === $stockFlag) { $stock = 1; diff --git a/src/Modifier/Manufacturer/UrlModifier.php b/src/Modifier/Manufacturer/UrlModifier.php index 2b861e8..6eb9a8c 100644 --- a/src/Modifier/Manufacturer/UrlModifier.php +++ b/src/Modifier/Manufacturer/UrlModifier.php @@ -11,16 +11,13 @@ class UrlModifier extends AbstractUrlModifier { - private SeoEncoderManufacturer $encoder; - /** - * @param SeoEncoderManufacturer $encoder - * @param Language $oxLang + * @param SeoEncoderManufacturer $seoEncoderManufacturer + * @param Language $language */ - public function __construct(SeoEncoderManufacturer $encoder, Language $oxLang) + public function __construct(private SeoEncoderManufacturer $seoEncoderManufacturer, Language $language) { - $this->encoder = $encoder; - parent::__construct($oxLang); + parent::__construct($language); } /** @@ -43,7 +40,7 @@ protected function getUrl(Type $type, BaseModel $model, int $languageId): string $url = ''; if ($model instanceof Manufacturer) { - $url = $this->encoder->getManufacturerUri($model, $languageId); + $url = $this->seoEncoderManufacturer->getManufacturerUri($model, $languageId); } return $url; diff --git a/src/Modifier/Product/BoostFieldModifier.php b/src/Modifier/Product/BoostFieldModifier.php index 1cd7f9d..2e19ed6 100644 --- a/src/Modifier/Product/BoostFieldModifier.php +++ b/src/Modifier/Product/BoostFieldModifier.php @@ -19,16 +19,13 @@ class BoostFieldModifier extends Modifier { - private BoostFields $boostFieldUtilities; - /** * BoostFieldModifier constructor. * - * @param BoostFields $boostFieldUtilities + * @param BoostFields $boostFields */ - public function __construct(BoostFields $boostFieldUtilities) + public function __construct(private BoostFields $boostFields) { - $this->boostFieldUtilities = $boostFieldUtilities; } /** @@ -45,13 +42,13 @@ public function apply(Type $type) /** @var string $insertDate */ $insertDate = $type->additionalData['OXINSERT']; - $type->mak_boost_norm_insert = $this->boostFieldUtilities->normalizeTimestamp((string) $insertDate, 'insert'); + $type->mak_boost_norm_insert = $this->boostFields->normalizeTimestamp((string) $insertDate, 'insert'); - $type->mak_boost_norm_sold = $this->boostFieldUtilities->normalize( + $type->mak_boost_norm_sold = $this->boostFields->normalize( (float) $type->additionalData['OXSOLDAMOUNT'], 'sold' ); - $type->mak_boost_norm_rating = $this->boostFieldUtilities->normalize( + $type->mak_boost_norm_rating = $this->boostFields->normalize( (float) $type->additionalData['OXRATING'], 'rating' ); @@ -59,12 +56,12 @@ public function apply(Type $type) $priceAverage = ((float) $type->additionalData['OXVARMINPRICE'] + (float) $type->additionalData['OXVARMAXPRICE']) / 2; - $type->mak_boost_norm_revenue = $this->boostFieldUtilities->normalize( + $type->mak_boost_norm_revenue = $this->boostFields->normalize( (float) ($priceAverage * (float) $type->additionalData['OXSOLDAMOUNT']), 'revenue' ); - $type->mak_boost_norm_profit_margin = $this->boostFieldUtilities->normalize( + $type->mak_boost_norm_profit_margin = $this->boostFields->normalize( (0.0 === round((float) $type->additionalData['OXBPRICE'])) ? 0 : ($priceAverage - (float) $type->additionalData['OXBPRICE']), 'profit_margin' diff --git a/src/Modifier/Product/CategoryModifier.php b/src/Modifier/Product/CategoryModifier.php index 1657a89..7834bbb 100644 --- a/src/Modifier/Product/CategoryModifier.php +++ b/src/Modifier/Product/CategoryModifier.php @@ -48,18 +48,12 @@ class CategoryModifier extends Modifier ORDER BY oc.OXLEFT; "; - private Connection $database; - - private TableTranslator $tableTranslator; - /** - * @param Connection $database + * @param Connection $connection * @param TableTranslator $tableTranslator */ - public function __construct(Connection $database, TableTranslator $tableTranslator) + public function __construct(private Connection $connection, private TableTranslator $tableTranslator) { - $this->database = $database; - $this->tableTranslator = $tableTranslator; } /** @@ -74,7 +68,7 @@ public function __construct(Connection $database, TableTranslator $tableTranslat public function apply(Type $product) { /** @var Result $resultStatement */ - $resultStatement = $this->database->executeQuery( + $resultStatement = $this->connection->executeQuery( $this->tableTranslator->translate($this->selectCategoriesQuery), [ 'productId' => $product->id, @@ -88,7 +82,7 @@ public function apply(Type $product) foreach ($allCats as $cat) { /** @var Result $resultStatement */ - $resultStatement = $this->database->executeQuery( + $resultStatement = $this->connection->executeQuery( $this->tableTranslator->translate($this->selectCategoryPathQuery), [ 'left' => $cat['oxleft'], diff --git a/src/Modifier/Product/MainCategoryModifier.php b/src/Modifier/Product/MainCategoryModifier.php index a4ba728..5a1267f 100644 --- a/src/Modifier/Product/MainCategoryModifier.php +++ b/src/Modifier/Product/MainCategoryModifier.php @@ -12,6 +12,7 @@ namespace Makaira\OxidConnectEssential\Modifier\Product; use Doctrine\DBAL\Connection; +use Doctrine\DBAL\Driver\Exception as DBALDriverException; use Doctrine\DBAL\Driver\Result; use Doctrine\DBAL\Exception as DBALException; use Makaira\OxidConnectEssential\Modifier; @@ -22,25 +23,16 @@ class MainCategoryModifier extends Modifier { - private Connection $database; - - private SeoEncoderCategory $encoder; - - private Language $oxLang; - /** - * @param Connection $database - * @param SeoEncoderCategory $encoder - * @param Language $oxLang + * @param Connection $connection + * @param SeoEncoderCategory $seoEncoderCategory + * @param Language $language */ public function __construct( - Connection $database, - SeoEncoderCategory $encoder, - Language $oxLang + private Connection $connection, + private SeoEncoderCategory $seoEncoderCategory, + private Language $language ) { - $this->oxLang = $oxLang; - $this->encoder = $encoder; - $this->database = $database; } /** @@ -50,7 +42,7 @@ public function __construct( * * @return Type\Product\Product * @throws DBALException - * @throws \Doctrine\DBAL\Driver\Exception + * @throws DBALDriverException */ public function apply(Type $type) { @@ -59,17 +51,17 @@ public function apply(Type $type) $sql = "SELECT `OXCATNID` FROM `oxobject2category` WHERE `OXOBJECTID`= ? ORDER BY `OXTIME` LIMIT 1"; /** @var Result $resultStatement */ - $resultStatement = $this->database->executeQuery($sql, [$type->parent ?: $type->id]); + $resultStatement = $this->connection->executeQuery($sql, [$type->parent ?: $type->id]); /** @var string $categoryId */ $categoryId = $resultStatement->fetchOne(); if ($categoryId) { $type->maincategory = $categoryId; - $languageId = (int) $this->oxLang->getBaseLanguage(); + $languageId = (int) $this->language->getBaseLanguage(); $oCategory = oxNew(Category::class); $oCategory->loadInLang($languageId, $categoryId); - $type->maincategoryurl = $this->encoder->getCategoryUri($oCategory, $languageId); + $type->maincategoryurl = $this->seoEncoderCategory->getCategoryUri($oCategory, $languageId); } } diff --git a/src/Modifier/Product/UrlModifier.php b/src/Modifier/Product/UrlModifier.php index ce1553d..e11fca0 100644 --- a/src/Modifier/Product/UrlModifier.php +++ b/src/Modifier/Product/UrlModifier.php @@ -11,16 +11,13 @@ class UrlModifier extends AbstractUrlModifier { - private SeoEncoderArticle $encoder; - /** - * @param SeoEncoderArticle $encoder - * @param Language $oxLang + * @param SeoEncoderArticle $seoEncoderArticle + * @param Language $language */ - public function __construct(SeoEncoderArticle $encoder, Language $oxLang) + public function __construct(private SeoEncoderArticle $seoEncoderArticle, Language $language) { - $this->encoder = $encoder; - parent::__construct($oxLang); + parent::__construct($language); } /** @@ -47,7 +44,7 @@ protected function getUrl(Type $type, BaseModel $model, int $languageId): string $type->additionalData['picture_url_main'] = $model->getMasterZoomPictureUrl(1); } - $url = $this->encoder->getArticleMainUri($model, $languageId); + $url = $this->seoEncoderArticle->getArticleMainUri($model, $languageId); } return $url; diff --git a/src/Modifier/Product/VariantAttributesModifier.php b/src/Modifier/Product/VariantAttributesModifier.php index 76e8834..c2747c4 100644 --- a/src/Modifier/Product/VariantAttributesModifier.php +++ b/src/Modifier/Product/VariantAttributesModifier.php @@ -57,38 +57,24 @@ class VariantAttributesModifier extends Modifier AND oxobject2attribute.oxobjectid in (:productId, :variantId) '; - private Connection $database; - private ?BaseModel $model = null; private string $activeSnippet = ''; - private string $modelClass; - - private UtilsObject $utilsObject; - - private ModuleSettingsProvider $moduleSettings; - - private TableTranslator $tableTranslator; - /** - * @param Connection $database + * @param Connection $connection * @param class-string $modelClass * @param ModuleSettingsProvider $moduleSettings * @param UtilsObject $utilsObject + * @param TableTranslator $tableTranslator */ public function __construct( - Connection $database, - string $modelClass, - ModuleSettingsProvider $moduleSettings, - UtilsObject $utilsObject, - TableTranslator $tableTranslator + private Connection $connection, + private string $modelClass, + private ModuleSettingsProvider $moduleSettings, + private UtilsObject $utilsObject, + private TableTranslator $tableTranslator ) { - $this->modelClass = $modelClass; - $this->database = $database; - $this->moduleSettings = $moduleSettings; - $this->utilsObject = $utilsObject; - $this->tableTranslator = $tableTranslator; } /** @@ -115,7 +101,7 @@ public function apply(Type $product) $product->attributes = []; /** @var Result $resultStatement */ - $resultStatement = $this->database->executeQuery( + $resultStatement = $this->connection->executeQuery( $this->tableTranslator->translate($this->selectVariantNameQuery), ['productId' => $product->id] ); @@ -135,7 +121,7 @@ public function apply(Type $product) $query = str_replace('{{activeSnippet}}', $this->activeSnippet, $this->selectVariantDataQuery); /** @var Result $resultStatement */ - $resultStatement = $this->database->executeQuery( + $resultStatement = $this->connection->executeQuery( $this->tableTranslator->translate($query), ['productId' => $product->id] ); @@ -171,7 +157,7 @@ public function apply(Type $product) } /** @var Result $resultStatement */ - $resultStatement = $this->database->executeQuery( + $resultStatement = $this->connection->executeQuery( $this->tableTranslator->translate($this->selectVariantAttributesQuery), [ 'productId' => $product->id, diff --git a/src/Repository.php b/src/Repository.php index 79fb254..db43e82 100644 --- a/src/Repository.php +++ b/src/Repository.php @@ -93,27 +93,20 @@ class Repository */ private array $repositoryMapping = []; - private Connection $database; - - private ?bool $parentsPurchasable; - /** * Repository constructor. * - * @param Connection $database + * @param Connection $connection * @param EventDispatcherInterface $dispatcher * @param iterable $repositories * @param bool $parentsPurchasable */ public function __construct( - Connection $database, + private Connection $connection, EventDispatcherInterface $dispatcher, iterable $repositories, - ?bool $parentsPurchasable + private ?bool $parentsPurchasable ) { - $this->database = $database; - $this->parentsPurchasable = (bool) $parentsPurchasable; - foreach ($repositories as $repository) { $this->repositoryMapping[$repository->getType()] = $repository; } @@ -146,7 +139,7 @@ public function addRepositoryMapping(AbstractRepository $repository): void */ public function getChangesSince(int $since, int $limit = 50): array { - $prepared = $this->database->prepare(self::SELECT_QUERY); + $prepared = $this->connection->prepare(self::SELECT_QUERY); $prepared->bindValue('since', $since, ParameterType::INTEGER); $prepared->bindValue('limit', $limit, ParameterType::INTEGER); $prepared->execute(); diff --git a/src/Repository/AbstractRepository.php b/src/Repository/AbstractRepository.php index 842b343..b051a27 100644 --- a/src/Repository/AbstractRepository.php +++ b/src/Repository/AbstractRepository.php @@ -2,6 +2,7 @@ namespace Makaira\OxidConnectEssential\Repository; +use Codeception\Lib\Interfaces\ConsolePrinter; use Doctrine\DBAL\Connection; use Doctrine\DBAL\Driver\Exception as DBALDriverException; use Doctrine\DBAL\Driver\Result; @@ -14,30 +15,18 @@ abstract class AbstractRepository { - protected Connection $database; - - private ModifierList $modifiers; - - private TableTranslator $tableTranslator; - - private DataMapper $dataMapper; - /** - * @param Connection $database + * @param Connection $connection * @param ModifierList $modifiers * @param TableTranslator $tableTranslator * @param DataMapper $dataMapper */ public function __construct( - Connection $database, - ModifierList $modifiers, - TableTranslator $tableTranslator, - DataMapper $dataMapper + private Connection $connection, + private ModifierList $modifiers, + private TableTranslator $tableTranslator, + private DataMapper $dataMapper ) { - $this->tableTranslator = $tableTranslator; - $this->modifiers = $modifiers; - $this->database = $database; - $this->dataMapper = $dataMapper; } /** @@ -57,7 +46,7 @@ public function get(string $objectId): Change $query = $this->tableTranslator->translate($this->getSelectQuery()); /** @var Result $resultStatement */ - $resultStatement = $this->database->executeQuery($query, ['id' => $objectId]); + $resultStatement = $this->connection->executeQuery($query, ['id' => $objectId]); /** @var array $result */ $result = $resultStatement->fetchAssociative(); @@ -98,7 +87,7 @@ public function getAllIds(?int $shopId = null): array $sql = $this->tableTranslator->translate($sql); /** @var Result $resultStatement */ - $resultStatement = $this->database->executeQuery($sql); + $resultStatement = $this->connection->executeQuery($sql); return $resultStatement->fetchFirstColumn(); } diff --git a/src/Repository/ModifierList.php b/src/Repository/ModifierList.php index 6744604..4dd710a 100644 --- a/src/Repository/ModifierList.php +++ b/src/Repository/ModifierList.php @@ -9,16 +9,13 @@ abstract class ModifierList { - private array $modifiers; - /** * @param string $tag * @param EventDispatcherInterface $dispatcher * @param array $modifiers */ - public function __construct(string $tag, EventDispatcherInterface $dispatcher, array $modifiers) + public function __construct(string $tag, EventDispatcherInterface $dispatcher, private array $modifiers) { - $this->modifiers = $modifiers; $dispatcher->dispatch(new ModifierCollectEvent($this), $tag); } diff --git a/src/Repository/ProductRepository.php b/src/Repository/ProductRepository.php index eafa6cd..6126fb0 100644 --- a/src/Repository/ProductRepository.php +++ b/src/Repository/ProductRepository.php @@ -9,6 +9,15 @@ class ProductRepository extends AbstractRepository { + public function __construct( + private Connection $connection, + ModifierList $modifiers, + TableTranslator $tableTranslator, + DataMapper $dataMapper, + ) { + parent::__construct($connection, $modifiers, $tableTranslator, $dataMapper); + } + /** * Get TYPE of repository. * @@ -64,7 +73,7 @@ protected function getParentIdQuery(): string public function getParentId(string $productId): ?string { /** @var Result $resultStatement */ - $resultStatement = $this->database->executeQuery($this->getParentIdQuery(), ['id' => $productId]); + $resultStatement = $this->connection->executeQuery($this->getParentIdQuery(), ['id' => $productId]); /** @var string $parentID */ $parentID = $resultStatement->fetchOne(); diff --git a/src/RevisionHandler/Extractor/ArticleAttribute.php b/src/RevisionHandler/Extractor/ArticleAttribute.php index 4fcffdd..19f37b8 100644 --- a/src/RevisionHandler/Extractor/ArticleAttribute.php +++ b/src/RevisionHandler/Extractor/ArticleAttribute.php @@ -18,18 +18,12 @@ class ArticleAttribute extends AbstractModelDataExtractor */ private ?Statement $statement = null; - private Connection $connection; - - private TableViewNameGenerator $viewNameGenerator; - /** * @param Connection $connection * @param TableViewNameGenerator $viewNameGenerator */ - public function __construct(Connection $connection, TableViewNameGenerator $viewNameGenerator) + public function __construct(private Connection $connection, private TableViewNameGenerator $viewNameGenerator) { - $this->viewNameGenerator = $viewNameGenerator; - $this->connection = $connection; } /** diff --git a/src/RevisionHandler/Extractor/ArticleCategory.php b/src/RevisionHandler/Extractor/ArticleCategory.php index 183fe03..46e7b46 100644 --- a/src/RevisionHandler/Extractor/ArticleCategory.php +++ b/src/RevisionHandler/Extractor/ArticleCategory.php @@ -3,6 +3,8 @@ namespace Makaira\OxidConnectEssential\RevisionHandler\Extractor; use Doctrine\DBAL\Connection; +use Doctrine\DBAL\Driver\Exception; +use Doctrine\DBAL\Exception as DBALException; use Doctrine\DBAL\Statement; use Makaira\OxidConnectEssential\Domain\Revision; use Makaira\OxidConnectEssential\RevisionHandler\AbstractModelDataExtractor; @@ -17,24 +19,20 @@ class ArticleCategory extends AbstractModelDataExtractor */ private ?Statement $statement = null; - private TableViewNameGenerator $viewNameGenerator; - - private Connection $connection; - /** * @param Connection $connection * @param TableViewNameGenerator $viewNameGenerator */ - public function __construct(Connection $connection, TableViewNameGenerator $viewNameGenerator) + public function __construct(private Connection $connection, private TableViewNameGenerator $viewNameGenerator) { - $this->connection = $connection; - $this->viewNameGenerator = $viewNameGenerator; } /** * @param Object2CategoryModel $model * * @return array + * @throws Exception + * @throws DBALException */ public function extract(BaseModel $model): array { diff --git a/src/RevisionHandler/Extractor/ArticleSelectList.php b/src/RevisionHandler/Extractor/ArticleSelectList.php index 3d581aa..19428d5 100644 --- a/src/RevisionHandler/Extractor/ArticleSelectList.php +++ b/src/RevisionHandler/Extractor/ArticleSelectList.php @@ -18,18 +18,12 @@ class ArticleSelectList extends AbstractModelDataExtractor */ private ?Statement $statement = null; - private TableViewNameGenerator $viewNameGenerator; - - private Connection $connection; - /** * @param Connection $connection * @param TableViewNameGenerator $viewNameGenerator */ - public function __construct(Connection $connection, TableViewNameGenerator $viewNameGenerator) + public function __construct(private Connection $connection, private TableViewNameGenerator $viewNameGenerator) { - $this->connection = $connection; - $this->viewNameGenerator = $viewNameGenerator; } /** diff --git a/src/RevisionHandler/Extractor/Category.php b/src/RevisionHandler/Extractor/Category.php index c423466..7545b49 100644 --- a/src/RevisionHandler/Extractor/Category.php +++ b/src/RevisionHandler/Extractor/Category.php @@ -13,18 +13,12 @@ class Category extends AbstractModelDataExtractor { - private Connection $connection; - - private TableViewNameGenerator $viewNameGenerator; - /** * @param Connection $connection * @param TableViewNameGenerator $viewNameGenerator */ - public function __construct(Connection $connection, TableViewNameGenerator $viewNameGenerator) + public function __construct(private Connection $connection, private TableViewNameGenerator $viewNameGenerator) { - $this->viewNameGenerator = $viewNameGenerator; - $this->connection = $connection; } /** diff --git a/src/RevisionHandler/Extractor/GraduatedPrices.php b/src/RevisionHandler/Extractor/GraduatedPrices.php index 3a8a791..27d972d 100644 --- a/src/RevisionHandler/Extractor/GraduatedPrices.php +++ b/src/RevisionHandler/Extractor/GraduatedPrices.php @@ -17,14 +17,11 @@ class GraduatedPrices extends AbstractModelDataExtractor */ private ?Statement $statement = null; - private Connection $connection; - /** * @param Connection $connection */ - public function __construct(Connection $connection) + public function __construct(private Connection $connection) { - $this->connection = $connection; } /** diff --git a/src/RevisionHandler/Extractor/Manufacturer.php b/src/RevisionHandler/Extractor/Manufacturer.php index a35c5ea..bba4673 100644 --- a/src/RevisionHandler/Extractor/Manufacturer.php +++ b/src/RevisionHandler/Extractor/Manufacturer.php @@ -15,18 +15,12 @@ class Manufacturer extends AbstractModelDataExtractor { - private Connection $connection; - - private TableViewNameGenerator $viewNameGenerator; - /** * @param Connection $connection * @param TableViewNameGenerator $viewNameGenerator */ - public function __construct(Connection $connection, TableViewNameGenerator $viewNameGenerator) + public function __construct(private Connection $connection, private TableViewNameGenerator $viewNameGenerator) { - $this->viewNameGenerator = $viewNameGenerator; - $this->connection = $connection; } /** diff --git a/src/RevisionHandler/Extractor/SelectList.php b/src/RevisionHandler/Extractor/SelectList.php index fb40ca5..25205b9 100644 --- a/src/RevisionHandler/Extractor/SelectList.php +++ b/src/RevisionHandler/Extractor/SelectList.php @@ -18,18 +18,12 @@ */ class SelectList extends AbstractModelDataExtractor { - private TableViewNameGenerator $viewNameGenerator; - - private Connection $connection; - /** * @param Connection $connection * @param TableViewNameGenerator $viewNameGenerator */ - public function __construct(Connection $connection, TableViewNameGenerator $viewNameGenerator) + public function __construct(private Connection $connection, private TableViewNameGenerator $viewNameGenerator) { - $this->connection = $connection; - $this->viewNameGenerator = $viewNameGenerator; } /** diff --git a/src/RevisionHandler/ModelDataExtractor.php b/src/RevisionHandler/ModelDataExtractor.php index 5092101..f6f417f 100644 --- a/src/RevisionHandler/ModelDataExtractor.php +++ b/src/RevisionHandler/ModelDataExtractor.php @@ -11,17 +11,11 @@ class ModelDataExtractor { - /** - * @var iterable - */ - private iterable $extractors; - /** * @param iterable $extractors */ - public function __construct(iterable $extractors) + public function __construct(private iterable $extractors) { - $this->extractors = $extractors; } /** diff --git a/src/Rpc/Handler/GetReplicationStatus.php b/src/Rpc/Handler/GetReplicationStatus.php index 6b38873..e9bc8e8 100644 --- a/src/Rpc/Handler/GetReplicationStatus.php +++ b/src/Rpc/Handler/GetReplicationStatus.php @@ -9,14 +9,11 @@ class GetReplicationStatus implements HandlerInterface { - private RevisionRepository $repository; - /** * @param RevisionRepository $repository */ - public function __construct(RevisionRepository $repository) + public function __construct(private RevisionRepository $repository) { - $this->repository = $repository; } /** diff --git a/src/Rpc/Handler/GetUpdates.php b/src/Rpc/Handler/GetUpdates.php index 4c913e2..387729a 100644 --- a/src/Rpc/Handler/GetUpdates.php +++ b/src/Rpc/Handler/GetUpdates.php @@ -14,20 +14,11 @@ class GetUpdates implements HandlerInterface { - private Language $language; - - private TableTranslator $tableTranslator; - - private Repository $repository; - public function __construct( - Language $language, - TableTranslator $tableTranslator, - Repository $repository + private Language $language, + private TableTranslator $tableTranslator, + private Repository $repository ) { - $this->repository = $repository; - $this->tableTranslator = $tableTranslator; - $this->language = $language; } /** diff --git a/src/Rpc/Handler/ListLanguages.php b/src/Rpc/Handler/ListLanguages.php index ce458db..3f3a13f 100644 --- a/src/Rpc/Handler/ListLanguages.php +++ b/src/Rpc/Handler/ListLanguages.php @@ -7,14 +7,11 @@ class ListLanguages implements HandlerInterface { - private Language $language; - /** * @param Language $language */ - public function __construct(Language $language) + public function __construct(private Language $language) { - $this->language = $language; } /** diff --git a/src/Rpc/RpcService.php b/src/Rpc/RpcService.php index e2d1f23..e41fddb 100644 --- a/src/Rpc/RpcService.php +++ b/src/Rpc/RpcService.php @@ -17,15 +17,12 @@ class RpcService */ private array $rpcHandlers; - private SignatureCheck $signatureCheck; - /** * @param SignatureCheck $signatureCheck * @param iterable $rpcHandlers */ - public function __construct(SignatureCheck $signatureCheck, iterable $rpcHandlers) + public function __construct(private SignatureCheck $signatureCheck, iterable $rpcHandlers) { - $this->signatureCheck = $signatureCheck; foreach ($rpcHandlers as $rpcHandler) { $class = get_class($rpcHandler); $name = basename(str_replace(['\\', '/'], DIRECTORY_SEPARATOR, $class)); diff --git a/src/Rpc/SignatureCheck.php b/src/Rpc/SignatureCheck.php index c24779b..08bbba5 100644 --- a/src/Rpc/SignatureCheck.php +++ b/src/Rpc/SignatureCheck.php @@ -11,18 +11,12 @@ class SignatureCheck public const HEADER_NONCE = 'X-Makaira-Nonce'; public const HEADER_SIGNATURE = 'X-Makaira-Hash'; - private HashGenerator $hashGenerator; - - private ModuleSettingsProvider $moduleSettings; - /** * @param HashGenerator $hashGenerator * @param ModuleSettingsProvider $moduleSettings */ - public function __construct(HashGenerator $hashGenerator, ModuleSettingsProvider $moduleSettings) + public function __construct(private HashGenerator $hashGenerator, private ModuleSettingsProvider $moduleSettings) { - $this->moduleSettings = $moduleSettings; - $this->hashGenerator = $hashGenerator; } /** diff --git a/src/Service/CartService.php b/src/Service/CartService.php index 30e30c0..6811f7b 100644 --- a/src/Service/CartService.php +++ b/src/Service/CartService.php @@ -6,22 +6,22 @@ use OxidEsales\Eshop\Application\Model\Article; use OxidEsales\Eshop\Application\Model\Basket; use OxidEsales\Eshop\Application\Model\BasketItem; +use OxidEsales\Eshop\Core\Exception\ArticleException; use OxidEsales\Eshop\Core\Exception\ArticleInputException; use OxidEsales\Eshop\Core\Exception\NoArticleException; use OxidEsales\Eshop\Core\Exception\OutOfStockException; class CartService { - private Basket $basket; - - public function __construct(Basket $basket) + public function __construct(private Basket $basket) { - $this->basket = $basket; } /** + * @return array * @throws ArticleInputException * @throws NoArticleException + * @throws ArticleException */ public function getCartItems(): array { diff --git a/src/Service/TrackingRenderService.php b/src/Service/TrackingRenderService.php index 64796c5..c040142 100644 --- a/src/Service/TrackingRenderService.php +++ b/src/Service/TrackingRenderService.php @@ -16,16 +16,10 @@ */ class TrackingRenderService { - private MakairaTrackingDataGenerator $trackingDataGenerator; - - private Config $config; - private static ?array $trackingData = null; - public function __construct(MakairaTrackingDataGenerator $trackingDataGenerator, Config $config) + public function __construct(private MakairaTrackingDataGenerator $trackingDataGenerator, private Config $config) { - $this->trackingDataGenerator = $trackingDataGenerator; - $this->config = $config; } /** diff --git a/src/Service/UserService.php b/src/Service/UserService.php index 1a26773..89b3b7a 100644 --- a/src/Service/UserService.php +++ b/src/Service/UserService.php @@ -11,11 +11,8 @@ class UserService { - private Session $session; - - public function __construct(Session $session) + public function __construct(private Session $session) { - $this->session = $session; } /** diff --git a/src/Utils/BoostFields.php b/src/Utils/BoostFields.php index 7c9843a..956d6e0 100644 --- a/src/Utils/BoostFields.php +++ b/src/Utils/BoostFields.php @@ -30,16 +30,13 @@ class BoostFields */ private ?array $minMaxValues = null; - private Connection $database; - /** * BoostFieldStatistics constructor. * - * @param Connection $database + * @param Connection $connection */ - public function __construct(Connection $database) + public function __construct(private Connection $connection) { - $this->database = $database; } /** @@ -51,7 +48,7 @@ public function getMinMaxValues(): array { if (null === $this->minMaxValues) { /** @var Result $resultStatement */ - $resultStatement = $this->database->executeQuery($this->getMinMaxQuery()); + $resultStatement = $this->connection->executeQuery($this->getMinMaxQuery()); /** @var array $rawValues */ $rawValues = (array) $resultStatement->fetchAssociative(); diff --git a/src/Utils/CategoryInheritance.php b/src/Utils/CategoryInheritance.php index 36914cc..b8abdc3 100644 --- a/src/Utils/CategoryInheritance.php +++ b/src/Utils/CategoryInheritance.php @@ -22,22 +22,16 @@ */ class CategoryInheritance { - private Connection $database; - - private ModuleSettingsProvider $moduleSettingsProvider; - /** * CategoryInheritance constructor. * - * @param Connection $database + * @param Connection $connection * @param ModuleSettingsProvider $moduleSettingsProvider */ public function __construct( - Connection $database, - ModuleSettingsProvider $moduleSettingsProvider + private Connection $connection, + private ModuleSettingsProvider $moduleSettingsProvider ) { - $this->moduleSettingsProvider = $moduleSettingsProvider; - $this->database = $database; } /** @@ -59,7 +53,7 @@ public function buildCategoryInheritance(string $categoryId): array ORDER BY `OXLEFT` ASC"; /** @var Result $result */ - $result = $this->database->executeQuery( + $result = $this->connection->executeQuery( $sql, [ 'rootId' => $category->getFieldData('oxrootid'), diff --git a/src/Utils/ContentParser.php b/src/Utils/ContentParser.php index 7783926..4276968 100644 --- a/src/Utils/ContentParser.php +++ b/src/Utils/ContentParser.php @@ -4,14 +4,13 @@ use OxidEsales\Eshop\Application\Controller\FrontendController; use OxidEsales\Eshop\Core\Language; -use OxidEsales\Eshop\Core\UtilsView; use OxidEsales\EshopCommunity\Internal\Framework\Templating\TemplateRendererInterface; class ContentParser implements ContentParserInterface { public function __construct( private TemplateRendererInterface $renderer, - private Language $oxidLanguage, + private Language $language, private FrontendController $frontendController ) { } @@ -28,7 +27,7 @@ public function parseContent(string $id, string $content): string { $this->frontendController->addGlobalParams(); - $activeLanguageId = $this->oxidLanguage->getTplLanguage(); + $activeLanguageId = $this->language->getTplLanguage(); return $this->renderer->renderFragment( $content, diff --git a/src/Utils/TableTranslator.php b/src/Utils/TableTranslator.php index d6328c3..1761a5e 100644 --- a/src/Utils/TableTranslator.php +++ b/src/Utils/TableTranslator.php @@ -9,11 +9,6 @@ class TableTranslator { - /** - * @var array - */ - private array $searchTables; - /** * @var string */ @@ -39,10 +34,8 @@ class TableTranslator * * @param string[] $searchTables */ - public function __construct(array $searchTables) + public function __construct(private array $searchTables) { - $this->searchTables = $searchTables; - $this->viewNameGenerator = static function ($table, $language, $shopId = null) { if (null !== $shopId) { $table = "{$table}_{$shopId}"; diff --git a/src/Utils/TableTranslatorConfigurator.php b/src/Utils/TableTranslatorConfigurator.php index 228150d..c563da4 100644 --- a/src/Utils/TableTranslatorConfigurator.php +++ b/src/Utils/TableTranslatorConfigurator.php @@ -14,17 +14,14 @@ class TableTranslatorConfigurator */ private array $languageMap; - private TableViewNameGenerator $viewNameGenerator; - /** * TableTranslatorConfigurator constructor. * * @param Language $language * @param TableViewNameGenerator $viewNameGenerator */ - public function __construct(Language $language, TableViewNameGenerator $viewNameGenerator) + public function __construct(Language $language, private TableViewNameGenerator $viewNameGenerator) { - $this->viewNameGenerator = $viewNameGenerator; $oxidLanguages = $language->getLanguageArray(); foreach ($oxidLanguages as $oxidLanguage) { $this->languageMap[(string) $oxidLanguage->abbr] = (int) $oxidLanguage->id; diff --git a/tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--0.json b/tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--0.json similarity index 100% rename from tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--0.json rename to tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--0.json diff --git a/tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--1.json b/tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--1.json similarity index 100% rename from tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--1.json rename to tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--1.json diff --git a/tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--10.json b/tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--10.json similarity index 100% rename from tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--10.json rename to tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--10.json diff --git a/tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--2.json b/tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--2.json similarity index 100% rename from tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--2.json rename to tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--2.json diff --git a/tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--3.json b/tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--3.json similarity index 100% rename from tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--3.json rename to tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--3.json diff --git a/tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--4.json b/tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--4.json similarity index 100% rename from tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--4.json rename to tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--4.json diff --git a/tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--5.json b/tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--5.json similarity index 100% rename from tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--5.json rename to tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--5.json diff --git a/tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--6.json b/tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--6.json similarity index 100% rename from tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--6.json rename to tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--6.json diff --git a/tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--7.json b/tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--7.json similarity index 100% rename from tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--7.json rename to tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--7.json diff --git a/tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--8.json b/tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--8.json similarity index 100% rename from tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--8.json rename to tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--8.json diff --git a/tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--9.json b/tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--9.json similarity index 100% rename from tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--9.json rename to tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--9.json diff --git a/tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--0.json b/tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--0.json similarity index 100% rename from tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--0.json rename to tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--0.json diff --git a/tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--1.json b/tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--1.json similarity index 100% rename from tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--1.json rename to tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--1.json diff --git a/tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--10.json b/tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--10.json similarity index 100% rename from tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--10.json rename to tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--10.json diff --git a/tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--2.json b/tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--2.json similarity index 100% rename from tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--2.json rename to tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--2.json diff --git a/tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--3.json b/tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--3.json similarity index 100% rename from tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--3.json rename to tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--3.json diff --git a/tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--4.json b/tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--4.json similarity index 100% rename from tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--4.json rename to tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--4.json diff --git a/tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--5.json b/tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--5.json similarity index 100% rename from tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--5.json rename to tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--5.json diff --git a/tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--6.json b/tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--6.json similarity index 100% rename from tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--6.json rename to tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--6.json diff --git a/tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--7.json b/tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--7.json similarity index 100% rename from tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--7.json rename to tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--7.json diff --git a/tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--8.json b/tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--8.json similarity index 100% rename from tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--8.json rename to tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--8.json diff --git a/tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--9.json b/tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--9.json similarity index 100% rename from tests/Integration/Controller/__snapshots__/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--9.json rename to tests/Integration/Controller/__snapshots__/ce/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_german--9.json diff --git a/tests/Integration/Controller/__snapshots__/ee/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--0.json b/tests/Integration/Controller/__snapshots__/ee/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--0.json new file mode 100644 index 0000000..f866dde --- /dev/null +++ b/tests/Integration/Controller/__snapshots__/ee/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--0.json @@ -0,0 +1,857 @@ +{ + "since": 0, + "count": 25, + "requestedCount": 25, + "changes": [ + { + "id": "0f40c6a077b68c21f164767c4a903fd2", + "sequence": 1, + "deleted": false, + "data": { + "active": true, + "category_title": "Bindings", + "depth": 2, + "es_id": "", + "hidden": false, + "hierarchy": "943173edecf6d6870a0f357b8ac84d32\/\/0f40c6a077b68c21f164767c4a903fd2", + "id": "0f40c6a077b68c21f164767c4a903fd2", + "insert": "", + "longdesc": "", + "meta_description": "", + "meta_keywords": "", + "oxobject": [], + "selfLinks": { + "de": "Wakeboarding\/Bindungen\/", + "en": "en\/Wakeboarding\/Bindings\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "sort": 202, + "subcategories": [ + "0f40c6a077b68c21f164767c4a903fd2" + ], + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "category" + }, + { + "id": "0f41a4463b227c437f6e6bf57b1697c4", + "sequence": 2, + "deleted": false, + "data": { + "active": true, + "category_title": "Harnesses", + "depth": 2, + "es_id": "", + "hidden": false, + "hierarchy": "943a9ba3050e78b443c16e043ae60ef3\/\/0f41a4463b227c437f6e6bf57b1697c4", + "id": "0f41a4463b227c437f6e6bf57b1697c4", + "insert": "", + "longdesc": "", + "meta_description": "", + "meta_keywords": "", + "oxobject": [], + "selfLinks": { + "de": "Kiteboarding\/Trapeze\/", + "en": "en\/Kiteboarding\/Harnesses\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "sort": 103, + "subcategories": [ + "0f41a4463b227c437f6e6bf57b1697c4" + ], + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "category" + }, + { + "id": "0f4270b89fbef1481958381410a0dbca", + "sequence": 3, + "deleted": false, + "data": { + "active": true, + "category_title": "Wakeboards", + "depth": 2, + "es_id": "", + "hidden": false, + "hierarchy": "943173edecf6d6870a0f357b8ac84d32\/\/0f4270b89fbef1481958381410a0dbca", + "id": "0f4270b89fbef1481958381410a0dbca", + "insert": "", + "longdesc": "", + "meta_description": "", + "meta_keywords": "", + "oxobject": [], + "selfLinks": { + "de": "Wakeboarding\/Wakeboards\/", + "en": "en\/Wakeboarding\/Wakeboards\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "sort": 201, + "subcategories": [ + "0f4270b89fbef1481958381410a0dbca" + ], + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "category" + }, + { + "id": "0f4f08358666c54b4fde3d83d2b7ef04", + "sequence": 4, + "deleted": false, + "data": { + "active": true, + "category_title": "Kiteboards", + "depth": 2, + "es_id": "", + "hidden": false, + "hierarchy": "943a9ba3050e78b443c16e043ae60ef3\/\/0f4f08358666c54b4fde3d83d2b7ef04", + "id": "0f4f08358666c54b4fde3d83d2b7ef04", + "insert": "", + "longdesc": "", + "meta_description": "", + "meta_keywords": "", + "oxobject": [], + "selfLinks": { + "de": "Kiteboarding\/Kiteboards\/", + "en": "en\/Kiteboarding\/Kiteboards\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "sort": 102, + "subcategories": [ + "0f4f08358666c54b4fde3d83d2b7ef04" + ], + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "category" + }, + { + "id": "0f4fb00809cec9aa0910aa9c8fe36751", + "sequence": 5, + "deleted": false, + "data": { + "active": true, + "category_title": "Kites", + "depth": 2, + "es_id": "", + "hidden": false, + "hierarchy": "943a9ba3050e78b443c16e043ae60ef3\/\/0f4fb00809cec9aa0910aa9c8fe36751", + "id": "0f4fb00809cec9aa0910aa9c8fe36751", + "insert": "", + "longdesc": "", + "meta_description": "", + "meta_keywords": "", + "oxobject": [], + "selfLinks": { + "de": "Kiteboarding\/Kites\/", + "en": "en\/Kiteboarding\/Kites\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "sort": 101, + "subcategories": [ + "0f4fb00809cec9aa0910aa9c8fe36751" + ], + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "category" + }, + { + "id": "30e44ab83fdee7564.23264141", + "sequence": 6, + "deleted": false, + "data": { + "active": true, + "category_title": "Gear", + "depth": 1, + "es_id": "", + "hidden": false, + "hierarchy": "30e44ab83fdee7564.23264141", + "id": "30e44ab83fdee7564.23264141", + "insert": "", + "longdesc": "", + "meta_description": "", + "meta_keywords": "", + "oxobject": [], + "selfLinks": { + "de": "Bekleidung\/", + "en": "en\/Gear\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "sort": 3, + "subcategories": [ + "30e44ab83fdee7564.23264141" + ], + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "category" + }, + { + "id": "943173edecf6d6870a0f357b8ac84d32", + "sequence": 7, + "deleted": false, + "data": { + "active": true, + "category_title": "Wakeboarding", + "depth": 1, + "es_id": "", + "hidden": false, + "hierarchy": "943173edecf6d6870a0f357b8ac84d32", + "id": "943173edecf6d6870a0f357b8ac84d32", + "insert": "", + "longdesc": "", + "meta_description": "", + "meta_keywords": "", + "oxobject": [], + "selfLinks": { + "de": "Wakeboarding\/", + "en": "en\/Wakeboarding\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "sort": 2, + "subcategories": [ + "943173edecf6d6870a0f357b8ac84d32" + ], + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "category" + }, + { + "id": "943a9ba3050e78b443c16e043ae60ef3", + "sequence": 8, + "deleted": false, + "data": { + "active": true, + "category_title": "Kiteboarding", + "depth": 1, + "es_id": "", + "hidden": false, + "hierarchy": "943a9ba3050e78b443c16e043ae60ef3", + "id": "943a9ba3050e78b443c16e043ae60ef3", + "insert": "", + "longdesc": "", + "meta_description": "", + "meta_keywords": "", + "oxobject": [], + "selfLinks": { + "de": "Kiteboarding\/", + "en": "en\/Kiteboarding\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "sort": 1, + "subcategories": [ + "943a9ba3050e78b443c16e043ae60ef3" + ], + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "category" + }, + { + "id": "d862abc1f98741797cf889eb4a9090ad", + "sequence": 9, + "deleted": false, + "data": { + "active": true, + "category_title": "Shirts & Co.", + "depth": 4, + "es_id": "", + "hidden": false, + "hierarchy": "30e44ab83fdee7564.23264141\/\/fad181ad64642b955becd0759345161e\/\/fad7facadcb7d4297f033d242aa0d310\/\/d862abc1f98741797cf889eb4a9090ad", + "id": "d862abc1f98741797cf889eb4a9090ad", + "insert": "", + "longdesc": "", + "meta_description": "", + "meta_keywords": "", + "oxobject": [], + "selfLinks": { + "de": "Bekleidung\/Fashion\/Fuer-Ihn\/oxid\/", + "en": "en\/Gear\/Fashion\/For-Him\/Shirts-Co\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "sort": 3020202, + "subcategories": [ + "d862abc1f98741797cf889eb4a9090ad" + ], + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "category" + }, + { + "id": "d863b76c6bb90a970a5577adf890e8cd", + "sequence": 10, + "deleted": false, + "data": { + "active": true, + "category_title": "Jeans", + "depth": 4, + "es_id": "", + "hidden": false, + "hierarchy": "30e44ab83fdee7564.23264141\/\/fad181ad64642b955becd0759345161e\/\/fadbdb3145458afc5aa4dbf7eb906761\/\/d863b76c6bb90a970a5577adf890e8cd", + "id": "d863b76c6bb90a970a5577adf890e8cd", + "insert": "", + "longdesc": "", + "meta_description": "", + "meta_keywords": "", + "oxobject": [], + "selfLinks": { + "de": "Bekleidung\/Fashion\/Fuer-Sie\/Jeans\/", + "en": "en\/Gear\/Fashion\/For-Her\/Jeans\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "sort": 3020101, + "subcategories": [ + "d863b76c6bb90a970a5577adf890e8cd" + ], + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "category" + }, + { + "id": "d8665fef35f4d528e92c3d664f4a00c0", + "sequence": 11, + "deleted": false, + "data": { + "active": true, + "category_title": "Jeans", + "depth": 4, + "es_id": "", + "hidden": false, + "hierarchy": "30e44ab83fdee7564.23264141\/\/fad181ad64642b955becd0759345161e\/\/fad7facadcb7d4297f033d242aa0d310\/\/d8665fef35f4d528e92c3d664f4a00c0", + "id": "d8665fef35f4d528e92c3d664f4a00c0", + "insert": "", + "longdesc": "", + "meta_description": "", + "meta_keywords": "", + "oxobject": [], + "selfLinks": { + "de": "Bekleidung\/Fashion\/Fuer-Ihn\/oxid-oxid\/", + "en": "en\/Gear\/Fashion\/For-Him\/Jeans\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "sort": 3020201, + "subcategories": [ + "d8665fef35f4d528e92c3d664f4a00c0" + ], + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "category" + }, + { + "id": "d86779840626d3ab8263b62db85df3f0", + "sequence": 12, + "deleted": false, + "data": { + "active": true, + "category_title": "Shirts & Co.", + "depth": 4, + "es_id": "", + "hidden": false, + "hierarchy": "30e44ab83fdee7564.23264141\/\/fad181ad64642b955becd0759345161e\/\/fadbdb3145458afc5aa4dbf7eb906761\/\/d86779840626d3ab8263b62db85df3f0", + "id": "d86779840626d3ab8263b62db85df3f0", + "insert": "", + "longdesc": "", + "meta_description": "", + "meta_keywords": "", + "oxobject": [], + "selfLinks": { + "de": "Bekleidung\/Fashion\/Fuer-Sie\/oxid\/", + "en": "en\/Gear\/Fashion\/For-Her\/Shirts-Co\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "sort": 3020102, + "subcategories": [ + "d86779840626d3ab8263b62db85df3f0" + ], + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "category" + }, + { + "id": "d86d90e4b441aa3f0004dcda5ba5bb38", + "sequence": 13, + "deleted": false, + "data": { + "active": true, + "category_title": "Sets", + "depth": 2, + "es_id": "", + "hidden": false, + "hierarchy": "943173edecf6d6870a0f357b8ac84d32\/\/d86d90e4b441aa3f0004dcda5ba5bb38", + "id": "d86d90e4b441aa3f0004dcda5ba5bb38", + "insert": "", + "longdesc": "", + "meta_description": "", + "meta_keywords": "", + "oxobject": [], + "selfLinks": { + "de": "Wakeboarding\/Sets\/", + "en": "en\/Wakeboarding\/Sets\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "sort": 203, + "subcategories": [ + "d86d90e4b441aa3f0004dcda5ba5bb38" + ], + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "category" + }, + { + "id": "d86fdf0d67bf76dc427aabd2e53e0a97", + "sequence": 14, + "deleted": false, + "data": { + "active": true, + "category_title": "Shoes", + "depth": 4, + "es_id": "", + "hidden": false, + "hierarchy": "30e44ab83fdee7564.23264141\/\/fad569d6659caca39bc93e98d13dd58b\/\/fad2d80baf7aca6ac54e819e066f24aa\/\/d86fdf0d67bf76dc427aabd2e53e0a97", + "id": "d86fdf0d67bf76dc427aabd2e53e0a97", + "insert": "", + "longdesc": "", + "meta_description": "", + "meta_keywords": "", + "oxobject": [], + "selfLinks": { + "de": "Bekleidung\/Sportswear\/Neopren\/oxid\/", + "en": "en\/Gear\/Sportswear\/Neoprene\/Shoes\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "sort": 3010102, + "subcategories": [ + "d86fdf0d67bf76dc427aabd2e53e0a97" + ], + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "category" + }, + { + "id": "fad181ad64642b955becd0759345161e", + "sequence": 15, + "deleted": false, + "data": { + "active": true, + "category_title": "Fashion", + "depth": 2, + "es_id": "", + "hidden": false, + "hierarchy": "30e44ab83fdee7564.23264141\/\/fad181ad64642b955becd0759345161e", + "id": "fad181ad64642b955becd0759345161e", + "insert": "", + "longdesc": "", + "meta_description": "", + "meta_keywords": "", + "oxobject": [], + "selfLinks": { + "de": "Bekleidung\/Fashion\/", + "en": "en\/Gear\/Fashion\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "sort": 302, + "subcategories": [ + "fad181ad64642b955becd0759345161e" + ], + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "category" + }, + { + "id": "fad2a9b0037b71ff1107ae725aae8d1c", + "sequence": 16, + "deleted": false, + "data": { + "active": true, + "category_title": "Various", + "depth": 3, + "es_id": "", + "hidden": false, + "hierarchy": "30e44ab83fdee7564.23264141\/\/fad569d6659caca39bc93e98d13dd58b\/\/fad2a9b0037b71ff1107ae725aae8d1c", + "id": "fad2a9b0037b71ff1107ae725aae8d1c", + "insert": "", + "longdesc": "", + "meta_description": "", + "meta_keywords": "", + "oxobject": [], + "selfLinks": { + "de": "Bekleidung\/Sportswear\/oxid\/", + "en": "en\/Gear\/Sportswear\/Various\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "sort": 30102, + "subcategories": [ + "fad2a9b0037b71ff1107ae725aae8d1c" + ], + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "category" + }, + { + "id": "fad2d80baf7aca6ac54e819e066f24aa", + "sequence": 17, + "deleted": false, + "data": { + "active": true, + "category_title": "Neoprene", + "depth": 3, + "es_id": "", + "hidden": false, + "hierarchy": "30e44ab83fdee7564.23264141\/\/fad569d6659caca39bc93e98d13dd58b\/\/fad2d80baf7aca6ac54e819e066f24aa", + "id": "fad2d80baf7aca6ac54e819e066f24aa", + "insert": "", + "longdesc": "", + "meta_description": "", + "meta_keywords": "", + "oxobject": [], + "selfLinks": { + "de": "Bekleidung\/Sportswear\/Neopren\/", + "en": "en\/Gear\/Sportswear\/Neoprene\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "sort": 30101, + "subcategories": [ + "fad2d80baf7aca6ac54e819e066f24aa" + ], + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "category" + }, + { + "id": "fad4d7e2b47d87bb6a2773d93d4ae9be", + "sequence": 18, + "deleted": false, + "data": { + "active": true, + "category_title": "Accessories", + "depth": 3, + "es_id": "", + "hidden": false, + "hierarchy": "30e44ab83fdee7564.23264141\/\/fad181ad64642b955becd0759345161e\/\/fad4d7e2b47d87bb6a2773d93d4ae9be", + "id": "fad4d7e2b47d87bb6a2773d93d4ae9be", + "insert": "", + "longdesc": "", + "meta_description": "", + "meta_keywords": "", + "oxobject": [], + "selfLinks": { + "de": "Bekleidung\/Fashion\/Accessoires\/", + "en": "en\/Gear\/Fashion\/Accessories\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "sort": 30203, + "subcategories": [ + "fad4d7e2b47d87bb6a2773d93d4ae9be" + ], + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "category" + }, + { + "id": "fad569d6659caca39bc93e98d13dd58b", + "sequence": 19, + "deleted": false, + "data": { + "active": true, + "category_title": "Sportswear", + "depth": 2, + "es_id": "", + "hidden": false, + "hierarchy": "30e44ab83fdee7564.23264141\/\/fad569d6659caca39bc93e98d13dd58b", + "id": "fad569d6659caca39bc93e98d13dd58b", + "insert": "", + "longdesc": "", + "meta_description": "", + "meta_keywords": "", + "oxobject": [], + "selfLinks": { + "de": "Bekleidung\/Sportswear\/", + "en": "en\/Gear\/Sportswear\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "sort": 301, + "subcategories": [ + "fad569d6659caca39bc93e98d13dd58b" + ], + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "category" + }, + { + "id": "fad7facadcb7d4297f033d242aa0d310", + "sequence": 20, + "deleted": false, + "data": { + "active": true, + "category_title": "For Him", + "depth": 3, + "es_id": "", + "hidden": false, + "hierarchy": "30e44ab83fdee7564.23264141\/\/fad181ad64642b955becd0759345161e\/\/fad7facadcb7d4297f033d242aa0d310", + "id": "fad7facadcb7d4297f033d242aa0d310", + "insert": "", + "longdesc": "", + "meta_description": "", + "meta_keywords": "", + "oxobject": [], + "selfLinks": { + "de": "Bekleidung\/Fashion\/Fuer-Ihn\/", + "en": "en\/Gear\/Fashion\/For-Him\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "sort": 30202, + "subcategories": [ + "fad7facadcb7d4297f033d242aa0d310" + ], + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "category" + }, + { + "id": "fada9485f003c731b7fad08b873214e0", + "sequence": 21, + "deleted": false, + "data": { + "active": true, + "category_title": "Suits", + "depth": 4, + "es_id": "", + "hidden": false, + "hierarchy": "30e44ab83fdee7564.23264141\/\/fad569d6659caca39bc93e98d13dd58b\/\/fad2d80baf7aca6ac54e819e066f24aa\/\/fada9485f003c731b7fad08b873214e0", + "id": "fada9485f003c731b7fad08b873214e0", + "insert": "", + "longdesc": "", + "meta_description": "", + "meta_keywords": "", + "oxobject": [], + "selfLinks": { + "de": "Bekleidung\/Sportswear\/Neopren\/Anzuege\/", + "en": "en\/Gear\/Sportswear\/Neoprene\/Suits\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "sort": 3010101, + "subcategories": [ + "fada9485f003c731b7fad08b873214e0" + ], + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "category" + }, + { + "id": "fadbdb3145458afc5aa4dbf7eb906761", + "sequence": 22, + "deleted": false, + "data": { + "active": true, + "category_title": "For Her", + "depth": 3, + "es_id": "", + "hidden": false, + "hierarchy": "30e44ab83fdee7564.23264141\/\/fad181ad64642b955becd0759345161e\/\/fadbdb3145458afc5aa4dbf7eb906761", + "id": "fadbdb3145458afc5aa4dbf7eb906761", + "insert": "", + "longdesc": "", + "meta_description": "", + "meta_keywords": "", + "oxobject": [], + "selfLinks": { + "de": "Bekleidung\/Fashion\/Fuer-Sie\/", + "en": "en\/Gear\/Fashion\/For-Her\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "sort": 30201, + "subcategories": [ + "fadbdb3145458afc5aa4dbf7eb906761" + ], + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "category" + }, + { + "id": "fadcb6dd70b9f6248efa425bd159684e", + "sequence": 23, + "deleted": false, + "data": { + "active": true, + "category_title": "Special Offers", + "depth": 1, + "es_id": "", + "hidden": false, + "hierarchy": "fadcb6dd70b9f6248efa425bd159684e", + "id": "fadcb6dd70b9f6248efa425bd159684e", + "insert": "", + "longdesc": "", + "meta_description": "", + "meta_keywords": "", + "oxobject": [], + "selfLinks": { + "de": "Angebote\/", + "en": "en\/Special-Offers\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "sort": 4, + "subcategories": [ + "fadcb6dd70b9f6248efa425bd159684e" + ], + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "category" + }, + { + "id": "fc7e7bd8403448f00a363f60f44da8f2", + "sequence": 24, + "deleted": false, + "data": { + "active": true, + "category_title": "Supplies", + "depth": 2, + "es_id": "", + "hidden": false, + "hierarchy": "943a9ba3050e78b443c16e043ae60ef3\/\/fc7e7bd8403448f00a363f60f44da8f2", + "id": "fc7e7bd8403448f00a363f60f44da8f2", + "insert": "", + "longdesc": "", + "meta_description": "", + "meta_keywords": "", + "oxobject": [], + "selfLinks": { + "de": "Kiteboarding\/Zubehoer\/", + "en": "en\/Kiteboarding\/Supplies\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "sort": 104, + "subcategories": [ + "fc7e7bd8403448f00a363f60f44da8f2" + ], + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "category" + }, + { + "id": "oia9ff5c96f1f29d527b61202ece0829", + "sequence": 25, + "deleted": false, + "data": { + "active": true, + "category_title": "Downloads", + "depth": 1, + "es_id": "", + "hidden": false, + "hierarchy": "oia9ff5c96f1f29d527b61202ece0829", + "id": "oia9ff5c96f1f29d527b61202ece0829", + "insert": "", + "longdesc": "", + "meta_description": "", + "meta_keywords": "", + "oxobject": [], + "selfLinks": { + "de": "Downloads\/", + "en": "en\/Downloads\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "sort": 5, + "subcategories": [ + "oia9ff5c96f1f29d527b61202ece0829" + ], + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "category" + } + ] +} \ No newline at end of file diff --git a/tests/Integration/Controller/__snapshots__/ee/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--1.json b/tests/Integration/Controller/__snapshots__/ee/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--1.json new file mode 100644 index 0000000..07c7b05 --- /dev/null +++ b/tests/Integration/Controller/__snapshots__/ee/EndpointTest--testFetchChangesFromShop_with_data_set_Changes_in_english--1.json @@ -0,0 +1,1939 @@ +{ + "since": 25, + "count": 29, + "requestedCount": 25, + "changes": [ + { + "id": "3a909e7c886063857e86982c7a3c5b84", + "sequence": 26, + "deleted": false, + "data": { + "active": true, + "es_id": "", + "id": "3a909e7c886063857e86982c7a3c5b84", + "insert": "", + "manufacturer_title": "Mauirippers", + "meta_description": "", + "meta_keywords": "", + "selfLinks": { + "de": "Nach-Hersteller\/Mauirippers\/", + "en": "en\/By-Manufacturer\/Mauirippers\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "manufacturer" + }, + { + "id": "3a97c94553428daed76ba83e54d3876f", + "sequence": 27, + "deleted": false, + "data": { + "active": true, + "es_id": "", + "id": "3a97c94553428daed76ba83e54d3876f", + "insert": "", + "manufacturer_title": "Big Matsol", + "meta_description": "", + "meta_keywords": "", + "selfLinks": { + "de": "Nach-Hersteller\/Big-Matsol\/", + "en": "en\/By-Manufacturer\/Big-Matsol\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "manufacturer" + }, + { + "id": "3a9fd0ec4b41d001e770b1d2d7af3e73", + "sequence": 28, + "deleted": false, + "data": { + "active": true, + "es_id": "", + "id": "3a9fd0ec4b41d001e770b1d2d7af3e73", + "insert": "", + "manufacturer_title": "Jucker Hawaii", + "meta_description": "", + "meta_keywords": "", + "selfLinks": { + "de": "Nach-Hersteller\/Jucker-Hawaii\/", + "en": "en\/By-Manufacturer\/Jucker-Hawaii\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "manufacturer" + }, + { + "id": "90a0b84564cde2394491df1c673b6aa0", + "sequence": 29, + "deleted": false, + "data": { + "active": true, + "es_id": "", + "id": "90a0b84564cde2394491df1c673b6aa0", + "insert": "", + "manufacturer_title": "ION", + "meta_description": "", + "meta_keywords": "", + "selfLinks": { + "de": "Nach-Hersteller\/ION\/", + "en": "en\/By-Manufacturer\/ION\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "manufacturer" + }, + { + "id": "90a3eccf9d7121a9ca7d659f29021b7a", + "sequence": 30, + "deleted": false, + "data": { + "active": true, + "es_id": "", + "id": "90a3eccf9d7121a9ca7d659f29021b7a", + "insert": "", + "manufacturer_title": "Cabrinha", + "meta_description": "", + "meta_keywords": "", + "selfLinks": { + "de": "Nach-Hersteller\/Cabrinha\/", + "en": "en\/By-Manufacturer\/Cabrinha\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "manufacturer" + }, + { + "id": "90a8a18dd0cf0e7aec5238f30e1c6106", + "sequence": 31, + "deleted": false, + "data": { + "active": true, + "es_id": "", + "id": "90a8a18dd0cf0e7aec5238f30e1c6106", + "insert": "", + "manufacturer_title": "Naish", + "meta_description": "", + "meta_keywords": "", + "selfLinks": { + "de": "Nach-Hersteller\/Naish\/", + "en": "en\/By-Manufacturer\/Naish\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "manufacturer" + }, + { + "id": "9434afb379a46d6c141de9c9e5b94fcf", + "sequence": 32, + "deleted": false, + "data": { + "active": true, + "es_id": "", + "id": "9434afb379a46d6c141de9c9e5b94fcf", + "insert": "", + "manufacturer_title": "Kuyichi", + "meta_description": "", + "meta_keywords": "", + "selfLinks": { + "de": "Nach-Hersteller\/Kuyichi\/", + "en": "en\/By-Manufacturer\/Kuyichi\/" + }, + "shop": [ + 1 + ], + "shortdesc": "A style conscious brand", + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "manufacturer" + }, + { + "id": "adc566c366db8eaf30c6c124a09e82b3", + "sequence": 33, + "deleted": false, + "data": { + "active": true, + "es_id": "", + "id": "adc566c366db8eaf30c6c124a09e82b3", + "insert": "", + "manufacturer_title": "Core Kiteboarding", + "meta_description": "", + "meta_keywords": "", + "selfLinks": { + "de": "Nach-Hersteller\/Core-Kiteboarding\/", + "en": "en\/By-Manufacturer\/Core-Kiteboarding\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "manufacturer" + }, + { + "id": "adc6df0977329923a6330cc8f3c0a906", + "sequence": 34, + "deleted": false, + "data": { + "active": true, + "es_id": "", + "id": "adc6df0977329923a6330cc8f3c0a906", + "insert": "", + "manufacturer_title": "Liquid Force Kite", + "meta_description": "", + "meta_keywords": "", + "selfLinks": { + "de": "Nach-Hersteller\/Liquid-Force\/", + "en": "en\/By-Manufacturer\/Liquid-Force-Kite\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "manufacturer" + }, + { + "id": "adca51c88a3caa1c7b939fd6a229ae3a", + "sequence": 35, + "deleted": false, + "data": { + "active": false, + "es_id": "", + "id": "adca51c88a3caa1c7b939fd6a229ae3a", + "insert": "", + "manufacturer_title": "RRD", + "meta_description": "", + "meta_keywords": "", + "selfLinks": { + "de": "Nach-Hersteller\/oxid\/", + "en": "en\/By-Manufacturer\/RRD\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "manufacturer" + }, + { + "id": "adca6aa4df3f95b6b46e28d4fc5855ba", + "sequence": 36, + "deleted": false, + "data": { + "active": false, + "es_id": "", + "id": "adca6aa4df3f95b6b46e28d4fc5855ba", + "insert": "", + "manufacturer_title": "Spleene", + "meta_description": "", + "meta_keywords": "", + "selfLinks": { + "de": "Nach-Hersteller\/oxid-oxid\/", + "en": "en\/By-Manufacturer\/Spleene\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "manufacturer" + }, + { + "id": "dc50589ad69b6ec71721b25bdd403171", + "sequence": 37, + "deleted": false, + "data": { + "active": false, + "es_id": "", + "id": "dc50589ad69b6ec71721b25bdd403171", + "insert": "", + "manufacturer_title": "Flysurfer", + "meta_description": "", + "meta_keywords": "", + "selfLinks": { + "de": "Nach-Hersteller\/oxid-oxid-1\/", + "en": "en\/By-Manufacturer\/Flysurfer\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "manufacturer" + }, + { + "id": "dc59459d4d67189182c53ed0e4e777bc", + "sequence": 38, + "deleted": false, + "data": { + "active": false, + "es_id": "", + "id": "dc59459d4d67189182c53ed0e4e777bc", + "insert": "", + "manufacturer_title": "Flyboards", + "meta_description": "", + "meta_keywords": "", + "selfLinks": { + "de": "Nach-Hersteller\/oxid-oxid-2\/", + "en": "en\/By-Manufacturer\/Flyboards\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "manufacturer" + }, + { + "id": "dc5ec524a9aa6175cf7a498d70ce510a", + "sequence": 39, + "deleted": false, + "data": { + "active": true, + "es_id": "", + "id": "dc5ec524a9aa6175cf7a498d70ce510a", + "insert": "", + "manufacturer_title": "NPX", + "meta_description": "", + "meta_keywords": "", + "selfLinks": { + "de": "Nach-Hersteller\/NPX\/", + "en": "en\/By-Manufacturer\/NPX\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "manufacturer" + }, + { + "id": "oiaf6ab7e12e86291e86dd3ff891fe40", + "sequence": 40, + "deleted": false, + "data": { + "active": true, + "es_id": "", + "id": "oiaf6ab7e12e86291e86dd3ff891fe40", + "insert": "", + "manufacturer_title": "O'Reilly", + "meta_description": "", + "meta_keywords": "", + "selfLinks": { + "de": "Nach-Hersteller\/O-Reilly\/", + "en": "en\/By-Manufacturer\/O-Reilly\/" + }, + "shop": [ + 1 + ], + "shortdesc": "", + "timestamp": "XXXX-XX-XX XX:XX:XX", + "url": "X" + }, + "type": "manufacturer" + }, + { + "id": "f4debe0bb00c1ab0fe089a2b03491c63", + "sequence": 41, + "deleted": false, + "data": { + "TRACKING": null, + "active": true, + "activefrom": null, + "activeto": null, + "attributeFloat": [], + "attributeInt": [], + "attributeStr": [], + "category": [ + { + "catid": "0f41a4463b227c437f6e6bf57b1697c4", + "title": "Harnesses", + "shopid": 1, + "pos": 0, + "path": "Kiteboarding\/Harnesses\/" + } + ], + "ean": "1402", + "es_id": "", + "hidden": false, + "id": "f4debe0bb00c1ab0fe089a2b03491c63", + "insert": "XXXX-XX-XX", + "isPseudo": true, + "isVariant": true, + "longdesc": "
\r\n

ION Madtrixx Kite Waist<\/h2><\/div>\r\n

New freestyle harness with a lean cut outline and a neoprene inside airbag. Thanks to the elastic cutaways at the rear part of the harness provides a maximum of flexibility. The new contour form with Wrap Tec guarantees a perfect fit.<\/p>
\r\n

Fitting attributes:<\/strong><\/div>\r\n