<?php declare(strict_types=1);
namespace Pixup\GoogleSitemapGenerator;
use Shopware\Core\Content\Category\CategoryDefinition;
use Shopware\Core\Content\LandingPage\LandingPageDefinition;
use Shopware\Core\Content\Product\ProductDefinition;
use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsAnyFilter;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\OrFilter;
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\UpdateContext;
use Shopware\Core\System\CustomField\CustomFieldTypes;
use Shopware\Storefront\Page\LandingPage\LandingPage;
class PixupSitemapGeneratorSW6 extends Plugin
{
public function install(InstallContext $installContext): void
{
parent::install($installContext); // TODO: Change the autogenerated stub
$this->createCustomFields($installContext->getContext());
}
public function update(UpdateContext $updateContext): void
{
parent::update($updateContext); // TODO: Change the autogenerated stub
$this->createCustomFields($updateContext->getContext());
}
public function uninstall(UninstallContext $uninstallContext): void
{
parent::uninstall($uninstallContext);
// remove custom Field
$customFieldRepository = $this->container->get('custom_field_set.repository');
$criteria = new Criteria();
$criteria->addFilter(new OrFilter([
new EqualsAnyFilter('name', ['pixup_google_sitemap']),
]));
$ids = $customFieldRepository->searchIds($criteria, $uninstallContext->getContext());
$ids = $ids->getTotal() > 0 ? $ids : null;
if ($ids) {
$customFieldRepository->delete(array_values($ids->getData()), $uninstallContext->getContext());
}
}
public function createCustomFields($context) {
/**
* @var EntityRepository $customFieldRepository
*/
$customFieldRepository = $this->container->get("custom_field_set.repository");
$r = $customFieldRepository->search( (new Criteria())->addFilter(new EqualsFilter("name","pixup_google_sitemap")),$context);
if(empty($r->first())) {
$customFieldRepository->create([
[
'name' => 'pixup_google_sitemap',
'global' => false,
'config' => [
'label' => [
'de-DE' => 'Sitemap Einstellungen',
'en-GB' => 'Sitemap Settings'
]
],
'relations' => [
['entityName' => CategoryDefinition::ENTITY_NAME],
['entityName' => ProductDefinition::ENTITY_NAME],
['entityName' => LandingPageDefinition::ENTITY_NAME]
],
'customFields' => [
[
'name' => 'pixup_google_sitemap_exclude',
'type' => CustomFieldTypes::BOOL,
'config' => [
'customFieldPosition' => 1,
'label' => [
'de-DE' => 'Nicht in Sitemap ausgeben',
'en-GB' => 'Exclude from Sitemap'
],
]
],
[
'name' => 'pixup_google_sitemap_priority',
'type' => CustomFieldTypes::FLOAT,
'config' => [
'customFieldPosition' => 2,
'label' => [
'de-DE' => 'Priorität (0.0 - 1.0) (Default: 0.5)',
'en-GB' => 'Priority (0.0 - 1.0) (Default: 0.5)'
],
]
],
[
'name' => 'pixup_google_sitemap_changefreq',
'type' => CustomFieldTypes::SELECT,
'config' => [
'customFieldPosition' => 3,
'componentName' => 'sw-single-select',
'customFieldType' => CustomFieldTypes::SELECT,
'label' => [
'de-DE' => 'Change Frequency (default: daily)',
'en-GB' => 'Change Frequency (default: daily)'
],
'options' => [
[
'value' => 'always',
'label' => [
'de-DE' => 'always',
'en-GB' => 'always'
],
],
[
"value" => "hourly",
'label' => [
'de-DE' => 'hourly',
'en-GB' => 'hourly'
],
],
[
"value" => "daily",
'label' => [
'de-DE' => 'daily',
'en-GB' => 'daily'
],
],
[
"value" => "weekly",
'label' => [
'de-DE' => 'weekly',
'en-GB' => 'weekly'
],
],
[
"value" => "monthly",
'label' => [
'de-DE' => 'monthly',
'en-GB' => 'monthly'
],
],
[
"value" => "yearly",
'label' => [
'de-DE' => 'yearly',
'en-GB' => 'yearly'
],
],
[
"value" => "never",
'label' => [
'de-DE' => 'never',
'en-GB' => 'never'
],
],
]
],
]
]
]
], $context);
}
}
}