/** * 导入Zend_Navigation数据到资源数据表中 * * @param Zend_Navigation_Container $container * @param integer $parent * @return integer $order * @return integer * @throws ZtChart_System_Model_Resource_Exception */ public function load(Zend_Navigation_Container $container, $parent = 0, $order = 0) { foreach ($container as $page) { if (!$page instanceof Zend_Navigation_Page_Mvc) { throw new ZtChart_System_Model_Resource_Exception('The Zend_Navigation page must be MVC.'); } if (!$page->getResource()) { continue; } $resource = array('resource_name' => $page->getLabel(), 'resource_desc' => $page->desc ?: $page->getLabel(), 'resource_mvc' => $page->getResource(), 'resource_parent' => $parent, 'resource_order' => ++$order, 'resource_hash' => new Zend_Db_Expr('MD5(resource_mvc)')); switch ($this->_mode) { case self::RESET: case self::APPEND: $resourceId = $this->_resourceDAO->insert($resource); break; case self::REPLACE: if (null === ($resourcRow = $this->_resourceDAO->fetchRow(array('resource_hash = ?' => md5($page->getResource()))))) { $resourceId = $this->_resourceDAO->insert($resource); } else { $resourceId = $resourcRow['resource_id']; $this->_resourceDAO->update($resource, $resourceId); } break; default: throw new ZtChart_System_Model_Resource_Exception('The imort mode error.'); } if ($page->hasChildren()) { $order = $this->load($page, $resourceId, $order); } } return $order; }
/** * * @param integer|string|ZtChart_Model_Db_Table_Row $resource */ public function __construct($resource = null) { if (null !== $resource) { if (!$resource instanceof ZtChart_Model_Db_Table_Row) { $resourceDAO = new ZtChart_Model_DbTable_Resource(); if (is_numeric($resource)) { $resource = $resourceDAO->fetchRow($resource); } else { if (is_string($resource)) { $resource = $resourceDAO->fetchRow(array('resource_mvc = ?' => $resource)); } } } $this->_resourceRow = $resource; } }