<?php declare(strict_types=1);
namespace AgiqonOci;
use AgiqonOci\Components\InitialDataPersister;
use Doctrine\DBAL\Connection;
use Shopware\Core\Framework\Plugin;
use Shopware\Core\Framework\Plugin\Context\InstallContext;
use Shopware\Core\Framework\Plugin\Context\UninstallContext;
use AgiqonOci\Components\ProductCustomFieldsInstaller;
use AgiqonOci\Components\CustomerCustomFieldsInstaller;
use Shopware\Core\Framework\Plugin\Context\UpdateContext;
class AgiqonOci extends Plugin
{
/**
* Installs plugin custom fields
*
* @param InstallContext $installContext
*/
public function install(InstallContext $installContext): void
{
$productCustomFieldsInstaller = new ProductCustomFieldsInstaller($this->container);
$productCustomFieldsInstaller->installCustomFieldSet($installContext);
$customerCustomFieldsInstaller = new CustomerCustomFieldsInstaller($this->container);
$customerCustomFieldsInstaller->installCustomFieldSet($installContext);
}
/**
* Uninstalls plugin custom fields
*
* @param UninstallContext $uninstallContext
*/
public function uninstall(UninstallContext $uninstallContext): void
{
$productCustomFieldsInstaller = new ProductCustomFieldsInstaller($this->container);
$productCustomFieldsInstaller->uninstallCustomFieldSet($uninstallContext);
$customerCustomFieldsInstaller = new CustomerCustomFieldsInstaller($this->container);
$customerCustomFieldsInstaller->uninstallCustomFieldSet($uninstallContext);
if ($uninstallContext->keepUserData()) {
return;
}
$connection = $this->container->get(Connection::class);
$connection->executeStatement('DROP TABLE IF EXISTS `agiqon_oci_unit`');
$connection->executeStatement('DROP TABLE IF EXISTS `agiqon_oci_shipping_method`');
$connection->executeStatement('DROP TABLE IF EXISTS `agiqon_oci_cxml_auth`');
$connection->executeStatement('DROP TABLE IF EXISTS `agiqon_oci_field`');
$connection->executeStatement('DROP TABLE IF EXISTS `agiqon_oci_field_type`');
$connection->executeStatement('DROP TABLE IF EXISTS `agiqon_oci_field_accessor`');
$connection->executeStatement('DROP TABLE IF EXISTS `agiqon_oci_system`');
}
public function postInstall(InstallContext $installContext): void
{
$initialDataPersister = new InitialDataPersister($this->container);
$initialDataPersister->persistInitialData();
}
public function postUpdate(UpdateContext $updateContext): void
{
if (version_compare($updateContext->getCurrentPluginVersion(), '2.0.0', '<')) {
$initialDataPersister = new InitialDataPersister($this->container);
$initialDataPersister->persistInitialData();
$customerCustomFieldsInstaller = new CustomerCustomFieldsInstaller($this->container);
$customerCustomFieldsInstaller->addAgiqonOciSystemCustomField($updateContext);
$customerCustomFieldsInstaller->setInitialSystemToOciCustomers($updateContext);
}
}
}