Skip to content

Commit

Permalink
MAGETWO-70872: [WIP]Google Sitemap refactoring - introduce item resol…
Browse files Browse the repository at this point in the history
…ver #10288

 - Merge Pull Request #10288 from piotrkwiecinski/magento2:sitemap-item-resolver
 - Merged commits:
   1. 9867aca
   2. 9b25030
   3. becd97c
   4. d990c95
   5. 79d15ad
   6. 6c137a8
   7. 4bc880b
   8. 878e361
   9. b6ddaa7
   10. 9c65d50
   11. f95bf7a
   12. b251c7e
   13. c4885c9
   14. 458d45b
  • Loading branch information
Oleksii Korshenko committed Jul 26, 2017
2 parents c955c32 + 458d45b commit a53794d
Show file tree
Hide file tree
Showing 28 changed files with 1,997 additions and 519 deletions.
29 changes: 29 additions & 0 deletions app/code/Magento/Sitemap/Helper/Data.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,15 @@
*/
namespace Magento\Sitemap\Helper;

use Magento\Sitemap\Model\ItemResolver\CategoryConfigReader;
use Magento\Sitemap\Model\ItemResolver\CmsPageConfigReader;
use Magento\Sitemap\Model\ItemResolver\ProductConfigReader;
use Magento\Sitemap\Model\SitemapConfigReader;
use Magento\Store\Model\ScopeInterface;

