コード例 #1
0
 protected function getListQuery()
 {
     $db = $this->getDbo();
     $date = JFactory::getDate();
     $now = $date->toSql();
     $nullDate = $db->getNullDate();
     $query = $db->getQuery(true);
     $query->select('listing.id, listing.title, listing.alias, listing.created, listing.access');
     $query->from('#__judirectory_listings AS listing');
     $query->join('', '#__judirectory_listings_xref AS listingxref ON dxref.doc_id = listing.id AND dxref.main = 1');
     $query->select('c.title AS category_title');
     $query->join('', '#__judirectory_categories AS c ON c.id = dxref.cat_id');
     $categoryIdArrayCanAccess = JUDirectoryFrontHelperPermission::getAccessibleCategoryIds();
     if (is_array($categoryIdArrayCanAccess) && count($categoryIdArrayCanAccess) > 0) {
         $query->where('c.id IN(' . implode(",", $categoryIdArrayCanAccess) . ')');
     } else {
         $query->where('c.id IN("")');
     }
     $query->select('vl.title AS access_title');
     $query->join('LEFT', '#__viewlevels AS vl ON vl.id = listing.access');
     $access = $this->getState('filter.access');
     if ($access) {
         $query->where('listing.access = ' . (int) $access);
     }
     $categoryId = $this->getState('filter.catid');
     if (is_numeric($categoryId)) {
         $query->where('c.id = ' . (int) $categoryId);
     }
     $query->where('c.published = 1');
     $query->where('c.publish_up <= ' . $db->quote($now));
     $query->where('(c.publish_down = ' . $db->quote($nullDate) . ' OR c.publish_down > ' . $db->quote($now) . ')');
     $featured = $this->getState('filter.featured', '');
     if ($featured !== '') {
         $query->where('listing.featured = ' . (int) $featured);
     }
     $query->where('listing.approved = 1');
     $query->where('listing.published = 1');
     $query->where('listing.publish_up <= ' . $db->quote($now));
     $query->where('(listing.publish_down = ' . $db->quote($nullDate) . ' OR listing.publish_down > ' . $db->quote($now) . ')');
     $search = $this->getState('filter.search');
     if (!empty($search)) {
         if (stripos($search, 'id:') === 0) {
             $query->where('listing.id = ' . (int) substr($search, 3));
         } else {
             $search = $db->Quote('%' . $db->getEscaped($search, true) . '%');
             $query->where('listing.title LIKE ' . $search);
         }
     }
     $orderCol = $this->state->get('list.ordering');
     $orderDirn = $this->state->get('list.direction');
     if ($orderCol) {
         $query->order($orderCol . ' ' . $orderDirn);
     }
     return $query;
 }
コード例 #2
0
 protected function getValue()
 {
     $app = JFactory::getApplication();
     // At the frontend, if we already select cats in getListQuery() => use it, first cat is main cat
     if (isset($this->listing->cat_ids) && isset($this->listing->cat_titles) && !is_null($this->listing->cat_ids) && !is_null($this->listing->cat_titles)) {
         $categories = array();
         $catIdArr = explode(",", $this->listing->cat_ids);
         $catTitleArr = explode("|||", $this->listing->cat_titles);
         foreach ($catIdArr as $key => $catId) {
             $category = new stdClass();
             $category->id = $catIdArr[$key];
             $category->title = $catTitleArr[$key];
             if ($key == 0) {
                 $category->main = 1;
             } else {
                 $category->main = 0;
             }
             $categories[] = $category;
         }
         $value = $categories;
     } else {
         $db = JFactory::getDbo();
         $query = $db->getQuery(true);
         $query->select("c.id, c.title, c.parent_id, listingxref.main");
         $query->from("#__judirectory_categories AS c");
         $query->join("", "#__judirectory_listings_xref AS listingxref ON (c.id = listingxref.cat_id)");
         $query->where("listingxref.listing_id = " . $this->listing_id);
         if ($app->isSite()) {
             // Where in categoryIds can access at frontend
             $categoryIdArrayCanAccess = JUDirectoryFrontHelperPermission::getAccessibleCategoryIds();
             if (is_array($categoryIdArrayCanAccess) && count($categoryIdArrayCanAccess) > 0) {
                 $query->where('c.id IN(' . implode(",", $categoryIdArrayCanAccess) . ')');
             } else {
                 $query->where('c.id IN("")');
             }
         }
         $query->order("listingxref.main DESC, listingxref.ordering ASC");
         $db->setQuery($query);
         $categories = $db->loadObjectList();
         $value = $categories;
     }
     return $value;
 }
