コード例 #1
0
ファイル: facebook.php プロジェクト: BetterBetterBetter/B3App
 public function addOpenGraph(DiscussPost $post)
 {
     // Use facebook developer tools to check the result
     // https://developers.facebook.com/tools/debug/og
     $doc = JFactory::getDocument();
     $config = DiscussHelper::getConfig();
     // Search for an image in the content
     $image = self::searchImage($post->content);
     if ($image) {
         $doc->addCustomTag('<meta property="og:image" content="' . $image . '" />');
     }
     if ($config->get('integration_facebook_like')) {
         $appId = $config->get('integration_facebook_like_appid');
         if ($appId) {
             $doc->addCustomTag('<meta property="fb:app_id" content="' . $appId . '" />');
         }
         $adminId = $config->get('integration_facebook_like_admin');
         if ($adminId) {
             $doc->addCustomTag('<meta property="fb:admins" content="' . $adminId . '" />');
         }
     }
     // Add post title info here.
     $doc->addCustomTag('<meta property="og:title" content="' . $post->title . '" />');
     // Add post content.
     $maxContent = 350;
     // Remove bbcode tags from the content.
     $content = EasyDiscussParser::removeCodes($post->content);
     $content = strip_tags($post->content);
     if (JString::strlen($content) > $maxContent) {
         $content = JString::substr($content, 0, $maxContent) . '...';
     }
     // Add content to description
     $doc->addCustomTag('<meta property="og:description" content="' . $content . '" />');
     // Add the type of the og tag.
     $doc->addCustomTag('<meta property="og:type" content="article" />');
     // Add the URL for this page.
     $url = DiscussRouter::getRoutedURL(DiscussRouter::getPostRoute($post->id, false, true));
     $doc->addCustomTag('<meta property="og:url" content="' . $url . '" />');
     $doc->setTitle($post->title);
     $doc->setDescription($content);
     return true;
 }
コード例 #2
0
ファイル: default.php プロジェクト: pguilford/vcomcc
                ?>
								<?php 
            } else {
                ?>
									<?php 
                echo $post->reply->poster_name;
                ?>
								<?php 
            }
            ?>

								<?php 
            $lastReply = DiscussHelper::getModel('Posts')->getLastReply($post->id);
            ?>
								<a class="ml-5" href="<?php 
            echo DiscussRouter::getPostRoute($post->id) . '#' . JText::_('MOD_EASYDISCUSS_REPLY_PERMALINK') . '-' . $lastReply->id;
            ?>
" title="<?php 
            echo JText::_('MOD_EASYDISCUSS_VIEW_LAST_REPLY');
            ?>
"><?php 
            echo JText::_('MOD_EASYDISCUSS_VIEW_LAST_REPLY');
            ?>
</a>

							<?php 
        }
        ?>
						</div>
					</div><!-- ft -->
コード例 #3
0
					</li>
				</ul>
				<?php 
if (DiscussHelper::getJoomlaVersion() >= '1.6') {
    ?>
				<input type="hidden" value="com_users"  name="option">
				<input type="hidden" value="user.login" name="task">
				<input type="hidden" name="return" value="<?php 
    echo base64_encode(DiscussRouter::getPostRoute($post->id, false));
    ?>
" />
				<?php 
} else {
    ?>
				<input type="hidden" value="com_user"  name="option">
				<input type="hidden" value="login" name="task">
				<input type="hidden" name="return" value="<?php 
    echo base64_encode(DiscussRouter::getPostRoute($post->id, false));
    ?>
" />
				<?php 
}
?>
				<?php 
echo JHTML::_('form.token');
?>
			</form>
		</div>
	</div>
</div>
コード例 #4
0
"></a>
<div class="discuss-item discussQuestion mt-10 <?php 
echo $post->islock ? ' is-locked' : '';
echo !empty($post->password) ? ' is-protected' : '';
echo $post->isresolve ? ' is-resolved' : '';
echo $post->isFeatured() ? ' is-featured' : '';
echo $post->isPollLocked() ? ' is-poll-lock' : '';
?>
" data-id="<?php 
echo $post->id;
?>
">
	<!-- Discussion title -->
	<div class="discuss-item-hd">
		<a href="<?php 
echo DiscussRouter::getPostRoute($post->id);
?>
" class="">
			<h2 class="discuss-post-title pull-left">
				<i data-original-title="<?php 
echo JText::_('COM_EASYDISCUSS_LOCKED_DESC');
?>
" data-placement="top" rel="ed-tooltip" class="icon-lock"></i>
				<?php 
