summaryrefslogtreecommitdiff
path: root/includes/view_topic_inc.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/view_topic_inc.php')
-rw-r--r--includes/view_topic_inc.php134
1 files changed, 134 insertions, 0 deletions
diff --git a/includes/view_topic_inc.php b/includes/view_topic_inc.php
new file mode 100644
index 0000000..f279123
--- /dev/null
+++ b/includes/view_topic_inc.php
@@ -0,0 +1,134 @@
+<?php
+/**
+ * @package boards
+ * @subpackage functions
+ */
+
+/**
+ * required setup
+ */
+require_once( '../kernel/setup_inc.php' );
+
+// we need all three
+require_once( BOARDS_PKG_CLASS_PATH.'BitBoard.php' );
+require_once( BOARDS_PKG_CLASS_PATH.'BitBoardTopic.php' );
+require_once( BOARDS_PKG_CLASS_PATH.'BitBoardPost.php' );
+
+// if we're getting a migrate id then lets move on right away
+if( @BitBase::verifyId( $_REQUEST['migrate_topic_id'] ) ) {
+ if( $_REQUEST['t'] = BitBoardTopic::lookupByMigrateTopic( $_REQUEST['migrate_topic_id'] ) ) {
+ bit_redirect( BOARDS_PKG_URL.'index.php?t='. $_REQUEST['t'] );
+ }
+} elseif( @BitBase::verifyId( $_REQUEST['migrate_post_id'] ) ) {
+ if( $_REQUEST['t'] = BitBoardTopic::lookupByMigratePost( $_REQUEST['migrate_post_id'] ) ) {
+ bit_redirect( BOARDS_PKG_URL.'index.php?t='. $_REQUEST['t'] );
+ }
+}
+
+// @TODO move this to edit_post
+if (!empty($_REQUEST['action'])) {
+ // Now check permissions to access this page
+ // @TODO load up the parent board and call verifyUpdatePermission
+ $gBitSystem->verifyPermission( 'p_boards_update' );
+
+ $comment = new BitBoardPost($_REQUEST['comment_id']);
+ $comment->loadComment();
+ if (!$comment->isValid()) {
+ $gBitSystem->fatalError( tra("Invalid Comment"), NULL, NULL, HttpStatusCodes::HTTP_GONE );
+ }
+ switch ($_REQUEST['action']) {
+ case 1:
+ // Aprove
+ $comment->modApprove();
+ break;
+ case 2:
+ // Reject
+ $comment->modReject();
+ break;
+ case 3:
+ //Moderate
+ $comment->loadMetaData();
+ $comment->modWarn($_REQUEST['warning_message']);
+ default:
+ break;
+ }
+}
+
+// Finally - load up our topic
+$thread = new BitBoardTopic($_REQUEST['t']);
+$thread->load();
+
+if( !$thread->isValid() ) {
+ $gBitSystem->fatalError( tra("Unknown discussion"), NULL, NULL, HttpStatusCodes::HTTP_GONE );
+}
+
+$thread->verifyViewPermission();
+
+// load up the root board we need it
+$gBoard = new BitBoard(null,$thread->mInfo['board_content_id']);
+$gBoard->load();
+$gBitSmarty->assignByRef( 'board', $gBoard );
+// force root board to be gContent
+$gContent = &$gBoard;
+$gBitSmarty->assignByRef('gContent', $gContent);
+
+
+// if you know what this is please comment it
+if (empty($thread->mInfo['th_root_id'])) {
+ if ($_REQUEST['action']==3) {
+ //Invalid as a result of rejecting the post, redirect to the board
+ bit_redirect( $gBoard->getDisplayUrl() );
+ } else {
+ $gBitSystem->fatalError(tra( "Invalid topic selection." ), NULL, NULL, HttpStatusCodes::HTTP_GONE );
+ }
+}
+
+
+// Invoke services
+$displayHash = array( 'perm_name' => 'p_boards_read' );
+$thread->invokeServices( 'content_display_function', $displayHash );
+
+$thread->readTopic();
+
+$gBitSmarty->assignByRef( 'thread', $thread );
+$gBitSmarty->assign( 'topic_locked', BitBoardTopic::isLocked( $thread->mCommentContentId ) );
+
+
+// Get the thread of comments
+$commentsParentId=$thread->mInfo['content_id'];
+$comments_return_url= BOARDS_PKG_URL."index.php?t={$thread->mRootId}";
+$gBitSystem->setCanonicalLink( BOARDS_PKG_URL.'index.php?t='.$thread->mRootId );
+$gComment = new BitBoardPost($_REQUEST['t']);
+$gBitSmarty->assign('comment_template','bitpackage:boards/post_display.tpl');
+
+// set default comment display style
+if( empty( $_REQUEST["comments_style"] ) ) {
+ $_REQUEST["comments_style"] = "flat";
+}
+
+require_once( BOARDS_PKG_INCLUDE_PATH.'boards_comments_inc.php' );
+
+if( $gBitUser->isRegistered() ) {
+ $postComment['registration_date']=$gBitUser->mInfo['registration_date'];
+ $postComment['user_avatar_url']=$gBitUser->mInfo['avatar_url'];
+ $postComment['user_url'] = $gBitUser->getDisplayUrl();
+}
+
+
+// display warnings - might be for edit processes - if you know please comment
+$warnings = array();
+if (!empty($_REQUEST['warning'])) {
+ foreach ($_REQUEST['warning'] as $id => $state) {
+ if (strcasecmp($state,'show')==0) {
+ $warnings[$id]=true;
+ }
+ }
+}
+$gBitSmarty->assignByRef('warnings',$warnings);
+
+
+// ajax support
+$gBitThemes->loadAjax( 'mochikit' );
+
+$gBitSystem->display('bitpackage:boards/list_posts.tpl', "Show Thread: " . $thread->getField('title') , array( 'display_mode' => 'display' ));
+?>