custom/plugins/TopdataConnectorSW6/src/TopdataConnectorSW6.php line 22

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Topdata\TopdataConnectorSW6;
  3. use Shopware\Core\Framework\Plugin;
  4. use Shopware\Core\Framework\Plugin\Context\UninstallContext;
  5. use Doctrine\DBAL\Connection;
  6. use Symfony\Component\Config\FileLocator;
  7. use Symfony\Component\DependencyInjection\ContainerBuilder;
  8. use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
  9. use Shopware\Core\Framework\DataAbstractionLayer\Indexing\Indexer\InheritanceIndexer;
  10. //use Shopware\Core\Framework\DataAbstractionLayer\Indexing\MessageQueue\IndexerMessageSender;
  11. use Shopware\Core\Framework\Plugin\Context\ActivateContext;
  12. //use Shopware\Core\Framework\Plugin\Context\InstallContext;
  13. //use Shopware\Core\Framework\Plugin\Context\UpdateContext;
  14. //use Shopware\Core\Framework\Plugin\Context\ActivateContext;
  15. //use Shopware\Core\Framework\Plugin\Context\DeactivateContext;
  16. //use Symfony\Component\DependencyInjection\ContainerBuilder;
  17. //use Symfony\Component\Routing\RouteCollectionBuilder;
  18. class TopdataConnectorSW6 extends Plugin
  19. {
  20.     public function build(ContainerBuilder $container): void
  21.     {
  22.         parent::build($container);
  23.     }
  24.     
  25.     
  26.     public function uninstall(UninstallContext $context): void
  27.     {
  28.         parent::uninstall($context);
  29.         if ($context->keepUserData()) {
  30.             return;
  31.         }
  32.         $connection $this->container->get(Connection::class);
  33.         $connection->executeStatement('DROP TABLE IF EXISTS `topdata_brand`');
  34.         $connection->executeStatement('DROP TABLE IF EXISTS `topdata_device`');
  35.         $connection->executeStatement('DROP TABLE IF EXISTS `topdata_device_to_product`');
  36.         $connection->executeStatement('DROP TABLE IF EXISTS `topdata_device_to_customer`');
  37.         $connection->executeStatement('DROP TABLE IF EXISTS `topdata_device_to_synonym`');
  38.         $connection->executeStatement('DROP TABLE IF EXISTS `topdata_device_type`');
  39.         $connection->executeStatement('DROP TABLE IF EXISTS `topdata_series`');
  40.         $connection->executeStatement('DROP TABLE IF EXISTS `topdata_to_product`');
  41.         $connection->executeStatement('DROP TABLE IF EXISTS `topdata_product_to_alternate`');
  42.         $connection->executeStatement('DROP TABLE IF EXISTS `topdata_product_to_similar`');
  43.         $connection->executeStatement('DROP TABLE IF EXISTS `topdata_product_to_related`');
  44.         $connection->executeStatement('DROP TABLE IF EXISTS `topdata_product_to_bundled`');
  45.         $connection->executeStatement('DROP TABLE IF EXISTS `topdata_product_to_color_variant`');
  46.         $connection->executeStatement('DROP TABLE IF EXISTS `topdata_product_to_capacity_variant`');
  47.         $connection->executeStatement('DROP TABLE IF EXISTS `topdata_product_to_variant`');
  48.         
  49.         $customerFields = [];
  50.         $temp $connection->fetchAll('SHOW COLUMNS from `customer`');
  51.         foreach ($temp as $field) {
  52.             if(isset($field['Field'])) {
  53.                 $customerFields[$field['Field']] = $field['Field'];
  54.             }
  55.         }
  56.         
  57.         if(isset($customerFields['devices'])) {
  58.             $connection->executeStatement('ALTER TABLE `customer` DROP `devices`');
  59.         }
  60.         
  61.         $productFields = [];
  62.         $temp $connection->fetchAll('SHOW COLUMNS from `product`');
  63.         foreach ($temp as $field) {
  64.             if(isset($field['Field'])) {
  65.                 $productFields[$field['Field']] = $field['Field'];
  66.             }
  67.         }
  68.         
  69.         $productFieldsToDelete = [
  70.             'devices',
  71.             'topdata',
  72.             'alternate_products',
  73.             'similar_products',
  74.             'related_products',
  75.             'bundled_products',
  76.             'variant_products',
  77.             'capacity_variant_products',
  78.             'color_variant_products'
  79.         ];
  80.         
  81.         foreach ($productFieldsToDelete as $field) {
  82.             if(isset($productFields[$field])) {
  83.                 $connection->executeStatement('ALTER TABLE `product`  DROP `'.$field.'`');
  84.             }
  85.         }
  86.         
  87.     }
  88. }