custom/plugins/FourtwosixThemeExtension/src/FourtwosixThemeExtension.php line 15

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace FourtwosixThemeExtension;
  3. use FourtwosixThemeExtension\Constant\Constant;
  4. use FourtwosixThemeExtension\Constant\CustomFields;
  5. use Shopware\Core\Content\Product\ProductDefinition;
  6. use Shopware\Core\Framework\DataAbstractionLayer\EntityRepositoryInterface;
  7. use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
  8. use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
  9. use Shopware\Core\Framework\Plugin;
  10. use Shopware\Core\Framework\Plugin\Context\InstallContext;
  11. use Shopware\Core\Framework\Uuid\Uuid;
  12. class FourtwosixThemeExtension extends Plugin
  13. {
  14.     public const TEMPLATE_TYPE_NAME_PRODUCT_ON_REQUEST 'FTS - Product on request';
  15.     public const TEMPLATE_TYPE_TECHNICAL_NAME_PRODUCT_ON_REQUEST 'fts_product_on_request';
  16.     public const MAIL_TEMPLATE_NAME_MAIL_MISSING 'Missing mail warning e-mail';
  17.     public function update(InstallContext $installContext): void
  18.     {
  19.         /** @var EntityRepositoryInterface $mailTemplateTypeRepository */
  20.         $mailTemplateTypeRepository $this->container->get('mail_template_type.repository');
  21.         $criteria = new Criteria();
  22.         $criteria->addFilter(new EqualsFilter('technicalName'self::TEMPLATE_TYPE_TECHNICAL_NAME_PRODUCT_ON_REQUEST));
  23.         $baseEmail $mailTemplateTypeRepository->search($criteria$installContext->getContext())->first();
  24.         // Create only the first time
  25.         if (!$baseEmail) {
  26.             $missingMailTemplateType = [
  27.                 [
  28.                     'id' => Uuid::randomHex(),
  29.                     'name' => self::TEMPLATE_TYPE_NAME_PRODUCT_ON_REQUEST,
  30.                     'technicalName' => self::TEMPLATE_TYPE_TECHNICAL_NAME_PRODUCT_ON_REQUEST,
  31.                     'availableEntities' => [],
  32.                     'templateData' => [],
  33.                 ],
  34.             ];
  35.             $mailTemplateTypeRepository->create($missingMailTemplateType$installContext->getContext());
  36.         }
  37.         // Importing custom fields
  38.         /** @var EntityRepositoryInterface $customFieldsSetRepository */
  39.         $customFieldsSetRepository $this->container->get('custom_field_set.repository');
  40.         $setCriteria = new Criteria();
  41.         $setCriteria->addFilter(new EqualsFilter('name'Constant::FTS_MAIN_NAME));
  42.         $customFieldsSetResult $customFieldsSetRepository->search($setCriteria,
  43.             $installContext->getContext())->first();
  44.         // Create custom fields only if they have not already been created or if the set is created but the CF not
  45.         if (!$customFieldsSetResult) {
  46.             $customFieldsSetRepository->create([
  47.                 $this->createProcuctCF(),
  48.             ], $installContext->getContext());
  49.         }
  50.     }
  51.     /**
  52.      * @return array
  53.      */
  54.     protected function createProcuctCF(): array
  55.     {
  56.         return [
  57.             'name' => Constant::FTS_MAIN_NAME,
  58.             'config' => [
  59.                 'label' => [
  60.                     'en-GB' => 'Akeneo values',
  61.                     'de-DE' => 'Akeneo values',
  62.                     'it-IT' => 'Akeneo values',
  63.                 ],
  64.             ],
  65.             'customFields' => [
  66.                 CustomFields::ARTIKELHERSTELLERBARCODE,
  67.                 CustomFields::ARTIKELHERSTELLEREANGTIN,
  68.                 CustomFields::PACKPALLETMENGE,
  69.                 CustomFields::PACKPALLETMENGEEINHEIT,
  70.                 CustomFields::PREISVERSANDGRUPPE,
  71.                 CustomFields::STATUSINSHOPBESTELLBAR,
  72.                 CustomFields::STATUSINSHOPPREISZEIGEN,
  73.                 CustomFields::AARTIKELSTATUS,
  74.                 CustomFields::STATUSAUFANFRAGELIEFERANT,
  75.                 CustomFields::STATUSLOESCHEN,
  76.                 CustomFields::PACKBOXKG,
  77.                 CustomFields::PACKBOXM,
  78.                 CustomFields::PACKBOXM2,
  79.                 CustomFields::PACKBOXSTK,
  80.                 CustomFields::ZA08_WEIGHT,
  81.                 CustomFields::DIMBREITE,
  82.                 CustomFields::DIMHOEHE,
  83.                 CustomFields::DIMLAENGE,
  84.             ],
  85.             'relations' => [
  86.                 [
  87.                     'id' => Uuid::randomHex(),
  88.                     'customFieldSetId' => Uuid::randomHex(),
  89.                     'entityName' => ProductDefinition::ENTITY_NAME,
  90.                 ],
  91.             ],
  92.         ];
  93.     }
  94. }