/** * Returns the HTML for the navigation tree. * * @param MShop_Catalog_Item_Interface $item Catalog item with child nodes * @param array Associative list of catalog IDs as keys and catalog nodes as values * @param array Associative list of parameters used for filtering * @return string Rendered HTML of the navigation tree */ public function transform(MShop_Catalog_Item_Interface $item, array $path, array $params = array()) { if ($item->getStatus() <= 0) { return ''; } $id = $item->getId(); $enc = $this->_encoder; $config = $item->getConfig(); $class = $item->hasChildren() ? ' withchild' : ' nochild'; $class .= isset($path[$item->getId()]) ? ' active' : ''; $class .= isset($config['css-class']) ? ' ' . $config['css-class'] : ''; $params['f_name'] = $item->getName('url'); $params['f_catid'] = $id; $url = $enc->attr($this->_getView()->url($this->_target, $this->_controller, $this->_action, $params, array(), $this->_config)); $output = '<li class="cat-item catid-' . $enc->attr($id . $class) . '" data-id="' . $id . '" >'; $output .= '<a class="cat-item" href="' . $url . '"><div class="media-list">'; foreach ($item->getListItems('media', 'icon') as $listItem) { if (($mediaItem = $listItem->getRefItem()) !== null) { $output .= $this->media($mediaItem, $this->_contentUrl, array('class' => 'media-item')); } } $output .= '</div><span class="cat-name">' . $enc->html($item->getName(), $enc::TRUST) . '</span></a>'; $children = $item->getChildren(); if (!empty($children)) { $output .= '<ul class="level-' . $enc->attr($item->getNode()->level + 1) . '">'; foreach ($children as $child) { $output .= $this->transform($child, $path, $params); } $output .= '</ul>'; } $output .= '</li>'; return $output; }
/** * Returns the HTML for the navigation tree. * * @param MShop_Catalog_Item_Interface $item Catalog item with child nodes * @param array Associative list of catalog IDs as keys and catalog nodes as values * @param array Associative list of parameters used for filtering * @return string Rendered HTML of the navigation tree */ public function transform(MShop_Catalog_Item_Interface $item, array $path, array $params = array()) { if ($item->getStatus() <= 0) { return ''; } $id = $item->getId(); $enc = $this->_encoder; $config = $item->getConfig(); $class = $item->hasChildren() ? ' withchild' : ' nochild'; $class .= isset($path[$item->getId()]) ? ' active' : ''; $class .= isset($config['css-class']) ? ' ' . $config['css-class'] : ''; $params['a-name'] = str_replace(' ', '-', $item->getName()); $params['f-catalog-id'] = $id; $url = $enc->attr($this->url($this->_target, $this->_controller, $this->_action, $params, array(), $this->_config)); $output = '<li class="cat-item catid-' . $enc->attr($id . $class) . '" data-id="' . $id . '" ><!-- --><a class="cat-item" href="' . $url . '"><span class="cat-name">' . $enc->html($item->getName(), $enc::TRUST) . '</span></a>'; $children = $item->getChildren(); if (!empty($children)) { $output .= '<ul class="level-' . $enc->attr($item->getNode()->level + 1) . '">'; foreach ($children as $child) { $output .= $this->transform($child, $path, $params); } $output .= '</ul>'; } $output .= '</li>'; return $output; }
/** * Updates the usage information of a node. * * @param integer $id Id of the record * @param MShop_Catalog_Item_Interface $item Catalog item * @param boolean $case True if the record shoud be added or false for an update * */ private function _updateUsage($id, MShop_Catalog_Item_Interface $item, $case = false) { $date = date('Y-m-d H:i:s'); $context = $this->_getContext(); $dbm = $context->getDatabaseManager(); $dbname = $this->_getResourceName(); $conn = $dbm->acquire($dbname); try { $siteid = $context->getLocale()->getSiteId(); if ($case !== true) { $path = 'mshop/catalog/manager/default/item/usage/update'; } else { $path = 'mshop/catalog/manager/default/item/usage/add'; } $stmt = $conn->create($context->getConfig()->get($path, $path)); $stmt->bind(1, json_encode($item->getConfig())); $stmt->bind(2, $date); // mtime $stmt->bind(3, $context->getEditor()); if ($case !== true) { $stmt->bind(4, $siteid, MW_DB_Statement_Abstract::PARAM_INT); $stmt->bind(5, $id, MW_DB_Statement_Abstract::PARAM_INT); } else { $stmt->bind(4, $date); // ctime $stmt->bind(5, $siteid, MW_DB_Statement_Abstract::PARAM_INT); $stmt->bind(6, $id, MW_DB_Statement_Abstract::PARAM_INT); } $stmt->execute()->finish(); $dbm->release($conn, $dbname); } catch (Exception $e) { $dbm->release($conn, $dbname); throw $e; } }