custom/plugins/MoorlFoundation/src/MoorlFoundation.php line 11

  1. <?php declare(strict_types=1);
  2. namespace MoorlFoundation;
  3. use Doctrine\DBAL\Connection;
  4. use MoorlFoundation\Core\Service\DataService;
  5. use Shopware\Core\Framework\Plugin;
  6. use Shopware\Core\Framework\Plugin\Context\ActivateContext;
  7. use Shopware\Core\Framework\Plugin\Context\UninstallContext;
  8. class MoorlFoundation extends Plugin
  9. {
  10.     final public const NAME 'MoorlFoundation';
  11.     final public const DATA_CREATED_AT '2001-11-11 11:11:11.111';
  12.     final public const SHOPWARE_TABLES = [];
  13.     final public const INHERITANCES = [];
  14.     final public const PLUGIN_TABLES = [
  15.         'moorl_cms_element_config',
  16.         'moorl_location',
  17.         'moorl_location_cache',
  18.         'moorl_sorting',
  19.         'moorl_sorting_translation',
  20.         'moorl_marker',
  21.         'moorl_client',
  22.     ];
  23.     public function executeComposerCommands(): bool
  24.     {
  25.         return true;
  26.     }
  27.     public function activate(ActivateContext $activateContext): void
  28.     {
  29.         parent::activate($activateContext);
  30.         /* @var $dataService DataService */
  31.         $dataService $this->container->get(DataService::class);
  32.         $dataService->install(self::NAME);
  33.     }
  34.     public function uninstall(UninstallContext $context): void
  35.     {
  36.         parent::uninstall($context);
  37.         if ($context->keepUserData()) {
  38.             return;
  39.         }
  40.         $this->uninstallTrait();
  41.     }
  42.     private function uninstallTrait(): void
  43.     {
  44.         $connection $this->container->get(Connection::class);
  45.         foreach (array_reverse(self::PLUGIN_TABLES) as $table) {
  46.             $sql sprintf('DROP TABLE IF EXISTS `%s`;'$table);
  47.             $connection->executeStatement($sql);
  48.         }
  49.         foreach (array_reverse(self::SHOPWARE_TABLES) as $table) {
  50.             $sql sprintf("DELETE FROM `%s` WHERE `created_at` = '%s';"$tableself::DATA_CREATED_AT);
  51.             try {
  52.                 $connection->executeStatement($sql);
  53.             } catch (\Exception) {
  54.                 continue;
  55.             }
  56.         }
  57.         foreach (self::INHERITANCES as $table => $propertyNames) {
  58.             foreach ($propertyNames as $propertyName) {
  59.                 $sql sprintf("ALTER TABLE `%s` DROP `%s`;"$table$propertyName);
  60.                 try {
  61.                     $connection->executeStatement($sql);
  62.                 } catch (\Exception) {
  63.                     continue;
  64.                 }
  65.             }
  66.         }
  67.     }
  68. }