コード例 #3
0
 public static function getCategoryOptions($catId = 1, $fetchSelf = true, $checkCreatedPermission = false, $checkPublished = false, $ignoredCatId = array(), $startLevel = 0, $separation = '|—')
 {
     $categoryTree = self::getCategoryTree($catId, $fetchSelf, $checkPublished);
     if ($categoryTree) {
         $app = JFactory::getApplication();
         $user = JFactory::getUser();
         $options = array();
         $ignoredCatIdArr = array();
         if ($ignoredCatId) {
             foreach ($ignoredCatId as $cat_id) {
                 if (!in_array($cat_id, $ignoredCatIdArr)) {
                     $_categoryTree = self::getCategoryTree($cat_id, true);
                     foreach ($_categoryTree as $category) {
                         if (!in_array($category->id, $ignoredCatIdArr)) {
                             $ignoredCatIdArr[] = $category->id;
                         }
                     }
                 }
             }
         }
         foreach ($categoryTree as $key => $item) {
             if ($app->isSite()) {
                 $accessibleCategoryIds = JUDirectoryFrontHelperPermission::getAccessibleCategoryIds();
                 if (!is_array($accessibleCategoryIds)) {
                     $accessibleCategoryIds = array();
                 }
                 if (!in_array($item->id, $accessibleCategoryIds)) {
                     continue;
                 }
             }
             if ($ignoredCatIdArr && in_array($item->id, $ignoredCatIdArr)) {
                 continue;
             }
             $disable = false;
             if ($checkCreatedPermission) {
                 if ($checkCreatedPermission == "category") {
                     $assetName = 'com_judirectory.category.' . (int) $item->id;
                     $candoCreate = $user->authorise('judir.category.create', $assetName);
                     if (!$candoCreate) {
                         $disable = true;
                     }
                 } elseif ($checkCreatedPermission == "listing") {
                     $assetName = 'com_judirectory.category.' . (int) $item->id;
                     $candoCreate = $user->authorise('judir.listing.create', $assetName);
                     if (!$candoCreate) {
                         $disable = true;
                     }
                     if ($item->id == 1 && !$disable) {
                         $params = JUDirectoryHelper::getParams();
                         if (!$params->get('allow_add_listing_to_root', 0)) {
                             $disable = true;
                         }
                     }
                 }
             }
             if ($item->published != 1) {
                 $item->title = "[" . $item->title . "]";
             }
             if ($key == 0) {
                 $firstLevel = $item->level - $startLevel;
             }
             $level = $item->level - $firstLevel;
             $options[] = JHtml::_('select.option', $item->id, str_repeat($separation, $level) . $item->title, 'value', 'text', $disable);
         }
     }
     return $options;
 }
