Advertisement
NFL

Untitled

NFL
Nov 18th, 2016
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 7.83 KB | None | 0 0
  1.  
  2.     public function sitemapxmlAction() {
  3.         //$this->enableErrors();
  4.         switch ($this->act) {
  5.             case 'index': default:
  6.                 $message = array_pop(array_merge($this->_helper->flashMessenger->getMessages(), $this->_helper->flashMessenger->getCurrentMessages()));
  7.                 $this->view->message = $message[1];
  8.                 $this->view->status = $message[0];
  9.                 /**
  10.                  * Предполагаем что sitemap.xml всегда один, хранится в public_html/sitemap.xml
  11.                  */
  12.                 $file = $_SERVER['DOCUMENT_ROOT'] . '/sitemap.xml';
  13.                 $xml = simplexml_load_file($file);
  14.                 $this->view->records = $xml->children()->count();
  15.                 $this->view->sitemapDate = date('d.m.Y H:i:s', filemtime($file));
  16.                 $model = new Seo_Model_SitemapRules;
  17.                 $this->view->list = $model->getAll();
  18.                 $model = new Seo_Model_SitemapStaticRules;
  19.                 $this->view->listStatic = $model->getAll();
  20.                 break;
  21.             case 'edit-rule':
  22.                 //$this->enableErrors();
  23.                 $model = new Seo_Model_SitemapRules;
  24.                 $form = new Seo_Form_Sitemap_EditRule();
  25.                 if ($this->getRequest()->isPost()) {
  26.                     $data = $this->getRequest()->getPost();
  27.                     $id = $data['id'];
  28.                     //Zend_Debug::dump($data);return false;
  29.                     unset($data['submit'], $data['id']);
  30.  
  31.                     $model->update($data, 'id=' . $id);
  32.                     $this->_redirect($this->view->adminUrl('seo', 'sitemapxml', array('hash' => 'rules')));
  33.                 } else {
  34.                     $id = $this->_getParam('id');
  35.                     $data = $model->getByPk($id);
  36.                     $this->view->form = $form->populate($data);
  37.                 }
  38.                 $this->render('sitemap/edit-rule');
  39.                 break;
  40.             case 'add-rule':
  41.                 //$this->enableErrors();
  42.                 $form = new Seo_Form_Sitemap_AddRule;
  43.                 if ($this->getRequest()->isPost()) {
  44.                     $data = $this->getRequest()->getPost();
  45.                     unset($data['submit']);
  46.                     $model = new Seo_Model_SitemapRules;
  47.                     $model->insert($data);
  48.                     $this->_redirect($this->view->adminUrl('seo', 'sitemapxml', array('hash' => 'rules')));
  49.                 } else {
  50.                     $this->view->form = $form;
  51.                 }
  52.                 $this->render('sitemap/add-rule');
  53.                 break;
  54.             case 'pub':
  55.                 $this->_helper->layout()->disableLayout();
  56.                 $id = $this->_getParam('id');
  57.                 $model = new Seo_Model_SitemapRules;
  58.                 $data = $model->getByPk($id);
  59.                 $newState = $data['active'] ? 0 : 1;
  60.                 $model->update(array('active' => $newState), 'id=' . $id);
  61.                 $this->_redirect($this->view->adminUrl('seo', 'sitemapxml', array('hash' => 'rules')));
  62.                 break;
  63.             case 'del-rule':
  64.                 $this->_helper->layout()->disableLayout();
  65.                 $id = $this->_getParam('id');
  66.                 $model = new Seo_Model_SitemapRules;
  67.                 $model->delete('id=' . $id);
  68.                 $this->_redirect($this->view->adminUrl('seo', 'sitemapxml', array('hash' => 'rules')));
  69.                 break;
  70.             case 'add-static-rule':
  71.                 $form = new Seo_Form_Sitemap_AddStaticRule;
  72.                 if ($this->getRequest()->isPost()) {
  73.                     $data = $this->getRequest()->getPost();
  74.                     $model = new Seo_Model_SitemapStaticRules;
  75.                     unset($data['submit']);
  76.                     $model->insert($data);
  77.                     $this->_redirect($this->view->adminUrl('seo', 'sitemapxml', array('hash' => 'rules')));
  78.                 } else {
  79.                     $this->view->form = $form;
  80.                 }
  81.                 $this->render('sitemap/add-static-rule');
  82.                 break;
  83.             case 'edit-static-rule':
  84.                 $model = new Seo_Model_SitemapStaticRules;
  85.                 $form = new Seo_Form_Sitemap_EditStaticRule;
  86.                 if ($this->getRequest()->isPost()) {
  87.                     $data = $this->getRequest()->getPost();
  88.                     $id = $data['id'];
  89.                     unset($data['id'], $data['submit']);
  90.                     $model->update($data, 'id=' . $id);
  91.                     $this->_redirect($this->view->adminUrl('seo', 'sitemapxml', array('hash' => 'rules')));
  92.                 } else {
  93.                     $id = $this->_getParam('id');
  94.                     $data = $model->getByPk($id);
  95.                     $this->view->form = $form->populate($data);
  96.                 }
  97.                 $this->render('sitemap/edit-static-rule');
  98.                 break;
  99.             case 'del-static-rule':
  100.                 $this->_helper->layout()->disableLayout();
  101.                 $id = $this->_getParam('id');
  102.                 $model = new Seo_Model_SitemapStaticRules;
  103.                 $model->delete('id=' . $id);
  104.                 $this->_redirect($this->view->adminUrl('seo', 'sitemapxml', array('hash' => 'rules')));
  105.                 break;
  106.             case 'pub-static':
  107.                 $this->_helper->layout()->disableLayout();
  108.                 $id = $this->_getParam('id');
  109.                 $model = new Seo_Model_SitemapStaticRules();
  110.                 $data = $model->getByPk($id);
  111.                 $newState = $data['active'] ? 0 : 1;
  112.                 $model->update(array('active' => $newState), 'id=' . $id);
  113.                 $this->_redirect($this->view->adminUrl('seo', 'sitemapxml', array('hash' => 'rules')));
  114.                 break;
  115.         }
  116.     }
  117.  
  118.     public function createsitemapAction() {
  119.         //$this->enableErrors();
  120.         $form = new Seo_Form_Sitemap_Create;
  121.         if ($this->getRequest()->isPost()) {
  122.             $data = $this->getRequest()->getPost();
  123.             $this->_helper->layout()->disableLayout();
  124.             $model = new Seo_Model_SitemapRules;
  125.             $model->customSitemapRules = function() use($model) {
  126.                 $filters = new Catalog_Model_Properties_Categories;
  127.                 $categories = (new Catalog_Model_Categories)->getAll(false, true, false);
  128.                 $filters->setKeys($categories);
  129.                 $data = $filters->lst();
  130.                 foreach ($data as $v) {
  131.                     $propertiesList = json_decode($v['properties_list'], true);
  132.  
  133.                     $categoryUrl = '/' . trim($categories[$v['category_id']]['href'], '/');
  134.                     foreach ($propertiesList as $prop => $values) {
  135.                         foreach ($values as $value) {                          
  136.                             if (mb_strlen($value)&&mb_strlen($categoryUrl)>1) {
  137.                                 $urlData = [
  138.                                     'changefreq' => 'daily',
  139.                                     'priority' => '0.9',
  140.                                     'url' => $categoryUrl . '-' . $value . '/'
  141.                                 ];
  142.                                 $model->addItem($urlData);
  143.                             }
  144.                         }
  145.                     }
  146.                 }
  147.             };
  148.             $result = $model->process($data, $data['languages']);
  149.             if ($result) {
  150.                 $this->_helper->flashMessenger->addMessage('ok:Sitemap успешно сгенерирован');
  151.             } else {
  152.                 $this->_helper->flashMessenger->addMessage('error:Возникла ошибка при создании sitemap');
  153.             }
  154.             $this->_redirect($this->view->adminUrl('seo', 'sitemapxml'));
  155.         } else {
  156.             $this->view->form = $form;
  157.         }
  158.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement