vendor/dvdw/platform-choice/src/DvdwPlatformChoice.php line 14

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Dvdw\PlatformChoice;
  3. use Doctrine\DBAL\Connection;
  4. use Dvdw\CustomFieldInstaller\System\CustomField\CustomFieldInstaller;
  5. use Dvdw\PlatformChoice\Content\Category\CategoryCustomFields;
  6. use Dvdw\PlatformChoice\System\SalesChannel\SalesChannelCustomFields;
  7. use Shopware\Core\Framework\Context;
  8. use Shopware\Core\Framework\Plugin;
  9. use Shopware\Core\Framework\Plugin\Context\InstallContext;
  10. use Shopware\Core\Framework\Plugin\Context\UninstallContext;
  11. class DvdwPlatformChoice extends Plugin
  12. {
  13.     private ?CustomFieldInstaller $customFieldInstaller null;
  14.     public function postInstall(InstallContext $installContext): void
  15.     {
  16.         parent::postInstall($installContext);
  17.         try {
  18.             $this->createCustomFields($installContext->getContext());
  19.         } catch (\Throwable $e) {
  20.             echo ($e->getMessage()) . PHP_EOL;
  21.         }
  22.     }
  23.     public function uninstall(UninstallContext $uninstallContext): void
  24.     {
  25.         $uninstallContext->setAutoMigrate(false);
  26.         parent::uninstall($uninstallContext);
  27.         if ($uninstallContext->keepUserData()) {
  28.             return;
  29.         }
  30.         $this->deleteCustomFields($uninstallContext->getContext());
  31.         /** @var Connection $connection */
  32.         $connection $this->container->get('Doctrine\DBAL\Connection');
  33.         foreach ($uninstallContext->getMigrationCollection()->getMigrationSteps() as $migrationStep) {
  34.             $migrationStep->updateDestructive($connection);
  35.         }
  36.         $this->removeMigrations();
  37.     }
  38.     private function createCustomFields(Context $context): void
  39.     {
  40.         $this->setCustomFieldInstaller();
  41.         $this->customFieldInstaller->install(
  42.             CategoryCustomFields::SET_NAME,
  43.             CategoryCustomFields::FIELDS,
  44.             $context
  45.         );
  46.         $this->customFieldInstaller->install(
  47.             SalesChannelCustomFields::SET_NAME,
  48.             SalesChannelCustomFields::FIELDS,
  49.             $context
  50.         );
  51.     }
  52.     private function deleteCustomFields(Context $context): void
  53.     {
  54.         $this->setCustomFieldInstaller();
  55.         $this->customFieldInstaller->uninstall(CategoryCustomFields::SET_NAME$context);
  56.         $this->customFieldInstaller->uninstall(SalesChannelCustomFields::SET_NAME$context);
  57.     }
  58.     private function setCustomFieldInstaller(): void
  59.     {
  60.         if (isset($this->customFieldInstaller)) {
  61.             return;
  62.         }
  63.         $this->customFieldInstaller $this->container->get(
  64.             'Dvdw\CustomFieldInstaller\System\CustomField\CustomFieldInstaller'
  65.         );
  66.     }
  67. }