public function validateCriteria($data) { $listingId = $data['listing_id']; $params = JUDirectoryHelper::getParams(null, $listingId); $dataValid = array(); $canRateListing = JUDirectoryFrontHelperPermission::canRateListing($listingId); if ($canRateListing && $params->get('enable_listing_rate_in_comment_form', 1)) { $mainCatId = JUDirectoryFrontHelperCategory::getMainCategoryId($listingId); $criteriaArray = JUDirectoryFrontHelperCriteria::getCriteriasByCatId($mainCatId); $postCriteria = $data['criteria']; if (count($criteriaArray) > 0) { foreach ($criteriaArray as $key => $criteria) { if ($criteria->required) { if (isset($postCriteria[$criteria->id]) && $postCriteria[$criteria->id] > 0 && $postCriteria[$criteria->id] <= 10) { $criteria->value = $postCriteria[$criteria->id]; } else { echo JText::_('Invalid Field ' . $criteria->title); exit; } } else { if (isset($postCriteria[$criteria->id]) && $postCriteria[$criteria->id] > 0 && $postCriteria[$criteria->id] <= 10) { $criteria->value = $postCriteria[$criteria->id]; } else { unset($criteriaArray[$key]); } } } $dataValid['criteria_array'] = $criteriaArray; } else { if ($params->get('require_listing_rate_in_comment_form', 1)) { if ($data['judir_comment_rating_single'] <= 0 && $data['judir_comment_rating_single'] > 10) { return false; } $dataValid['ratingValue'] = $data['judir_comment_rating_single']; } } } return $dataValid; }
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; }
public function saveCategoryPrepareCriteriaGroup($pk, $newParentObject, $table, &$data) { $app = JFactory::getApplication(); if ($pk > 0) { if ($data['selected_criteriagroup'] == -1) { if ($table->selected_criteriagroup == -1) { if ($table->parent_id == $data['parent_id']) { $data['criteriagroup_id'] = $table->criteriagroup_id; } else { $newCriteriaGroupId = $newParentObject->criteriagroup_id; if ($table->criteriagroup_id == $newCriteriaGroupId) { $data['criteriagroup_id'] = $table->criteriagroup_id; } else { if ($data['changeCriteriaGroupAction'] == 1) { $data['criteriagroup_id'] = $table->criteriagroup_id; $data['selected_criteriagroup'] = $table->criteriagroup_id; $criteriaGroupObject = JUDirectoryFrontHelperCriteria::getCriteriaGroupById($table->criteriagroup_id); $app->enqueueMessage(JText::sprintf('COM_JUDIRECTORY_INHERITED_CRITERIA_GROUP_HAS_BEEN_CHANGED_TO_X', $criteriaGroupObject->name ? $criteriaGroupObject->name : JText::_("COM_JUDIRECTORY_NONE")), 'Notice'); } else { $data['criteriagroup_id'] = $newParentObject->criteriagroup_id; } } } } else { $data['criteriagroup_id'] = $newParentObject->criteriagroup_id; } } else { $data['criteriagroup_id'] = $data['selected_criteriagroup']; } } else { if ($data['selected_criteriagroup'] == -1) { $data['criteriagroup_id'] = $newParentObject->criteriagroup_id; } else { $data['criteriagroup_id'] = $data['selected_criteriagroup']; } } }
public function setSessionCommentForm($listingId) { $session = JFactory::getSession(); $app = JFactory::getApplication(); $criteriaRatingValues = array('judir-comment-rating-single' => $app->input->getFloat('judir_comment_rating_single', 0)); $mainCatId = JUDirectoryFrontHelperCategory::getMainCategoryId($listingId); $criteriaArray = JUDirectoryFrontHelperCriteria::getCriteriasByCatId($mainCatId); if (count($criteriaArray)) { foreach ($criteriaArray as $value) { $criteriaRatingValues[$value->id] = $app->input->getString('criteria-' . $value->id, ''); } } $commentForm = array(); $commentForm['rating'] = $criteriaRatingValues; $commentForm['title'] = $app->input->getString('title', ''); $commentForm['guest_name'] = $app->input->getString('guest_name', ''); $commentForm['guest_email'] = $app->input->getString('guest_email', ''); $commentForm['comment'] = $app->input->getString('comment', ''); $commentForm['parent_id'] = $app->input->getInt('parent_id', ''); $commentForm['comment_language'] = $app->input->getString('comment_language', '*'); if ($app->input->getString('website', '')) { $commentForm['website'] = $app->input->getString('website', ''); } $session->set('judirectory_commentform_' . $listingId, $commentForm); }