示例#1
0
 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;
 }
示例#2
0
    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__);
        }
    }
示例#3
0
 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;
 }
示例#4
0
 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'];
         }
     }
 }
示例#5
0
 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);
 }