vendor/dvdw/directory/src/DvdwDirectory.php line 12

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace DvdwDirectory;
  3. use Dvdw\CustomFieldInstaller\System\CustomField\CustomFieldInstaller;
  4. use DvdwDirectory\Content\Category\CategoryCustomFields;
  5. use Shopware\Core\Framework\Context;
  6. use Shopware\Core\Framework\Plugin;
  7. use Shopware\Core\Framework\Plugin\Context\InstallContext;
  8. use Shopware\Core\Framework\Plugin\Context\UninstallContext;
  9. class DvdwDirectory extends Plugin
  10. {
  11.     private ?CustomFieldInstaller $customFieldInstaller null;
  12.     public function postInstall(InstallContext $installContext): void
  13.     {
  14.         parent::postInstall($installContext);
  15.         try {
  16.             $this->createCustomFields($installContext->getContext());
  17.         } catch (\Throwable $e) {
  18.             echo ($e->getMessage()) . PHP_EOL;
  19.         }
  20.     }
  21.     public function uninstall(UninstallContext $uninstallContext): void
  22.     {
  23.         parent::uninstall($uninstallContext);
  24.         if ($uninstallContext->keepUserData()) {
  25.             return;
  26.         }
  27.         $this->deleteCustomFields($uninstallContext->getContext());
  28.     }
  29.     private function createCustomFields(Context $context): void
  30.     {
  31.         $this->setCustomFieldInstaller();
  32.         $this->customFieldInstaller->install(
  33.             CategoryCustomFields::SET_NAME,
  34.             CategoryCustomFields::FIELDS,
  35.             $context
  36.         );
  37.     }
  38.     private function deleteCustomFields(Context $context): void
  39.     {
  40.         $this->setCustomFieldInstaller();
  41.         $this->customFieldInstaller->uninstall(CategoryCustomFields::SET_NAME$context);
  42.     }
  43.     private function setCustomFieldInstaller(): void
  44.     {
  45.         if (isset($this->customFieldInstaller)) {
  46.             return;
  47.         }
  48.         $this->customFieldInstaller $this->container->get(
  49.             'Dvdw\CustomFieldInstaller\System\CustomField\CustomFieldInstaller'
  50.         );
  51.     }
  52. }