<?php declare(strict_types=1);
namespace DvdwDirectory;
use Dvdw\CustomFieldInstaller\System\CustomField\CustomFieldInstaller;
use DvdwDirectory\Content\Category\CategoryCustomFields;
use Shopware\Core\Framework\Context;
use Shopware\Core\Framework\Plugin;
use Shopware\Core\Framework\Plugin\Context\InstallContext;
use Shopware\Core\Framework\Plugin\Context\UninstallContext;
class DvdwDirectory extends Plugin
{
private ?CustomFieldInstaller $customFieldInstaller = null;
public function postInstall(InstallContext $installContext): void
{
parent::postInstall($installContext);
try {
$this->createCustomFields($installContext->getContext());
} catch (\Throwable $e) {
echo ($e->getMessage()) . PHP_EOL;
}
}
public function uninstall(UninstallContext $uninstallContext): void
{
parent::uninstall($uninstallContext);
if ($uninstallContext->keepUserData()) {
return;
}
$this->deleteCustomFields($uninstallContext->getContext());
}
private function createCustomFields(Context $context): void
{
$this->setCustomFieldInstaller();
$this->customFieldInstaller->install(
CategoryCustomFields::SET_NAME,
CategoryCustomFields::FIELDS,
$context
);
}
private function deleteCustomFields(Context $context): void
{
$this->setCustomFieldInstaller();
$this->customFieldInstaller->uninstall(CategoryCustomFields::SET_NAME, $context);
}
private function setCustomFieldInstaller(): void
{
if (isset($this->customFieldInstaller)) {
return;
}
$this->customFieldInstaller = $this->container->get(
'Dvdw\CustomFieldInstaller\System\CustomField\CustomFieldInstaller'
);
}
}