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; }
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; }