コード例 #4
0
ファイル: helper.php プロジェクト: ranrolls/ras-full-portal
    public static function optimizeListListingQuery(&$query, $massSelect = false)
    {
        $user = JFactory::getUser();
        $query->select('cmain.id AS cat_id');
        $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("")');
        }
        if ($massSelect) {
            $commentsField = new JUDirectoryFieldCore_comments();
            if ($commentsField->canView(array("view" => "list"))) {
                $isModerator = JUDirectoryFrontHelperModerator::isModerator();
                if (!$isModerator && !$user->authorise('core.admin', 'com_judirectory')) {
                    $params = JUDirectoryHelper::getParams();
                    $negative_vote_comment = $params->get('negative_vote_comment');
                    if (is_numeric($negative_vote_comment) && $negative_vote_comment > 0) {
                        $query->select('(SELECT COUNT(*) FROM #__judirectory_comments AS cm WHERE cm.listing_id = listing.id AND cm.approved = 1 AND cm.published = 1 AND cm.level = 1
										AND (cm.total_votes - cm.helpful_votes) < ' . $negative_vote_comment . ' ) AS total_comments');
                    } else {
                        $query->select('(SELECT COUNT(*) FROM #__judirectory_comments AS cm WHERE cm.listing_id = listing.id AND cm.approved = 1 AND cm.published = 1 AND cm.level = 1) AS total_comments');
                    }
                }
            }
            $subscriptionsField = new JUDirectoryFieldCore_subscriptions();
            if ($subscriptionsField->canView(array("view" => "list"))) {
                $query->select('(SELECT COUNT(*) FROM #__judirectory_subscriptions AS sub WHERE sub.item_id = listing.id AND sub.type = "listing" AND sub.published = 1) AS total_subscriptions');
            }
            $reportsField = new JUDirectoryFieldCore_reports();
            if ($reportsField->canView(array("view" => "list"))) {
                $query->select('(SELECT COUNT(*) FROM #__judirectory_reports AS r WHERE r.item_id = listing.id AND r.type = "listing") AS total_reports');
            }
            $categoriesField = new JUDirectoryFieldCore_categories();
            if ($categoriesField->canView(array("view" => "list"))) {
                $query->select('(SELECT GROUP_CONCAT(catids.id ORDER BY listingx_catids.main DESC, listingx_catids.ordering ASC SEPARATOR ",") FROM (#__judirectory_categories AS catids JOIN #__judirectory_listings_xref AS listingx_catids ON catids.id = listingx_catids.cat_id) WHERE listing.id = listingx_catids.listing_id GROUP BY listing.id) AS cat_ids');
                $query->select('(SELECT GROUP_CONCAT(cattitles.title ORDER BY listingx_cattitles.main DESC, listingx_cattitles.ordering ASC SEPARATOR "|||") FROM (#__judirectory_categories AS cattitles JOIN #__judirectory_listings_xref AS listingx_cattitles ON cattitles.id = listingx_cattitles.cat_id) WHERE listing.id = listingx_cattitles.listing_id GROUP BY listing.id) AS cat_titles');
            }
            $tagsField = new JUDirectoryFieldCore_tags();
            if ($tagsField->canView(array("view" => "list"))) {
                $query->select('IFNULL ((SELECT GROUP_CONCAT(tagids.id ORDER BY tx_tagids.ordering ASC SEPARATOR ",") FROM (#__judirectory_tags AS tagids JOIN #__judirectory_tags_xref AS tx_tagids ON tagids.id = tx_tagids.tag_id) WHERE listing.id = tx_tagids.listing_id GROUP BY listing.id), "") AS tag_ids');
                $query->select('IFNULL ((SELECT GROUP_CONCAT(tagtitles.title ORDER BY tx_tagtitles.ordering ASC SEPARATOR "|||") FROM (#__judirectory_tags AS tagtitles JOIN #__judirectory_tags_xref AS tx_tagtitles ON tagtitles.id = tx_tagtitles.tag_id) WHERE listing.id = tx_tagtitles.listing_id GROUP BY listing.id), "") AS tag_titles');
            }
            $app = JFactory::getApplication();
            $accessLevel = implode(',', $user->getAuthorisedViewLevels());
            $db = JFactory::getDbo();
            $date = JFactory::getDate();
            $nullDate = $db->quote($db->getNullDate());
            $nowDate = $db->quote($date->toSql());
            $fieldQuery = $db->getQuery(true);
            $fieldQuery->select('field.id');
            $fieldQuery->from('#__judirectory_fields AS field');
            $fieldQuery->where('field.field_name = ""');
            $fieldQuery->where('field.list_view = 1');
            $fieldQuery->where('field.published = 1');
            $fieldQuery->where('field.publish_up <= ' . $nowDate);
            $fieldQuery->where('(field.publish_down = ' . $nullDate . ' OR field.publish_down > ' . $nowDate . ')');
            $fieldQuery->where('field.access IN (' . $accessLevel . ')');
            $view = $app->input->get('view', '');
            if ($view == 'category' || $view == 'tree') {
                $cat_id = $app->input->getInt('id', 0);
                $category = JUDirectoryHelper::getCategoryById($cat_id);
                if (is_object($category)) {
                    $fieldQuery->where('field.group_id = ' . $category->fieldgroup_id);
                }
            } else {
                $fieldQuery->join('', '#__judirectory_categories AS c ON (field.group_id = c.fieldgroup_id OR field.group_id = 1)');
                if (is_array($categoryIdArrayCanAccess) && count($categoryIdArrayCanAccess) > 0) {
                    $fieldQuery->where('c.id IN(' . implode(",", $categoryIdArrayCanAccess) . ')');
                } else {
                    $fieldQuery->where('c.id IN("")');
                }
            }
            $fieldQuery->join('', '#__judirectory_fields_groups AS field_group ON field.group_id = field_group.id');
            $fieldQuery->where('field_group.published = 1');
            $fieldQuery->where('field_group.access IN (' . $accessLevel . ')');
            $fieldQuery->group('field.id');
            $db->setQuery($fieldQuery);
            $fields = $db->loadObjectList();
            foreach ($fields as $field) {
                $query->select('IFNULL (fields_values_' . $field->id . '.value, "") AS field_values_' . $field->id);
                $query->join('LEFT', '#__judirectory_fields_values AS fields_values_' . $field->id . ' ON fields_values_' . $field->id . '.listing_id = listing.id AND fields_values_' . $field->id . '.field_id = ' . $field->id);
            }
        }
    }