/**
* @deprecated
*/
class Data extends \Magento\Framework\App\Helper\AbstractHelper
{
/**
Expand Down Expand Up @@ -68,6 +75,8 @@ class Data extends \Magento\Framework\App\Helper\AbstractHelper
*
* @param int $storeId
* @return int
* @deprecated
* @see SitemapConfigReader::getMaximumLinesNumber()
*/
public function getMaximumLinesNumber($storeId)
{
Expand All @@ -83,6 +92,8 @@ public function getMaximumLinesNumber($storeId)
*
* @param int $storeId
* @return int
* @deprecated
* @see SitemapConfigReader::getMaximumFileSize()
*/
public function getMaximumFileSize($storeId)
{
Expand All @@ -98,6 +109,8 @@ public function getMaximumFileSize($storeId)
*
* @param int $storeId
* @return string
* @deprecated
* @see CategoryConfigReader::getChangeFrequency()
*/
public function getCategoryChangefreq($storeId)
{
Expand All @@ -113,6 +126,8 @@ public function getCategoryChangefreq($storeId)
*
* @param int $storeId
* @return string
* @deprecated
* @see ProductConfigReader::getChangeFrequency()
*/
public function getProductChangefreq($storeId)
{
Expand All @@ -128,6 +143,8 @@ public function getProductChangefreq($storeId)
*
* @param int $storeId
* @return string
* @deprecated
* @see CmsPageConfigReader::getChangeFrequency()
*/
public function getPageChangefreq($storeId)
{
Expand All @@ -143,6 +160,8 @@ public function getPageChangefreq($storeId)
*
* @param int $storeId
* @return string
* @deprecated
* @see CategoryConfigReader::getPriority()
*/
public function getCategoryPriority($storeId)
{
Expand All @@ -158,6 +177,8 @@ public function getCategoryPriority($storeId)
*
* @param int $storeId
* @return string
* @deprecated
* @see ProductConfigReader::getPriority()
*/
public function getProductPriority($storeId)
{
Expand All @@ -173,6 +194,8 @@ public function getProductPriority($storeId)
*
* @param int $storeId
* @return string
* @deprecated
* @see CmsPageConfigReader::getPriority()
*/
public function getPagePriority($storeId)
{
Expand All @@ -188,6 +211,8 @@ public function getPagePriority($storeId)
*
* @param int $storeId
* @return int
* @deprecated
* @see SitemapConfigReader::getEnableSubmissionRobots()
*/
public function getEnableSubmissionRobots($storeId)
{
Expand All @@ -203,6 +228,8 @@ public function getEnableSubmissionRobots($storeId)
*
* @param int $storeId
* @return string
* @deprecated
* @see SitemapConfigReader::getProductImageIncludePolicy()
*/
public function getProductImageIncludePolicy($storeId)
{
Expand All @@ -217,6 +244,8 @@ public function getProductImageIncludePolicy($storeId)
* Get list valid paths for generate a sitemap XML file
*
* @return string[]
* @deprecated
* @see SitemapConfigReader::getValidPaths()
*/
public function getValidPaths()
{
Expand Down
72 changes: 72 additions & 0 deletions app/code/Magento/Sitemap/Model/ItemResolver/Category.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/

namespace Magento\Sitemap\Model\ItemResolver;

use Magento\Sitemap\Model\ResourceModel\Catalog\CategoryFactory;
use Magento\Sitemap\Model\SitemapItemInterfaceFactory;

class Category implements ItemResolverInterface
{
/**
* Category factory
*
* @var CategoryFactory
*/
private $categoryFactory;

/**
* Sitemap item factory
*
* @var SitemapItemInterfaceFactory
*/
private $itemFactory;

/**
* Config reader
*
* @var ConfigReaderInterface
*/
private $configReader;

/**
* CategorySitemapItemResolver constructor.
*
* @param ConfigReaderInterface $configReader
* @param CategoryFactory $categoryFactory
* @param SitemapItemInterfaceFactory $itemFactory
*/
public function __construct(
ConfigReaderInterface $configReader,
CategoryFactory $categoryFactory,
SitemapItemInterfaceFactory $itemFactory
) {
$this->categoryFactory = $categoryFactory;
$this->itemFactory = $itemFactory;
$this->configReader = $configReader;
}

/**
* {@inheritdoc}
*/
public function getItems($storeId)
{
$collection = $this->categoryFactory->create()
->getCollection($storeId);

$items = array_map(function ($item) use ($storeId) {
return $this->itemFactory->create([
'url' => $item->getUrl(),
'updatedAt' => $item->getUpdatedAt(),
'images' => $item->getImages(),
'priority' => $this->configReader->getPriority($storeId),
'changeFrequency' => $this->configReader->getChangeFrequency($storeId),
]);
}, $collection);

return $items;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/

namespace Magento\Sitemap\Model\ItemResolver;

use Magento\Framework\App\Config\ScopeConfigInterface;
use Magento\Store\Model\ScopeInterface;

class CategoryConfigReader implements ConfigReaderInterface
{
/**#@+
* Xpath config settings
*/
const XML_PATH_CHANGE_FREQUENCY = 'sitemap/category/changefreq';
const XML_PATH_PRIORITY = 'sitemap/category/priority';
/**#@-*/

/**
* Scope config
*
* @var ScopeConfigInterface
*/
private $scopeConfig;

/**
* CategoryItemResolverConfigReader constructor.
*
* @param ScopeConfigInterface $scopeConfig
*/
public function __construct(ScopeConfigInterface $scopeConfig)
{
$this->scopeConfig = $scopeConfig;
}

/**
* {@inheritdoc}
*/
public function getPriority($storeId)
{
return (string)$this->scopeConfig->getValue(
self::XML_PATH_PRIORITY,
ScopeInterface::SCOPE_STORE,
$storeId
);
}

/**
* {@inheritdoc}
*/
public function getChangeFrequency($storeId)
{
return (string)$this->scopeConfig->getValue(
self::XML_PATH_CHANGE_FREQUENCY,
ScopeInterface::SCOPE_STORE,
$storeId
);
}
}
70 changes: 70 additions & 0 deletions app/code/Magento/Sitemap/Model/ItemResolver/CmsPage.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/

namespace Magento\Sitemap\Model\ItemResolver;

use Magento\Sitemap\Model\ResourceModel\Cms\PageFactory;
use Magento\Sitemap\Model\SitemapItemInterfaceFactory;

class CmsPage implements ItemResolverInterface
{
/**
* Cms page factory
*
* @var PageFactory
*/
private $cmsPageFactory;

/**
* Sitemap item factory
*
* @var SitemapItemInterfaceFactory
*/
private $itemFactory;

/**
* Config reader
*
* @var ConfigReaderInterface
*/
private $configReader;

/**
* CmsPage constructor.
*
* @param ConfigReaderInterface $configReader
* @param PageFactory $cmsPageFactory
* @param SitemapItemInterfaceFactory $itemFactory
*/
public function __construct(
ConfigReaderInterface $configReader,
PageFactory $cmsPageFactory,
SitemapItemInterfaceFactory $itemFactory
) {
$this->cmsPageFactory = $cmsPageFactory;
$this->itemFactory = $itemFactory;
$this->configReader = $configReader;
}

/**
* {@inheritdoc}
*/
public function getItems($storeId)
{
$collection = $this->cmsPageFactory->create()->getCollection($storeId);
$items = array_map(function ($item) use ($storeId) {
return $this->itemFactory->create([
'url' => $item->getUrl(),
'updatedAt' => $item->getUpdatedAt(),
'images' => $item->getImages(),
'priority' => $this->configReader->getPriority($storeId),
'changeFrequency' => $this->configReader->getChangeFrequency($storeId),
]);
}, $collection);

return $items;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/

namespace Magento\Sitemap\Model\ItemResolver;

use Magento\Framework\App\Config\ScopeConfigInterface;
use Magento\Store\Model\ScopeInterface;

class CmsPageConfigReader implements ConfigReaderInterface
{
/**#@+
* Xpath config settings
*/
const XML_PATH_CHANGE_FREQUENCY = 'sitemap/page/changefreq';
const XML_PATH_PRIORITY = 'sitemap/page/priority';
/**#@-*/

/**
* Scope config
*
* @var ScopeConfigInterface
*/
private $scopeConfig;

/**
* CategoryItemResolverConfigReader constructor.
*
* @param ScopeConfigInterface $scopeConfig
*/
public function __construct(ScopeConfigInterface $scopeConfig)
{
$this->scopeConfig = $scopeConfig;
}

/**
* {@inheritdoc}
*/
public function getPriority($storeId)
{
return (string)$this->scopeConfig->getValue(
self::XML_PATH_PRIORITY,
ScopeInterface::SCOPE_STORE,
$storeId
);
}

/**
* {@inheritdoc}
*/
public function getChangeFrequency($storeId)
{
return (string)$this->scopeConfig->getValue(
self::XML_PATH_CHANGE_FREQUENCY,
ScopeInterface::SCOPE_STORE,
$storeId
);
}
}
Loading

0 comments on commit a53794d

Please sign in to comment.