Esempio 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('#__judirectory_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);
         $showTotalChildListings = $params->get('show_total_listings_of_subcat', 0);
         $nestedCategories = null;
         if ($showTotalChildListings || $showTotalSubCats) {
             $nestedCategories = JUDirectoryFrontHelperCategory::getCategoriesRecursive($category->id, true, true, true, false, false, true);
             if ($showTotalChildListings) {
                 $category->total_listings = JUDirectoryFrontHelperCategory::getTotalListingsInCategory($category->id, $nestedCategories);
             }
             if ($showTotalSubCats) {
                 $category->total_nested_categories = JUDirectoryFrontHelperCategory::getTotalSubCategoriesInCategory($category->id, $nestedCategories);
             }
         }
         $registry = new JRegistry();
         $registry->loadString($category->images);
         $category->images = $registry->toObject();
         $category->link = JRoute::_(JUDirectoryHelperRoute::getCategoryRoute($category->id));
         if (!$showEmptyCategory) {
             if (is_null($nestedCategories)) {
                 $nestedCategories = JUDirectoryFrontHelperCategory::getCategoriesRecursive($category->id, true, true, true, false, false, true);
             }
             if (!isset($category->total_nested_categories)) {
                 $category->total_nested_categories = JUDirectoryFrontHelperCategory::getTotalSubCategoriesInCategory($category->id, $nestedCategories);
             }
             if (!isset($category->total_listings)) {
                 $category->total_listings = JUDirectoryFrontHelperCategory::getTotalListingsInCategory($category->id, $nestedCategories);
             }
             if ($category->total_nested_categories > 0 || $category->total_listings > 0) {
                 $subCategoriesAfter[] = $category;
             }
         } else {
             $subCategoriesAfter[] = $category;
         }
     }
     return $subCategoriesAfter;
 }