public function display($tpl = null) { $this->state = $this->get('State'); $this->token = JSession::getFormToken(); $this->params = $this->state->params; $app = JFactory::getApplication(); $submit_simple_search = $app->input->getString('submit_simple_search', ''); if (isset($submit_simple_search) && $submit_simple_search == "search") { $model = $this->getModel(); $model->resetState(); } $this->model = $this->getModel(); $user = JFactory::getUser(); $uri = JUri::getInstance(); $this->items = $this->get('Items'); foreach ($this->items as $item) { $item->report_link = JRoute::_(JUDownloadHelperRoute::getReportDocumentRoute($item->id)); if ($item->checked_out > 0 && $item->checked_out != $user->get('id')) { if (JUDownloadFrontHelperPermission::canCheckInDocument($item->id)) { $item->checkin_link = JRoute::_('index.php?option=com_judownload&task=forms.checkin&id=' . $item->id . '&' . JSession::getFormToken() . '=1' . '&return=' . base64_encode(urlencode($uri))); } } else { $item->edit_link = JRoute::_('index.php?option=com_judownload&task=form.edit&id=' . $item->id . '&Itemid=' . JUDownloadHelperRoute::findItemIdOfDocument($item->id)); if ($item->published == 1) { $item->editstate_link = JRoute::_('index.php?option=com_judownload&task=forms.unpublish&id=' . $item->id . '&return=' . base64_encode(urlencode($uri)) . '&' . JSession::getFormToken() . '=1&Itemid=' . JUDownloadHelperRoute::findItemIdOfDocument($item->id)); } else { $item->editstate_link = JRoute::_('index.php?option=com_judownload&task=forms.publish&id=' . $item->id . '&return=' . base64_encode(urlencode($uri)) . '&' . JSession::getFormToken() . '=1&Itemid=' . JUDownloadHelperRoute::findItemIdOfDocument($item->id)); } } $item->delete_link = JRoute::_('index.php?option=com_judownload&task=forms.delete&id=' . $item->id . '&return=' . base64_encode(urlencode($uri)) . '&' . JSession::getFormToken() . '=1&Itemid=' . JUDownloadHelperRoute::findItemIdOfDocument($item->id)); $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin('content'); $item->event = new stdClass(); $context = 'com_judownload.document_list'; $results = $dispatcher->trigger('onContentAfterTitle', array($context, &$item, &$item->params, 0)); $item->event->afterDisplayTitle = trim(implode("\n", $results)); $results = $dispatcher->trigger('onContentBeforeDisplay', array($context, &$item, &$item->params, 0)); $item->event->beforeDisplayContent = trim(implode("\n", $results)); $results = $dispatcher->trigger('onContentAfterDisplay', array($context, &$item, &$item->params, 0)); $item->event->afterDisplayContent = trim(implode("\n", $results)); } $this->pagination = $this->get('Pagination'); $this->searchword = trim($app->input->getString('searchword', '')); $this->searchword = JUDownloadFrontHelper::UrlDecode($this->searchword); $this->cat_id = $app->input->getInt('cat_id', 0); $this->sub_cat = $app->input->getInt('sub_cat', 0); if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $nestedCategories = JUDownloadFrontHelperCategory::getCategoriesRecursive(1, false, false, true); $options = array(); $parent_cat_level = 0; foreach ($nestedCategories AS $key => $categoryObj) { if ($key == 0) { $parent_cat_level = $categoryObj->level; } $options[] = JHtml::_('select.option', $categoryObj->id, str_repeat('-.', ($categoryObj->level - $parent_cat_level)) . $categoryObj->title); } $this->cat_select_list = JHtml::_('select.genericList', $options, 'cat_id', '', 'value', 'text', $this->cat_id); $this->pageclass_sfx = htmlspecialchars($this->params->get('pageclass_sfx')); $this->_prepareData(); $this->_prepareDocument(); $this->_setBreadcrumb(); parent::display($tpl); }
public function getSubCategories($parentId, $ordering = 'title', $direction = 'ASC') { $params = $this->getState('params'); $showEmptyCategory = $params->get('show_empty_subcategory', 1); $user = JFactory::getUser(); $levels = $user->getAuthorisedViewLevels(); $levelsStr = implode(',', $levels); $db = JFactory::getDbo(); $nullDate = $db->getNullDate(); $nowDate = JFactory::getDate()->toSql(); $query = $db->getQuery(true); $query->select('*'); $query->from('#__judownload_categories'); $query->where('parent_id=' . $parentId); $query->where('published = 1'); $query->where('(publish_up = ' . $db->quote($nullDate) . ' OR publish_up <= ' . $db->quote($nowDate) . ')'); $query->where('(publish_down = ' . $db->quote($nullDate) . ' OR publish_down >= ' . $db->quote($nowDate) . ')'); $query->where('access IN (' . $levelsStr . ')'); $app = JFactory::getApplication(); $tag = JFactory::getLanguage()->getTag(); if ($app->getLanguageFilter()) { $query->where('language IN (' . $db->quote($tag) . ',' . $db->quote('*') . ',' . $db->quote('') . ')'); } $query->order($ordering . ' ' . $direction); $db->setQuery($query); $subCategoriesBefore = $db->loadObjectList(); $subCategoriesAfter = array(); foreach ($subCategoriesBefore AS $category) { $showTotalSubCats = $params->get('show_total_subcats_of_subcat', 0); $showTotalChildDocs = $params->get('show_total_docs_of_subcat', 0); $nestedCategories = null; if ($showTotalChildDocs || $showTotalSubCats) { $nestedCategories = JUDownloadFrontHelperCategory::getCategoriesRecursive($category->id, true, true, true, false, false, true); if ($showTotalChildDocs) { $category->total_documents = JUDownloadFrontHelperCategory::getTotalDocumentsInCategory($category->id, $nestedCategories); } if ($showTotalSubCats) { $category->total_nested_categories = JUDownloadFrontHelperCategory::getTotalSubCategoriesInCategory($category->id, $nestedCategories); } } $registry = new JRegistry; $registry->loadString($category->images); $category->images = $registry->toObject(); $category->link = JRoute::_(JUDownloadHelperRoute::getCategoryRoute($category->id)); if (!$showEmptyCategory) { if (is_null($nestedCategories)) { $nestedCategories = JUDownloadFrontHelperCategory::getCategoriesRecursive($category->id, true, true, true, false, false, true); } if (!isset($category->total_nested_categories)) { $category->total_nested_categories = JUDownloadFrontHelperCategory::getTotalSubCategoriesInCategory($category->id, $nestedCategories); } if (!isset($category->total_documents)) { $category->total_documents = JUDownloadFrontHelperCategory::getTotalDocumentsInCategory($category->id, $nestedCategories); } if (($category->total_nested_categories > 0) || ($category->total_documents > 0)) { $subCategoriesAfter[] = $category; } } else { $subCategoriesAfter[] = $category; } } return $subCategoriesAfter; }
public static function getTotalDocumentsInCategory($categoryId, $nestedCategoryIds = null) { if (is_null($nestedCategoryIds)) { $nestedCategories = JUDownloadFrontHelperCategory::getCategoriesRecursive($categoryId, true, true, true); $nestedCategoryIds = array(); foreach ($nestedCategories AS $nestedCategory) { $nestedCategoryIds[] = $nestedCategory->id; } } if (!is_array($nestedCategoryIds) || !count($nestedCategoryIds)) { return 0; } $storeId = md5(__METHOD__ . "::" . serialize($nestedCategoryIds)); if (!isset(self::$cache[$storeId])) { $user = JFactory::getUser(); $levels = $user->getAuthorisedViewLevels(); $levelsStr = implode(',', $levels); $db = JFactory::getDbo(); $nullDate = $db->getNullDate(); $nowDate = JFactory::getDate()->toSql(); $query = $db->getQuery(true); $query->select('COUNT(*)'); $query->from('#__judownload_documents AS d'); $query->join('', '#__judownload_documents_xref AS dx ON d.id = dx.doc_id'); $query->join('', '#__judownload_categories AS c ON c.id = dx.cat_id'); if (is_array($nestedCategoryIds) && count($nestedCategoryIds) > 0) { $query->where('(c.id IN (' . implode(",", $nestedCategoryIds) . '))'); } else { $query->where('(c.id IN (""))'); } $query->join('', '#__judownload_documents_xref AS dxmain ON d.id = dxmain.doc_id AND dxmain.main = 1'); $query->join('', '#__judownload_categories AS cmain ON cmain.id = dxmain.cat_id'); $categoryIdArrayCanAccess = JUDownloadFrontHelperCategory::getAccessibleCategoryIds(); if (is_array($categoryIdArrayCanAccess) && count($categoryIdArrayCanAccess) > 0) { $query->where('cmain.id IN(' . implode(",", $categoryIdArrayCanAccess) . ')'); } else { $query->where('cmain.id IN("")'); } $query->where('d.approved = 1'); $query->where('d.published = 1'); $query->where('(d.publish_up = ' . $db->quote($nullDate) . ' OR d.publish_up <= ' . $db->quote($nowDate) . ')'); $query->where('(d.publish_down = ' . $db->quote($nullDate) . ' OR d.publish_down >= ' . $db->quote($nowDate) . ')'); if ($user->get('guest')) { $query->where('d.access IN (' . $levelsStr . ')'); } else { $query->where('(d.access IN (' . $levelsStr . ') OR d.created_by = ' . $user->id . ')'); } $app = JFactory::getApplication(); $tagLanguage = JFactory::getLanguage()->getTag(); if ($app->getLanguageFilter()) { $query->where('d.language IN (' . $db->quote($tagLanguage) . ',' . $db->quote('*') . ',' . $db->quote('') . ')'); } $db->setQuery($query); self::$cache[$storeId] = $db->loadResult(); } return self::$cache[$storeId]; }
public function isEmptyCategory($categoryId) { $nestedCategories = JUDownloadFrontHelperCategory::getCategoriesRecursive($categoryId, true, true, true, true, true, $getIdOnly = true); if (!is_array($nestedCategories) || empty($nestedCategories)) { return true; } $categoryObject = $nestedCategories[0]; if ($categoryObject->total_nested_categories > 0) { return false; } if ($categoryObject->total_documents > 0) { return false; } return true; }
protected function getListQuery() { $app = JFactory::getApplication(); $rootCategory = JUDownloadFrontHelperCategory::getRootCategory(); $categoryId = $this->getState('category.id', $rootCategory->id); $getAllNestedCategories = $app->input->getInt('all', 0); $catFilter = true; if ($categoryId == 1 && $getAllNestedCategories == 1) { $catFilter = false; } if ($catFilter) { $categoryIdArray = array(); if ($getAllNestedCategories == 1) { $nestedCategories = JUDownloadFrontHelperCategory::getCategoriesRecursive($categoryId, true, true); if (count($nestedCategories) > 0) { foreach ($nestedCategories AS $categoryObj) { $categoryIdArray[] = $categoryObj->id; } } } array_unshift($categoryIdArray, $categoryId); $categoryString = implode(",", $categoryIdArray); } $ordering = $this->getState('list.ordering', ''); $direction = $this->getState('list.direction', 'ASC'); $user = JFactory::getUser(); $levels = $user->getAuthorisedViewLevels(); $levelsStr = implode(',', $levels); $db = JFactory::getDbo(); $nullDate = $db->getNullDate(); $nowDate = JFactory::getDate()->toSql(); $query = $db->getQuery(true); $query->select('d.*'); $query->from('#__judownload_documents AS d'); JUDownloadFrontHelper::optimizeListDocumentQuery($query); if ($catFilter) { $query->join('', '#__judownload_documents_xref AS dxref ON d.id = dxref.doc_id'); $query->join('', '#__judownload_categories AS c ON c.id = dxref.cat_id'); $query->where('c.id IN(' . $categoryString . ')'); $query->group('d.id'); } $query->where('d.approved = 1'); $query->where('d.published = 1'); $query->where('(d.publish_up = ' . $db->quote($nullDate) . ' OR d.publish_up <= ' . $db->quote($nowDate) . ')'); $query->where('(d.publish_down = ' . $db->quote($nullDate) . ' OR d.publish_down >= ' . $db->quote($nowDate) . ')'); if ($user->get('guest')) { $query->where('d.access IN (' . $levelsStr . ')'); } else { $query->where('(d.access IN (' . $levelsStr . ') OR (d.created_by = ' . $user->id . '))'); } $query->where('d.featured = 1'); $app = JFactory::getApplication(); $tag = JFactory::getLanguage()->getTag(); if ($app->getLanguageFilter()) { $query->where('d.language IN (' . $db->quote($tag) . ',' . $db->quote('*') . ',' . $db->quote('') . ')'); } $categoryRoot = JUDownloadFrontHelperCategory::getRootCategory(); JUDownloadFrontHelperField::appendFieldOrderingPriority($query, $categoryRoot->id, $ordering, $direction); return $query; }