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; } } } }
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; }