<?php declare(strict_types=1);
namespace Neon\Configurator;
if (file_exists(dirname(__DIR__) . '/vendor/autoload.php')) {
require_once dirname(__DIR__) . '/vendor/autoload.php';
}
use Doctrine\DBAL\Connection;
use Shopware\Core\Framework\DataAbstractionLayer\Doctrine\RetryableQuery;
use Shopware\Core\Framework\Plugin;
use Symfony\Component\Filesystem\Filesystem;
class Neon6Configurator extends Plugin
{
const PAYLOAD_KEY = 'neon_configurator';
const PAYLOAD_KEY_USER_CONFIGURATION = 'user_configuration';
const PAYLOAD_KEY_FIELD_DATA = 'field_data';
const PAYLOAD_KEY_CALCULATIONS = 'calculations';
const PAYLOAD_KEY_WEIGHT = 'weight';
const CUSTOMFIELD_PRODUCTS_CONFIG = 'neon_configurator_products_config';
const CUSTOMFIELD_PRODUCTS_CALCULATION_PREFIX = 'neon_configurator_calculation_';
const CUSTOMFIELD_CATEGORIES_CONFIG = 'neon_configurator_categories_config';
const ADD_LINE_ITEM_KEY = 'neon_configurator';
const FILE_FOLDER = 'files/neon-configurator/';
const PAYLOAD_KEY_BLOCKPRICESELECTION_QUANTITY = 'blockprice_selection_quantity';
const PAYLOAD_KEY_SEPARATE_ITEMS = 'neon_configurator_infos';
public function activate(Plugin\Context\ActivateContext $context): void
{
}
public function deactivate(Plugin\Context\DeactivateContext $context): void
{
}
public function install(Plugin\Context\InstallContext $context): void
{
}
public function uninstall(Plugin\Context\UninstallContext $context): void
{
if (!$context->keepUserData()) {
/** @var Connection $connection */
$connection = $this->container->get('Doctrine\DBAL\Connection');
$check1 = 'SET FOREIGN'.'_KEY_CHECKS'.'=0;';
$check2 = 'SET FOREIGN'.'_KEY_CHECKS'.'=1;';
$sql = <<<SQL
$check1
DROP TABLE IF EXISTS `neonconfigurator_fieldvalue_info`;
DROP TABLE IF EXISTS `neonconfigurator_field_info`;
DROP TABLE IF EXISTS `neonconfigurator_info`;
DROP TABLE IF EXISTS `neonconfigurator_fieldvalue`;
DROP TABLE IF EXISTS `neonconfigurator_fieldprice`;
DROP TABLE IF EXISTS `neonconfigurator_fieldvalidation`;
DROP TABLE IF EXISTS `neonconfigurator_fieldcalculation`;
DROP TABLE IF EXISTS `neonconfigurator_fieldvisibility`;
DROP TABLE IF EXISTS `neonconfigurator_commoncalculation`;
DROP TABLE IF EXISTS `neonconfigurator_configuration_media`;
DROP TABLE IF EXISTS `neonconfigurator_configuration`;
DROP TABLE IF EXISTS `neonconfigurator_field`;
DROP TABLE IF EXISTS `neonconfigurator_fieldgroup`;
DROP TABLE IF EXISTS `neonconfigurator_calculation`;
$check2
SQL;
$connection->executeStatement($sql);
$sql = <<<SQL
DELETE FROM `custom_field_set` WHERE `name` = 'neon_configurator_products';
DELETE FROM `custom_field_set` WHERE `name` = 'neon_configurator_categories';
SQL;
$connection->executeStatement($sql);
$basePath = __DIR__ . '/../../../../';
$filesystem = new Filesystem();
if ($filesystem->exists($basePath . self::FILE_FOLDER)) {
$filesystem->remove($basePath . self::FILE_FOLDER);
}
}
}
}