Ejemplo n.º 1
0
	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;
	}