custom/plugins/IcCustomQueryResults/src/IcCustomQueryResults.php line 15

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Ic\IcCustomQueryResults;
  3. use Shopware\Core\Framework\Plugin;
  4. use Symfony\Component\Config\FileLocator;
  5. use Symfony\Component\DependencyInjection\ContainerBuilder;
  6. use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
  7. use Shopware\Core\Framework\Plugin\Context\UninstallContext;
  8. use Doctrine\DBAL\Connection;
  9. use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
  10. use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\ContainsFilter;
  11. use Shopware\Core\Framework\Context;
  12. use Shopware\Core\Framework\Plugin\Context\UpdateContext;
  13. class IcCustomQueryResults extends Plugin
  14. {
  15.     /**
  16.      * {@inheritdoc}
  17.      */
  18.     public function build(ContainerBuilder $container): void
  19.     {
  20.         parent::build($container);
  21.         $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/DependencyInjection'));
  22.         $loader->load('util.xml');
  23.     }
  24.     public function uninstall(UninstallContext $uninstallContext): void
  25.     {
  26.         parent::uninstall($uninstallContext);
  27.         if(!$uninstallContext->keepUserData()) {
  28.             $connection $this->container->get(Connection::class);
  29.             $connection->executeUpdate('DROP TABLE IF EXISTS `into_query_list`');
  30.             $this->removeConfiguration($uninstallContext->getContext());
  31.         }
  32.     }
  33.     private function removeConfiguration(Context $context): void
  34.     {
  35.         /** @var EntityRepositoryInterface $systemConfigRepository */
  36.         $systemConfigRepository $this->container->get('system_config.repository');
  37.         $criteria = (new Criteria())
  38.             ->addFilter(new ContainsFilter('configurationKey''IcCustomQueryResults.'));
  39.         $idSearchResult $systemConfigRepository->searchIds($criteria$context);
  40.         if (!$idSearchResult->getTotal()) {
  41.             return;
  42.         }
  43.         $ids array_map(static function ($id) {
  44.             return ['id' => $id];
  45.         }, $idSearchResult->getIds());
  46.         $systemConfigRepository->delete($ids$context);
  47.     }
  48.     public function update(UpdateContext $updateContext): void
  49.     {
  50.         $connection $this->container->get(Connection::class);
  51.         $columnCheck $connection->executeQuery("
  52.             SHOW COLUMNS FROM `into_query_list` LIKE 'query_data'
  53.         ");
  54.         $resultExists = (bool)$columnCheck->rowCount();
  55.         if($resultExists) {
  56.             $connection->executeUpdate("ALTER TABLE `into_query_list` CHANGE `query_data` `query_data` longtext COLLATE 'utf8mb4_unicode_ci' NULL");
  57.         }
  58.         
  59.         parent::update($updateContext);
  60.     }
  61. }