vendor/store.shopware.com/moorlmagazine/src/MoorlMagazine.php line 14

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace MoorlMagazine;
  3. use Doctrine\DBAL\Connection;
  4. use MoorlCreator\MoorlCreator;
  5. use MoorlFoundation\Core\Service\DataService;
  6. use Shopware\Core\Framework\Plugin;
  7. use Shopware\Core\Framework\Plugin\Context\ActivateContext;
  8. use Shopware\Core\Framework\Plugin\Context\InstallContext;
  9. use Shopware\Core\Framework\Plugin\Context\UninstallContext;
  10. use Symfony\Component\DependencyInjection\ContainerBuilder;
  11. class MoorlMagazine extends Plugin
  12. {
  13.     public const NAME 'MoorlMagazine';
  14.     public const CMS_PAGE_MAGAZINE_ARTICLE_DEFAULT_ID 'b054f7fb8664f8f6da162b2387e9c351';
  15.     public const CMS_PAGE_MAGAZINE_ARTICLE_TOC_ID 'b054f7fb8664f8a6da162b2387e9c351';
  16.     public const DATA_CREATED_AT '2003-03-03 03:02:15.000';
  17.     public const CMS_PAGE_ID '2f649b87fd9341623d4595016ea9e72b';
  18.     public const MAIN_ENTITY 'moorl_magazine_article';
  19.     public const PLUGIN_TABLES = [
  20.         'moorl_magazine_article_tag',
  21.         'moorl_magazine_article_product',
  22.         'moorl_magazine_comment',
  23.         'moorl_magazine_article_category',
  24.         'moorl_magazine_category_translation',
  25.         'moorl_magazine_category',
  26.         'moorl_magazine_article_sales_channel',
  27.         'moorl_magazine_article_translation',
  28.         'moorl_magazine_article',
  29.         'moorl_magazine_author',
  30.         'moorl_magazine_author_translation'
  31.     ];
  32.     public const SHOPWARE_TABLES = [
  33.         'cms_page',
  34.         'cms_page_translation',
  35.         'cms_section',
  36.         'cms_block',
  37.         'cms_slot',
  38.         'category',
  39.         'category_translation',
  40.         'mail_template_type',
  41.         'mail_template_type_translation',
  42.         'mail_template',
  43.         'mail_template_translation',
  44.         'event_action',
  45.         'custom_field_set',
  46.         'media_default_folder',
  47.         'seo_url_template',
  48.         'moorl_sorting',
  49.         'moorl_creator_type',
  50.         'moorl_creator',
  51.     ];
  52.     public function build(ContainerBuilder $container): void
  53.     {
  54.         if (class_exists(MoorlCreator::class)) {
  55.             parent::build($container);
  56.         }
  57.     }
  58.     public function install(InstallContext $context): void
  59.     {
  60.         parent::install($context);
  61.     }
  62.     public function activate(ActivateContext $activateContext): void
  63.     {
  64.         parent::activate($activateContext); // TODO: Change the autogenerated stub
  65.         /* @var $dataService DataService */
  66.         $dataService $this->container->get(DataService::class);
  67.         $dataService->install(self::NAME);
  68.     }
  69.     public function uninstall(UninstallContext $uninstallContext): void
  70.     {
  71.         parent::uninstall($uninstallContext);
  72.         if ($uninstallContext->keepUserData()) {
  73.             return;
  74.         }
  75.         $this->uninstallTrait();
  76.     }
  77.     private function uninstallTrait(): void
  78.     {
  79.         $connection $this->container->get(Connection::class);
  80.         foreach (self::PLUGIN_TABLES as $table) {
  81.             $sql sprintf('SET FOREIGN_KEY_CHECKS=0; DROP TABLE IF EXISTS `%s`;'$table);
  82.             $connection->executeStatement($sql);
  83.         }
  84.         foreach (array_reverse(self::SHOPWARE_TABLES) as $table) {
  85.             $sql sprintf("SET FOREIGN_KEY_CHECKS=0; DELETE FROM `%s` WHERE `created_at` = '%s';"$tableself::DATA_CREATED_AT);
  86.             try {
  87.                 $connection->executeStatement($sql);
  88.             } catch (\Exception $exception) {
  89.                 continue;
  90.             }
  91.         }
  92.     }
  93. }