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

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Kiener\MolliePayments;
  3. use Exception;
  4. use Kiener\MolliePayments\Compatibility\DependencyLoader;
  5. use Kiener\MolliePayments\Components\Installer\PluginInstaller;
  6. use Kiener\MolliePayments\Service\CustomFieldService;
  7. use Shopware\Core\Framework\Context;
  8. use Shopware\Core\Framework\DataAbstractionLayer\EntityRepositoryInterface;
  9. use Shopware\Core\Framework\Migration\MigrationCollection;
  10. use Shopware\Core\Framework\Plugin;
  11. use Shopware\Core\Framework\Plugin\Context\ActivateContext;
  12. use Shopware\Core\Framework\Plugin\Context\DeactivateContext;
  13. use Shopware\Core\Framework\Plugin\Context\InstallContext;
  14. use Shopware\Core\Framework\Plugin\Context\UninstallContext;
  15. use Shopware\Core\Framework\Plugin\Context\UpdateContext;
  16. use Symfony\Component\DependencyInjection\ContainerBuilder;
  17. class MolliePayments extends Plugin
  18. {
  19.     const PLUGIN_VERSION '3.0.0';
  20.     /**
  21.      * @param ContainerBuilder $container
  22.      * @throws Exception
  23.      */
  24.     public function build(ContainerBuilder $container): void
  25.     {
  26.         parent::build($container);
  27.         $this->container $container;
  28.         # load the dependencies that are compatible
  29.         # with our current shopware version
  30.         $loader = new DependencyLoader($container);
  31.         $loader->loadServices();
  32.     }
  33.     /**
  34.      * @return void
  35.      */
  36.     public function boot(): void
  37.     {
  38.         parent::boot();
  39.     }
  40.     /**
  41.      * @param InstallContext $context
  42.      * @return void
  43.      */
  44.     public function install(InstallContext $context): void
  45.     {
  46.         parent::install($context);
  47.         /** @var EntityRepositoryInterface $customFieldRepository */
  48.         $customFieldRepository $this->container->get('custom_field_set.repository');
  49.         // Add custom fields
  50.         $customFieldService = new CustomFieldService($customFieldRepository);
  51.         $customFieldService->addCustomFields($context->getContext());
  52.         $this->runDbMigrations($context->getMigrationCollection());
  53.     }
  54.     /**
  55.      * @param UpdateContext $context
  56.      * @throws \Doctrine\DBAL\Exception
  57.      * @return void
  58.      */
  59.     public function update(UpdateContext $context): void
  60.     {
  61.         parent::update($context);
  62.         if ($context->getPlugin()->isActive() === true) {
  63.             # only prepare our whole plugin
  64.             # if it is indeed active at the moment.
  65.             # otherwise service would not be found of course
  66.             $this->preparePlugin($context->getContext());
  67.             $this->runDbMigrations($context->getMigrationCollection());
  68.         }
  69.     }
  70.     /**
  71.      * @param InstallContext $context
  72.      * @return void
  73.      */
  74.     public function postInstall(InstallContext $context): void
  75.     {
  76.         parent::postInstall($context);
  77.     }
  78.     /**
  79.      * @param UninstallContext $context
  80.      * @return void
  81.      */
  82.     public function uninstall(UninstallContext $context): void
  83.     {
  84.         parent::uninstall($context);
  85.     }
  86.     /**
  87.      * @param ActivateContext $context
  88.      * @throws \Doctrine\DBAL\Exception
  89.      * @return void
  90.      */
  91.     public function activate(ActivateContext $context): void
  92.     {
  93.         parent::activate($context);
  94.         $this->preparePlugin($context->getContext());
  95.         $this->runDbMigrations($context->getMigrationCollection());
  96.     }
  97.     /**
  98.      * @param DeactivateContext $context
  99.      * @return void
  100.      */
  101.     public function deactivate(DeactivateContext $context): void
  102.     {
  103.         parent::deactivate($context);
  104.     }
  105.     /**
  106.      * @param Context $context
  107.      * @throws \Doctrine\DBAL\Exception
  108.      */
  109.     private function preparePlugin(Context $context): void
  110.     {
  111.         /** @var PluginInstaller $pluginInstaller */
  112.         $pluginInstaller $this->container->get(PluginInstaller::class);
  113.         $pluginInstaller->install($context);
  114.     }
  115.     /**
  116.      * @param MigrationCollection $migrationCollection
  117.      * @return void
  118.      */
  119.     private function runDbMigrations(MigrationCollection $migrationCollection): void
  120.     {
  121.         $migrationCollection->migrateInPlace();
  122.     }
  123. }