<?php declare(strict_types=1);
namespace S360ProductRecommendations;
use Shopware\Core\Framework\Plugin;
use Shopware\Storefront\Framework\ThemeInterface;
use Shopware\Core\Framework\Plugin\Context\InstallContext;
use Shopware\Core\Framework\Plugin\Context\UninstallContext;
use Shopware\Core\System\CustomField\CustomFieldTypes;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsAnyFilter;
class S360ProductRecommendations extends Plugin
{
public function install(InstallContext $installContext): void
{
$customFieldSetRepository = $this->container->get('custom_field_set.repository');
$customFieldSetRepository->create([
[
'name' => 's360_product_recommendations',
'config' => [
'label' => [
'en-GB' => 'S360 Product Recommendation',
'de-De' => 'S360 Produkt Empfehlungen'
]
],
'customFields' => [
[
'name' => 's360_product_recommendations_dynamic_product_group',
'type' => CustomFieldTypes::ENTITY,
'config' => [
'label' => [
'en-GB' => 'Dymanic product group',
'de-De' => 'Dynamische Produktgruppe'
],
'entity' => 'product_stream',
'componentName' => 'sw-entity-single-select',
'customFieldType' => 'select',
'customFieldPosition' => 0
]
],
],
'relations' => [
[
'entityName' => 'category'
]
]
]
], $installContext->getContext());
}
public function uninstall(UninstallContext $uninstallContext): void
{
// this has to get uninstalled - cannot give user a choice (keep data) otherwise error on reinstall
$customFieldSetRepository = $this->container->get('custom_field_set.repository');
$criteria = new Criteria();
$criteria->addFilter(new EqualsAnyFilter('name', ['s360_product_recommendations']));
// EntitySearchResult
$result = $customFieldSetRepository->search($criteria, $uninstallContext->getContext());
foreach ($result->getEntities() as $entity) {
$customFieldSetRepository->delete([[
'id' => $entity->getId()
]], $uninstallContext->getContext());
}
}
}