if (!empty($post->password)) {
    ?>
				<i data-original-title="<?php 
    echo JText::_('COM_EASYDISCUSS_PROTECTED_DESC');
    ?>
" data-placement="top" rel="ed-tooltip" class="icon-key"></i>
				<?php 
コード例 #5
0
ファイル: view.html.php プロジェクト: pguilford/vcomcc
 private function setPageHeaders($post)
 {
     // Set page title.
     DiscussHelper::setPageTitle($post->getTitle());
     $doc = JFactory::getDocument();
     $doc->setMetadata('keywords', $post->title);
     $doc->setMetadata('description', preg_replace('/\\s+/', ' ', substr(strip_tags(EasyDiscussParser::bbcode($post->content)), 0, 160)));
     // Set canonical link to avoid URL duplication.
     $doc->addHeadLink(DISCUSS_JURIROOT . DiscussRouter::getPostRoute($post->id), 'canonical', 'rel');
 }
コード例 #6
0
ファイル: reports.php プロジェクト: BetterBetterBetter/B3App
 public function submit()
 {
     $config = DiscussHelper::getConfig();
     $my = JFactory::getUser();
     $id = JRequest::getInt('id');
     $app = JFactory::getApplication();
     $post = DiscussHelper::getTable('Post');
     $state = $post->load($id);
     $acl = DiscussHelper::getHelper('ACL');
     if (!$post->id || !$state) {
         DiscussHelper::setMessageQueue(JText::_('COM_EASYDISCUSS_INVALID_POST_ID'), DISCUSS_QUEUE_ERROR);
         $app->redirect(DiscussRouter::_('index.php?option=com_easydiscuss', false));
         $app->close();
     }
     // Get the URL to the discussion.
     $url = DiscussRouter::getPostRoute($post->id, false);
     if ($post->isReply()) {
         $url = DiscussRouter::getPostRoute($post->parent_id, false);
     }
     if (!$acl->allowed('send_report')) {
         DiscussHelper::setMessageQueue(JText::_('COM_EASYDISCUSS_YOU_DO_NOT_HAVE_PERMISION_TO_SUBMIT_REPORT'), DISCUSS_QUEUE_ERROR);
         $app->redirect($url);
         $app->close();
     }
     if (!$config->get('main_report')) {
         DiscussHelper::setMessageQueue(JText::_('COM_EASYDISCUSS_REPORT_HAS_BEEN_DISABLED_BY_ADMINISTRATOR'), DISCUSS_QUEUE_ERROR);
         $app->redirect($url);
         $app->close();
     }
     $message = JRequest::getString('reporttext', '');
     if (empty($message)) {
         DiscussHelper::setMessageQueue(JText::_('COM_EASYDISCUSS_REPORT_EMPTY_TEXT'), DISCUSS_QUEUE_ERROR);
         $app->redirect($url);
         $app->close();
     }
     $date = DiscussHelper::getDate();
     $report = DiscussHelper::getTable('Report');
     $report->created_by = $my->id;
     $report->post_id = $post->id;
     $report->reason = $message;
     $report->created = $date->toMySQL();
     if (!$report->store()) {
         DiscussHelper::setMessageQueue($report->getError(), DISCUSS_QUEUE_ERROR);
         $app->redirect($url);
         $app->close();
     }
     // Mark post as reported.
     $report->markPostReport();
     $threshold = $config->get('main_reportthreshold', 15);
     $totalReports = $report->getReportCount();
     $redirectMessage = JText::_('COM_EASYDISCUSS_REPORT_SUBMITTED');
     // Check if the number of reports for this post exceeded the threshold.
     if ($totalReports > $reportThreshold) {
         $owner = $post->getOwner();
         $date = DiscussHelper::getDate($post->created);
         $emailData = array();
         $emailData['postContent'] = $post->content;
         $emailData['postAuthor'] = $owner->name;
         $emailData['postAuthorAvatar'] = $owner->avatar;
         $emailData['postDate'] = $date->toFormat();
         $emailData['postLink'] = DiscussRouter::getRoutedURL('index.php?option=com_easydiscuss&view=post&id=' . $post->id, false, true);
         $emailData['emailSubject'] = JText::sprintf('COM_EASYDISCUSS_REPORT_REQUIRED_YOUR_ATTENTION', JString::substr($postTbl->content, 0, 15)) . '...';
         $emailData['emailTemplate'] = 'email.post.attention.php';
         if ($post->isReply()) {
             $emailData['postLink'] = DiscussRouter::getRoutedURL('index.php?option=com_easydiscuss&view=post&id=' . $post->parent_id, false, true);
         }
         DiscussHelper::getHelper('Mailer')->notifyAdministrators($emailData, array(), $config->get('notify_admin'), $config->get('notify_moderator'));
         $redirectMessage = JText::_('COM_EASYDISCUSS_REPORT_SUBMITTED_BUT_POST_MARKED_AS_REPORT');
     }
     DiscussHelper::setMessageQueue(JText::_('COM_EASYDISCUSS_REPORT_SUBMITTED'), DISCUSS_QUEUE_SUCCESS);
     $app->redirect($url);
 }
コード例 #7
0
						<?php 
if ($system->config->get('layout_profile_roles') && $post->user->getRole()) {
    ?>
						<span class="discuss-role<?php 
    echo ' ' . $post->user->getRoleLabelClassname();
    ?>
"><?php 
    echo $this->escape($post->user->getRole());
    ?>
</span>
						<?php 
}
?>
						<div>
							<a href="<?php 
echo DiscussRouter::getPostRoute($post->parent_id) . '#' . JText::_('COM_EASYDISCUSS_REPLY_PERMALINK') . '-' . $post->id;
?>
" title="<?php 
echo JText::_('COM_EASYDISCUSS_REPLY_PERMALINK_TO');
?>
" class="muted" style="text-decoration: none;">
								<time datetime="<?php 
echo $this->formatDate($system->config->get('layout_dateformat', '%A, %B %d %Y, %I:%M %p'), $post->created);
?>
">
									<?php 
echo $this->formatDate($system->config->get('layout_dateformat', '%A, %B %d %Y, %I:%M %p'), $post->created);
?>
								</time>
							</a>
						</div>
コード例 #8
0
ファイル: posts.php プロジェクト: pguilford/vcomcc
 /**
  * Saves an edited reply if the site is configured to use a WYSIWYG editor
  *
  * @since	3.2
  * @access	public
  * @param	string
  * @return	
  */
 public function saveReply()
 {
     //JRequest::checkToken('request') or jexit( 'Invalid Token' );
     $config = DiscussHelper::getConfig();
     $acl = DiscussHelper::getHelper('ACL');
     $my = JFactory::getUser();
     $app = JFactory::getApplication();
     $post = JRequest::get('POST');
     $output = array();
     $output['id'] = $post['post_id'];
     $postTable = DiscussHelper::getTable('Post');
     $postTable->load($post['post_id']);
     $categoryTable = DiscussHelper::getTable('category');
     $categoryTable->load($postTable->category_id);
     $postAccess = DiscussHelper::getPostAccess($postTable, $categoryTable);
     if (!$postAccess->canEdit()) {
         DiscussHelper::setMessageQueue(JText::_('COM_EASYDISCUSS_SYSTEM_INSUFFICIENT_PERMISSIONS'), DISCUSS_QUEUE_ERROR);
         $app->redirect(DiscussRouter::_('index.php?option=com_easydiscuss&view=ask&id=' . $post['post_id'], false));
         return $app->close();
     }
     // do checking here!
     if (empty($post['dc_reply_content'])) {
         DiscussHelper::setMessageQueue(JText::_('COM_EASYDISCUSS_ERROR_REPLY_EMPTY'), DISCUSS_QUEUE_ERROR);
         $app->redirect(DiscussRouter::_('index.php?option=com_easydiscuss&view=ask&id=' . $post['post_id'], false));
         return $app->close();
     }
     // Rebind the post data
     $post['dc_reply_content'] = JRequest::getVar('dc_reply_content', '', 'post', 'none', JREQUEST_ALLOWRAW);
     $post['content'] = $post['dc_reply_content'];
     $data['content_type'] = DiscussHelper::getEditorType('reply');
     $postTable->bind($post);
     $recaptcha = $config->get('antispam_recaptcha');
     $public = $config->get('antispam_recaptcha_public');
     $private = $config->get('antispam_recaptcha_private');
     if (!$config->get('antispam_recaptcha_registered_members') && $my->id > 0) {
         $recaptcha = false;
     }
     if ($recaptcha && $public && $private) {
         require_once DISCUSS_CLASSES . '/recaptcha.php';
         $obj = DiscussRecaptcha::recaptcha_check_answer($private, $_SERVER['REMOTE_ADDR'], $post['recaptcha_challenge_field'], $post['recaptcha_response_field']);
         if (!$obj->is_valid) {
             $ajax->reloadCaptcha();
             $ajax->reject('error', JText::_('COM_EASYDISCUSS_POST_INVALID_RECAPTCHA_RESPONSE'));
             $ajax->send();
         }
     } else {
         if ($config->get('antispam_easydiscuss_captcha')) {
             $runCaptcha = DiscussHelper::getHelper('Captcha')->showCaptcha();
             if ($runCaptcha) {
                 $response = JRequest::getVar('captcha-response');
                 $captchaId = JRequest::getInt('captcha-id');
                 $discussCaptcha = new stdClass();
                 $discussCaptcha->captchaResponse = $response;
                 $discussCaptcha->captchaId = $captchaId;
                 $state = DiscussHelper::getHelper('Captcha')->verify($discussCaptcha);
                 if (!$state) {
                     DiscussHelper::setMessageQueue(JText::_('COM_EASYDISCUSS_INVALID_CAPTCHA'), DISCUSS_QUEUE_ERROR);
                     $app->redirect(DiscussRouter::_('index.php?option=com_easydiscuss&view=post&layout=edit&id=' . $postTable->id, false));
                     return $app->close();
                 }
             }
         }
     }
     // @rule: Bind parameters
     if ($config->get('reply_field_references')) {
         $postTable->bindParams($post);
     }
     // Bind file attachments
     if ($acl->allowed('add_attachment', '0')) {
         $postTable->bindAttachments();
     }
     $isNew = false;
     // @trigger: onBeforeSave
     DiscussEventsHelper::importPlugin('content');
     DiscussEventsHelper::onContentBeforeSave('post', $postTable, $isNew);
     if (!$postTable->store()) {
         $ajax->reject('error', JText::_('COM_EASYDISCUSS_ERROR'));
         $ajax->send();
     }
     // Process poll items
     $includePolls = JRequest::getBool('pollitems', false);
     // Process poll items here.
     if ($includePolls && $config->get('main_polls')) {
         $pollItems = JRequest::getVar('pollitems');
         $pollItemsOri = JRequest::getVar('pollitemsOri');
         // Delete polls if necessary since this post doesn't contain any polls.
         //if( !$isNew && !$includePolls )
         if (count($pollItems) == 1 && empty($pollItems[0]) && !$isNew) {
             $postTable->removePoll();
         }
         // Check if the multiple polls checkbox is it checked?
         $multiplePolls = JRequest::getVar('multiplePolls', '0');
         if ($pollItems) {
             // As long as we need to create the poll answers, we need to create the main question.
             $pollTitle = JRequest::getVar('poll_question', '');
             // Since poll question are entirely optional.
             $pollQuestion = DiscussHelper::getTable('PollQuestion');
             $pollQuestion->loadByPost($postTable->id);
             $pollQuestion->post_id = $postTable->id;
             $pollQuestion->title = $pollTitle;
             $pollQuestion->multiple = $config->get('main_polls_multiple') ? $multiplePolls : false;
             $pollQuestion->store();
             if (!$isNew) {
                 // Try to detect which poll items needs to be removed.
                 $remove = JRequest::getVar('pollsremove');
                 if (!empty($remove)) {
                     $remove = explode(',', $remove);
                     foreach ($remove as $id) {
                         $id = (int) $id;
                         $poll = DiscussHelper::getTable('Poll');
                         $poll->load($id);
                         $poll->delete();
                     }
                 }
             }
             for ($i = 0; $i < count($pollItems); $i++) {
                 $item = $pollItems[$i];
                 $itemOri = isset($pollItemsOri[$i]) ? $pollItemsOri[$i] : '';
                 $value = (string) $item;
                 $valueOri = (string) $itemOri;
                 if (trim($value) == '') {
                     continue;
                 }
                 $poll = DiscussHelper::getTable('Poll');
                 if (empty($valueOri) && !empty($value)) {
                     // this is a new item.
                     $poll->set('value', $value);
                     $poll->set('post_id', $postTable->get('id'));
                     $poll->store();
                 } else {
                     if (!empty($valueOri) && !empty($value)) {
                         // update existing value.
                         if (!$poll->loadByValue($valueOri, $postTable->get('id'))) {
                             $poll->set('value', $value);
                             $poll->store();
                         }
                     }
                 }
             }
         }
     }
     if (!empty($postTable->id)) {
         //Clear off previous records before storing
         $ruleModel = DiscussHelper::getModel('CustomFields');
         $ruleModel->deleteCustomFieldsValue($postTable->id, 'update');
         // Process custom fields.
         $fieldIds = JRequest::getVar('customFields');
         if (!empty($fieldIds)) {
             foreach ($fieldIds as $fieldId) {
                 $fields = JRequest::getVar('customFieldValue_' . $fieldId);
                 if (!empty($fields)) {
                     // Cater for custom fields select list
                     // To detect if there is no value selected for the select list custom fields
                     if (in_array('defaultList', $fields)) {
                         $tempKey = array_search('defaultList', $fields);
                         $fields[$tempKey] = '';
                     }
                 }
                 $postTable->bindCustomFields($fields, $fieldId);
             }
         }
     }
     // @trigger: onAfterSave
     DiscussEventsHelper::onContentAfterSave('post', $postTable, $isNew);
     //get parent post
     $parentId = $postTable->parent_id;
     $parentTable = DiscussHelper::getTable('Post');
     $parentTable->load($parentId);
     // filtering badwords
     $postTable->title = DiscussHelper::wordFilter($postTable->title);
     $postTable->content = DiscussHelper::wordFilter($postTable->content);
     //all access control goes here.
     $canDelete = false;
     if (DiscussHelper::isSiteAdmin() || $acl->allowed('delete_reply', '0') || $postTable->user_id == $user->id) {
         $canDelete = true;
     }
     // @rule: URL References
     $postTable->references = $postTable->getReferences();
     // set for vote status
     $voteModel = DiscussHelper::getModel('Votes');
     $postTable->voted = $voteModel->hasVoted($postTable->id);
     // get total vote for this reply
     $postTable->totalVote = $postTable->sum_totalvote;
     //load porfile info and auto save into table if user is not already exist in discuss's user table.
     $creator = DiscussHelper::getTable('Profile');
     $creator->load($postTable->user_id);
     $postTable->user = $creator;
     //default value
     $postTable->isVoted = 0;
     $postTable->total_vote_cnt = 0;
     $postTable->likesAuthor = '';
     $postTable->minimize = 0;
     if ($config->get('main_content_trigger_replies')) {
         // process content plugins
         DiscussEventsHelper::importPlugin('content');
         DiscussEventsHelper::onContentPrepare('reply', $postTable);
         $postTable->event = new stdClass();
         $results = DiscussEventsHelper::onContentBeforeDisplay('reply', $postTable);
         $postTable->event->beforeDisplayContent = trim(implode("\n", $results));
         $results = DiscussEventsHelper::onContentAfterDisplay('reply', $postTable);
         $postTable->event->afterDisplayContent = trim(implode("\n", $results));
     }
     $theme = new DiscussThemes();
     $question = DiscussHelper::getTable('Post');
     $question->load($postTable->parent_id);
     $recaptcha = '';
     $enableRecaptcha = $config->get('antispam_recaptcha');
     $publicKey = $config->get('antispam_recaptcha_public');
     $skipRecaptcha = $config->get('antispam_skip_recaptcha');
     $model = DiscussHelper::getModel('Posts');
     $postCount = count($model->getPostsBy('user', $my->id));
     if ($enableRecaptcha && !empty($publicKey) && $postCount < $skipRecaptcha) {
         require_once DISCUSS_CLASSES . '/recaptcha.php';
         $recaptcha = getRecaptchaData($publicKey, $config->get('antispam_recaptcha_theme'), $config->get('antispam_recaptcha_lang'), null, $config->get('antispam_recaptcha_ssl'), 'edit-reply-recaptcha' . $postTable->id);
     }
     // Get the post access object here.
     $category = DiscussHelper::getTable('Category');
     $category->load($postTable->category_id);
     $access = $postTable->getAccess($category);
     $postTable->access = $access;
     // Get comments for the post
     $commentLimit = $config->get('main_comment_pagination') ? $config->get('main_comment_pagination_count') : null;
     $comments = $postTable->getComments($commentLimit);
     $postTable->comments = DiscussHelper::formatComments($comments);
     $theme->set('question', $question);
     $theme->set('post', $postTable);
     $theme->set('category', $category);
     $html = $theme->fetch('post.reply.item.php');
     if ($recaptcha && $public && $private) {
         $output['type'] = 'success.captcha';
     }
     if (!$parentTable->islock) {
         $output['type'] = 'locked';
     }
     $message = $isNew ? JText::_('COM_EASYDISCUSS_POST_STORED') : JText::_('COM_EASYDISCUSS_EDIT_SUCCESS');
     $state = 'success';
     // Let's set our custom message here.
     DiscussHelper::setMessageQueue($message, $state);
     $redirect = JRequest::getVar('redirect', '');
     if (!empty($redirect)) {
         $redirect = base64_decode($redirect);
         return $this->setRedirect($redirect);
     }
     $this->setRedirect(DiscussRouter::getPostRoute($post['parent_id'], false));
 }