<?php declare(strict_types=1);
namespace db_ProductConfigurator;
use Doctrine\DBAL\Connection;
use Shopware\Core\Framework\Context;
use Shopware\Core\Framework\Plugin;
use Shopware\Core\Framework\Plugin\Context\InstallContext;
use Shopware\Core\Framework\Plugin\Context\UninstallContext;
use Shopware\Core\Framework\Plugin\Context\ActivateContext;
use Shopware\Core\Framework\Plugin\Context\DeactivateContext;
use Shopware\Core\Framework\Plugin\Context\UpdateContext;
use Shopware\Storefront\Framework\ThemeInterface;
use db_ProductConfigurator\Manager\CustomFieldManager;
class db_ProductConfigurator extends Plugin
{
public function Install(InstallContext $context): void
{
parent::Install($context);
($this->getCustomFieldManager($context->getContext()))->install();
}
/**
* @param Context $context
* @return CustomFieldManager
*/
private function getCustomFieldManager(Context $context): CustomFieldManager
{
return new CustomFieldManager(
$context,
$this->container->get('custom_field_set.repository'),
$this->container->get('snippet.repository')
);
}
public function Update(UpdateContext $context): void
{
parent::Update($context);
($this->getCustomFieldManager($context->getContext()))->install();
}
public function activate(ActivateContext $context): void
{
parent::activate($context);
}
public function deactivate(DeactivateContext $context): void
{
parent::deactivate($context);
}
public function uninstall(UninstallContext $context): void
{
parent::uninstall($context);
($this->getCustomFieldManager($context->getContext()))->uninstall();
if ($context->keepUserData()) {
return;
}
$connection = $this->container->get(Connection::class);
$connection->executeUpdate('DROP TABLE IF EXISTS `db_configurator_manufacturer_relation`');
$connection->executeUpdate('DROP TABLE IF EXISTS `db_configurator_manufacturer`');
$connection->executeUpdate('DROP TABLE IF EXISTS `db_configurator_option_relation`');
$connection->executeUpdate('DROP TABLE IF EXISTS `db_configurator_option_translation`');
$connection->executeUpdate('DROP TABLE IF EXISTS `db_configurator_option`');
$connection->executeUpdate('DROP TABLE IF EXISTS `db_configurator_group_relation`');
$connection->executeUpdate('DROP TABLE IF EXISTS `db_configurator_group_translation`');
$connection->executeUpdate('DROP TABLE IF EXISTS `db_configurator_group`');
$connection->executeUpdate('DROP TABLE IF EXISTS `db_configurator_product`');
$connection->executeUpdate('DROP TABLE IF EXISTS `db_configurator_translation`');
$connection->executeUpdate('DROP TABLE IF EXISTS `db_configurator`');
$productAttributesCheck = $connection->executeQuery("
SHOW COLUMNS FROM `product` LIKE 'dbconfigurator'
");
$productAttributesExists = (bool)$productAttributesCheck->rowCount();
if($productAttributesExists) {
$connection->executeUpdate('ALTER TABLE `product` DROP COLUMN `dbconfigurator`');
}
}
}