diff --git a/Helper/Settings.php b/Helper/Settings.php index eabd10a..2a9da0b 100644 --- a/Helper/Settings.php +++ b/Helper/Settings.php @@ -70,6 +70,8 @@ public function includedParamsInFromUrl() public function getExcludeList() { - return $this->scopeConfig->getValue(self::EXCLUDE_LIST,\Magento\Store\Model\ScopeInterface::SCOPE_STORE); + $excludeList = $this->scopeConfig->getValue(self::EXCLUDE_LIST,\Magento\Store\Model\ScopeInterface::SCOPE_STORE); + $excludeList = explode(',', $excludeList); + return $excludeList; } } diff --git a/Observer/Controller/ActionPredispatch.php b/Observer/Controller/ActionPredispatch.php index f0c5a08..45f405d 100644 --- a/Observer/Controller/ActionPredispatch.php +++ b/Observer/Controller/ActionPredispatch.php @@ -3,8 +3,10 @@ namespace Experius\PageNotFound\Observer\Controller; use Experius\PageNotFound\Model\PageNotFound; +use Experius\PageNotFound\Api\PageNotFoundRepositoryInterface; use Magento\Framework\App\ActionInterface; use Magento\Store\Api\Data\StoreInterface; +use Magento\Framework\Exception\NoSuchEntityException; class ActionPredispatch implements \Magento\Framework\Event\ObserverInterface { @@ -32,6 +34,8 @@ class ActionPredispatch implements \Magento\Framework\Event\ObserverInterface private $resultFactory; + private $pageNotFoundRepository; + public function __construct( \Magento\Framework\UrlInterface $url, \Experius\PageNotFound\Model\PageNotFoundFactory $pageNotFoundFactory, @@ -41,7 +45,8 @@ public function __construct( \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, \Magento\Framework\Controller\ResultFactory $resultFactory, \Magento\Store\Model\StoreManagerInterface $storeManager, - \Experius\PageNotFound\Helper\Settings $settings + \Experius\PageNotFound\Helper\Settings $settings, + PageNotFoundRepositoryInterface $pageNotFoundRepository ) { $this->url = $url; @@ -53,6 +58,7 @@ public function __construct( $this->resultFactory = $resultFactory; $this->storeManager = $storeManager; $this->settings = $settings; + $this->pageNotFoundRepository = $pageNotFoundRepository; } @@ -134,38 +140,40 @@ protected function stripFromUrl(){ */ protected function savePageNotFound($fromUrl, $isGraphql = false, ?StoreInterface $store = null) { - /* @var $pageNotFoundModel PageNotFound */ - $pageNotFoundModel = $this->pageNotFoundFactory->create(); - if ($isGraphql) { // Create full url to return with GraphQL - $baseUrl = $store->getBaseUrl(); + /** @var \Magento\Store\Model\Store $storeModel */ + $storeModel = $this->storeManager->getStore($store ? $store->getId() : null); + $baseUrl = $storeModel->getBaseUrl(); if (strpos($fromUrl, $baseUrl) === false) { $fromUrl = $baseUrl . ltrim($fromUrl, '/'); } } - $pageNotFoundModel->load($fromUrl, 'from_url'); + try { + $pageNotFoundModel = $this->pageNotFoundRepository->getByFromUrl($fromUrl); + } catch (NoSuchEntityException $e) { + $pageNotFoundModel = $this->pageNotFoundFactory->create(); + $pageNotFoundModel->setFromUrl($fromUrl); + $pageNotFoundModel->setCount(1); + } + $currentDate = date("Y-m-d"); $pageNotFoundModel->setLastVisited($currentDate); - $pageNotFoundModel->setStoreId($this->getStoreId()); - if ($pageNotFoundModel->getId() && empty($pageNotFoundModel->getToUrl())) { + if ($pageNotFoundModel->getPageNotFoundId() && empty($pageNotFoundModel->getToUrl())) { $count = $pageNotFoundModel->getCount(); $pageNotFoundModel->setCount($count + 1); - } elseif ($pageNotFoundModel->getId() && !empty($pageNotFoundModel->getToUrl())) { + } elseif ($pageNotFoundModel->getPageNotFoundId() && !empty($pageNotFoundModel->getToUrl())) { $count = $pageNotFoundModel->getCount(); - } else { - $pageNotFoundModel->setFromUrl($fromUrl); - $pageNotFoundModel->setCount(1); } if ($pageNotFoundModel->getToUrl()) { $pageNotFoundModel->setCountRedirect($pageNotFoundModel->getCountRedirect() + 1); } - $pageNotFoundModel->save(); + $this->pageNotFoundRepository->save($pageNotFoundModel); if ($pageNotFoundModel->getToUrl()) { if ($isGraphql) {