Example #1
0
    /**
     * 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;
    }
Example #2
0
    /**
     * 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;
    }
Example #3
0
    /**
     * 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;
    }
Example #4
0
    /**
     * 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];
    }