/** * Prepare data which must be published * * @return array */ protected function _prepareDataForPublish() { $data = array(); $attributes = $this->_config->getPageRevisionControledAttributes(); foreach ($this->getData() as $key => $value) { if (in_array($key, $attributes)) { $this->unsetData($key); $data[$key] = $value; } } $data['published_revision_id'] = $this->getId(); return $data; }
/** * Preparing cms page object before it will be saved * * @param Varien_Event_Observer $observer * @return Enterprise_Cms_Model_Observer */ public function cmsPageSaveBefore(Varien_Event_Observer $observer) { /* @var $page Mage_Cms_Model_Page */ $page = $observer->getEvent()->getObject(); /* * All new pages created by user without permission to publish * should be disabled from the beginning. */ if (!$page->getId()) { $page->setIsNewPage(true); if (!$this->_config->canCurrentUserPublishRevision()) { $page->setIsActive(false); } // newly created page should be auto assigned to website root $page->setWebsiteRoot(true); } else { if (!$page->getUnderVersionControl()) { $page->setPublishedRevisionId(null); } } /* * Checking if node's data was passed and if yes. Saving new sort order for nodes. */ $nodesData = $page->getNodesData(); $appendToNodes = array(); $sortOrder = array(); if ($nodesData) { try { $nodesData = Mage::helper('core')->jsonDecode($page->getNodesData()); } catch (Zend_Json_Exception $e) { $nodesData = null; } if (!empty($nodesData)) { foreach ($nodesData as $row) { if (isset($row['page_exists']) && $row['page_exists']) { $appendToNodes[$row['node_id']] = 0; } if (isset($appendToNodes[$row['parent_node_id']])) { if (strpos($row['node_id'], '_') !== FALSE) { $appendToNodes[$row['parent_node_id']] = $row['sort_order']; } else { $sortOrder[$row['node_id']] = $row['sort_order']; } } } } } $page->setNodesSortOrder($sortOrder); $page->setAppendToNodes($appendToNodes); return $this; }