Exemple #1
0
 public function canView($options = array())
 {
     $storeId = md5(__METHOD__ . "::" . $this->listing_id . "::" . $this->id . "::" . serialize($options));
     if (!isset(self::$cache[$storeId])) {
         if (!$this->isPublished()) {
             self::$cache[$storeId] = false;
             return self::$cache[$storeId];
         }
         $app = JFactory::getApplication();
         $languageFilter = $app->getLanguageFilter();
         if ($languageFilter) {
             $languageTag = JFactory::getLanguage()->getTag();
             if ($this->language != $languageTag && $this->language != '*' && $this->language != '') {
                 self::$cache[$storeId] = false;
                 return self::$cache[$storeId];
             }
         }
         if ($this->listing_id) {
             $listing_display_params = JUDirectoryFrontHelperListing::getListingDisplayParams($this->listing_id);
             $listing_display_fields = $listing_display_params->get('fields');
         }
         $options = (array) $options;
         $field_name = $this->field_name ? $this->field_name : $this->id;
         if ($this->isDetailsView($options)) {
             if (isset($listing_display_fields->{$field_name}) && isset($listing_display_fields->{$field_name}->details_view)) {
                 if (!$listing_display_fields->{$field_name}->details_view) {
                     self::$cache[$storeId] = false;
                     return self::$cache[$storeId];
                 }
             } elseif (!$this->details_view) {
                 self::$cache[$storeId] = false;
                 return self::$cache[$storeId];
             }
         } else {
             if (isset($listing_display_fields->{$field_name}) && isset($listing_display_fields->{$field_name}->list_view)) {
                 if (!$listing_display_fields->{$field_name}->list_view) {
                     self::$cache[$storeId] = false;
                     return self::$cache[$storeId];
                 }
             } elseif (!$this->list_view) {
                 self::$cache[$storeId] = false;
                 return self::$cache[$storeId];
             }
         }
         if (isset($this->listing) && $this->listing->cat_id) {
             $params = JUDirectoryHelper::getParams($this->listing->cat_id);
         } else {
             $params = JUDirectoryHelper::getParams(null, $this->listing_id);
         }
         $show_empty_field = $params->get('show_empty_field', 0);
         if ($this->listing_id && !$show_empty_field) {
             $field_value = $this->value;
             if (is_null($field_value)) {
                 self::$cache[$storeId] = false;
                 return self::$cache[$storeId];
             }
             if (is_string($field_value) && trim($field_value) === '') {
                 self::$cache[$storeId] = false;
                 return self::$cache[$storeId];
             }
             if (is_array($field_value) && count($field_value) == 0) {
                 self::$cache[$storeId] = false;
                 return self::$cache[$storeId];
             }
         }
         $user = JFactory::getUser();
         if ($user) {
             $viewLevels = JAccess::getAuthorisedViewLevels($user->id);
             $fieldGroupObj = JUDirectoryFrontHelperField::getFieldGroupById($this->group_id);
             if (!in_array($fieldGroupObj->access, $viewLevels)) {
                 self::$cache[$storeId] = false;
                 return self::$cache[$storeId];
             } else {
                 if (in_array($this->access, $viewLevels)) {
                     self::$cache[$storeId] = true;
                     return self::$cache[$storeId];
                 }
             }
         }
         self::$cache[$storeId] = false;
         return self::$cache[$storeId];
     }
     return self::$cache[$storeId];
 }
Exemple #2
0
 public static function appendDataToListingObjList(&$listingObjectList, $params, $usingForMod = false)
 {
     if (is_array($listingObjectList) && count($listingObjectList)) {
         $user = JFactory::getUser();
         foreach ($listingObjectList as $listingObject) {
             JUDirectoryHelper::getListingById($listingObject->id, false, $listingObject);
             $listingObject->params = JUDirectoryFrontHelperListing::getListingDisplayParams($listingObject->id);
             if (!$user->get('guest')) {
                 $canEditListing = JUDirectoryFrontHelperPermission::canEditListing($listingObject->id);
                 $canEditStateListing = JUDirectoryFrontHelperPermission::canEditStateListing($listingObject);
                 $canDeleteListing = JUDirectoryFrontHelperPermission::canDeleteListing($listingObject->id);
                 $listingObject->params->set('access-edit', $canEditListing);
                 $listingObject->params->set('access-edit-state', $canEditStateListing);
                 $listingObject->params->set('access-delete', $canDeleteListing);
             }
             if ($listingObject->published != 1) {
                 $listingObject->label_unpublished = true;
             } else {
                 $listingObject->label_unpublished = false;
             }
             $listingObject->label_pending = false;
             $nowDate = JFactory::getDate()->toSql();
             if (intval($listingObject->publish_up) > 0) {
                 if (strtotime($listingObject->publish_up) > strtotime($nowDate)) {
                     $listingObject->label_pending = true;
                 }
             }
             $listingObject->label_expired = false;
             if (intval($listingObject->publish_down) > 0) {
                 if (intval($listingObject->publish_up) > 0) {
                     if (strtotime($listingObject->publish_up) <= strtotime($nowDate)) {
                         if (strtotime($listingObject->publish_down) < strtotime($nowDate)) {
                             $listingObject->label_expired = true;
                         }
                     }
                 } else {
                     if (strtotime($listingObject->publish_down) < strtotime($nowDate)) {
                         $listingObject->label_expired = true;
                     }
                 }
             }
             if ($params->get('show_new_label', 1) && JUDirectoryFrontHelper::isWithinXDays($listingObject->publish_up, $params->get('num_day_to_show_as_new', 10))) {
                 $listingObject->label_new = true;
             } else {
                 $listingObject->label_new = false;
             }
             if ($params->get('show_updated_label', 1) && JUDirectoryFrontHelper::isWithinXDays($listingObject->updated, $params->get('num_day_to_show_as_updated', 10))) {
                 $listingObject->label_updated = true;
             } else {
                 $listingObject->label_updated = false;
             }
             if ($params->get('show_hot_label', 1) && JUDirectoryFrontHelperListing::checkHotListing($listingObject->publish_up, $params->get('num_hit_per_day_to_be_hot', 100), $listingObject->hits)) {
                 $listingObject->label_hot = true;
             } else {
                 $listingObject->label_hot = false;
             }
             if ($params->get('show_featured_label', 1) && $listingObject->featured) {
                 $listingObject->label_featured = true;
             } else {
                 $listingObject->label_featured = false;
             }
         }
     }
 }