コード例 #5
0
ファイル: listings.php プロジェクト: ranrolls/ras-full-portal
 protected function getListQuery()
 {
     $listOrder = $this->state->get('list.ordering');
     $listDirn = $this->state->get('list.direction');
     $search = $this->state->get('filter.search');
     $user = JFactory::getUser();
     $levels = $user->getAuthorisedViewLevels();
     $levelsStr = implode(',', $levels);
     $db = $this->getDBO();
     $nullDate = $db->getNullDate();
     $nowDate = JFactory::getDate()->toSql();
     $query = $db->getQuery(true);
     $query->select('listing.*');
     $query->from('#__judirectory_listings AS listing');
     $query->join('', '#__judirectory_listings_xref AS listingxref ON listingxref.listing_id = listing.id AND listingxref.main = 1');
     $query->select('c.title AS category_title');
     $query->join('', '#__judirectory_categories AS c ON listingxref.cat_id = c.id');
     $categoryIdArrayCanAccess = JUDirectoryFrontHelperPermission::getAccessibleCategoryIds();
     if (is_array($categoryIdArrayCanAccess) && count($categoryIdArrayCanAccess) > 0) {
         $query->where('c.id IN(' . implode(",", $categoryIdArrayCanAccess) . ')');
     } else {
         $query->where('c.id IN("")');
     }
     $query->select('ua.name AS created_by');
     $query->join('LEFT', '#__users AS ua ON ua.id = listing.created_by');
     $query->select('vl.title AS access_level');
     $query->join('LEFT', '#__viewlevels AS vl ON vl.id = listing.access');
     $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 . '))');
     }
     $catid = $this->getState('filter.catid');
     if ($catid) {
         $query->where('c.id = ' . $db->quote($catid));
     }
     $access = $this->getState('filter.access');
     if ($access) {
         $query->where('listing.access = ' . (int) $access);
     }
     $published = $this->getState('filter.published', '');
     if ($published !== '') {
         $query->where('listing.published = ' . (int) $published);
     }
     $featured = $this->getState('filter.featured', '');
     if ($featured !== '') {
         $query->where('listing.featured = ' . (int) $featured);
     }
     if (!empty($search)) {
         if (stripos($search, 'id:') === 0) {
             $query->where('listing.id = ' . (int) substr($search, 3));
         } elseif (stripos($search, 'author:') === 0) {
             $search = substr($search, 7);
             $search = $db->quote('%' . $db->escape($search, true) . '%');
             $query->where('c.title LIKE ' . $search);
         } elseif (stripos($search, 'created_by:') === 0) {
             $search = substr($search, 11);
             if (is_numeric($search)) {
                 $query->where('listing.created_by = 0 OR listing.created_by IS NULL');
             } else {
                 $search = $db->Quote('%' . $db->escape($search, true) . '%');
                 $query->where('(ua.name LIKE ' . $search . ' OR ua.username LIKE ' . $search . ')');
             }
         } else {
             $search = $db->Quote('%' . $db->escape($search, true) . '%');
             $query->where('listing.title LIKE ' . $search);
         }
     }
     $orderingAllow = array('listing.id', 'listing.title', 'listing.author', 'c.title', 'l.title', 'listing.featured', 'listing.published', 'listing.created');
     if (in_array($listOrder, $orderingAllow)) {
         if ($listOrder == 'c.title' || $listOrder == 'l.title') {
             $query->order($listOrder . " " . $listDirn . ', listing.title');
         } else {
             $query->order($listOrder . ' ' . $listDirn);
         }
     }
     return $query;
 }
