From 79539c7c825381a6150af6ca3f36c5c97f1e90f6 Mon Sep 17 00:00:00 2001
From: ah-net <103565001+ah-net@users.noreply.github.com>
Date: Tue, 16 Sep 2025 10:51:54 +0200
Subject: [PATCH 1/7] Overviewpage multistore
---
src/Api/Data/OverviewPageInterface.php | 21 ++--
src/Api/OverviewPageRepositoryInterface.php | 3 +-
.../Adminhtml/OverviewPage/Edit.php | 3 +-
.../Adminhtml/OverviewPage/Save.php | 22 +++-
src/Controller/OverviewPage/View.php | 9 +-
src/Model/OverviewPage.php | 57 ++++++++--
src/Model/OverviewPage/DataProvider.php | 15 ++-
src/Model/OverviewPageRepository.php | 77 ++++++++++++-
src/Model/ResourceModel/OverviewPage.php | 51 +++++++++
src/Model/UrlRewriteService.php | 48 ++++++++-
.../Patch/Data/ConvertOverviewpageEntries.php | 102 ++++++++++++++++++
.../Listing/Column/OverviewPageActions.php | 26 -----
src/etc/db_schema.xml | 19 ++++
src/etc/module.xml | 2 +-
...ico_attributelanding_overviewpage_edit.xml | 7 ++
...ico_attributelanding_overviewpage_form.xml | 83 +++++++++-----
..._attributelanding_overviewpage_listing.xml | 17 +--
17 files changed, 466 insertions(+), 96 deletions(-)
create mode 100644 src/Setup/Patch/Data/ConvertOverviewpageEntries.php
diff --git a/src/Api/Data/OverviewPageInterface.php b/src/Api/Data/OverviewPageInterface.php
index 88fb96f..dc36008 100644
--- a/src/Api/Data/OverviewPageInterface.php
+++ b/src/Api/Data/OverviewPageInterface.php
@@ -20,12 +20,11 @@ interface OverviewPageInterface
public const NAME = 'name';
public const URL_PATH = 'url_path';
public const META_KEYWORDS = 'meta_keywords';
- public const CATEGORY_ID = 'category_id';
public const PAGE_ID = 'page_id';
public const META_DESCRIPTION = 'meta_description';
- public const STORE_IDS = 'store_ids';
public const CREATED_AT = 'created_at';
public const UPDATED_AT = 'updated_at';
+ public const STORE_ID = 'store_id';
/**
* Get page_id
@@ -33,6 +32,12 @@ interface OverviewPageInterface
*/
public function getPageId();
+ /**
+ * Get store_id
+ * @return int
+ */
+ public function getStoreId(): int;
+
/**
* Get active
* @return bool
@@ -87,12 +92,6 @@ public function getContentFirst();
*/
public function getContentLast();
- /**
- * Get active stores IDs
- * @return int[]
- */
- public function getStoreIds(): array;
-
/**
* @return string
*/
@@ -102,4 +101,10 @@ public function getCreatedAt(): string;
* @return string
*/
public function getUpdatedAt(): string;
+
+ /**
+ * @param int $storeId
+ * @return OverviewPageInterface
+ */
+ public function setStoreId(int $storeId): OverviewPageInterface;
}
diff --git a/src/Api/OverviewPageRepositoryInterface.php b/src/Api/OverviewPageRepositoryInterface.php
index 1c8c251..96786de 100644
--- a/src/Api/OverviewPageRepositoryInterface.php
+++ b/src/Api/OverviewPageRepositoryInterface.php
@@ -20,11 +20,12 @@ public function save(OverviewPageInterface $page): OverviewPageInterface;
/**
* Retrieve Page
* @param int $pageId
+ * @param int $storeId
* @return \Emico\AttributeLanding\Api\Data\OverviewPageInterface
* @throws \Magento\Framework\Exception\LocalizedException
* @throws NoSuchEntityException
*/
- public function getById(int $pageId): OverviewPageInterface;
+ public function getByIdWithStore(int $pageId, int $storeId): OverviewPageInterface;
/**
* Retrieve Page matching the specified criteria.
diff --git a/src/Controller/Adminhtml/OverviewPage/Edit.php b/src/Controller/Adminhtml/OverviewPage/Edit.php
index 065814c..2bf7cc8 100644
--- a/src/Controller/Adminhtml/OverviewPage/Edit.php
+++ b/src/Controller/Adminhtml/OverviewPage/Edit.php
@@ -55,10 +55,11 @@ public function __construct(
public function execute()
{
$id = $this->getRequest()->getParam('page_id');
+ $storeId = (int)$this->getRequest()->getParam('store', 0);
if ($id) {
try {
- $landingPage = $this->overviewPageRepository->getById($id);
+ $landingPage = $this->overviewPageRepository->getByIdWithStore($id, $storeId);
} catch (NoSuchEntityException $exception) {
$this->messageManager->addErrorMessage(__('This Page no longer exists.'));
diff --git a/src/Controller/Adminhtml/OverviewPage/Save.php b/src/Controller/Adminhtml/OverviewPage/Save.php
index a5e33dc..c3d1355 100644
--- a/src/Controller/Adminhtml/OverviewPage/Save.php
+++ b/src/Controller/Adminhtml/OverviewPage/Save.php
@@ -68,23 +68,31 @@ public function execute()
$resultRedirect = $this->resultRedirectFactory->create();
/** @phpstan-ignore-next-line */
$data = $this->getRequest()->getPostValue();
+ $data[OverviewPageInterface::STORE_ID] = (int)$data[OverviewPageInterface::STORE_ID];
if (!$data) {
return $resultRedirect->setPath('*/*/');
}
- $id = $this->getRequest()->getParam('page_id');
+ $id = $this->getRequest()->getParam('page_id') ?? null;
if (!$id) {
$page = $this->overviewPageFactory->create();
} else {
try {
- $page = $this->overviewPageRepository->getById($id);
+ $page = $this->overviewPageRepository->getByIdWithStore(
+ $id,
+ (int)$data[OverviewPageInterface::STORE_ID]
+ );
} catch (NoSuchEntityException $exception) {
$this->messageManager->addErrorMessage(__('This Page no longer exists.'));
return $resultRedirect->setPath('*/*/');
}
}
+ if ($id) {
+ $data['id'] = $id;
+ }
+
$this->dataObjectHelper->populateWithArray($page, $data, OverviewPageInterface::class);
try {
@@ -94,7 +102,13 @@ public function execute()
$this->dataPersistor->clear('emico_attributelanding_overviewpage');
if ($this->getRequest()->getParam('back')) {
- return $resultRedirect->setPath('*/*/edit', ['page_id' => $page->getPageId()]);
+ return $resultRedirect->setPath(
+ '*/*/edit',
+ [
+ 'page_id' => $page->getPageId(),
+ 'store' => $page->getStoreId()
+ ]
+ );
}
return $resultRedirect->setPath('*/*/');
@@ -105,6 +119,6 @@ public function execute()
}
$this->dataPersistor->set('emico_attributelanding_overviewpage', $data);
- return $resultRedirect->setPath('*/*/edit', ['page_id' => $this->getRequest()->getParam('page_id')]);
+ return $resultRedirect->setPath('*/*/edit', ['page_id' => $page->getPageId(), 'store' => $page->getStoreId()]);
}
}
diff --git a/src/Controller/OverviewPage/View.php b/src/Controller/OverviewPage/View.php
index ae1fe83..db572e0 100644
--- a/src/Controller/OverviewPage/View.php
+++ b/src/Controller/OverviewPage/View.php
@@ -14,6 +14,7 @@
use Magento\Framework\Controller\ResultInterface;
use Magento\Framework\Exception\NotFoundException;
use Magento\Framework\View\Result\PageFactory;
+use Magento\Store\Model\StoreManagerInterface;
class View extends Action
{
@@ -44,7 +45,8 @@ public function __construct(
Context $context,
PageFactory $resultPageFactory,
LandingPageContext $landingPageContext,
- OverviewPageRepositoryInterface $overviewPageRepository
+ OverviewPageRepositoryInterface $overviewPageRepository,
+ private readonly StoreManagerInterface $storeManager
) {
$this->resultPageFactory = $resultPageFactory;
$this->overviewPageRepository = $overviewPageRepository;
@@ -61,8 +63,9 @@ public function __construct(
*/
public function execute(): ResultInterface
{
- $pageId = $this->getRequest()->getParam('id');
- $overviewPage = $this->overviewPageRepository->getById($pageId);
+ $pageId = (int)$this->getRequest()->getParam('id');
+ $storeId = (int)$this->storeManager->getStore()->getId();
+ $overviewPage = $this->overviewPageRepository->getByIdWithStore($pageId, $storeId);
if (!$overviewPage->isActive()) {
throw new NotFoundException(__('Page not active'));
diff --git a/src/Model/OverviewPage.php b/src/Model/OverviewPage.php
index 45e4f1c..91f76e6 100644
--- a/src/Model/OverviewPage.php
+++ b/src/Model/OverviewPage.php
@@ -213,21 +213,21 @@ public function setContentLast($contentLast): OverviewPageInterface
}
/**
- * Get active stores IDs
- * @return array
+ * Get active stores ID
+ * @return int
*/
- public function getStoreIds(): array
+ public function getStoreId(): int
{
- return explode(',', $this->getData(self::STORE_IDS));
+ return (int)$this->getData(self::STORE_ID);
}
/**
- * @param int[] $storeIds
+ * @param int $storeId
* @return OverviewPageInterface
*/
- public function setStoreIds($storeIds): OverviewPageInterface
+ public function setStoreId(int $storeId): OverviewPageInterface
{
- return $this->setData(self::STORE_IDS, implode(',', $storeIds));
+ return $this->setData(self::STORE_ID, $storeId);
}
/**
@@ -277,4 +277,47 @@ public function getUpdatedAt(): string
{
return $this->getData(OverviewPageInterface::UPDATED_AT);
}
+
+ public function getOverviewPageDataWithoutStore(): array
+ {
+ $fields = [
+ OverviewPageInterface::PAGE_ID,
+ OverviewPageInterface::CREATED_AT,
+ OverviewPageInterface::UPDATED_AT,
+ OverviewPageInterface::URL_PATH,
+ ];
+
+ if ($this->getData(OverviewPageInterface::STORE_ID) === 0) {
+ $fields[] = OverviewPageInterface::NAME;
+ }
+
+ return array_combine(
+ $fields,
+ array_map(fn($field) => $this->getData($field), $fields)
+ );
+ }
+
+ /**
+ * @return array
+ */
+ public function getOverviewPageDataForStore(): array
+ {
+ $fields = [
+ OverviewPageInterface::NAME,
+ OverviewPageInterface::STORE_ID,
+ OverviewPageInterface::ACTIVE,
+ OverviewPageInterface::URL_PATH,
+ OverviewPageInterface::HEADING,
+ OverviewPageInterface::META_TITLE,
+ OverviewPageInterface::META_KEYWORDS,
+ OverviewPageInterface::META_DESCRIPTION,
+ OverviewPageInterface::CONTENT_FIRST,
+ OverviewPageInterface::CONTENT_LAST,
+ ];
+
+ return array_combine(
+ $fields,
+ array_map(fn($field) => $this->getData($field), $fields)
+ );
+ }
}
diff --git a/src/Model/OverviewPage/DataProvider.php b/src/Model/OverviewPage/DataProvider.php
index 50de301..4ae96e8 100644
--- a/src/Model/OverviewPage/DataProvider.php
+++ b/src/Model/OverviewPage/DataProvider.php
@@ -6,6 +6,8 @@
use Emico\AttributeLanding\Model\ResourceModel\OverviewPage\CollectionFactory;
use Magento\Framework\App\Request\DataPersistorInterface;
use Magento\Ui\DataProvider\AbstractDataProvider;
+use Emico\AttributeLanding\Model\OverviewPageRepository;
+use Magento\Framework\App\Request\Http;
class DataProvider extends AbstractDataProvider
{
@@ -32,6 +34,8 @@ class DataProvider extends AbstractDataProvider
* @param string $requestFieldName
* @param CollectionFactory $collectionFactory
* @param DataPersistorInterface $dataPersistor
+ * @param Http $request
+ * @param OverviewPageRepository $overviewPageRepository
* @param array $meta
* @param array $data
*/
@@ -41,6 +45,8 @@ public function __construct(
$requestFieldName,
CollectionFactory $collectionFactory,
DataPersistorInterface $dataPersistor,
+ private readonly Http $request,
+ private readonly overviewPageRepository $overviewPageRepository,
array $meta = [],
array $data = []
) {
@@ -61,11 +67,18 @@ public function getData()
return $this->loadedData;
}
+ $storeId = (int)$this->request->getParam('store', 0);
/** @phpstan-ignore-next-line */
$items = $this->collection->getItems();
foreach ($items as $model) {
+ $storeData = $this->overviewPageRepository->getByIdWithStore($model->getPageId(), $storeId)->getData();
+
+ foreach ($storeData as $key => $value) {
+ $modelData[$key] = $value;
+ }
+
/** @var OverviewPage $model */
- $this->loadedData[$model->getPageId()] = $model->getData();
+ $this->loadedData[$model->getPageId()] = $modelData;
}
$data = $this->dataPersistor->get('emico_attributelanding_overviewpage');
diff --git a/src/Model/OverviewPageRepository.php b/src/Model/OverviewPageRepository.php
index 09cfe6f..5bb289d 100644
--- a/src/Model/OverviewPageRepository.php
+++ b/src/Model/OverviewPageRepository.php
@@ -81,9 +81,14 @@ public function __construct(
public function save(OverviewPageInterface $page): OverviewPageInterface
{
try {
- /** @var LandingPage $page */
- $this->resource->save($page); // @phpstan-ignore-line
- } catch (Exception $exception) {
+ /** @var OverviewPage $page */
+ $parentOverviewPage = $this->dataPageFactory->create();
+ $parentOverviewPage->setData($page->getOverviewPageDataWithoutStore());
+
+ $this->resource->save($parentOverviewPage); // @phpstan-ignore-line
+ $page->setPageId($parentOverviewPage->getPageId());
+ $this->resource->saveOverviewPageStoreData($page);
+ } catch (\Exception $exception) {
throw new CouldNotSaveException(
__(
'Could not save the page: %1',
@@ -170,6 +175,7 @@ public function findAllActive(): array
{
$searchCriteria = $this->searchCriteriaBuilder
->addFilter(OverviewPageInterface::ACTIVE, 1)
+ ->addFilter(OverviewPageInterface::STORE_ID, [$storeId, 0], 'in')
->create();
$result = $this->getList($searchCriteria);
@@ -191,4 +197,69 @@ public function getByLandingPage(LandingPageInterface $landingPage): OverviewPag
return $this->getById($landingPage->getOverviewPageId());
}
+
+ /**
+ * @param int $pageId
+ * @param int $storeId
+ * @return OverviewPageInterface
+ * @throws NoSuchEntityException
+ */
+ public function getByIdWithStore(int $pageId, int $storeId): OverviewPageInterface
+ {
+ $overviewPage = $this->getById($pageId);
+
+ $storeData = $this->resource->getOverviewPageStoreData($pageId, $storeId);
+
+ if (!empty($storeData)) {
+ unset($storeData['id']);
+ $overviewPage->setData($storeData);
+ } else {
+ $defaultData = $this->resource->getOverviewPageStoreData($pageId, 0);
+ if (!empty($defaultData)) {
+ unset($defaultData['id']);
+ $overviewPage->setData($defaultData);
+ }
+
+ $overviewPage->setData(LandingPageInterface::STORE_ID, $storeId);
+ }
+
+ return $overviewPage;
+ }
+
+ /**
+ * @param int $pageId
+ * @return OverviewPageInterface[]
+ */
+ public function getAllPagesById(int $pageId): array
+ {
+ $storeData = $this->resource->getAllOverviewPageStoreData($pageId);
+ $pages = [];
+
+ foreach ($storeData as $data) {
+ $page = $this->dataPageFactory->create();
+ $page->setData($data);
+ $pages[] = $page;
+ }
+
+ return $pages;
+ }
+
+ /**
+ * @param OverviewPageInterface $page
+ * @return void
+ * @throws CouldNotSaveException
+ */
+ public function saveOverviewPageStoreData(OverviewPageInterface $page): void
+ {
+ try {
+ $this->resource->saveOverviewPageStoreData($page);
+ } catch (\Exception $exception) {
+ throw new CouldNotSaveException(
+ __(
+ 'Could not save the overview page store data: %1',
+ $exception->getMessage()
+ )
+ );
+ }
+ }
}
diff --git a/src/Model/ResourceModel/OverviewPage.php b/src/Model/ResourceModel/OverviewPage.php
index c277072..b8a16e3 100644
--- a/src/Model/ResourceModel/OverviewPage.php
+++ b/src/Model/ResourceModel/OverviewPage.php
@@ -8,6 +8,7 @@
namespace Emico\AttributeLanding\Model\ResourceModel;
use Emico\AttributeLanding\Api\Data\LandingPageInterface;
+use Emico\AttributeLanding\Api\Data\OverviewPageInterface;
use Magento\Framework\Model\ResourceModel\Db\AbstractDb;
class OverviewPage extends AbstractDb
@@ -16,4 +17,54 @@ protected function _construct()
{
$this->_init('emico_attributelanding_overviewpage', LandingPageInterface::PAGE_ID);
}
+
+ public function getOverviewPageStoreData(int $overviewPageId, int $storeId = 0): array
+ {
+ $connection = $this->getConnection();
+ $select = $connection->select()
+ ->from(['ps' => $this->getTable('emico_attributelanding_overviewpage_store')])
+ ->where('ps.page_id = ?', $overviewPageId)
+ ->where('store_id = ?', $storeId);
+
+ $result = $connection->fetchRow($select);
+
+ if ($result) {
+ return $result;
+ }
+
+ return [];
+ }
+
+ public function getAllOverviewPageStoreData(int $overviewPageId): array
+ {
+ $connection = $this->getConnection();
+ $select = $connection->select()
+ ->from($this->getTable('emico_attributelanding_overviewpage_store'))
+ ->where('page_id = :page_id');
+
+ $bind = ['page_id' => (int)$overviewPageId];
+
+ return $connection->fetchAll($select, $bind);
+ }
+
+ public function saveOverviewPageStoreData(OverviewPageInterface $page): void
+ {
+ $data = $page->getOverviewPageDataForStore();
+ $connection = $this->getConnection();
+ $table = $this->getTable('emico_attributelanding_overviewpage_store');
+ $where = [
+ 'page_id = ?' => $page->getPageId(),
+ 'store_id = ?' => $page->getStoreId()
+ ];
+
+ unset($data['id']);
+
+ if (!empty($this->getOverviewPageStoreData($page->getPageId(), $page->getStoreId()))) {
+ $connection->update($table, $data, $where);
+ } else {
+ $data['page_id'] = $page->getPageId();
+ $data['store_id'] = $page->getStoreId();
+ $connection->insert($table, $data);
+ }
+ }
}
diff --git a/src/Model/UrlRewriteService.php b/src/Model/UrlRewriteService.php
index e76f3d2..28247bc 100644
--- a/src/Model/UrlRewriteService.php
+++ b/src/Model/UrlRewriteService.php
@@ -8,6 +8,7 @@
namespace Emico\AttributeLanding\Model;
use Emico\AttributeLanding\Api\Data\LandingPageInterface;
+use Emico\AttributeLanding\Api\Data\OverviewPageInterface;
use Emico\AttributeLanding\Api\LandingPageRepositoryInterface;
use Emico\AttributeLanding\Api\UrlRewriteGeneratorInterface;
use Magento\Framework\Api\SearchCriteriaBuilder;
@@ -61,6 +62,7 @@ class UrlRewriteService
* @param UrlFinderInterface $urlFinder
* @param LandingPageRepositoryInterface $landingPageRepository
* @param Config $config
+ * @param OverviewPageRepository $overviewPageRepository
*/
public function __construct(
UrlRewriteFactory $urlRewriteFactory,
@@ -70,6 +72,7 @@ public function __construct(
UrlFinderInterface $urlFinder,
LandingPageRepositoryInterface $landingPageRepository,
private readonly Config $config,
+ private readonly OverviewPageRepository $overviewPageRepository
) {
$this->urlRewriteFactory = $urlRewriteFactory;
$this->storeManager = $storeManager;
@@ -209,9 +212,50 @@ private function generateRewritesForAllStores(
private function generateOverviewPageRewrites(UrlRewriteGeneratorInterface $page, ?string $suffix = null): array
{
$urlRewritesToPersist = [];
+ $allPages = $this->overviewPageRepository->getAllPagesById($page->getPageId());
- foreach ($this->getActiveStoreIds($page) as $storeId) {
- $urlRewritesToPersist[$storeId] = $this->createUrlRewrite($page, $storeId, $suffix);
+ foreach ($allPages as $storePage) {
+ if ($storePage->getStoreId() == $page->getStoreId()) {
+ $storePage = $page;
+ }
+
+ if ($storePage->getStoreId() == 0) {
+ $urlRewritesToPersist = $this->generateOverviewPageRewritesForAllStores(
+ $storePage,
+ $page,
+ $suffix,
+ $urlRewritesToPersist
+ );
+ } else {
+ $urlRewrite = $this->createUrlRewrite($storePage, $storePage->getStoreId(), $suffix);
+ $urlRewritesToPersist[$storePage->getStoreId()] = $urlRewrite;
+ }
+ }
+
+ return $urlRewritesToPersist;
+ }
+
+ private function generateOverviewPageRewritesForAllStores(
+ OverviewPageInterface $storePage,
+ OverviewPageInterface $page,
+ ?string $suffix,
+ array $urlRewritesToPersist
+ ): array {
+ $stores = $this->storeManager->getStores();
+
+ foreach ($stores as $store) {
+ if ($store->getId() == $page->getStoreId()) {
+ $storePage = $page;
+ }
+
+ if (empty($storePage)) {
+ continue;
+ }
+
+ if (!isset($urlRewritesToPersist[$store->getId()])) {
+ $urlRewrite = $this->createUrlRewrite($storePage, $store->getId(), $suffix);
+ $urlRewritesToPersist[$store->getId()] = $urlRewrite;
+ }
}
return $urlRewritesToPersist;
diff --git a/src/Setup/Patch/Data/ConvertOverviewpageEntries.php b/src/Setup/Patch/Data/ConvertOverviewpageEntries.php
new file mode 100644
index 0000000..65e7279
--- /dev/null
+++ b/src/Setup/Patch/Data/ConvertOverviewpageEntries.php
@@ -0,0 +1,102 @@
+moduleDataSetup->startSetup();
+
+ $connection = $this->moduleDataSetup->getConnection();
+ $overviewPageTable = $this->moduleDataSetup->getTable('emico_attributelanding_overviewpage');
+ $overviewPageStoreTable = $this->moduleDataSetup->getTable('emico_attributelanding_overviewpage_store');
+ $stores = $this->storeManager->getStores();
+
+ $select = $connection->select()->from($overviewPageTable);
+ $overviewPages = $connection->fetchAll($select);
+
+ foreach ($overviewPages as $overviewPage) {
+ $storeIds = explode(',', $overviewPage['store_ids']);
+ foreach ($storeIds as $storeId) {
+ $this->insertOverviewPageStore($connection, $overviewPageStoreTable, $overviewPage, $storeId);
+ }
+ }
+
+ $this->moduleDataSetup->endSetup();
+ }
+
+ /**
+ * @param AdapterInterface $connection
+ * @param string $table
+ * @param array $overviewPage
+ * @param int $storeId
+ */
+ private function insertOverviewPageStore(
+ AdapterInterface $connection,
+ string $table,
+ array $overviewPage,
+ int $storeId
+ ): void {
+ $data = [
+ 'page_id' => $overviewPage['page_id'],
+ 'store_id' => $storeId,
+ ];
+
+ $fields = [
+ OverviewPageInterface::ACTIVE,
+ OverviewPageInterface::URL_PATH,
+ OverviewPageInterface::HEADING,
+ OverviewPageInterface::META_TITLE,
+ OverviewPageInterface::META_KEYWORDS,
+ OverviewPageInterface::META_DESCRIPTION,
+ OverviewPageInterface::CONTENT_FIRST,
+ OverviewPageInterface::CONTENT_LAST,
+ OverviewPageInterface::NAME,
+ ];
+
+ foreach ($fields as $field) {
+ if (isset($overviewPage[$field])) {
+ $data[$field] = $overviewPage[$field];
+ }
+ }
+
+ $connection->insert($table, $data);
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getDependencies(): array
+ {
+ return [];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getAliases(): array
+ {
+ return [];
+ }
+}
diff --git a/src/Ui/Component/Listing/Column/OverviewPageActions.php b/src/Ui/Component/Listing/Column/OverviewPageActions.php
index f42efc1..fceacf2 100644
--- a/src/Ui/Component/Listing/Column/OverviewPageActions.php
+++ b/src/Ui/Component/Listing/Column/OverviewPageActions.php
@@ -77,32 +77,6 @@ public function prepareDataSource(array $dataSource)
]
];
}
-
- if (!empty($item['store_ids']) && is_string($item['store_ids'])) {
- $store_ids = explode(',', $item['store_ids']);
- /** @phpstan-ignore-next-line */
- if (!empty($store_ids) && is_array($store_ids)) {
- $stores = $this->storeRepository->getList();
- $item['stores'] = '';
- foreach ($stores as $store) {
- $id = $store->getId();
-
- // phpcs:ignore SlevomatCodingStandard.Functions.StrictCall.StrictParameterMissing
- if (!in_array($id, $store_ids)) {
- continue;
- }
-
- /** @phpstan-ignore-next-line */
- if ($id === '0') {
- $item['stores'] .= 'All Store Views' . ', ';
- } else {
- $item['stores'] .= $store->getName() . ', ';
- }
- }
- }
- } else {
- $item['stores'] = 'All Store Views';
- }
}
}
diff --git a/src/etc/db_schema.xml b/src/etc/db_schema.xml
index 92ad0f8..2b51a9e 100644
--- a/src/etc/db_schema.xml
+++ b/src/etc/db_schema.xml
@@ -60,4 +60,23 @@