custom/plugins/RhiemNextMassMail/src/RhiemNextMassMail.php line 11

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace RhiemMassMail;
  3. use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
  4. use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
  5. use Shopware\Core\Framework\Plugin;
  6. use Shopware\Core\Framework\Plugin\Context\InstallContext;
  7. use Shopware\Core\Framework\Plugin\Context\UninstallContext;
  8. class RhiemNextMassMail extends Plugin
  9. {
  10.     public function install(InstallContext $installContext): void
  11.     {
  12.         $context = $installContext->getContext();
  13.         $languageRepo = $this->container->get('language.repository');
  14.         $mailTemplateTypeRepo = $this->getMailTemplateTypeRepo();
  15.         $criteria = new Criteria();
  16.         $criteria->addFilter(new EqualsFilter('name', 'English'));
  17.         $english = $languageRepo->search($criteria, $context);
  18.         $criteria = new Criteria();
  19.         $criteria->addFilter(new EqualsFilter('name', 'Deutsch'));
  20.         $german = $languageRepo->search($criteria, $context);
  21.         if ($english->getTotal() > 0 && $german->getTotal() > 0) {
  22.             $translation = [$english->first()->getId() => 'Massmail', $german->first()->getId() => 'Massenmail'];
  23.         } else {
  24.             $translation = 'Massmail';
  25.         }
  26.         $mailTemplateTypeRepo->create([
  27.             [
  28.                 'technicalName' => 'mass_mail',
  29.                 'availableEntities' => $this->availableEntities(),
  30.                 'name' => $translation
  31.             ]
  32.         ],
  33.             $context
  34.         );
  35.     }
  36.     public function uninstall(UninstallContext $uninstallContext): void
  37.     {
  38.         $context = $uninstallContext->getContext();
  39.         $mailTemplateTypeRepo = $this->getMailTemplateTypeRepo();
  40.         $mailTemplateRepo = $this->container->get('mail_template.repository');
  41.         $criteria = new Criteria();
  42.         $criteria->addFilter(new EqualsFilter(
  43.             'technicalName',
  44.             'mass_mail'
  45.         ));
  46.         $massMailType = $mailTemplateTypeRepo->search($criteria, $context);
  47.         $id = $massMailType->first()->getId();
  48.         $criteria = new Criteria();
  49.         $criteria->addFilter(new EqualsFilter(
  50.             'mailTemplateTypeId',
  51.             $id
  52.         ));
  53.         $massMailTemplateIds = [];
  54.         foreach ($mailTemplateRepo->searchIds($criteria, $context)->getIds() as $templateId) {
  55.             $massMailTemplateIds[] = ['id' => $templateId];
  56.         }
  57.         if (!empty($massMailTemplateIds)) {
  58.             $mailTemplateRepo->delete($massMailTemplateIds,
  59.                 $context
  60.             );
  61.         }
  62.         $mailTemplateTypeRepo->delete([
  63.             [
  64.                 'id' => $id
  65.             ]
  66.         ],
  67.             $context
  68.         );
  69.     }
  70.     private function getMailTemplateTypeRepo()
  71.     {
  72.         return $this->container->get('mail_template_type.repository');
  73.     }
  74.     private function availableEntities()
  75.     {
  76.         return json_decode('{"customer":"customer","salesChannel":"sales_channel"}', true);
  77.     }
  78. }