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

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace db_ProductConfigurator;
  3. use Doctrine\DBAL\Connection;
  4. use Shopware\Core\Framework\Context;
  5. use Shopware\Core\Framework\Plugin;
  6. use Shopware\Core\Framework\Plugin\Context\InstallContext;
  7. use Shopware\Core\Framework\Plugin\Context\UninstallContext;
  8. use Shopware\Core\Framework\Plugin\Context\ActivateContext;
  9. use Shopware\Core\Framework\Plugin\Context\DeactivateContext;
  10. use Shopware\Core\Framework\Plugin\Context\UpdateContext;
  11. use Shopware\Storefront\Framework\ThemeInterface;
  12. use db_ProductConfigurator\Manager\CustomFieldManager;
  13. class db_ProductConfigurator extends Plugin
  14. {
  15.     public function Install(InstallContext $context): void
  16.     {
  17.         parent::Install($context);
  18.         ($this->getCustomFieldManager($context->getContext()))->install();
  19.     }
  20.     /**
  21.      * @param Context $context
  22.      * @return CustomFieldManager
  23.      */
  24.     private function getCustomFieldManager(Context $context): CustomFieldManager
  25.     {
  26.         return new CustomFieldManager(
  27.             $context,
  28.             $this->container->get('custom_field_set.repository'),
  29.             $this->container->get('snippet.repository')
  30.         );
  31.     }
  32.     public function Update(UpdateContext $context): void
  33.     {
  34.         parent::Update($context);
  35.         ($this->getCustomFieldManager($context->getContext()))->install();
  36.     }
  37.     public function activate(ActivateContext $context): void
  38.     {
  39.         parent::activate($context);
  40.     }
  41.     public function deactivate(DeactivateContext $context): void
  42.     {
  43.         parent::deactivate($context);
  44.     }
  45.     public function uninstall(UninstallContext $context): void
  46.     {
  47.         parent::uninstall($context);
  48.         ($this->getCustomFieldManager($context->getContext()))->uninstall();
  49.         if ($context->keepUserData()) {
  50.             return;
  51.         }
  52.         $connection $this->container->get(Connection::class);
  53.         $connection->executeUpdate('DROP TABLE IF EXISTS `db_configurator_manufacturer_relation`');
  54.         $connection->executeUpdate('DROP TABLE IF EXISTS `db_configurator_manufacturer`');
  55.         $connection->executeUpdate('DROP TABLE IF EXISTS `db_configurator_option_relation`');
  56.         $connection->executeUpdate('DROP TABLE IF EXISTS `db_configurator_option_translation`');
  57.         $connection->executeUpdate('DROP TABLE IF EXISTS `db_configurator_option`');
  58.         $connection->executeUpdate('DROP TABLE IF EXISTS `db_configurator_group_relation`');
  59.         $connection->executeUpdate('DROP TABLE IF EXISTS `db_configurator_group_translation`');
  60.         $connection->executeUpdate('DROP TABLE IF EXISTS `db_configurator_group`');
  61.         $connection->executeUpdate('DROP TABLE IF EXISTS `db_configurator_product`');
  62.         $connection->executeUpdate('DROP TABLE IF EXISTS `db_configurator_translation`');
  63.         $connection->executeUpdate('DROP TABLE IF EXISTS `db_configurator`');
  64.         $productAttributesCheck $connection->executeQuery("
  65.             SHOW COLUMNS FROM `product` LIKE 'dbconfigurator'
  66.         ");
  67.         $productAttributesExists = (bool)$productAttributesCheck->rowCount();
  68.         if($productAttributesExists) {
  69.             $connection->executeUpdate('ALTER TABLE `product` DROP COLUMN `dbconfigurator`');
  70.         }
  71.     }
  72. }