public function getOutput($options = array()) { if (!$this->isPublished()) { return ""; } $options = new JRegistry($options); $this->initMultipleRatingField(); $this->loadDefaultAssets(); if ($this->listing->cat_id) { $this->criteriaGroupId = JUDirectoryFrontHelperCriteria::getCriteriaGroupIdByCategoryId($this->listing->cat_id); } if (JUDirectoryHelper::hasMultiRating()) { if ($this->criteriaGroupId) { $this->criteriaObjectList = JUDirectoryFrontHelperCriteria::getCriteriasByCatId($this->listing->cat_id); } } $this->selectedStar = round($this->listing->rating * $this->totalStars / 10, 2); if ($this->isDetailsView($options)) { $this->canRateListing = JUDirectoryFrontHelperPermission::canRateListing($this->listing_id); $document = JFactory::getDocument(); $document->addStyleSheet(JUri::root(true) . "/components/com_judirectory/assets/css/jquery.rating.css"); $document->addScript(JUri::root(true) . "/components/com_judirectory/assets/js/jquery.MetaData.js"); $document->addScript(JUri::root(true) . "/components/com_judirectory/assets/js/jquery.rating.js"); $singleRatingScript = ' jQuery(document).ready(function ($) { $(".judir-single-rating").rating({ callback: function (value) { var str = $(this).attr("name"); var patt = /^judir-listing-rating-result-(.*)$/i; var result = str.match(patt); var listingId = result[1]; var ratingValue = $(this).val(); var objectListing = {}; var token = $("#judir-single-rating-token").attr("name"); objectListing.listing_id = listingId; objectListing.ratingValue = ratingValue; if ($.isNumeric(listingId) && (ratingValue > 0 && ratingValue <= 10)) { $.ajax({ type: "POST", url : "index.php?option=com_judirectory&task=listing.singleRating&" + token + "=1", data: objectListing }).done(function (msg) { alert(msg); }); } } }); });'; if ($this->canRateListing) { $document->addScriptDeclaration($singleRatingScript); } } if (is_object($this->multiRating)) { return $this->multiRating->getOutput($options); } else { $this->setVariable('options', $options); $this->setVariable('className', __CLASS__); return $this->fetch('output.php', __CLASS__); } }
public static function canRateListing($listingId) { $listingObject = JUDirectoryHelper::getListingById($listingId); if (!is_object($listingObject)) { return false; } $params = JUDirectoryHelper::getParams(null, $listingId); if (!$params->get('enable_listing_rate', 1)) { return false; } $userCanViewListing = JUDirectoryFrontHelperPermission::userCanDoListing($listingId, true); if (!$userCanViewListing) { return false; } $ratingField = new JUDirectoryFieldCore_rating(); if (!$ratingField->canView()) { return false; } $user = JFactory::getUser(); $criteriaGroupId = JUDirectoryFrontHelperCriteria::getCriteriaGroupIdByCategoryId($listingObject->cat_id); if ($criteriaGroupId == 0 || !JUDirectoryHelper::hasMultiRating()) { $assetName = 'com_judirectory.category.' . $listingObject->cat_id; if ($user->authorise('judir.single.rate', $assetName)) { if ($user->authorise('judir.single.rate.many_times', $assetName)) { return true; } else { if ($user->get('guest')) { $session = JFactory::getSession(); if (!$session->has('judir-listing-rated-' . $listingId)) { return true; } } else { $totalVoteTimes = JUDirectoryFrontHelperRating::getTotalListingVotesOfUser($user->id, $listingId); if ($totalVoteTimes == 0) { return true; } } } } } else { $assetName = 'com_judirectory.criteriagroup.' . $criteriaGroupId; if ($user->authorise('judir.criteria.rate', $assetName)) { if ($user->authorise('judir.criteria.rate.many_times', $assetName)) { return true; } else { if ($user->get('guest')) { $session = JFactory::getSession(); if (!$session->has('judir-listing-rated-' . $listingId)) { return true; } } else { $totalVoteTimes = JUDirectoryFrontHelperRating::getTotalListingVotesOfUser($user->id, $listingId); if ($totalVoteTimes == 0) { return true; } } } } } return false; }