| Current Path : /home/rtorresani/www/vendor/magento/module-cms-url-rewrite/Plugin/Cms/Model/ResourceModel/ |
| Current File : //home/rtorresani/www/vendor/magento/module-cms-url-rewrite/Plugin/Cms/Model/ResourceModel/Page.php |
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\CmsUrlRewrite\Plugin\Cms\Model\ResourceModel;
use Magento\UrlRewrite\Model\UrlPersistInterface;
use Magento\CmsUrlRewrite\Model\CmsPageUrlPathGenerator;
use Magento\CmsUrlRewrite\Model\CmsPageUrlRewriteGenerator;
use Magento\UrlRewrite\Service\V1\Data\UrlRewrite;
use Magento\Framework\Model\AbstractModel;
use Magento\Framework\Model\ResourceModel\Db\AbstractDb;
/**
* Before save and around delete plugin for \Magento\Cms\Model\ResourceModel\Page:
* - autogenerates url_key if the merchant didn't fill this field
* - remove all url rewrites for cms page on delete
*/
class Page
{
/**
* @var \Magento\CmsUrlRewrite\Model\CmsPageUrlPathGenerator
*/
protected $cmsPageUrlPathGenerator;
/**
* @var UrlPersistInterface
*/
protected $urlPersist;
/**
* @param CmsPageUrlPathGenerator $cmsPageUrlPathGenerator
* @param UrlPersistInterface $urlPersist
*/
public function __construct(
CmsPageUrlPathGenerator $cmsPageUrlPathGenerator,
UrlPersistInterface $urlPersist
) {
$this->cmsPageUrlPathGenerator = $cmsPageUrlPathGenerator;
$this->urlPersist = $urlPersist;
}
/**
* Before save handler
*
* @param \Magento\Cms\Model\ResourceModel\Page $subject
* @param \Magento\Framework\Model\AbstractModel $object
*
* @return void
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function beforeSave(
\Magento\Cms\Model\ResourceModel\Page $subject,
\Magento\Framework\Model\AbstractModel $object
) {
/** @var $object \Magento\Cms\Model\Page */
$urlKey = $object->getData('identifier');
if ($urlKey === '' || $urlKey === null) {
$object->setData('identifier', $this->cmsPageUrlPathGenerator->generateUrlKey($object));
}
}
/**
* On delete handler to remove related url rewrites
*
* @param \Magento\Cms\Model\ResourceModel\Page $subject
* @param AbstractDb $result
* @param AbstractModel $page
* @return AbstractDb
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function afterDelete(
\Magento\Cms\Model\ResourceModel\Page $subject,
AbstractDb $result,
AbstractModel $page
) {
if ($page->isDeleted()) {
$this->urlPersist->deleteByData(
[
UrlRewrite::ENTITY_ID => $page->getId(),
UrlRewrite::ENTITY_TYPE => CmsPageUrlRewriteGenerator::ENTITY_TYPE,
]
);
}
return $result;
}
}