21 protected function validatePath(array
$data)
23 if (!empty(
$data[
'sitemap_filename']) && !empty(
$data[
'sitemap_path'])) {
24 $data[
'sitemap_path'] =
'/' . ltrim(
$data[
'sitemap_path'],
'/');
25 $path = rtrim(
$data[
'sitemap_path'],
'\\/') .
'/' .
$data[
'sitemap_filename'];
27 $validator = $this->_objectManager->create(\
Magento\MediaStorage\Model\File\
Validator\AvailablePath::class);
30 $validator->setPaths(
$helper->getValidPaths());
31 if (!$validator->isValid(
$path)) {
32 foreach ($validator->getMessages() as
$message) {
33 $this->messageManager->addErrorMessage(
$message);
36 $this->_objectManager->get(\
Magento\Backend\Model\Session::class)->setFormData(
$data);
53 $directory = $this->_objectManager->get(\
Magento\Framework\Filesystem::class)
54 ->getDirectoryWrite(DirectoryList::ROOT);
56 if ($this->
getRequest()->getParam(
'sitemap_id')) {
62 $directory->delete(
$path);
73 protected function saveData(
$data)
78 $this->clearSiteMap(
$model);
86 $this->messageManager->addSuccessMessage(
__(
'You saved the sitemap.'));
88 $this->_objectManager->get(\
Magento\Backend\Model\Session::class)->setFormData(
false);
90 }
catch (\Exception $e) {
92 $this->messageManager->addErrorMessage($e->getMessage());
94 $this->_objectManager->get(\
Magento\Backend\Model\Session::class)->setFormData(
$data);
105 protected function getResult(
$id)
108 $resultRedirect = $this->resultFactory->create(Controller\ResultFactory::TYPE_REDIRECT);
112 $resultRedirect->setPath(
'adminhtml/*/edit', [
'sitemap_id' =>
$id]);
113 return $resultRedirect;
116 if ($this->
getRequest()->getParam(
'generate')) {
118 return $this->resultFactory->create(Controller\ResultFactory::TYPE_FORWARD)
119 ->forward(
'generate');
121 $resultRedirect->setPath(
'adminhtml/*/');
122 return $resultRedirect;
124 $resultRedirect->setPath(
126 [
'sitemap_id' => $this->
getRequest()->getParam(
'sitemap_id')]
128 return $resultRedirect;
141 $resultRedirect = $this->resultFactory->create(Controller\ResultFactory::TYPE_REDIRECT);
143 if (!$this->validatePath(
$data)) {
144 $resultRedirect->setPath(
146 [
'sitemap_id' => $this->
getRequest()->getParam(
'sitemap_id')]
148 return $resultRedirect;
150 return $this->getResult($this->saveData(
$data));
152 $resultRedirect->setPath(
'adminhtml/*/');
153 return $resultRedirect;