Beispiel #1
0
 protected function getListQuery()
 {
     $app = JFactory::getApplication();
     $rootCategory = JUDirectoryFrontHelperCategory::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 = JUDirectoryFrontHelperCategory::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('listing.*');
     $query->from('#__judirectory_listings AS listing');
     JUDirectoryFrontHelper::optimizeListListingQuery($query);
     if ($catFilter) {
         $query->join('', '#__judirectory_listings_xref AS listingxref ON listing.id = listingxref.listing_id');
         $query->join('', '#__judirectory_categories AS c ON c.id = listingxref.cat_id');
         $query->where('c.id IN(' . $categoryString . ')');
         $query->group('listing.id');
     }
     $query->where('listing.approved = 1');
     $query->where('listing.published = 1');
     $query->where('(listing.publish_up = ' . $db->quote($nullDate) . ' OR listing.publish_up <= ' . $db->quote($nowDate) . ')');
     $query->where('(listing.publish_down = ' . $db->quote($nullDate) . ' OR listing.publish_down >= ' . $db->quote($nowDate) . ')');
     if ($user->get('guest')) {
         $query->where('listing.access IN (' . $levelsStr . ')');
     } else {
         $query->where('(listing.access IN (' . $levelsStr . ') OR (listing.created_by = ' . $user->id . '))');
     }
     $query->where('listing.featured = 1');
     $app = JFactory::getApplication();
     $tag = JFactory::getLanguage()->getTag();
     if ($app->getLanguageFilter()) {
         $query->where('listing.language IN (' . $db->quote($tag) . ',' . $db->quote('*') . ',' . $db->quote('') . ')');
     }
     $categoryRoot = JUDirectoryFrontHelperCategory::getRootCategory();
     JUDirectoryFrontHelperField::appendFieldOrderingPriority($query, $categoryRoot->id, $ordering, $direction);
     return $query;
 }
 protected function getInput()
 {
     $attr = $this->multiple ? ' multiple="multiple" size="7"' : '';
     $nestedCategories = JUDirectoryFrontHelperCategory::getCategoriesRecursive(1, false, true, true);
     $options = array();
     foreach ($nestedCategories as $categoryObj) {
         $options[] = JHtml::_('select.option', $categoryObj->id, str_repeat('|—', $categoryObj->level) . $categoryObj->title);
     }
     $html = JHtml::_('select.genericList', $options, $this->name, $attr, 'value', 'text', $this->value);
     return $html;
 }
 public function isEmptyCategory($categoryId)
 {
     $nestedCategories = JUDirectoryFrontHelperCategory::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_listings > 0) {
         return false;
     }
     return true;
 }
Beispiel #4
0
 public static function getTotalListingsInCategory($categoryId, $nestedCategoryIds = null)
 {
     if (is_null($nestedCategoryIds)) {
         $nestedCategories = JUDirectoryFrontHelperCategory::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('#__judirectory_listings AS listing');
         $query->join('', '#__judirectory_listings_xref AS listingxref ON listing.id = listingxref.listing_id');
         $query->join('', '#__judirectory_categories AS c ON c.id = listingxref.cat_id');
         if (is_array($nestedCategoryIds) && count($nestedCategoryIds) > 0) {
             $query->where('(c.id IN (' . implode(",", $nestedCategoryIds) . '))');
         } else {
             $query->where('(c.id IN (""))');
         }
         $query->join('', '#__judirectory_listings_xref AS listingxmain ON listing.id = listingxmain.listing_id AND listingxmain.main = 1');
         $query->join('', '#__judirectory_categories AS cmain ON cmain.id = listingxmain.cat_id');
         $categoryIdArrayCanAccess = JUDirectoryFrontHelperPermission::getAccessibleCategoryIds();
         if (is_array($categoryIdArrayCanAccess) && count($categoryIdArrayCanAccess) > 0) {
             $query->where('cmain.id IN(' . implode(",", $categoryIdArrayCanAccess) . ')');
         } else {
             $query->where('cmain.id IN("")');
         }
         $query->where('listing.approved = 1');
         $query->where('listing.published = 1');
         $query->where('(listing.publish_up = ' . $db->quote($nullDate) . ' OR listing.publish_up <= ' . $db->quote($nowDate) . ')');
         $query->where('(listing.publish_down = ' . $db->quote($nullDate) . ' OR listing.publish_down >= ' . $db->quote($nowDate) . ')');
         if ($user->get('guest')) {
             $query->where('listing.access IN (' . $levelsStr . ')');
         } else {
             $query->where('(listing.access IN (' . $levelsStr . ') OR listing.created_by = ' . $user->id . ')');
         }
         $app = JFactory::getApplication();
         $tagLanguage = JFactory::getLanguage()->getTag();
         if ($app->getLanguageFilter()) {
             $query->where('listing.language IN (' . $db->quote($tagLanguage) . ',' . $db->quote('*') . ',' . $db->quote('') . ')');
         }
         $db->setQuery($query);
         self::$cache[$storeId] = $db->loadResult();
     }
     return self::$cache[$storeId];
 }
Beispiel #5
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;
 }