Exemple #3
0
 public function getItem()
 {
     $params = $this->getState('params');
     $listingId = (int) $this->getState('listing.id');
     if (!$listingId) {
         JError::raiseError(404, JText::_('COM_JUDIRECTORY_LISTING_NOT_FOUND'));
         return false;
     }
     $user = JFactory::getUser();
     $db = JFactory::getDbo();
     $query = $db->getQuery(true);
     $query->select('listing.*, c.id AS cat_id');
     $query->from('#__judirectory_listings AS listing');
     $query->join('', '#__judirectory_listings_xref AS listingxref ON listing.id = listingxref.listing_id AND listingxref.main=1');
     $query->join('', '#__judirectory_categories AS c ON c.id = listingxref.cat_id');
     $query->select('(SELECT COUNT(*) FROM #__judirectory_comments AS cm WHERE cm.listing_id = listing.id AND cm.approved = 1 AND cm.published = 1) AS total_comments');
     $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');
     $query->select('(SELECT COUNT(*) FROM #__judirectory_reports AS r WHERE r.item_id = listing.id AND r.type = "listing") AS total_reports');
     $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');
     $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.group_id != 1');
     $fieldQuery->where('field.details_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 . ')');
     $category = JUDirectoryFrontHelperCategory::getMainCategory($listingId);
     if (is_object($category)) {
         $fieldQuery->where('field.group_id = ' . $category->fieldgroup_id);
     }
     $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);
     }
     $query->where('listing.id = ' . $listingId);
     $db->setQuery($query);
     $listingObject = $db->loadObject();
     if (!is_object($listingObject)) {
         JError::raiseError(404, JText::_('COM_JUDIRECTORY_LISTING_NOT_FOUND'));
         return false;
     }
     $listingObject->params = JUDirectoryFrontHelperListing::getListingDisplayParams($listingObject->id);
     if (!$user->get('guest')) {
         $canEditListing = JUDirectoryFrontHelperPermission::canEditListing($listingObject->id);
         $canDeleteListing = JUDirectoryFrontHelperPermission::canDeleteListing($listingObject->id);
         $canEditStateListing = JUDirectoryFrontHelperPermission::canEditStateListing($listingObject);
         $listingObject->params->set('access-edit', $canEditListing);
         $listingObject->params->set('access-edit-state', $canEditStateListing);
         $listingObject->params->set('access-delete', $canDeleteListing);
     }
     $canReportListing = JUDirectoryFrontHelperPermission::canReportListing($listingObject->id);
     $canContactListing = JUDirectoryFrontHelperPermission::canContactListing($listingObject->id);
     $canClaimListing = JUDirectoryFrontHelperPermission::canClaimListing($listingObject->id);
     $canRateListing = JUDirectoryFrontHelperPermission::canRateListing($listingObject->id);
     $canCommentListing = JUDirectoryFrontHelperPermission::canComment($listingObject->id);
     $listingObject->params->set('access-report', $canReportListing);
     $listingObject->params->set('access-contact', $canContactListing);
     $listingObject->params->set('access-claim', $canClaimListing);
     $listingObject->params->set('access-rate', $canRateListing);
     $listingObject->params->set('access-comment', $canCommentListing);
     $listingObject->template_params = new JRegistry($listingObject->template_params);
     if ($params->get('show_new_label', 1) && JUDirectoryFrontHelper::isWithinXDays($listingObject->publish_up, $params->get('num_day_to_show_as_new', 10))) {
         $listingObject->label_new = true;
     } else {
         $listingObject->label_new = false;
     }
     if ($params->get('show_updated_label', 1) && JUDirectoryFrontHelper::isWithinXDays($listingObject->updated, $params->get('num_day_to_show_as_updated', 10))) {
         $listingObject->label_updated = true;
     } else {
         $listingObject->label_updated = false;
     }
     if ($params->get('show_hot_label', 1) && JUDirectoryFrontHelperListing::checkHotListing($listingObject->publish_up, $params->get('num_hit_per_day_to_be_hot', 100), $listingObject->hits)) {
         $listingObject->label_hot = true;
     } else {
         $listingObject->label_hot = false;
     }
     if ($params->get('show_featured_label', 1) && $listingObject->featured) {
         $listingObject->label_featured = true;
     } else {
         $listingObject->label_featured = false;
     }
     $listingObject->next_item = $this->getNextPrevItem($listingObject, 'next');
     $listingObject->prev_item = $this->getNextPrevItem($listingObject, 'prev');
     return $listingObject;
 }