AAAAlink); parse_str(html_entity_decode($link_query['query']), $link_vars); $catid = JArrayHelper::getValue($link_vars, 'virtuemart_category_id', 0); $prodid = JArrayHelper::getValue($link_vars, 'virtuemart_product_id', 0); if (!$catid) { $menu = & JSite::getMenu(); $menuParams = $menu->getParams($node->id); $catid = $menuParams->get('virtuemart_category_id', 0); } if (!$prodid) { $menu = & JSite::getMenu(); $menuParams = $menu->getParams($node->id); $prodid = $menuParams->get('virtuemart_product_id', 0); } if ($prodid && $catid) { $node->uid = 'com_virtuemartc' . $catid . 'p' . $prodid; $node->expandible = false; } elseif ($catid) { $node->uid = 'com_virtuemartc' . $catid; $node->expandible = true; } } /** Get the content tree for this kind of content */ static function getTree($xmap, $parent, &$params) { self::initialize(); $menu = & JSite::getMenu(); $link_query = parse_url($parent->link); parse_str(html_entity_decode($link_query['query']), $link_vars); $catid = intval(JArrayHelper::getValue($link_vars, 'virtuemart_category_id', 0)); $params['Itemid'] = intval(JArrayHelper::getValue($link_vars, 'Itemid', $parent->id)); $view = JArrayHelper::getValue($link_vars, 'view', ''); // we currently support only categories if (!in_array($view, array('categories','category'))) { return true; } $include_products = JArrayHelper::getValue($params, 'include_products', 1); $include_products = ( $include_products == 1 || ( $include_products == 2 && $xmap->view == 'xml') || ( $include_products == 3 && $xmap->view == 'html')); $params['include_products'] = $include_products; $params['include_product_images'] = (JArrayHelper::getValue($params, 'include_product_images', 1) && $xmap->view == 'xml'); $params['product_image_license_url'] = trim(JArrayHelper::getValue($params, 'product_image_license_url', '')); $priority = JArrayHelper::getValue($params, 'cat_priority', $parent->priority); $changefreq = JArrayHelper::getValue($params, 'cat_changefreq', $parent->changefreq); if ($priority == '-1') $priority = $parent->priority; if ($changefreq == '-1') $changefreq = $parent->changefreq; $params['cat_priority'] = $priority; $params['cat_changefreq'] = $changefreq; $priority = JArrayHelper::getValue($params, 'prod_priority', $parent->priority); $changefreq = JArrayHelper::getValue($params, 'prod_changefreq', $parent->changefreq); if ($priority == '-1') $priority = $parent->priority; if ($changefreq == '-1') $changefreq = $parent->changefreq; $params['prod_priority'] = $priority; $params['prod_changefreq'] = $changefreq; xmap_com_virtuemart::getCategoryTree($xmap, $parent, $params, $catid); return true; } /** Virtuemart support */ static function getCategoryTree($xmap, $parent, &$params, $catid=0) { $database = &JFactory::getDBO(); if (!isset($urlBase)) { $urlBase = JURI::base(); } $vendorId = 1; $cache = & JFactory::getCache('com_virtuemart','callback'); $children = $cache->call( array( 'VirtueMartModelCategory', 'getChildCategoryList' ),$vendorId, $catid ); $xmap->changeLevel(1); foreach ($children as $row) { $node = new stdclass; $node->id = $parent->id; $node->uid = $parent->uid . 'c' . $row->virtuemart_category_id; $node->browserNav = $parent->browserNav; $node->name = stripslashes($row->category_name); $node->priority = $params['cat_priority']; $node->changefreq = $params['cat_changefreq']; $node->expandible = true; $node->link = 'index.php?option=com_virtuemart&view=category&virtuemart_category_id=' . $row->virtuemart_category_id . '&Itemid='.$parent->id; if ($xmap->printNode($node) !== FALSE) { xmap_com_virtuemart::getCategoryTree($xmap, $parent, $params, $row->virtuemart_category_id); } } $xmap->changeLevel(-1); if ($params['include_products']) { $products = self::$productModel->getProductsInCategory($catid); if ($params['include_product_images']) { self::$categoryModel->addImages($products,1); } $xmap->changeLevel(1); foreach ($products as $row) { $node = new stdclass; $node->id = $parent->id; $node->uid = $parent->uid . 'c' . $row->virtuemart_category_id . 'p' . $row->virtuemart_product_id; $node->browserNav = $parent->browserNav; $node->priority = $params['prod_priority']; $node->changefreq = $params['prod_changefreq']; $node->name = $row->product_name; $node->modified = strtotime($row->modified_on); $node->expandible = false; $node->link = 'index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $row->virtuemart_product_id.'&virtuemart_category_id=' . $row->virtuemart_category_id . '&Itemid='.$parent->id; if ($params['include_product_images']) { foreach ($row->images as $image) { if (isset($image->file_url)) { $imagenode = new stdClass; $imagenode->src = $urlBase . $image->file_url_thumb; $imagenode->title = $row->product_name; $imagenode->license = $params['product_image_license_url']; $node->images[] = $imagenode; } } } $xmap->printNode($node); } $xmap->changeLevel(-1); } } static protected function initialize() { if (self::$initialized) return; $app = JFactory::getApplication (); if (!class_exists( 'VmConfig' )) { require(JPATH_ADMINISTRATOR . '/components/com_virtuemart/helpers/config.php'); VmConfig::loadConfig(); } JTable::addIncludePath(JPATH_VM_ADMINISTRATOR . '/tables'); $app->setUserState('com_virtuemart.htmlc0.limit',9000); $app->setUserState('com_virtuemart.xmlc0.limit',9000); if (!class_exists('VirtueMartModelCategory')) require(JPATH_VM_ADMINISTRATOR . '/models/category.php'); self::$categoryModel = new VirtueMartModelCategory(); if (!class_exists('VirtueMartModelProduct')) require(JPATH_VM_ADMINISTRATOR . '/models/product.php'); self::$productModel = new VirtueMartModelProduct(); } }