<?phpdeclare(strict_types=1);namespace Sisi\Blog6;use Shopware\Core\Framework\Plugin;use Shopware\Core\Framework\Plugin\Context\ActivateContext;use Shopware\Core\Framework\Plugin\Context\DeactivateContext;use Shopware\Core\Framework\Plugin\Context\InstallContext;use Shopware\Core\Framework\Plugin\Context\UpdateContext;use Shopware\Core\Framework\Plugin\Context\UninstallContext;use Shopware\Core\Framework\Api\Controller\SyncController;/** * Class SisiBlog6 * * @package Sisi\Blog6 */class SisiBlog6 extends Plugin{ /** * @var ActivationDataService */ private $activationDataService; /** * @var DeactivationDataService */ private $deactivationDataService; public function activate(ActivateContext $context): void { $context->setAutoMigrate(false); $this->activationDataService->generate($context->getContext()); } public function deactivate(DeactivateContext $context): void { $context->setAutoMigrate(false); $this->deactivationDataService->generate($context->getContext()); } public function install(InstallContext $context): void { $context->setAutoMigrate(false); $migrationCollection = $context->getMigrationCollection(); $migrationCollection->migrateInPlace(); } public function update(UpdateContext $context): void { $context->setAutoMigrate(false); $migrationCollection = $context->getMigrationCollection(); $migrationCollection->migrateInPlace(); } public function uninstall(UninstallContext $context): void { $context->setAutoMigrate(false); if (!$context->keepUserData()) { // Get required services for UninstallDataService /** @var \Shopware\Core\Framework\Api\Controller\SyncController $syncController */ $syncController = $this->container->get('Shopware\Core\Framework\Api\Controller\SyncController'); // Configure uninstall data providers $dataProviders = $this->uninstallDataProviders(); // Run uninstall data service $uninstallDataService = new UninstallDataService($syncController, $dataProviders); $uninstallDataService->generate($context->getContext()); $migrationCollection = $context->getMigrationCollection(); $migrationCollection->migrateDestructiveInPlace(); } } /** * @return iterable<\Sisi\Blog6\UninstallDataProvider\UninstallDataProvider> */ public function uninstallDataProviders(): iterable { // Get reguired services for UninstallDataProvider /** @var \Doctrine\DBAL\Connection $connection */ $connection = $this->container->get('Doctrine\DBAL\Connection'); return [ new \Sisi\Blog6\UninstallDataProvider\CategoryProvider($connection) ]; } /** * @required */ public function setActivationDataService(ActivationDataService $activationDataService): void { $this->activationDataService = $activationDataService; } /** * @required */ public function setDeactivationDataService(DeactivationDataService $deactivationDataService): void { $this->deactivationDataService = $deactivationDataService; }}