/** * 导入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; }