示例#1
0
 function getTotal()
 {
     $user =& JFactory::getUser();
     $aid = $user->get('aid');
     $db =& JFactory::getDBO();
     $params =& K2HelperUtilities::getParams('com_k2');
     $task = JRequest::getCmd('task');
     if ($task == 'search' && $params->get('googleSearch')) {
         return 0;
     }
     $jnow =& JFactory::getDate();
     $now = $jnow->toMySQL();
     $nullDate = $db->getNullDate();
     $query = "SELECT COUNT(*) FROM #__k2_items as i LEFT JOIN #__k2_categories c ON c.id = i.catid";
     if ($task == 'tag') {
         $query .= " LEFT JOIN #__k2_tags_xref tags_xref ON tags_xref.itemID = i.id LEFT JOIN #__k2_tags tags ON tags.id = tags_xref.tagID";
     }
     if ($task == 'user' && !$user->guest && $user->id == JRequest::getInt('id')) {
         $query .= " WHERE ";
     } else {
         $query .= " WHERE i.published = 1 AND ";
     }
     if (K2_JVERSION == '16') {
         $query .= "i.access IN(" . implode(',', $user->authorisedLevels()) . ")" . " AND i.trash = 0" . " AND c.published = 1" . " AND c.access IN(" . implode(',', $user->authorisedLevels()) . ")" . " AND c.trash = 0";
         $mainframe =& JFactory::getApplication();
         $languageFilter = $mainframe->getLanguageFilter();
         if ($languageFilter) {
             $languageTag = JFactory::getLanguage()->getTag();
             $query .= " AND c.language IN (" . $db->quote($languageTag) . "," . $db->quote('*') . ") \n\t\t\t\t\t\tAND i.language IN (" . $db->quote($languageTag) . "," . $db->quote('*') . ")";
         }
     } else {
         $query .= "i.access <= {$aid}" . " AND i.trash = 0" . " AND c.published = 1" . " AND c.access <= {$aid}" . " AND c.trash = 0";
     }
     $query .= " AND ( i.publish_up = " . $db->Quote($nullDate) . " OR i.publish_up <= " . $db->Quote($now) . " )";
     $query .= " AND ( i.publish_down = " . $db->Quote($nullDate) . " OR i.publish_down >= " . $db->Quote($now) . " )";
     //Build query depending on task
     switch ($task) {
         case 'category':
             $id = JRequest::getInt('id');
             $category =& JTable::getInstance('K2Category', 'Table');
             $category->load($id);
             $cparams = new JParameter($category->params);
             if ($cparams->get('inheritFrom')) {
                 $parent =& JTable::getInstance('K2Category', 'Table');
                 $parent->load($cparams->get('inheritFrom'));
                 $cparams = new JParameter($parent->params);
             }
             if ($cparams->get('catCatalogMode')) {
                 $query .= " AND c.id={$id} ";
             } else {
                 $categories = K2ModelItemlist::getCategoryTree($id);
                 $sql = @implode(',', $categories);
                 $query .= " AND c.id IN ({$sql})";
             }
             break;
         case 'user':
             $id = JRequest::getInt('id');
             $query .= " AND i.created_by={$id} AND i.created_by_alias=''";
             $categories = $params->get('userCategoriesFilter', NULL);
             if (is_array($categories)) {
                 $categories = array_filter($categories);
                 JArrayHelper::toInteger($categories);
                 $query .= " AND i.catid IN(" . implode(',', $categories) . ")";
             }
             if (is_string($categories) && $categories > 0) {
                 $query .= " AND i.catid = {$categories}";
             }
             break;
         case 'search':
             $badchars = array('#', '>', '<', '\\');
             $search = trim(str_replace($badchars, '', JRequest::getString('searchword', null)));
             $sql = K2ModelItemlist::prepareSearch($search);
             if (!empty($sql)) {
                 $query .= $sql;
             } else {
                 $result = 0;
                 return $result;
             }
             break;
         case 'date':
             if (JRequest::getInt('month') && JRequest::getInt('year')) {
                 $month = JRequest::getInt('month');
                 $year = JRequest::getInt('year');
                 $query .= " AND MONTH(i.created) = {$month} AND YEAR(i.created)={$year} ";
                 if (JRequest::getInt('day')) {
                     $day = JRequest::getInt('day');
                     $query .= " AND DAY(i.created) = {$day}";
                 }
                 if (JRequest::getInt('catid')) {
                     $catid = JRequest::getInt('catid');
                     $query .= " AND i.catid={$catid}";
                 }
             }
             break;
         case 'tag':
             $tag = JRequest::getString('tag');
             jimport('joomla.filesystem.file');
             if (JFile::exists(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_joomfish' . DS . 'joomfish.php') && $task == 'tag') {
                 $registry =& JFactory::getConfig();
                 $lang = $registry->getValue("config.jflang");
                 $sql = " SELECT reference_id FROM #__jf_content as jfc LEFT JOIN #__languages as jfl ON jfc.language_id = jfl." . K2_JF_ID;
                 $sql .= " WHERE jfc.value = " . $db->Quote($tag);
                 $sql .= " AND jfc.reference_table = 'k2_tags'";
                 $sql .= " AND jfc.reference_field = 'name' AND jfc.published=1";
                 $db->setQuery($sql, 0, 1);
                 $result = $db->loadResult();
             }
             if (JFile::exists(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_falang' . DS . 'falang.php') && $task == 'tag') {
                 $registry =& JFactory::getConfig();
                 $lang = $registry->getValue("config.jflang");
                 $sql = " SELECT reference_id FROM #__falang_content as fc LEFT JOIN #__languages as fl ON fc.language_id = fl.lang_id";
                 $sql .= " WHERE fc.value = " . $db->Quote($tag);
                 $sql .= " AND fc.reference_table = 'k2_tags'";
                 $sql .= " AND fc.reference_field = 'name' AND fc.published=1";
                 $db->setQuery($sql, 0, 1);
                 $result = $db->loadResult();
             }
             if (isset($result) && $result > 0) {
                 $query .= " AND (tags.id) = {$result}";
             } else {
                 $query .= " AND (tags.name) = " . $db->Quote($tag);
             }
             $categories = $params->get('categoriesFilter', NULL);
             if (is_array($categories)) {
                 $query .= " AND i.catid IN(" . implode(',', $categories) . ")";
             }
             if (is_string($categories)) {
                 $query .= " AND i.catid = {$categories}";
             }
             break;
         default:
             $searchIDs = $params->get('categories');
             if (is_array($searchIDs) && count($searchIDs)) {
                 if ($params->get('catCatalogMode')) {
                     $sql = @implode(',', $searchIDs);
                     $query .= " AND i.catid IN ({$sql})";
                 } else {
                     $result = K2ModelItemlist::getCategoryTree($searchIDs);
                     if (count($result)) {
                         $sql = @implode(',', $result);
                         $query .= " AND i.catid IN ({$sql})";
                     }
                 }
             }
             break;
     }
     //Set featured flag
     if ($task == 'category' || empty($task)) {
         if (JRequest::getVar('featured') == '0') {
             $query .= " AND i.featured != 1";
         } else {
             if (JRequest::getVar('featured') == '2') {
                 $query .= " AND i.featured = 1";
             }
         }
     }
     $dispatcher = JDispatcher::getInstance();
     JPluginHelper::importPlugin('k2');
     $dispatcher->trigger('onK2BeforeSetQuery', array(&$query));
     $db->setQuery($query);
     $result = $db->loadResult();
     return $result;
 }
示例#2
0
    function getTotal() {

        $user = &JFactory::getUser();
        $aid = $user->get('aid');
        $db = &JFactory::getDBO();
        $params = &JComponentHelper::getParams('com_k2');
        $task = JRequest::getCmd('task');

        if($task=='search' && $params->get('googleSearch'))
        	return 0;

        $jnow = &JFactory::getDate();
        $now = $jnow->toMySQL();
        $nullDate = $db->getNullDate();

        $query = "SELECT COUNT(*) FROM #__k2_items as i"." LEFT JOIN #__k2_categories c ON c.id = i.catid";

        if ($task == 'tag')
            $query .= " LEFT JOIN #__k2_tags_xref tags_xref ON tags_xref.itemID = i.id LEFT JOIN #__k2_tags tags ON tags.id = tags_xref.tagID";

        if($task=='user' && !$user->guest && $user->id==JRequest::getInt('id')){
        	$query .= " WHERE ";
        }
        else {
        	 $query .= " WHERE i.published = 1 AND ";
        }

        $query .= "i.access <= {$aid}"
        ." AND i.trash = 0"
        ." AND c.published = 1"
        ." AND c.access <= {$aid}"
        ." AND c.trash = 0";

        $query .= " AND ( i.publish_up = ".$db->Quote($nullDate)." OR i.publish_up <= ".$db->Quote($now)." )";
        $query .= " AND ( i.publish_down = ".$db->Quote($nullDate)." OR i.publish_down >= ".$db->Quote($now)." )";

        //Build query depending on task
        switch ($task) {

            case 'category':
                $id = JRequest::getInt('id');

                $category = &JTable::getInstance('K2Category', 'Table');
                $category->load($id);
                $cparams = new JParameter($category->params);

                if ($cparams->get('inheritFrom')) {

                    $parent = &JTable::getInstance('K2Category', 'Table');
                    $parent->load($cparams->get('inheritFrom'));
                    $cparams = new JParameter($parent->params);
                }

                if ($cparams->get('catCatalogMode')) {
                    $query .= " AND c.id={$id} ";
                } else {
                    $categories = K2ModelItemlist::getCategoryChilds($id);
                    $categories[] = $id;
                    $categories = @array_unique($categories);
                    JArrayHelper::toInteger($categories);
                    $sql = @implode(',', $categories);
                    $query .= " AND c.id IN ({$sql})";
                }


                break;


            case 'user':
                $id = JRequest::getInt('id');
                $query .= " AND i.created_by={$id} AND i.created_by_alias=''";
                break;

            case 'search':
                $badchars = array('#', '>', '<', '\\');
                $search = trim(str_replace($badchars, '', JRequest::getString('searchword', null)));
                if (! empty($search)) {
                    $sql = K2ModelItemlist::prepareSearch($search);
                    if (! empty($sql)) {
                        $query .= $sql;
                    } else {
                        $result = 0;
                        return $result;
                    }
                }
                break;

            case 'date':
                if ((JRequest::getInt('month')) && (JRequest::getInt('year'))) {
                    $month = JRequest::getInt('month');
                    $year = JRequest::getInt('year');
                    $query .= " AND MONTH(i.created) = {$month} AND YEAR(i.created)={$year} ";
                    if (JRequest::getInt('day')) {
                        $day = JRequest::getInt('day');
                        $query .= " AND DAY(i.created) = {$day}";
                    }

                    if (JRequest::getInt('catid')) {
                        $catid = JRequest::getInt('catid');
                        $query .= " AND i.catid={$catid}";
                    }

                }
                break;

            case 'tag':
                $tag = JRequest::getString('tag');
                jimport('joomla.filesystem.file');
                if (JFolder::exists(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_joomfish') && $task == 'tag') {

                    $registry = &JFactory::getConfig();
                    $lang = $registry->getValue("config.jflang");

                    $sql = " SELECT reference_id FROM #__jf_content as jfc LEFT JOIN #__languages as jfl ON jfc.language_id = jfl.id";
                    $sql .= " WHERE jfc.value = ".$db->Quote($tag);
                    $sql .= " AND jfc.reference_table = 'k2_tags'";
                    $sql .= " AND jfc.reference_field = 'name' AND jfc.published=1";

                    $db->setQuery($sql, 0, 1);
                    $result = $db->loadResult();

                }

                if (isset($result) && $result > 0) {
                    $query .= " AND (tags.id) = {$result}";
                } else {
                    $query .= " AND (tags.name) = ".$db->Quote($tag);
                }
                $categories = $params->get('categoriesFilter', NULL);
                if (is_array($categories))
                    $query .= " AND i.catid IN(".implode(',', $categories).")";
                if (is_string($categories))
                    $query .= " AND i.catid = {$categories}";
                break;

            default:
                $searchIDs = $params->get('categories');

                if (is_array($searchIDs) && count($searchIDs)) {

                    if ($params->get('catCatalogMode')) {
                        $sql = @implode(',', $searchIDs);
                        $query .= " AND i.catid IN ({$sql})";
                    } else {
                        $childIDs = array();
                        foreach ($searchIDs as $catid) {
                            $categories = K2ModelItemlist::getCategoryChilds($catid);
                            foreach ($categories as $child) {
                                $childIDs[] = $child;
                            }
                        }

                        $allIDs = @array_merge($searchIDs, $childIDs);
                        $result = @array_unique($allIDs);
                        JArrayHelper::toInteger($result);
                        if (count($result)) {
                            $sql = @implode(',', $result);
                            $query .= " AND i.catid IN ({$sql})";
                        }
                    }
                }

                break;
        }

        //Set featured flag
        if ($task == 'category' || empty($task)) {
            if (JRequest::getVar('featured') == '0') {
                $query .= " AND i.featured != 1";
            } else if (JRequest::getVar('featured') == '2') {
                $query .= " AND i.featured = 1";
            }
        }
        $db->setQuery($query);
        $result = $db->loadResult();
        return $result;
    }