custom/plugins/EcoShrinky/src/EcoShrinky.php line 16

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Ecocode\EcoShrinky;
  4. use Doctrine\DBAL\Exception\UniqueConstraintViolationException;
  5. use Shopware\Core\Framework\DataAbstractionLayer\EntityRepositoryInterface;
  6. use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
  7. use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
  8. use Shopware\Core\Framework\Plugin;
  9. use Shopware\Core\Framework\Plugin\Context\InstallContext;
  10. use Shopware\Core\Framework\Plugin\Context\UninstallContext;
  11. use Shopware\Core\System\CustomField\CustomFieldTypes;
  12. class EcoShrinky extends Plugin
  13. {
  14.     const OPTIMIZED_COLUMN_NAME =  'ecoshrinky_optimized';
  15.     public function install(InstallContext $installContext): void
  16.     {
  17.         parent::install($installContext);
  18.         $context       $installContext->getContext();
  19.         try {
  20.             $this->createCustomField($context);
  21.         } catch (UniqueConstraintViolationException $exception) {
  22.           // custom fieldset already present
  23.         }
  24.     }
  25.     public function uninstall(UninstallContext $uninstallContext): void
  26.     {
  27.         parent::uninstall($uninstallContext);
  28.         $context       $uninstallContext->getContext();
  29.         /** @var EntityRepositoryInterface $customFieldSetRepository */
  30.         $customFieldSetRepository $this->container->get('custom_field_set.repository');
  31.         $customFieldSetId $customFieldSetRepository->searchIds(
  32.           (new Criteria())
  33.             ->addFilter(new EqualsFilter('name''ecoshrinky')),
  34.           $context
  35.         )->getIds();
  36.         //Get the Ids from the fetched Entities
  37.         $ids array_map(static function ($id) {
  38.           return ['id' => $id];
  39.         }, $customFieldSetId);
  40.         $customFieldSetRepository->delete($ids$context);
  41.     }
  42.     protected function createCustomField($context): void
  43.     {
  44.         $customFieldSetRepository $this->container->get('custom_field_set.repository');
  45.         $result                   $customFieldSetRepository->create(
  46.             [[
  47.                 'name'         => 'ecoshrinky',
  48.                 'customFields' => [
  49.                     ['name' => self::OPTIMIZED_COLUMN_NAME'type' => CustomFieldTypes::BOOL],
  50.                 ]
  51.             ]], $context
  52.         );
  53.         $result->getEventByEntityName('custom_field_set')->getIds();
  54.     }
  55. }