public function addComment() { JSession::checkToken() or die(JText::_('JINVALID_TOKEN')); $user = JFactory::getUser(); $model = $this->getModel(); $rootComment = JUDirectoryFrontHelperComment::getRootComment(); $data = $_POST; $listingId = $data['listing_id']; $params = JUDirectoryHelper::getParams(null, $listingId); $parentId = $data['parent_id']; $model->setSessionCommentForm($listingId); if (strlen($data['title']) < 6) { $this->setError(JText::_('COM_JUDIRECTORY_COMMENT_INVALID_TITLE')); $this->setRedirect(JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_item . '&id=' . $listingId, false)); return false; } if (strlen($data['guest_name']) < 1) { $this->setError(JText::_('COM_JUDIRECTORY_COMMENT_INVALID_NAME')); $this->setRedirect(JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_item . '&id=' . $listingId, false)); return false; } if (isset($data['guest_email'])) { if (!preg_match('/^[\\w\\.-]+@[\\w\\.-]+\\.[\\w\\.-]{2,6}$/', $data['guest_email'])) { $this->setError(JText::_('COM_JUDIRECTORY_COMMENT_INVALID_EMAIL')); $this->setRedirect(JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_item . '&id=' . $listingId, false)); return false; } } if (isset($data['website'])) { if (!preg_match('/^(https?:\\/\\/)?([\\w\\.-]+)\\.([\\w\\.-]{2,6})([\\/\\w \\.-]*)*\\/?$/i', $data['website'])) { $this->setError(JText::_('COM_JUDIRECTORY_COMMENT_INVALID_WEBSITE')); $this->setRedirect(JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_item . '&id=' . $listingId, false)); return false; } } if (isset($data['comment_language'])) { $langArray = JHtml::_('contentlanguage.existing'); $langKey = array_keys($langArray); array_unshift($langKey, '*'); if (!in_array($data['comment_language'], $langKey)) { $this->setError(JText::_('COM_JUDIRECTORY_COMMENT_INVALID_LANGUAGE')); $this->setRedirect(JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_item . '&id=' . $listingId, false)); return false; } } $minCharacter = $params->get('min_comment_characters', 20); $maxCharacter = $params->get('max_comment_characters', 1000); $comment = $data['comment']; $comment = JUDirectoryFrontHelperComment::parseCommentText($comment, $listingId); $comment = strip_tags($comment); $commentCharacter = strlen($comment); if ($commentCharacter < $minCharacter || $commentCharacter > $maxCharacter) { $this->setError(JText::_('COM_JUDIRECTORY_COMMENT_INVALID_COMMENT')); $this->setRedirect(JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_item . '&id=' . $listingId, false)); return false; } $showCaptcha = JUDirectoryFrontHelperPermission::showCaptchaWhenComment($listingId); if ($showCaptcha) { $validCaptcha = JUDirectoryFrontHelperCaptcha::checkCaptcha(); if (!$validCaptcha) { if ($parentId == $rootComment->id) { $form = '#judir-comment-form'; } else { $form = '#comment-reply-wrapper-' . $parentId; } $this->setError(JText::_('COM_JUDIRECTORY_INVALID_CAPTCHA')); $this->setMessage($this->getError(), 'error'); $this->setRedirect(JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_item . '&id=' . $listingId . $form, false)); return false; } } if ($user->get('guest')) { if (!$model->checkNameOfGuest($listingId)) { $this->setError(JText::_('COM_JUDIRECTORY_YOU_ARE_NOT_AUTHORIZED_TO_COMMENT_ON_THIS_LISTING')); $this->setMessage($model->getError(), 'error'); $this->setRedirect(JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_item . '&id=' . $listingId, false)); return false; } if (!$model->checkEmailOfGuest()) { $this->setMessage($model->getError(), 'error'); $this->setRedirect(JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_item . '&id=' . $listingId, false)); return false; } } if ($parentId == $rootComment->id) { $canComment = JUDirectoryFrontHelperPermission::canComment($listingId, $data['guest_email']); if (!$canComment) { $this->setError(JText::_('COM_JUDIRECTORY_YOU_ARE_NOT_AUTHORIZED_TO_COMMENT_ON_THIS_LISTING')); $this->setMessage($this->getError(), 'error'); $this->setRedirect(JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_item . '&id=' . $listingId, false)); return false; } } elseif ($parentId > 0 && $parentId != $rootComment->id) { $canReplyComment = JUDirectoryFrontHelperPermission::canReplyComment($listingId, $parentId); if (!$canReplyComment) { $this->setError(JText::_('COM_JUDIRECTORY_YOU_ARE_NOT_AUTHORIZED_TO_REPLY_THIS_COMMENT')); $this->setMessage($this->getError(), 'error'); $this->setRedirect(JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_item . '&id=' . $listingId, false)); return false; } } else { $this->setError(JText::_('COM_JUDIRECTORY_INVALID_DATA')); $this->setMessage($this->getError(), 'error'); $this->setRedirect(JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_item . '&id=' . $listingId, false)); return false; } $dataValid = array(); if ($parentId == $rootComment->id) { $canRateListing = JUDirectoryFrontHelperPermission::canRateListing($listingId); if ($canRateListing) { $dataValid = $this->validateCriteria($data, $parentId); if (!$dataValid) { $this->setError(JText::_('COM_JUDIRECTORY_INVALID_RATING_VALUE')); $this->setMessage($this->getError(), 'error'); $this->setRedirect(JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_item . '&id=' . $listingId, false)); return false; } } } $requiredPostNames = array('title', 'guest_name', 'guest_email', 'comment', 'parent_id', 'listing_id'); if ($params->get('website_field_in_comment_form', 0) == 2) { array_push($requiredPostNames, 'website'); } if ($parentId == $rootComment->id && $params->get('filter_comment_language', 0)) { array_push($requiredPostNames, 'comment_language'); } foreach ($requiredPostNames as $requiredPostName) { if (trim($data[$requiredPostName]) == '') { $this->setError(JText::_('COM_JUDIRECTORY_INVALID_INPUT_DATA')); $this->setMessage($this->getError(), 'error'); $this->setRedirect(JRoute::_('index.php?option=' . $this->option . '&view=' . $this->view_item . '&id=' . $listingId, false)); return false; } } $acceptedPostNames = array('title', 'guest_name', 'guest_email', 'language', 'website', 'comment', 'parent_id', 'listing_id', 'subscribe'); if ($params->get('website_field_in_comment_form', 0) == 2 || $params->get('website_field_in_comment_form', 0) == 1) { array_push($acceptedPostNames, 'website'); } if ($params->get('filter_comment_language', 0)) { array_push($acceptedPostNames, 'comment_language'); } foreach ($acceptedPostNames as $acceptedPostName) { if (isset($data[$acceptedPostName])) { $dataValid[$acceptedPostName] = $data[$acceptedPostName]; } } $newCommentId = $model->saveComment($dataValid); if (!$newCommentId) { $this->setError($model->getError()); $this->setMessage($this->getError(), 'error'); $redirectUrl = JRoute::_(JUDirectoryHelperRoute::getListingRoute($listingId), false); $this->setRedirect($redirectUrl); return false; } $session = JFactory::getSession(); $timeNow = JFactory::getDate()->toSql(); $timeNowStamp = strtotime($timeNow); $sessionCommentOnListingTime = 'judir-commented-' . $listingId; $sessionCommentTime = 'judir-commented'; $session->set($sessionCommentOnListingTime, $timeNowStamp); $session->set($sessionCommentTime, $timeNowStamp); $session->clear('judirectory_commentform_' . $listingId); $this->setMessage(JText::_('COM_JUDIRECTORY_ADD_COMMENT_SUCCESSFULLY')); $redirectUrl = JRoute::_(JUDirectoryHelperRoute::getListingRoute($listingId) . '#comment-item-' . $newCommentId, false); $this->setRedirect($redirectUrl); return true; }
?> <div class="comment-website"> <?php echo JText::_('COM_JUDIRECTORY_COMMENT_WEBSITE') . " : " . $commentObj->website; ?> </div> <?php } ?> </div> <!-- /.judir-metadata --> <?php $commentObj->comment = JUDirectoryFrontHelper::BBCode2Html($commentObj->comment); $commentObj->comment = JUDirectoryFrontHelperComment::parseCommentText($commentObj->comment, $this->listing_id); ?> <div class="see-more" itemprop="description"> <?php echo $commentObj->comment; ?> </div> </div> </div> <?php $totalChildComments = $this->getModel()->getTotalChildComments($commentObj->id); if ($totalChildComments > 0) { $this->comment_parent_id = $commentObj->id; echo $this->loadTemplate('comments'); }
public function getItems() { $user = JFactory::getUser(); $token = JSession::getFormToken(); $items = parent::getItems(); $listingId = (int) $this->getState('listing.id'); $params = $this->getState('params'); if (count($items) > 0) { $commentsRecursive = array(); foreach ($items as $item) { $commentsRecursive[] = $item; $commentsRecursive = array_merge($commentsRecursive, $this->getCommentRecursive($item->id)); } $items = $commentsRecursive; } foreach ($items as $item) { $item->comment_edit = $item->comment; $item->comment = JUDirectoryFrontHelper::BBCode2Html($item->comment); $item->comment = JUDirectoryFrontHelperComment::parseCommentText($item->comment, $listingId); $item->can_reply = JUDirectoryFrontHelperPermission::canReplyComment($listingId, $item->id); $item->can_vote = JUDirectoryFrontHelperPermission::canVoteComment($listingId, $item->id); $item->can_report = JUDirectoryFrontHelperPermission::canReportComment($listingId, $item->id); $item->can_subscribe = false; $item->can_edit = false; $item->can_delete = false; $isOwnerComment = JUDirectoryFrontHelperPermission::isCommentOwner($item->id); if ($isOwnerComment) { $item->can_edit = JUDirectoryFrontHelperPermission::canEditComment($item->id); $item->can_delete = JUDirectoryFrontHelperPermission::canDeleteComment($item->id); $item->link_delete = JRoute::_('index.php?option=com_judirectory&task=listing.deleteComment&comment_id=' . $item->id . '&' . $token . '=1'); if ($params->get('can_subscribe_own_comment', 1)) { $item->can_subscribe = true; if ($this->isSubscriber($user->id, $item->id, 'comment')) { $item->is_subscriber = true; $secret = JFactory::getConfig()->get('secret'); $type = 'comment'; $code = md5($user->id . $user->email . $type . $secret); $subscriptionObject = JUDirectoryFrontHelper::getSubscriptionObjectByType($user->id, $item->id, $type); $item->subscribe_link = JRoute::_('index.php?option=com_judirectory&task=subscribe.remove&sub_id=' . (int) $subscriptionObject->id . '&code=' . $code . '&' . $token . '=1'); } else { $item->is_subscriber = false; $item->subscribe_link = JRoute::_('index.php?option=com_judirectory&task=subscribe.save' . '&comment_id=' . $item->id . '&' . $token . '=1'); } } } $item->voted_value = $this->getCommentVotedValue($item->id); } return $items; }