custom/plugins/SisiBlog6/src/SisiBlog6.php line 20

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Sisi\Blog6;
  4. use Shopware\Core\Framework\Plugin;
  5. use Shopware\Core\Framework\Plugin\Context\ActivateContext;
  6. use Shopware\Core\Framework\Plugin\Context\DeactivateContext;
  7. use Shopware\Core\Framework\Plugin\Context\InstallContext;
  8. use Shopware\Core\Framework\Plugin\Context\UpdateContext;
  9. use Shopware\Core\Framework\Plugin\Context\UninstallContext;
  10. use Shopware\Core\Framework\Api\Controller\SyncController;
  11. /**
  12.  * Class SisiBlog6
  13.  *
  14.  * @package Sisi\Blog6
  15.  */
  16. class SisiBlog6 extends Plugin
  17. {
  18.     /**
  19.      * @var ActivationDataService
  20.      */
  21.     private $activationDataService;
  22.     /**
  23.      * @var DeactivationDataService
  24.      */
  25.     private $deactivationDataService;
  26.     public function activate(ActivateContext $context): void
  27.     {
  28.         $context->setAutoMigrate(false);
  29.         $this->activationDataService->generate($context->getContext());
  30.     }
  31.     public function deactivate(DeactivateContext $context): void
  32.     {
  33.         $context->setAutoMigrate(false);
  34.         $this->deactivationDataService->generate($context->getContext());
  35.     }
  36.     public function install(InstallContext $context): void
  37.     {
  38.         $context->setAutoMigrate(false);
  39.         $migrationCollection $context->getMigrationCollection();
  40.         $migrationCollection->migrateInPlace();
  41.     }
  42.     public function update(UpdateContext $context): void
  43.     {
  44.         $context->setAutoMigrate(false);
  45.         $migrationCollection $context->getMigrationCollection();
  46.         $migrationCollection->migrateInPlace();
  47.     }
  48.     public function uninstall(UninstallContext $context): void
  49.     {
  50.         $context->setAutoMigrate(false);
  51.         if (!$context->keepUserData()) {
  52.             // Get required services for UninstallDataService
  53.             /** @var \Shopware\Core\Framework\Api\Controller\SyncController $syncController */
  54.             $syncController $this->container->get('Shopware\Core\Framework\Api\Controller\SyncController');
  55.             // Configure uninstall data providers
  56.             $dataProviders $this->uninstallDataProviders();
  57.             // Run uninstall data service
  58.             $uninstallDataService = new UninstallDataService($syncController$dataProviders);
  59.             $uninstallDataService->generate($context->getContext());
  60.             $migrationCollection $context->getMigrationCollection();
  61.             $migrationCollection->migrateDestructiveInPlace();
  62.         }
  63.     }
  64.     /**
  65.      * @return iterable<\Sisi\Blog6\UninstallDataProvider\UninstallDataProvider>
  66.      */
  67.     public function uninstallDataProviders(): iterable
  68.     {
  69.         // Get reguired services for UninstallDataProvider
  70.         /** @var \Doctrine\DBAL\Connection $connection */
  71.         $connection $this->container->get('Doctrine\DBAL\Connection');
  72.         return [
  73.             new \Sisi\Blog6\UninstallDataProvider\CategoryProvider($connection)
  74.         ];
  75.     }
  76.     /**
  77.      * @required
  78.      */
  79.     public function setActivationDataService(ActivationDataService $activationDataService): void
  80.     {
  81.         $this->activationDataService $activationDataService;
  82.     }
  83.     /**
  84.      * @required
  85.      */
  86.     public function setDeactivationDataService(DeactivationDataService $deactivationDataService): void
  87.     {
  88.         $this->deactivationDataService $deactivationDataService;
  89.     }
  90. }