/** * Be aware we need the lang to assure that the cache works properly. The cache needs all paraemeters * in the function call to use the right hash * * @author Max Milbers * @param $vendorId * @param $virtuemart_category_id * @param null $selectedOrdering * @param null $orderDir * @param $lang * @return mixed */ public static function getChildCategoryListObject($vendorId, $virtuemart_category_id, $selectedOrdering = null, $orderDir = null, $lang = false) { if (!$lang) { $lang = VmConfig::$vmlang; } if (VmConfig::$defaultLang != $lang and VmConfig::$langCount > 1) { $langFields = array('category_name', 'category_description', 'metadesc', 'metakey', 'customtitle', 'slug'); $joins = array(); $useJLback = false; $method = 'INNER'; if (VmConfig::$defaultLang != VmConfig::$jDefLang) { $joins[] = ' ' . $method . ' JOIN `#__virtuemart_categories_' . VmConfig::$jDefLang . '` as ljd using (`virtuemart_category_id`)'; $method = 'LEFT'; $useJLback = true; } $select = 'SELECT c.*'; foreach ($langFields as $langField) { $expr2 = 'ld.' . $langField; if ($useJLback) { $expr2 = 'IFNULL(ld.' . $langField . ',ljd.' . $langField . ')'; } $select .= ', IFNULL(l.' . $langField . ',' . $expr2 . ') as ' . $langField . ''; } $from = ' FROM `#__virtuemart_categories` as c'; $joins[] = ' ' . $method . ' JOIN `#__virtuemart_categories_' . VmConfig::$defaultLang . '` as ld using (`virtuemart_category_id`)'; $joins[] = ' LEFT JOIN `#__virtuemart_categories_' . $lang . '` as l using (`virtuemart_category_id`)'; $query = $select . $from . implode(' ', $joins); } else { $query = 'SELECT l.* FROM `#__virtuemart_categories_' . $lang . '` as l INNER JOIN `#__virtuemart_categories` as c using (`virtuemart_category_id`)'; } $query .= ' LEFT JOIN `#__virtuemart_category_categories` as cx on c.`virtuemart_category_id` = cx.`category_child_id` '; $query .= ' WHERE cx.`category_parent_id` = ' . (int) $virtuemart_category_id . ' '; if (empty($vendorId) and VmConfig::get('multix') != 'none') { $query .= ' AND c.`shared` = 1'; } else { if (!empty($vendorId)) { $query .= ' AND c.`virtuemart_vendor_id` = ' . (int) $vendorId; } } $query .= ' AND c.`published` = 1 '; $query .= ' ORDER BY ' . $selectedOrdering . ' ' . $orderDir; $db = JFactory::getDBO(); $db->setQuery($query); $childList = $db->loadObjectList(); //vmdebug('getChildCategoryListObject in model category ',$query,$childList); if (!empty($childList)) { if (!class_exists('TableCategory_medias')) { require VMPATH_ADMIN . DS . 'tables' . DS . 'category_medias.php'; } foreach ($childList as $child) { $xrefTable = new TableCategory_medias($db); $child->virtuemart_media_id = $xrefTable->load($child->virtuemart_category_id); } } return $childList; }
/** * Be aware we need the lang to assure that the cache works properly. The cache needs all paraemeters * in the function call to use the right hash * * @author Max Milbers * @param $vendorId * @param $virtuemart_category_id * @param null $selectedOrdering * @param null $orderDir * @param $lang * @return mixed */ public static function getChildCategoryListObject($vendorId, $virtuemart_category_id, $selectedOrdering = null, $orderDir = null, $lang = VMLANG) { $query = 'SELECT L.* FROM `#__virtuemart_categories_' . $lang . '` as L JOIN `#__virtuemart_categories` as c using (`virtuemart_category_id`)'; $query .= ' LEFT JOIN `#__virtuemart_category_categories` as cx on c.`virtuemart_category_id` = cx.`category_child_id` '; $query .= 'WHERE cx.`category_parent_id` = ' . (int) $virtuemart_category_id . ' '; $query .= 'AND c.`virtuemart_vendor_id` = ' . (int) $vendorId . ' '; $query .= 'AND c.`published` = 1 '; $query .= ' ORDER BY ' . $selectedOrdering . ' ' . $orderDir; $db = JFactory::getDBO(); $db->setQuery($query); $childList = $db->loadObjectList(); if (!empty($childList)) { if (!class_exists('TableCategory_medias')) { require JPATH_VM_ADMINISTRATOR . DS . 'tables' . DS . 'category_medias.php'; } foreach ($childList as $child) { $xrefTable = new TableCategory_medias($db); $child->virtuemart_media_id = $xrefTable->load($child->virtuemart_category_id); } } return $childList; }
/** * Be aware we need the lang to assure that the cache works properly. The cache needs all paraemeters * in the function call to use the right hash * * @author Max Milbers * @param $vendorId * @param $virtuemart_category_id * @param null $selectedOrdering * @param null $orderDir * @param $lang * @return mixed */ public static function getChildCategoryListObject($vendorId, $virtuemart_category_id, $selectedOrdering = null, $orderDir = null, $lang = false) { if (!$lang) { $lang = VmConfig::$vmlang; } if (VmConfig::$defaultLang != $lang and VmConfig::$langCount > 1) { $query = 'SELECT c.*, IFNULL(l.category_name,ld.category_name) as category_name, IFNULL(l.category_description,ld.category_description) as category_description, IFNULL(l.metadesc,ld.metadesc) as metadesc, IFNULL(l.metakey,ld.metakey) as metakey, IFNULL(l.customtitle,ld.customtitle) as customtitle, IFNULL(l.slug,ld.slug) as slug FROM `#__virtuemart_categories` as c INNER JOIN `#__virtuemart_categories_' . VmConfig::$defaultLang . '` as ld using (`virtuemart_category_id`) LEFT JOIN `#__virtuemart_categories_' . $lang . '` as l using (`virtuemart_category_id`)'; } else { $query = 'SELECT L.* FROM `#__virtuemart_categories_' . $lang . '` as L INNER JOIN `#__virtuemart_categories` as c using (`virtuemart_category_id`)'; } $query .= ' LEFT JOIN `#__virtuemart_category_categories` as cx on c.`virtuemart_category_id` = cx.`category_child_id` '; $query .= ' WHERE cx.`category_parent_id` = ' . (int) $virtuemart_category_id . ' '; if (empty($vendorId) and VmConfig::get('multix') != 'none') { $query .= ' AND c.`shared` = 1'; } else { if (!empty($vendorId)) { $query .= ' AND c.`virtuemart_vendor_id` = ' . (int) $vendorId; } } $query .= ' AND c.`published` = 1 '; $query .= ' ORDER BY ' . $selectedOrdering . ' ' . $orderDir; $db = JFactory::getDBO(); $db->setQuery($query); $childList = $db->loadObjectList(); //vmdebug('getChildCategoryListObject in model category ',$childList,$query); if (!empty($childList)) { if (!class_exists('TableCategory_medias')) { require VMPATH_ADMIN . DS . 'tables' . DS . 'category_medias.php'; } foreach ($childList as $child) { $xrefTable = new TableCategory_medias($db); $child->virtuemart_media_id = $xrefTable->load($child->virtuemart_category_id); } } return $childList; }
/** * Get the list of child categories for a given category * * @param int $virtuemart_category_id Category id to check for child categories * @return object List of objects containing the child categories */ public static function getChildCategoryList($vendorId, $virtuemart_category_id, $selectedOrdering = 'category_name', $orderDir = 'ASC') { $key = (int) $vendorId . '_' . (int) $virtuemart_category_id; static $_childCateogryList = array(); if (!array_key_exists($key, $_childCateogryList)) { $query = 'SELECT L.* FROM `#__virtuemart_categories_' . VMLANG . '` as L JOIN `#__virtuemart_categories` as C using (`virtuemart_category_id`)'; $query .= ' LEFT JOIN `#__virtuemart_category_categories` as CC on C.`virtuemart_category_id` = CC.`category_child_id`'; $query .= 'WHERE CC.`category_parent_id` = ' . (int) $virtuemart_category_id . ' '; //$query .= 'AND C.`virtuemart_category_id` = CC.`category_child_id` '; $query .= 'AND C.`virtuemart_vendor_id` = ' . (int) $vendorId . ' '; $query .= 'AND C.`published` = 1 '; $query .= ' ORDER BY C.`ordering`, L.`' . $selectedOrdering . '` ' . $orderDir; $db = JFactory::getDBO(); $db->setQuery($query); $childList = $db->loadObjectList(); // $childList = $this->_getList( $query ); if (!empty($childList)) { if (!class_exists('TableCategory_medias')) { require JPATH_VM_ADMINISTRATOR . DS . 'tables' . DS . 'category_medias.php'; } foreach ($childList as $child) { $xrefTable = new TableCategory_medias($db); // $xrefTable = $this->getTable('category_medias'); $child->virtuemart_media_id = $xrefTable->load($child->virtuemart_category_id); } } $_childCateogryList[$key] = $childList; } return $_childCateogryList[$key]; }