コード例 #6
0
ファイル: tags.php プロジェクト: ranrolls/ras-full-portal
 public function getTotalListingsAssignTag($tagId)
 {
     $user = JFactory::getUser();
     $levels = $user->getAuthorisedViewLevels();
     $levelsStr = implode(',', $levels);
     $db = $this->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 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();
     $languageTag = JFactory::getLanguage()->getTag();
     if ($app->getLanguageFilter()) {
         $query->where('listing.language IN (' . $db->quote($languageTag) . ',' . $db->quote('*') . ',' . $db->quote('') . ')');
     }
     $query->join('', '#__judirectory_tags_xref AS tag_xref ON tag_xref.listing_id = listing.id');
     $query->join('', '#__judirectory_tags AS tag ON tag.id = tag_xref.tag_id');
     $query->where('tag.published = 1');
     $query->where('(tag.publish_up = ' . $db->quote($nullDate) . ' OR tag.publish_up <= ' . $db->quote($nowDate) . ')');
     $query->where('(tag.publish_down = ' . $db->quote($nullDate) . ' OR tag.publish_down >= ' . $db->quote($nowDate) . ')');
     $query->where('tag.id =' . $tagId);
     $db->setQuery($query);
     return (int) $db->loadResult();
 }
コード例 #7
0
 public static function isEmptyCat($catId)
 {
     $categoryIdArrayCanAccess = JUDirectoryFrontHelperPermission::getAccessibleCategoryIds();
     if (empty($categoryIdArrayCanAccess)) {
         return true;
     }
     $user = JFactory::getUser();
     $levelsArray = $user->getAuthorisedViewLevels();
     $levelString = implode(',', $levelsArray);
     $db = JFactory::getDBO();
     $nullDate = $db->getNullDate();
     $nowDate = JFactory::getDate()->toSql();
     $query = $db->getQuery(true);
     $query->select('COUNT(*)');
     $query->from('#__judirectory_categories AS c');
     $query->where('c.parent_id = ' . $catId);
     $query->where('c.published = 1');
     $query->where('(c.publish_up = ' . $db->quote($nullDate) . ' OR c.publish_up <= ' . $db->quote($nowDate) . ')');
     $query->where('(c.publish_down = ' . $db->quote($nullDate) . ' OR c.publish_down >= ' . $db->quote($nowDate) . ')');
     $query->where('c.access IN (' . $levelString . ')');
     $query->where('c.id IN (' . implode(",", $categoryIdArrayCanAccess) . ')');
     $app = JFactory::getApplication();
     $tagLanguage = JFactory::getLanguage()->getTag();
     if ($app->getLanguageFilter()) {
         $query->where('c.language IN (' . $db->quote($tagLanguage) . ',' . $db->quote('*') . ')');
     }
     $db->setQuery($query);
     $totalSubCats = $db->loadResult();
     $query = $db->getQuery(true);
     $query->select('COUNT(*)');
     $query->from('#__judirectory_listings AS listing');
     $query->where('listingxref.cat_id = ' . $catId);
     $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 (' . $levelString . ')');
     } else {
         $query->where('(listing.access IN (' . $levelString . ') OR (listing.created_by = ' . $user->id . '))');
     }
     $query->join('INNER', '#__judirectory_listings_xref AS listingxref ON listing.id = listingxref.listing_id');
     $query->where('listingxref.cat_id IN (' . implode(",", $categoryIdArrayCanAccess) . ')');
     $app = JFactory::getApplication();
     $tagLanguage = JFactory::getLanguage()->getTag();
     if ($app->getLanguageFilter()) {
         $query->where('listing.language IN (' . $db->quote($tagLanguage) . ',' . $db->quote('*') . ')');
     }
     $query->group('listing.id');
     $db->setQuery($query);
     $totalListings = $db->loadResult();
     if (!$totalSubCats && !$totalListings) {
         return true;
     } else {
         return false;
     }
 }
