custom/plugins/TmmsCmsElementPeriodRequestForm/src/TmmsCmsElementPeriodRequestForm.php line 18

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Tmms\CmsElementPeriodRequestForm;
  4.     use Doctrine\DBAL\Connection;
  5.     use Doctrine\DBAL\Exception\UniqueConstraintViolationException;
  6.     use Shopware\Core\Content\MailTemplate\Aggregate\MailTemplateType\MailTemplateTypeEntity;
  7.     use Shopware\Core\Defaults;
  8.     use Shopware\Core\Framework\DataAbstractionLayer\EntityRepositoryInterface;
  9.     use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
  10.     use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
  11.     use Shopware\Core\Framework\Plugin;
  12.     use Shopware\Core\Framework\Plugin\Context\InstallContext;
  13.     use Shopware\Core\Framework\Plugin\Context\UninstallContext;
  14.     use Shopware\Core\Framework\Uuid\Uuid;
  15.     class TmmsCmsElementPeriodRequestForm extends Plugin
  16.     {
  17.         public const TEMPLATE_TYPE_NAME_DE 'Anfrageformular';
  18.         public const TEMPLATE_TYPE_NAME_EN 'request form';
  19.         public const TEMPLATE_TYPE_TECHNICAL_NAME 'tmms_request_form';
  20.         public function install(InstallContext $installContext): void
  21.         {
  22.             $this->addMailTemplate($installContext->getContext());
  23.             parent::install($installContext);
  24.         }
  25.         private function addMailTemplate($installContext){
  26.             /** @var EntityRepositoryInterface $mailTemplateTypeRepository */
  27.             $mailTemplateTypeRepository $this->container->get('mail_template_type.repository');
  28.             /** @var EntityRepositoryInterface $mailTemplateRepository */
  29.             $mailTemplateRepository $this->container->get('mail_template.repository');
  30.             $mailTemplateTypeId Uuid::randomHex();
  31.             $mailTemplateType = [
  32.                 [
  33.                     'id' => $mailTemplateTypeId,
  34.                     'name' => [
  35.                         'en-GB' => self::TEMPLATE_TYPE_NAME_EN,
  36.                         'de-DE' => self::TEMPLATE_TYPE_NAME_DE,
  37.                         Defaults::LANGUAGE_SYSTEM => self::TEMPLATE_TYPE_NAME_EN,
  38.                     ],
  39.                     'technicalName' => self::TEMPLATE_TYPE_TECHNICAL_NAME,
  40.                     'availableEntities' => [
  41.                         'salesChannel' => 'sales_channel',
  42.                     ],
  43.                 ],
  44.             ];
  45.             $mailTemplate = [
  46.                 [
  47.                     'id' => Uuid::randomHex(),
  48.                     'mailTemplateTypeId' => $mailTemplateTypeId,
  49.                     'subject' => [
  50.                         'en-GB' => 'request form received - {{ salesChannel.name }}',
  51.                         'de-DE' => 'Anfrage erhalten - {{ salesChannel.name }}',
  52.                         Defaults::LANGUAGE_SYSTEM => 'request form received - {{ salesChannel.name }}',
  53.                     ],
  54.                     'description' => [
  55.                         'en-GB' => self::TEMPLATE_TYPE_NAME_EN,
  56.                         'de-DE' => self::TEMPLATE_TYPE_NAME_DE,
  57.                         Defaults::LANGUAGE_SYSTEM => self::TEMPLATE_TYPE_NAME_EN,
  58.                     ],
  59.                     'senderName' => [
  60.                         'en-GB' => '{{ salesChannel.name }}',
  61.                         'de-DE' => '{{ salesChannel.name }}',
  62.                         Defaults::LANGUAGE_SYSTEM => '{{ salesChannel.name }}',
  63.                     ],
  64.                     'contentPlain' => [
  65.                         'en-GB' => "Hello, following data were transmitted.\n\nOrigin: {{ periodRequestFormData.origin }} \nOrigin value: {{ periodRequestFormData.originName }} ({{ periodRequestFormData.originId }}) \n{% if periodRequestFormData.salutation != \"\" %}Salutation: {{ periodRequestFormData.salutation }} \n{% endif %}{% if periodRequestFormData.firstname != \"\" %}Firstname: {{ periodRequestFormData.firstname }} \n{% endif %}{% if periodRequestFormData.lastname != \"\" %}Lastname: {{ periodRequestFormData.lastname }} \n{% endif %}{% if periodRequestFormData.street != \"\" %}Street address: {{ periodRequestFormData.street }} \n{% endif %}{% if periodRequestFormData.zipcode != \"\" %}Postal code: {{ periodRequestFormData.zipcode }} \n{% endif %}{% if periodRequestFormData.city != \"\" %}City: {{ periodRequestFormData.city }} \n{% endif %}{% if periodRequestFormData.country != \"\" %}Country: {{ periodRequestFormData.country }} \n{% endif %}{% if periodRequestFormData.email != \"\" %}Mail: {{ periodRequestFormData.email }} \n{% endif %}{% if periodRequestFormData.phone != \"\" %}Phone: {{ periodRequestFormData.phone }} \n{% endif %}{% if periodRequestFormData.comment != \"\" %}Comment: {{ periodRequestFormData.comment }} \n{% endif %}{% if periodRequestFormData.date != \"\" %}Period: {{ periodRequestFormData.date }}\n{% endif %}{% if periodRequestFormData.freeInput != \"\" %}{{ periodRequestFormData.freeInputLabel }}: {{ periodRequestFormData.freeInput }}\n{% endif %}{% if periodRequestFormData.freeInput2 != \"\" %}{{ periodRequestFormData.freeInput2Label }}: {{ periodRequestFormData.freeInput2 }}\n{% endif %}{% if periodRequestFormData.freeInput3 != \"\" %}{{ periodRequestFormData.freeInput3Label }}: {{ periodRequestFormData.freeInput3 }}\n{% endif %}{% if periodRequestFormData.freeInput4 != \"\" %}{{ periodRequestFormData.freeInput4Label }}: {{ periodRequestFormData.freeInput4 }}\n{% endif %}\nKind Regards,\nYours",
  66.                         'de-DE' => "Hallo, die nachfolgenden Daten wurden übermittelt.\n\nHerkunft: {{ periodRequestFormData.origin }} \nHerkunftswert: {{ periodRequestFormData.originName }} ({{ periodRequestFormData.originId }}) \n{% if periodRequestFormData.salutation != \"\" %}Anrede: {{ periodRequestFormData.salutation }} \n{% endif %}{% if periodRequestFormData.firstname != \"\" %}Vorname: {{ periodRequestFormData.firstname }} \n{% endif %}{% if periodRequestFormData.lastname != \"\" %}Nachname: {{ periodRequestFormData.lastname }} \n{% endif %}{% if periodRequestFormData.street != \"\" %}Straße: {{ periodRequestFormData.street }} \n{% endif %}{% if periodRequestFormData.zipcode != \"\" %}Postleitzahl: {{ periodRequestFormData.zipcode }} \n{% endif %}{% if periodRequestFormData.city != \"\" %}Ort: {{ periodRequestFormData.city }} \n{% endif %}{% if periodRequestFormData.country != \"\" %}Land: {{ periodRequestFormData.country }} \n{% endif %}{% if periodRequestFormData.email != \"\" %}E-Mail: {{ periodRequestFormData.email }} \n{% endif %}{% if periodRequestFormData.phone != \"\" %}Telefon: {{ periodRequestFormData.phone }} \n{% endif %}{% if periodRequestFormData.comment != \"\" %}Kommentar: {{ periodRequestFormData.comment }} \n{% endif %}{% if periodRequestFormData.date != \"\" %}Zeitraum: {{ periodRequestFormData.date }}\n{% endif %}{% if periodRequestFormData.freeInput != \"\" %}{{ periodRequestFormData.freeInputLabel }}: {{ periodRequestFormData.freeInput }}\n{% endif %}{% if periodRequestFormData.freeInput2 != \"\" %}{{ periodRequestFormData.freeInput2Label }}: {{ periodRequestFormData.freeInput2 }}\n{% endif %}{% if periodRequestFormData.freeInput3 != \"\" %}{{ periodRequestFormData.freeInput3Label }}: {{ periodRequestFormData.freeInput3 }}\n{% endif %}{% if periodRequestFormData.freeInput4 != \"\" %}{{ periodRequestFormData.freeInput4Label }}: {{ periodRequestFormData.freeInput4 }}\n{% endif %}\nViele Grüße,\nIhr",
  67.                         Defaults::LANGUAGE_SYSTEM => "Hello, following data were transmitted.\n\nOrigin: {{ periodRequestFormData.origin }} \nOrigin value: {{ periodRequestFormData.originName }} ({{ periodRequestFormData.originId }}) \n{% if periodRequestFormData.salutation != \"\" %}Salutation: {{ periodRequestFormData.salutation }} \n{% endif %}{% if periodRequestFormData.firstname != \"\" %}Firstname: {{ periodRequestFormData.firstname }} \n{% endif %}{% if periodRequestFormData.lastname != \"\" %}Lastname: {{ periodRequestFormData.lastname }} \n{% endif %}{% if periodRequestFormData.street != \"\" %}Street address: {{ periodRequestFormData.street }} \n{% endif %}{% if periodRequestFormData.zipcode != \"\" %}Postal code: {{ periodRequestFormData.zipcode }} \n{% endif %}{% if periodRequestFormData.city != \"\" %}City: {{ periodRequestFormData.city }} \n{% endif %}{% if periodRequestFormData.country != \"\" %}Country: {{ periodRequestFormData.country }} \n{% endif %}{% if periodRequestFormData.email != \"\" %}Mail: {{ periodRequestFormData.email }} \n{% endif %}{% if periodRequestFormData.phone != \"\" %}Phone: {{ periodRequestFormData.phone }} \n{% endif %}{% if periodRequestFormData.comment != \"\" %}Comment: {{ periodRequestFormData.comment }} \n{% endif %}{% if periodRequestFormData.date != \"\" %}Period: {{ periodRequestFormData.date }}\n{% endif %}{% if periodRequestFormData.freeInput != \"\" %}{{ periodRequestFormData.freeInputLabel }}: {{ periodRequestFormData.freeInput }}\n{% endif %}{% if periodRequestFormData.freeInput2 != \"\" %}{{ periodRequestFormData.freeInput2Label }}: {{ periodRequestFormData.freeInput2 }}\n{% endif %}{% if periodRequestFormData.freeInput3 != \"\" %}{{ periodRequestFormData.freeInput3Label }}: {{ periodRequestFormData.freeInput3 }}\n{% endif %}{% if periodRequestFormData.freeInput4 != \"\" %}{{ periodRequestFormData.freeInput4Label }}: {{ periodRequestFormData.freeInput4 }}\n{% endif %}\nKind Regards,\nYours",
  68.                     ],
  69.                     'contentHtml' => [
  70.                         'en-GB' => '<div style="font-size:12px;">Hello,<br>the following data were transmitted.<br/><br/>Origin: {{ periodRequestFormData.origin }}<br/>Origin value: {{ periodRequestFormData.originName }} ({{ periodRequestFormData.originId }})<br/>{% if periodRequestFormData.salutation != "" %}Salutation: {{ periodRequestFormData.salutation }}<br/>{% endif %}{% if periodRequestFormData.firstname != "" %}Firstname: {{ periodRequestFormData.firstname }}<br/>{% endif %}{% if periodRequestFormData.lastname != "" %}Lastname: {{ periodRequestFormData.lastname }}<br/>{% endif %}{% if periodRequestFormData.street != "" %}Street address: {{ periodRequestFormData.street }}<br/>{% endif %}{% if periodRequestFormData.zipcode != "" %}Postal code: {{ periodRequestFormData.zipcode }}<br/>{% endif %}{% if periodRequestFormData.city != "" %}City: {{ periodRequestFormData.city }}<br/>{% endif %}{% if periodRequestFormData.country != "" %}Country: {{ periodRequestFormData.country }}<br/>{% endif %}{% if periodRequestFormData.email != "" %}Mail: {{ periodRequestFormData.email }}<br/>{% endif %}{% if periodRequestFormData.phone != "" %}Phone: {{ periodRequestFormData.phone }}<br/>{% endif %}{% if periodRequestFormData.comment != "" %}Comment: {{ periodRequestFormData.comment }}<br/>{% endif %}{% if periodRequestFormData.date != "" %}Period: {{ periodRequestFormData.date }}<br/>{% endif %}{% if periodRequestFormData.freeInput != "" %}{{ periodRequestFormData.freeInputLabel }}: {{ periodRequestFormData.freeInput }}<br/>{% endif %}{% if periodRequestFormData.freeInput2 != "" %}{{ periodRequestFormData.freeInput2Label }}: {{ periodRequestFormData.freeInput2 }}<br/>{% endif %}{% if periodRequestFormData.freeInput3 != "" %}{{ periodRequestFormData.freeInput3Label }}: {{ periodRequestFormData.freeInput3 }}<br/>{% endif %}{% if periodRequestFormData.freeInput4 != "" %}{{ periodRequestFormData.freeInput4Label }}: {{ periodRequestFormData.freeInput4 }}<br/>{% endif %}<br/>Kind Regards,<br/>Yours</div>',
  71.                         'de-DE' => '<div style="font-size:12px;">Hallo,<br>die nachfolgenden Daten wurden übermittelt.<br/><br/>Herkunft: {{ periodRequestFormData.origin }}<br/>Herkunftswert: {{ periodRequestFormData.originName }} ({{ periodRequestFormData.originId }})<br/>{% if periodRequestFormData.salutation != "" %}Anrede: {{ periodRequestFormData.salutation }}<br/>{% endif %}{% if periodRequestFormData.firstname != "" %}Vorname: {{ periodRequestFormData.firstname }}<br/>{% endif %}{% if periodRequestFormData.lastname != "" %}Nachname: {{ periodRequestFormData.lastname }}<br/>{% endif %}{% if periodRequestFormData.street != "" %}Straße: {{ periodRequestFormData.street }}<br/>{% endif %}{% if periodRequestFormData.zipcode != "" %}Postleitzahl: {{ periodRequestFormData.zipcode }}<br/>{% endif %}{% if periodRequestFormData.city != "" %}Ort: {{ periodRequestFormData.city }}<br/>{% endif %}{% if periodRequestFormData.country != "" %}Land: {{ periodRequestFormData.country }}<br/>{% endif %}{% if periodRequestFormData.email != "" %}E-Mail: {{ periodRequestFormData.email }}<br/>{% endif %}{% if periodRequestFormData.phone != "" %}Telefon: {{ periodRequestFormData.phone }}<br/>{% endif %}{% if periodRequestFormData.comment != "" %}Kommentar: {{ periodRequestFormData.comment }}<br/>{% endif %}{% if periodRequestFormData.date != "" %}Zeitraum: {{ periodRequestFormData.date }}<br/>{% endif %}{% if periodRequestFormData.freeInput != "" %}{{ periodRequestFormData.freeInputLabel }}: {{ periodRequestFormData.freeInput }}<br/>{% endif %}{% if periodRequestFormData.freeInput2 != "" %}{{ periodRequestFormData.freeInput2Label }}: {{ periodRequestFormData.freeInput2 }}<br/>{% endif %}{% if periodRequestFormData.freeInput3 != "" %}{{ periodRequestFormData.freeInput3Label }}: {{ periodRequestFormData.freeInput3 }}<br/>{% endif %}{% if periodRequestFormData.freeInput4 != "" %}{{ periodRequestFormData.freeInput4Label }}: {{ periodRequestFormData.freeInput4 }}<br/>{% endif %}<br/>Viele Grüße,<br/>Ihr</div>',
  72.                         Defaults::LANGUAGE_SYSTEM => '<div style="font-size:12px;">Hello,<br>the following data were transmitted.<br/><br/>Origin: {{ periodRequestFormData.origin }}<br/>Origin value: {{ periodRequestFormData.originName }} ({{ periodRequestFormData.originId }})<br/>{% if periodRequestFormData.salutation != "" %}Salutation: {{ periodRequestFormData.salutation }}<br/>{% endif %}{% if periodRequestFormData.firstname != "" %}Firstname: {{ periodRequestFormData.firstname }}<br/>{% endif %}{% if periodRequestFormData.lastname != "" %}Lastname: {{ periodRequestFormData.lastname }}<br/>{% endif %}{% if periodRequestFormData.street != "" %}Street address: {{ periodRequestFormData.street }}<br/>{% endif %}{% if periodRequestFormData.zipcode != "" %}Postal code: {{ periodRequestFormData.zipcode }}<br/>{% endif %}{% if periodRequestFormData.city != "" %}City: {{ periodRequestFormData.city }}<br/>{% endif %}{% if periodRequestFormData.country != "" %}Country: {{ periodRequestFormData.country }}<br/>{% endif %}{% if periodRequestFormData.email != "" %}Mail: {{ periodRequestFormData.email }}<br/>{% endif %}{% if periodRequestFormData.phone != "" %}Phone: {{ periodRequestFormData.phone }}<br/>{% endif %}{% if periodRequestFormData.comment != "" %}Comment: {{ periodRequestFormData.comment }}<br/>{% endif %}{% if periodRequestFormData.date != "" %}Period: {{ periodRequestFormData.date }}<br/>{% endif %}{% if periodRequestFormData.freeInput != "" %}{{ periodRequestFormData.freeInputLabel }}: {{ periodRequestFormData.freeInput }}<br/>{% endif %}{% if periodRequestFormData.freeInput2 != "" %}{{ periodRequestFormData.freeInput2Label }}: {{ periodRequestFormData.freeInput2 }}<br/>{% endif %}{% if periodRequestFormData.freeInput3 != "" %}{{ periodRequestFormData.freeInput3Label }}: {{ periodRequestFormData.freeInput3 }}<br/>{% endif %}{% if periodRequestFormData.freeInput4 != "" %}{{ periodRequestFormData.freeInput4Label }}: {{ periodRequestFormData.freeInput4 }}<br/>{% endif %}<br/>Kind Regards,<br/>Yours</div>',
  73.                     ],
  74.                 ],
  75.             ];
  76.             try {
  77.                 $mailTemplateTypeRepository->create($mailTemplateType$installContext);
  78.                 $mailTemplateRepository->create($mailTemplate$installContext);
  79.             } catch (UniqueConstraintViolationException $exception) {
  80.             }
  81.         }
  82.         public function uninstall(UninstallContext $uninstallContext): void
  83.         {
  84.             if ($uninstallContext->keepUserData()) {
  85.                 parent::uninstall($uninstallContext);
  86.                 return;
  87.             }
  88.             $this->deleteMailTemplate($uninstallContext->getContext());
  89.             parent::uninstall($uninstallContext);
  90.         }
  91.         private function deleteMailTemplate($uninstallContext){
  92.             /** @var EntityRepositoryInterface $mailTemplateTypeRepository */
  93.             $mailTemplateTypeRepository $this->container->get('mail_template_type.repository');
  94.             /** @var EntityRepositoryInterface $mailTemplateRepository */
  95.             $mailTemplateRepository $this->container->get('mail_template.repository');
  96.             /** @var MailTemplateTypeEntity $requestFormMailTemplateType */
  97.             $requestFormMailTemplateType $mailTemplateTypeRepository->search(
  98.                 (new Criteria())->addFilter(new EqualsFilter('technicalName'self::TEMPLATE_TYPE_TECHNICAL_NAME)),
  99.                 $uninstallContext
  100.             )->first();
  101.             $mailTemplateIds $mailTemplateRepository->searchIds(
  102.                 (new Criteria())->addFilter(new EqualsFilter('mailTemplateTypeId'$requestFormMailTemplateType->getId())),
  103.                 $uninstallContext
  104.             )->getIds();
  105.             $ids array_map(static function ($id) { return ['id' => $id]; }, $mailTemplateIds);
  106.             $mailTemplateRepository->delete($ids$uninstallContext);
  107.             $mailTemplateTypeRepository->delete([['id' => $requestFormMailTemplateType->getId()]], $uninstallContext);
  108.             $connection $this->container->get(Connection::class);
  109.             $connection->executeStatement('DROP TABLE IF EXISTS `periodrequestform`');
  110.         }
  111.     }