vendor/store.shopware.com/paynlpaymentshopware6/src/PaynlPaymentShopware6.php line 56

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace PaynlPayment\Shopware6;
  3. // phpcs:disable
  4. if (file_exists(__DIR__ '/../vendor/autoload.php')) {
  5.     require_once(__DIR__ '/../vendor/autoload.php');
  6. }
  7. // phpcs:enable
  8. use Doctrine\DBAL\Connection;
  9. use Exception;
  10. use PaynlPayment\Shopware6\Compatibility\DependencyLoader;
  11. use PaynlPayment\Shopware6\Components\Api;
  12. use PaynlPayment\Shopware6\Components\Config;
  13. use PaynlPayment\Shopware6\Components\ConfigReader\ConfigReader;
  14. use PaynlPayment\Shopware6\Helper\CustomerHelper;
  15. use PaynlPayment\Shopware6\Helper\InstallHelper;
  16. use PaynlPayment\Shopware6\Helper\IpSettingsHelper;
  17. use PaynlPayment\Shopware6\Helper\StringHelper;
  18. use PaynlPayment\Shopware6\Helper\TransactionLanguageHelper;
  19. use PaynlPayment\Shopware6\PaymentHandler\Factory\PaymentHandlerFactory;
  20. use PaynlPayment\Shopware6\Repository\Customer\CustomerRepository;
  21. use PaynlPayment\Shopware6\Repository\CustomerAddress\CustomerAddressRepository;
  22. use PaynlPayment\Shopware6\Repository\Language\LanguageRepository;
  23. use PaynlPayment\Shopware6\Repository\Media\MediaRepository;
  24. use PaynlPayment\Shopware6\Repository\Order\OrderRepository;
  25. use PaynlPayment\Shopware6\Repository\PaymentMethod\PaymentMethodRepository;
  26. use PaynlPayment\Shopware6\Repository\Product\ProductRepository;
  27. use PaynlPayment\Shopware6\Repository\SalesChannel\SalesChannelRepository;
  28. use PaynlPayment\Shopware6\Repository\SalesChannelPaymentMethod\SalesChannelPaymentMethodRepository;
  29. use PaynlPayment\Shopware6\Repository\SystemConfig\SystemConfigRepository;
  30. use Psr\Log\LoggerInterface;
  31. use Psr\Log\NullLogger;
  32. use Shopware\Core\Framework\Api\Controller\CacheController;
  33. use PaynlPayment\Shopware6\Helper\MediaHelper;
  34. use Shopware\Core\Content\Media\File\FileSaver;
  35. use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;
  36. use Shopware\Core\Framework\Plugin;
  37. use Shopware\Core\Framework\Plugin\Context\ActivateContext;
  38. use Shopware\Core\Framework\Plugin\Context\DeactivateContext;
  39. use Shopware\Core\Framework\Plugin\Context\InstallContext;
  40. use Shopware\Core\Framework\Plugin\Context\UninstallContext;
  41. use Shopware\Core\Framework\Plugin\Context\UpdateContext;
  42. use Shopware\Core\Framework\Plugin\Util\PluginIdProvider;
  43. use Shopware\Core\Kernel;
  44. use Shopware\Core\System\SystemConfig\SystemConfigService;
  45. use Symfony\Component\DependencyInjection\Container;
  46. use Symfony\Component\DependencyInjection\ContainerBuilder;
  47. use Symfony\Component\Filesystem\Filesystem;
  48. use Symfony\Component\HttpFoundation\RequestStack;
  49. use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator;
  50. use Symfony\Contracts\Translation\TranslatorInterface;
  51. use Throwable;
  52. class PaynlPaymentShopware6 extends Plugin
  53. {
  54.     public function install(InstallContext $installContext): void
  55.     {
  56.         $this->getInstallHelper()->addPaynlMailTemplateText();
  57.         $this->getInstallHelper()->addSurchargePayStockImageMedia($installContext->getContext());
  58.     }
  59.     public function uninstall(UninstallContext $uninstallContext): void
  60.     {
  61.         $this->getInstallHelper()->deactivatePaymentMethods($uninstallContext->getContext());
  62.         if (!$uninstallContext->keepUserData()) {
  63.             $this->getInstallHelper()->removePaymentMethodsMedia($uninstallContext->getContext());
  64.             $this->getInstallHelper()->removeConfigurationData($uninstallContext->getContext());
  65.             $this->getInstallHelper()->dropTables();
  66.             $this->getInstallHelper()->removeStates();
  67.             $this->getInstallHelper()->deletePaynlMailTemplateText();
  68.         }
  69.     }
  70.     public function activate(ActivateContext $activateContext): void
  71.     {
  72.         $this->getInstallHelper()->activatePaymentMethods($activateContext->getContext());
  73.     }
  74.     public function update(UpdateContext $updateContext): void
  75.     {
  76.         $this->getInstallHelper()->removePaymentMethodOldLogos($updateContext->getContext());
  77.         $this->getInstallHelper()->updatePaymentMethods($updateContext->getContext());
  78.         $this->getInstallHelper()->addPaynlMailTemplateText();
  79.         $this->getInstallHelper()->addSurchargePayStockImageMedia($updateContext->getContext());
  80.         try {
  81.             $currentVersion $this->container->getParameter('kernel.shopware_version');
  82.             if (\version_compare($currentVersion'6.4''<')) {
  83.                 /** @var CacheController $cacheController */
  84.                 $cacheController $this->container->get(CacheController::class);
  85.                 $cacheController->clearCacheAndScheduleWarmUp();
  86.             }
  87.         } catch (Throwable $exception) {
  88.         }
  89.     }
  90.     public function deactivate(DeactivateContext $deactivateContext): void
  91.     {
  92.         $this->getInstallHelper()->deactivatePaymentMethods($deactivateContext->getContext());
  93.     }
  94.     /**
  95.      * @param ContainerBuilder $container
  96.      * @throws Exception
  97.      */
  98.     public function build(ContainerBuilder $container): void
  99.     {
  100.         parent::build($container);
  101.         $this->container $container;
  102.         # load the dependencies that are compatible
  103.         # with our current shopware version
  104.         $loader = new DependencyLoader($this->container);
  105.         $loader->loadServices();
  106.         $loader->prepareStorefrontBuild();
  107.     }
  108.     /**
  109.      * @param RoutingConfigurator $routes
  110.      * @param string $environment
  111.      * @return void
  112.      */
  113.     public function configureRoutes(RoutingConfigurator $routesstring $environment): void
  114.     {
  115.         if (!$this->isActive()) {
  116.             return;
  117.         }
  118.         /** @var Container $container */
  119.         $container $this->container;
  120.         $loader = new DependencyLoader($container);
  121.         $routeDir $loader->getRoutesPath($this->getPath());
  122.         $fileSystem = new Filesystem();
  123.         if ($fileSystem->exists($routeDir)) {
  124.             $routes->import($routeDir '/{routes}/*' Kernel::CONFIG_EXTS'glob');
  125.             $routes->import($routeDir '/{routes}/' $environment '/**/*' Kernel::CONFIG_EXTS'glob');
  126.             $routes->import($routeDir '/{routes}' Kernel::CONFIG_EXTS'glob');
  127.             $routes->import($routeDir '/{routes}_' $environment Kernel::CONFIG_EXTS'glob');
  128.         }
  129.     }
  130.     private function getConfig(): Config
  131.     {
  132.         /** @var SystemConfigService $systemConfigService */
  133.         $systemConfigService $this->container->get(SystemConfigService::class);
  134.         $configReader = new ConfigReader($systemConfigService);
  135.         return new Config($configReader);
  136.     }
  137.     private function getInstallHelper(): InstallHelper
  138.     {
  139.         /** @var Connection $connection */
  140.         $connection $this->container->get(Connection::class);
  141.         /** @var PluginIdProvider $pluginIdProvider */
  142.         $pluginIdProvider $this->container->get(PluginIdProvider::class);
  143.         /** @var EntityRepository $paymentMethodRepository */
  144.         $paymentMethodRepository $this->container->get('payment_method.repository');
  145.         /** @var EntityRepository $paymentMethodSalesChannelRepository */
  146.         $paymentMethodSalesChannelRepository $this->container->get('sales_channel_payment_method.repository');
  147.         /** @var EntityRepository $salesChannelRepository */
  148.         $salesChannelRepository $this->container->get('sales_channel.repository');
  149.         /** @var EntityRepository $systemConfigRepository */
  150.         $systemConfigRepository $this->container->get('system_config.repository');
  151.         return new InstallHelper(
  152.             $connection,
  153.             $pluginIdProvider,
  154.             $this->getConfig(),
  155.             $this->getPaynlApi(),
  156.             $this->getPaymentHandlerFactory(),
  157.             $this->getMediaHelper(),
  158.             new PaymentMethodRepository($paymentMethodRepository),
  159.             new SalesChannelRepository($salesChannelRepository),
  160.             new SalesChannelPaymentMethodRepository($paymentMethodSalesChannelRepository),
  161.             new SystemConfigRepository($systemConfigRepository)
  162.         );
  163.     }
  164.     private function getPaynlApi(): Api
  165.     {
  166.         /** @var EntityRepository $productRepository */
  167.         $productRepository $this->container->get('product.repository');
  168.         /** @var EntityRepository $orderRepository */
  169.         $orderRepository $this->container->get('order.repository');
  170.         /** @var TranslatorInterface $translator */
  171.         $translator $this->container->get('translator');
  172.         /** @var RequestStack $requestStack */
  173.         $requestStack $this->container->get('request_stack');
  174.         return new Api(
  175.             $this->getConfig(),
  176.             $this->getCustomerHelper(),
  177.             $this->getTransactionLanguageHelper(),
  178.             new StringHelper(),
  179.             new IpSettingsHelper($this->getConfig()),
  180.             new ProductRepository($productRepository),
  181.             new OrderRepository($orderRepository),
  182.             $translator,
  183.             $requestStack,
  184.             $this->getLogger()
  185.         );
  186.     }
  187.     private function getCustomerHelper(): CustomerHelper
  188.     {
  189.         /** @var EntityRepository $customerAddressRepository */
  190.         $customerAddressRepository $this->container->get('customer_address.repository');
  191.         /** @var EntityRepository $customerRepository */
  192.         $customerRepository $this->container->get('customer.repository');
  193.         return new CustomerHelper(
  194.             $this->getConfig(),
  195.             new CustomerAddressRepository($customerAddressRepository),
  196.             new CustomerRepository($customerRepository)
  197.         );
  198.     }
  199.     private function getMediaHelper(): MediaHelper
  200.     {
  201.         /** @var FileSaver $fileSaver */
  202.         $fileSaver $this->container->get(FileSaver::class);
  203.         /** @var EntityRepository $mediaRepository */
  204.         $mediaRepository $this->container->get('media.repository');
  205.         return new MediaHelper($fileSaver, new MediaRepository($mediaRepository));
  206.     }
  207.     private function getTransactionLanguageHelper(): TransactionLanguageHelper
  208.     {
  209.         /** @var EntityRepository $languageRepository */
  210.         $languageRepository $this->container->get('language.repository');
  211.         /** @var RequestStack $requestStack */
  212.         $requestStack $this->container->get('request_stack');
  213.         return new TransactionLanguageHelper(
  214.             $this->getConfig(),
  215.             new LanguageRepository($languageRepository),
  216.             $requestStack
  217.         );
  218.     }
  219.     private function getPaymentHandlerFactory(): PaymentHandlerFactory
  220.     {
  221.         return new PaymentHandlerFactory();
  222.     }
  223.     private function getLogger(): LoggerInterface
  224.     {
  225.         return new NullLogger();
  226.     }
  227. }