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

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace VioCustomerDocs;
  4. use Doctrine\DBAL\Connection;
  5. use Doctrine\DBAL\FetchMode;
  6. use Shopware\Core\Content\Media\Aggregate\MediaDefaultFolder\MediaDefaultFolderDefinition;
  7. use Shopware\Core\Content\Media\Aggregate\MediaFolder\MediaFolderDefinition;
  8. use Shopware\Core\Content\Media\Aggregate\MediaFolderConfiguration\MediaFolderConfigurationDefinition;
  9. use Shopware\Core\Framework\Plugin;
  10. use Shopware\Core\Framework\Plugin\Context\UninstallContext;
  11. use VioCustomerDocs\Entities\CustomerDocumentDefinition;
  12. class VioCustomerDocs extends Plugin
  13. {
  14.     public function uninstall(UninstallContext $uninstallContext): void
  15.     {
  16.         parent::uninstall($uninstallContext);
  17.         if ($uninstallContext->keepUserData()) {
  18.             return;
  19.         }
  20.         $connection $this->container->get(Connection::class);
  21.         if (!empty($connection)) {
  22.             $connection->executeStatement('DROP TABLE IF EXISTS vio_customer_document');
  23.             $this->removeFolders($connection);
  24.         }
  25.     }
  26.     private function removeFolders(Connection $connection): void
  27.     {
  28.         /** @var int $defaultFolderId */
  29.         $defaultFolderId $connection->createQueryBuilder()
  30.             ->select('id')
  31.             ->from(MediaDefaultFolderDefinition::ENTITY_NAME)
  32.             ->where('entity = :entity')
  33.             ->setParameter('entity'CustomerDocumentDefinition::ENTITY_NAME)
  34.             ->execute()
  35.             ->fetchColumn();
  36.         if (empty($defaultFolderId)) {
  37.             return;
  38.         }
  39.         $folder $connection->createQueryBuilder()
  40.             ->select('id''media_folder_configuration_id')
  41.             ->from(MediaFolderDefinition::ENTITY_NAME)
  42.             ->where('default_folder_id = :folderId')
  43.             ->setParameter('folderId'$defaultFolderId)
  44.             ->execute()
  45.             ->fetch(FetchMode::ASSOCIATIVE);
  46.         if (empty($folder)) {
  47.             return;
  48.         }
  49.         // drop Folder
  50.         $connection->createQueryBuilder()
  51.             ->delete(MediaFolderDefinition::ENTITY_NAME)
  52.             ->where('id = :folderId')
  53.             ->setParameter('folderId'$folder['id'])
  54.             ->execute();
  55.         // drop Configuration
  56.         $connection->createQueryBuilder()
  57.             ->delete(MediaFolderConfigurationDefinition::ENTITY_NAME)
  58.             ->where('id = :configId')
  59.             ->setParameter('configId'$folder['media_folder_configuration_id'])
  60.             ->execute();
  61.         // drop the default folder
  62.         $connection->createQueryBuilder()
  63.             ->delete(MediaDefaultFolderDefinition::ENTITY_NAME)
  64.             ->where('id = :folderId')
  65.             ->setParameter('folderId'$defaultFolderId)
  66.             ->execute();
  67.     }
  68. }