コード例 #8
0
ファイル: category.php プロジェクト: ranrolls/ras-full-portal
 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];
 }
コード例 #9
0
ファイル: tree.php プロジェクト: ranrolls/ras-full-portal
 public function getRelatedCategories($categoryId, $ordering = 'crel.ordering', $direction = 'ASC')
 {
     $storeId = md5(__METHOD__ . "::" . $categoryId . "::" . $ordering . "::" . $direction);
     if (!isset($this->cache[$storeId])) {
         $params = $this->getState('params');
         $showEmptyCategory = $params->get('show_empty_related_category', 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('c.*');
         $query->from('#__judirectory_categories AS c');
         $query->join('INNER', '#__judirectory_categories_relations AS crel ON c.id=crel.cat_id_related');
         $query->where('crel.cat_id =' . $categoryId);
         $query->where('c.published = 1');
         $query->where('(c.publish_up = ' . $db->quote($nullDate) . ' OR c.publish_up <= ' . $db->quote($nowDate) . ')');
         $query->where('(c.publish_down = ' . $db->quote($nullDate) . ' OR c.publish_down >= ' . $db->quote($nowDate) . ')');
         $query->where('c.access IN (' . $levelsStr . ')');
         $categoryIdArrayCanAccess = JUDirectoryFrontHelperPermission::getAccessibleCategoryIds();
         if (is_array($categoryIdArrayCanAccess) && count($categoryIdArrayCanAccess) > 0) {
             $query->where('c.id IN(' . implode(",", $categoryIdArrayCanAccess) . ')');
         } else {
             $query->where('c.id IN("")');
         }
         $app = JFactory::getApplication();
         $tag = JFactory::getLanguage()->getTag();
         if ($app->getLanguageFilter()) {
             $query->where('c.language IN (' . $db->quote($tag) . ',' . $db->quote('*') . ',' . $db->quote('') . ')');
         }
         $query->order($ordering . ' ' . $direction);
         $query->group('c.id');
         $db->setQuery($query);
         $categoriesBefore = $db->loadObjectList();
         $categoriesAfter = array();
         foreach ($categoriesBefore as $category) {
             $showTotalSubCats = $params->get('show_total_subcats_of_relcat', 0);
             $showTotalChildListings = $params->get('show_total_listings_of_relcat', 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) {
                     $categoriesAfter[] = $category;
                 }
             } else {
                 $categoriesAfter[] = $category;
             }
         }
         $this->cache[$storeId] = $categoriesAfter;
     }
     return $this->cache[$storeId];
 }
コード例 #10
0
ファイル: listing.php プロジェクト: ranrolls/ras-full-portal
 public function getRelatedListings($listingId)
 {
     $user = JFactory::getUser();
     $levels = $user->getAuthorisedViewLevels();
     $levelsStr = implode(',', $levels);
     $db = JFactory::getDbo();
     $nullDate = $db->getNullDate();
     $nowDate = JFactory::getDate()->toSql();
     $app = JFactory::getApplication();
     $lang = JFactory::getLanguage();
     $params = $this->getState('params');
     $maxRelatedListings = (int) $params->get('max_related_listings', 12);
     $db = $this->getDbo();
     $query = $db->getQuery(true);
     $query->select('listing.*, cmain.id AS cat_id');
     $query->from('#__judirectory_listings AS listing');
     $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->join('', '#__judirectory_listings_relations AS listingrel ON listing.id = listingrel.listing_id_related');
     $query->where('listingrel.listing_id =' . $listingId);
     $query->where('listing.id !=' . $listingId);
     $query->where('listing.approved = 1');
     $query->where('listing.published = 1');
     $query->where('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 . '))');
     }
     if ($app->getLanguageFilter()) {
         $query->where('listing.language IN (' . $db->quote($lang->getTag()) . ',' . $db->quote('*') . $db->quote('') . ')');
     }
     $order = $params->get('related_listings_ordering', 'listingrel.ordering');
     $dir = $params->get('related_listings_direction', 'ASC');
     $query->order($order . ' ' . $dir);
     if ($maxRelatedListings > 0) {
         $db->setQuery($query, 0, $maxRelatedListings);
     } else {
         $db->setQuery($query);
     }
     return $db->loadObjectList();
 }