2006-12-02 04:36:16 +00:00
< ? php
/*
2008-12-20 23:59:00 +00:00
* e107 website system
*
2013-03-25 18:48:48 +01:00
* Copyright ( C ) 2008 - 2013 e107 Inc ( e107 . org )
2008-12-20 23:59:00 +00:00
* Released under the terms and conditions of the
* GNU General Public License ( http :// www . gnu . org / licenses / gpl . txt )
*
2009-09-08 02:48:48 +00:00
* Forum View Topic
2008-12-20 23:59:00 +00:00
*
2006-12-02 04:36:16 +00:00
*/
2008-12-04 21:36:09 +00:00
require_once ( '../../class2.php' );
2011-04-25 11:29:21 +00:00
2011-01-14 18:29:06 +00:00
$e107 = e107 :: getInstance ();
2011-04-21 13:20:22 +00:00
$tp = e107 :: getParser ();
2011-04-25 11:29:21 +00:00
$ns = e107 :: getRender ();
2011-04-21 13:20:22 +00:00
if ( ! $e107 -> isInstalled ( 'forum' ))
2011-01-14 18:29:06 +00:00
{
header ( 'Location: ' . e_BASE . 'index.php' );
exit ;
}
2006-12-02 04:36:16 +00:00
if ( isset ( $_POST [ 'fjsubmit' ]))
{
2013-03-26 12:33:03 +01:00
header ( 'location:' . e107 :: getUrl () -> create ( 'forum/forum/view' , array ( 'id' => ( int ) $_POST [ 'forumjump' ]), 'full=1&encode=0' ));
2006-12-02 04:36:16 +00:00
exit ;
}
2008-11-29 01:24:27 +00:00
$highlight_search = isset ( $_POST [ 'highlight_search' ]);
2006-12-02 04:36:16 +00:00
if ( ! e_QUERY )
{
2010-02-01 03:41:59 +00:00
//No parameters given, redirect to forum home
2013-03-26 12:33:03 +01:00
header ( 'Location:' . e107 :: getUrl () -> create ( 'forum/forum/main' , array (), 'full=1&encode=0' ));
2006-12-02 04:36:16 +00:00
exit ;
}
2008-12-01 01:10:50 +00:00
2013-03-31 00:06:21 -07:00
2013-03-14 02:26:47 -07:00
// include_lan(e_PLUGIN . 'forum/languages/'.e_LANGUAGE.'/lan_forum_viewtopic.php');
2009-09-08 02:00:48 +00:00
include_once ( e_PLUGIN . 'forum/forum_class.php' );
2013-03-14 02:26:47 -07:00
2008-12-01 01:10:50 +00:00
2011-04-25 11:29:21 +00:00
$forum = new e107forum ();
$thread = new e107ForumThread ();
2009-09-08 02:00:48 +00:00
2013-03-31 00:06:21 -07:00
if ( vartrue ( $_GET [ 'id' ]) && isset ( $_GET [ 'dl' ]))
{
$forum -> sendFile ( $_GET );
exit ;
}
2013-03-14 16:25:24 -07:00
if ( e_AJAX_REQUEST && varset ( $_POST [ 'action' ]) == 'quickreply' )
2013-03-14 02:26:47 -07:00
{
$forum -> ajaxQuickReply ();
}
if ( e_AJAX_REQUEST && MODERATOR ) // see javascript above.
{
$forum -> ajaxModerate ();
}
2011-04-25 14:13:45 +00:00
if ( isset ( $_GET [ 'last' ]))
{
$_GET [ 'f' ] = 'last' ;
}
2009-09-08 02:00:48 +00:00
if ( isset ( $_GET [ 'f' ]) && $_GET [ 'f' ] == 'post' )
{
$thread -> processFunction ();
}
2006-12-02 04:36:16 +00:00
2009-09-08 02:00:48 +00:00
$thread -> init ();
2009-09-06 04:30:46 +00:00
2009-09-08 02:00:48 +00:00
if ( isset ( $_POST [ 'track_toggle' ]))
{
$thread -> toggle_track ();
exit ;
}
if ( isset ( $_GET [ 'f' ]))
{
2010-03-14 19:07:57 +00:00
$ret = $thread -> processFunction ();
if ( $ret ) {
require_once ( HEADERF );
echo $ret ;
require_once ( FOOTERF );
exit ;
}
2009-09-08 02:00:48 +00:00
if ( $_GET [ 'f' ] != 'last' ) { $thread -> init (); }
}
2010-04-25 22:30:26 +00:00
2012-11-02 01:50:28 +00:00
2010-04-26 15:07:30 +00:00
e107 :: getScBatch ( 'view' , 'forum' ) -> setScVar ( 'thread' , $thread );
2009-09-08 02:00:48 +00:00
$pm_installed = plugInstalled ( 'pm' );
2008-12-01 01:10:50 +00:00
2008-12-01 21:11:01 +00:00
//Only increment thread views if not being viewed by thread starter
2009-09-08 02:00:48 +00:00
if ( USER && ( USERID != $thread -> threadInfo [ 'thread_user' ] || $thread -> threadInfo [ 'thread_total_replies' ] > 0 ) || ! $thread -> noInc )
2008-12-01 21:11:01 +00:00
{
2011-04-26 11:27:36 +00:00
$forum -> threadIncview ( $thread -> threadInfo [ 'thread_id' ]);
2008-12-01 21:11:01 +00:00
}
2013-03-26 12:33:03 +01:00
define ( 'e_PAGETITLE' , strip_tags ( $tp -> toHTML ( $thread -> threadInfo [ 'thread_name' ], true , 'no_hook, emotes_off' )) . ' / ' . $tp -> toHTML ( $thread -> threadInfo [ 'forum_name' ], true , 'no_hook, emotes_off' ) . ' / ' . LAN_01 );
2009-01-25 17:44:13 +00:00
$forum -> modArray = $forum -> forumGetMods ( $thread -> threadInfo [ 'forum_moderators' ]);
define ( 'MODERATOR' , ( USER && $forum -> isModerator ( USERID )));
2010-04-25 22:30:26 +00:00
2010-04-26 15:07:30 +00:00
e107 :: getScBatch ( 'view' , 'forum' ) -> setScVar ( 'forum' , $forum );
2010-04-25 22:30:26 +00:00
//var_dump(e107::getScBatch('forum', 'forum'));
2012-11-02 01:50:28 +00:00
2006-12-02 04:36:16 +00:00
2008-12-02 21:34:18 +00:00
if ( MODERATOR && isset ( $_POST [ 'mod' ]))
2006-12-02 04:36:16 +00:00
{
2008-12-04 21:36:09 +00:00
require_once ( e_PLUGIN . 'forum/forum_mod.php' );
2009-09-08 02:00:48 +00:00
$thread -> message = forum_thread_moderate ( $_POST );
$thread -> threadInfo = $forum -> threadGet ( $thread -> threadId );
2006-12-02 04:36:16 +00:00
}
2011-06-28 12:14:45 +00:00
$num = $thread -> page ? $thread -> page - 1 : 0 ;
$postList = $forum -> PostGet ( $thread -> threadId , $num * $thread -> perPage , $thread -> perPage );
2008-12-02 21:34:18 +00:00
2011-06-28 12:58:26 +00:00
// SEO - meta description (auto)
if ( count ( $postList ))
{
define ( " META_DESCRIPTION " , $tp -> text_truncate (
str_replace (
array ( '"' , " ' " ), '' , strip_tags ( $tp -> toHTML ( $postList [ 0 ][ 'post_entry' ]))
), 250 , '...' ));
}
2008-12-02 21:34:18 +00:00
$gen = new convert ;
2009-09-08 02:00:48 +00:00
if ( $thread -> message )
2006-12-02 04:36:16 +00:00
{
2011-06-28 12:14:45 +00:00
//$ns->tablerender('', $thread->message, array('forum_viewtopic', 'msg'));
e107 :: getMessage () -> add ( $thread -> message );
2006-12-02 04:36:16 +00:00
}
2013-03-25 23:00:32 -07:00
//if (isset($thread->threadInfo['thread_options']['poll'])) //XXX Currently Failing - misconfigured thread-options.
//{
$_qry = 'SELECT * FROM `#polls` WHERE `poll_datestamp` = ' . $thread -> threadId ;
if ( $sql -> gen ( $_qry ))
2008-12-04 21:36:09 +00:00
{
2013-03-25 23:00:32 -07:00
if ( ! defined ( 'POLLCLASS' ))
{
include_once ( e_PLUGIN . 'poll/poll_class.php' );
}
$poll = new poll ;
$pollstr = " <div class='spacer'> " . $poll -> render_poll ( $_qry , 'forum' , 'query' , true ) . '</div>' ;
2008-12-04 21:36:09 +00:00
}
2013-03-25 23:00:32 -07:00
//}
2006-12-02 04:36:16 +00:00
//Load forum templates
2011-04-25 11:29:21 +00:00
// FIXME - new template paths!
2008-12-04 21:36:09 +00:00
if ( file_exists ( THEME . 'forum_design.php' ))
{
include_once ( THEME . 'forum_design.php' );
}
2012-12-08 20:22:05 +01:00
if ( ! vartrue ( $FORUMSTART ))
2008-12-02 21:34:18 +00:00
{
2008-12-04 21:36:09 +00:00
if ( file_exists ( THEME . 'forum_viewtopic_template.php' ))
2006-12-02 04:36:16 +00:00
{
2008-12-04 21:36:09 +00:00
require_once ( THEME . 'forum_viewtopic_template.php' );
2008-12-07 00:21:21 +00:00
}
elseif ( file_exists ( THEME . 'forum_template.php' ))
2006-12-02 04:36:16 +00:00
{
2008-12-04 21:36:09 +00:00
require_once ( THEME . 'forum_template.php' );
2006-12-02 04:36:16 +00:00
}
else
{
2008-12-04 21:36:09 +00:00
require_once ( e_PLUGIN . 'forum/templates/forum_viewtopic_template.php' );
2006-12-02 04:36:16 +00:00
}
}
2013-03-12 04:22:09 -07:00
// New in v2.x
2013-03-19 19:04:32 -07:00
if ( is_array ( $FORUM_VIEWTOPIC_TEMPLATE ) && ( e_BOOTSTRAP === true ))
2013-03-12 04:22:09 -07:00
{
2013-03-13 02:39:00 -07:00
$FORUMSTART = $FORUM_VIEWTOPIC_TEMPLATE [ 'start' ];
$FORUMTHREADSTYLE = $FORUM_VIEWTOPIC_TEMPLATE [ 'thread' ];
$FORUMEND = $FORUM_VIEWTOPIC_TEMPLATE [ 'end' ];
$FORUMREPLYSTYLE = $FORUM_VIEWTOPIC_TEMPLATE [ 'replies' ];
2013-03-12 04:22:09 -07:00
}
2006-12-02 04:36:16 +00:00
// get info for main thread -------------------------------------------------------------------------------------------------------------------------------------------------------------------
2010-02-01 03:41:59 +00:00
$tVars = new e_vars ;
$forum -> set_crumb ( true , '' , $tVars ); // Set $BREADCRUMB (and BACKLINK)
//$tVars->BREADCRUMB = $crumbs['breadcrumb'];
//$tVars->BACKLINK = $tVars->BREADCRUMB;
//$tVars->FORUM_CRUMB = $crumbs['forum_crumb'];
2013-03-26 12:33:03 +01:00
$tVars -> THREADNAME = $tp -> toHTML ( $thread -> threadInfo [ 'thread_name' ], true , 'no_hook, emotes_off' );
2013-03-12 04:22:09 -07:00
$tVars -> NEXTPREV = " <a class='btn btn-small' href=' " . $e107 -> url -> create ( 'forum/thread/prev' , array ( 'id' => $thread -> threadId )) . " '>« " . LAN_389 . " </a> " ;
// $tVars->NEXTPREV .= ' | ';
$tVars -> NEXTPREV .= " <a class='btn btn-small' href=' " . $e107 -> url -> create ( 'forum/thread/prev' , array ( 'id' => $thread -> threadId )) . " '> " . LAN_390 . " »</a> " ;
2006-12-02 04:36:16 +00:00
2010-03-10 01:23:57 +00:00
if ( $forum -> prefs -> get ( 'track' ) && USER )
2006-12-02 04:36:16 +00:00
{
2009-09-08 02:00:48 +00:00
$img = ( $thread -> threadInfo [ 'track_userid' ] ? IMAGE_track : IMAGE_untrack );
2011-11-28 14:19:19 +00:00
$url = $e107 -> url -> create ( 'forum/thread/view' , array ( 'id' => $thread -> threadId ), 'encode=0' ); // encoding could break AJAX call
2010-02-01 03:41:59 +00:00
$tVars -> TRACK .= "
2008-12-07 00:21:21 +00:00
< span id = 'forum-track-trigger-container' >
2013-03-12 04:22:09 -07:00
< a class = 'btn btn-small' href = '{$url}' id = 'forum-track-trigger' > { $img } </ a >
2008-12-07 00:21:21 +00:00
</ span >
< script type = 'text/javascript' >
2008-12-08 02:33:34 +00:00
e107 . runOnLoad ( function (){
2008-12-09 21:46:14 +00:00
$ ( 'forum-track-trigger' ) . observe ( 'click' , function ( e ) {
e . stop ();
2008-12-07 04:16:39 +00:00
new e107Ajax . Updater ( 'forum-track-trigger-container' , '{$url}' , {
2008-12-08 02:33:34 +00:00
method : 'post' ,
parameters : { //send query parameters here
'track_toggle' : 1
},
2008-12-07 00:21:21 +00:00
overlayPage : $ ( document . body )
});
});
2008-12-08 02:33:34 +00:00
}, document , true );
2008-12-07 00:21:21 +00:00
</ script >
2008-12-07 04:16:39 +00:00
" ;
2006-12-02 04:36:16 +00:00
}
2013-03-12 04:22:09 -07:00
2010-02-01 03:41:59 +00:00
$tVars -> MODERATORS = LAN_321 . implode ( ', ' , $forum -> modArray );
2006-12-02 04:36:16 +00:00
2010-02-01 03:41:59 +00:00
$tVars -> THREADSTATUS = ( ! $thread -> threadInfo [ 'thread_active' ] ? LAN_66 : '' );
2008-12-01 21:11:01 +00:00
2009-09-08 02:00:48 +00:00
if ( $thread -> pages > 1 )
2006-12-02 04:36:16 +00:00
{
2011-04-21 13:20:22 +00:00
if ( ! $thread -> page ) $thread -> page = 1 ;
2011-11-28 14:19:19 +00:00
$url = rawurlencode ( e107 :: getUrl () -> create ( 'forum/thread/view' , array ( 'name' => $thread -> threadInfo [ 'thread_name' ], 'id' => $thread -> threadId , 'page' => '[FROM]' )));
2013-03-14 04:05:33 -07:00
$parms = " total= { $thread -> pages } &type=page¤t= { $thread -> page } &url= " . $url . " &caption=off&tmpl=default&navcount=4&glyphs=1 " ;
2013-03-13 02:57:31 -07:00
//XXX FIXME - pull-down template not practical here. Can we force another?
2010-02-01 03:41:59 +00:00
$tVars -> GOTOPAGES = $tp -> parseTemplate ( " { NEXTPREV= { $parms } } " );
2011-04-21 13:20:22 +00:00
/*
$parms = ( $thread -> pages ) . " ,1, { $thread -> page } ,url::forum::thread::func=view&id= { $thread -> threadId } &page=[FROM],off " ;
$tVars -> GOTOPAGES = $tp -> parseTemplate ( " { NEXTPREV= { $parms } } " ); */
2006-12-02 04:36:16 +00:00
}
2010-02-01 03:41:59 +00:00
$tVars -> BUTTONS = '' ;
2009-09-08 02:00:48 +00:00
if ( $forum -> checkPerm ( $thread -> threadInfo [ 'thread_forum_id' ], 'post' ) && $thread -> threadInfo [ 'thread_active' ])
2006-12-02 04:36:16 +00:00
{
2011-11-28 14:19:19 +00:00
$tVars -> BUTTONS .= " <a href=' " . $e107 -> url -> create ( 'forum/thread/reply' , array ( 'id' => $thread -> threadId )) . " '> " . IMAGE_reply . " </a> " ;
2008-12-01 21:11:01 +00:00
}
2009-09-08 02:00:48 +00:00
if ( $forum -> checkPerm ( $thread -> threadInfo [ 'thread_forum_id' ], 'thread' ))
2008-12-01 21:11:01 +00:00
{
2011-11-28 14:19:19 +00:00
$tVars -> BUTTONS .= " <a href=' " . $e107 -> url -> create ( 'forum/thread/new' , array ( 'id' => $thread -> threadInfo [ 'thread_forum_id' ])) . " '> " . IMAGE_newthread . " </a> " ;
2006-12-02 04:36:16 +00:00
}
2013-03-12 04:22:09 -07:00
$tVars -> BUTTONSX = forumbuttons ( $thread );
function forumbuttons ( $thread )
{
global $forum ;
if ( $forum -> checkPerm ( $thread -> threadInfo [ 'thread_forum_id' ], 'post' ) && $thread -> threadInfo [ 'thread_active' ])
{
$replyUrl = " <a class='btn btn-primary' href=' " . e107 :: getUrl () -> create ( 'forum/thread/reply' , array ( 'id' => $thread -> threadId )) . " '>Post a Reply</a> " ;
}
if ( $forum -> checkPerm ( $thread -> threadInfo [ 'thread_forum_id' ], 'thread' ))
{
$options [] = " <a href=' " . e107 :: getUrl () -> create ( 'forum/thread/new' , array ( 'id' => $thread -> threadInfo [ 'thread_forum_id' ])) . " '>Create New Thread</a> " ;
}
$options [] = " <a href=' " . e107 :: getUrl () -> create ( 'forum/thread/prev' , array ( 'id' => $thread -> threadId )) . " '>Go to " . LAN_389 . " </a> " ; //FIXME LAN
$options [] = " <a href=' " . e107 :: getUrl () -> create ( 'forum/thread/prev' , array ( 'id' => $thread -> threadId )) . " '>Go to " . LAN_390 . " </a> " ; //FIXME LAN
$text = ' < div class = " btn-group " >
'.$replyUrl.'
< button class = " btn btn-primary dropdown-toggle " data - toggle = " dropdown " >
< span class = " caret " ></ span >
</ button >
2013-04-18 12:43:22 -07:00
< ul class = " dropdown-menu pull-right " >
2013-03-12 04:22:09 -07:00
' ;
foreach ( $options as $key => $val )
{
$text .= '<li>' . $val . '</li>' ;
}
$jumpList = $forum -> forumGetAllowed ();
$text .= " <li class='divider'></li> " ;
foreach ( $jumpList as $key => $val )
{
$text .= '<li><a href ="' . $key . '">Go to ' . $val . '</a></li>' ;
}
$text .= '
</ ul >
</ div > ' ;
return $text ;
}
2012-12-08 20:22:05 +01:00
$tVars -> POLL = vartrue ( $pollstr );
2009-09-08 02:00:48 +00:00
2010-02-01 03:41:59 +00:00
$tVars -> FORUMJUMP = forumjump ();
2006-12-02 04:36:16 +00:00
2011-06-28 12:14:45 +00:00
$tVars -> MESSAGE = $thread -> message ;
2013-03-12 04:22:09 -07:00
2010-02-01 03:41:59 +00:00
$forstr = $tp -> simpleParse ( $FORUMSTART , $tVars );
2006-12-02 04:36:16 +00:00
2009-09-08 02:00:48 +00:00
unset ( $forrep );
if ( ! $FORUMREPLYSTYLE ) $FORUMREPLYSTYLE = $FORUMTHREADSTYLE ;
$alt = false ;
2008-12-01 21:11:01 +00:00
2009-09-08 02:00:48 +00:00
$i = $thread -> page ;
foreach ( $postList as $postInfo )
{
if ( $postInfo [ 'post_options' ])
{
$postInfo [ 'post_options' ] = unserialize ( $postInfo [ 'post_options' ]);
}
$loop_uid = ( int ) $postInfo [ 'post_user' ];
2011-06-27 09:23:34 +00:00
$tnum = $i ;
2009-09-08 02:00:48 +00:00
$i ++ ;
//TODO: Look into fixing this, to limit to a single query per pageload
2011-06-27 09:23:34 +00:00
$threadId = $thread -> threadInfo [ 'thread_id' ];
2009-09-08 02:00:48 +00:00
$e_hide_query = " SELECT post_id FROM `#forum_post` WHERE (`post_thread` = { $threadId } AND post_user= " . USERID . ' LIMIT 1' ;
$e_hide_hidden = FORLAN_HIDDEN ;
$e_hide_allowed = USER ;
2013-03-14 16:25:24 -07:00
2011-06-27 09:23:34 +00:00
if ( $tnum > 1 )
2009-09-08 02:00:48 +00:00
{
$postInfo [ 'thread_start' ] = false ;
$alt = ! $alt ;
if ( $postInfo [ 'post_status' ])
{
$_style = ( isset ( $FORUMDELETEDSTYLE_ALT ) && $alt ? $FORUMDELETEDSTYLE_ALT : $FORUMDELETEDSTYLE );
}
else
{
$_style = ( isset ( $FORUMREPLYSTYLE_ALT ) && $alt ? $FORUMREPLYSTYLE_ALT : $FORUMREPLYSTYLE );
}
2012-11-02 01:50:28 +00:00
2010-04-26 15:07:30 +00:00
e107 :: getScBatch ( 'view' , 'forum' ) -> setScVar ( 'postInfo' , $postInfo );
2013-03-26 12:33:03 +01:00
$forrep .= $tp -> parseTemplate ( $_style , true , $forum_shortcodes ) . " \n " ;
2009-09-08 02:00:48 +00:00
}
else
{
$postInfo [ 'thread_start' ] = true ;
2010-04-26 15:07:30 +00:00
e107 :: getScBatch ( 'view' , 'forum' ) -> setScVar ( 'postInfo' , $postInfo );
2013-03-26 12:33:03 +01:00
$forthr = $tp -> parseTemplate ( $FORUMTHREADSTYLE , true , vartrue ( $forum_shortcodes )) . " \n " ;
2009-09-08 02:00:48 +00:00
}
}
unset ( $loop_uid );
if ( $forum -> checkPerm ( $thread -> threadInfo [ 'thread_forum_id' ], 'post' ) && $thread -> threadInfo [ 'thread_active' ])
2006-12-02 04:36:16 +00:00
{
2013-03-13 02:39:00 -07:00
//XXX Show only on the last page??
2012-12-08 20:22:05 +01:00
if ( ! vartrue ( $forum_quickreply ))
2006-12-02 04:36:16 +00:00
{
2013-04-19 01:41:38 -07:00
$ajaxInsert = ( $thread -> pages == $thread -> page || $thread -> pages == 0 ) ? 1 : 0 ;
// echo "AJAX-INSERT=".$ajaxInsert ."(".$thread->pages." vs ".$thread->page.")";
2013-03-14 04:05:33 -07:00
2010-02-01 03:41:59 +00:00
$tVars -> QUICKREPLY = "
2011-11-28 14:19:19 +00:00
< form action = '" . $e107->url->create(' forum / thread / reply ', array(' id ' => $thread->threadId)) . "' method = 'post' >
2013-03-13 02:57:31 -07:00
< textarea cols = '80' placeholder = \ " Post a quick reply \" rows='4' id='forum-quickreply-text' class='tbox input-xxlarge' name='post' onselect='storeCaret(this);' onclick='storeCaret(this);' onkeyup='storeCaret(this);'></textarea>
< div class = 'center' >
2013-03-14 04:05:33 -07:00
< input type = 'submit' data - forum - insert = '".$ajaxInsert."' data - forum - post = '".$thread->threadInfo[' thread_forum_id ']."' data - forum - thread = '".$threadId."' data - forum - action = 'quickreply' name = 'reply' value = '" . LAN_395 . "' class = 'btn btn-success button' />
2008-12-04 21:36:09 +00:00
< input type = 'hidden' name = 'thread_id' value = '$thread_parent' />
2013-03-13 02:57:31 -07:00
</ div >
2008-12-04 21:36:09 +00:00
</ form > " ;
2013-03-13 02:57:31 -07:00
// Preview should be reserved for the full 'Post reply' page. <input type='submit' name='fpreview' value='" . LAN_394 . "' class='btn button' />
2006-12-02 04:36:16 +00:00
}
else
{
2010-02-01 03:41:59 +00:00
$tVars -> QUICKREPLY = $forum_quickreply ;
2006-12-02 04:36:16 +00:00
}
}
2013-03-14 04:05:33 -07:00
2010-02-01 03:41:59 +00:00
$forend = $tp -> simpleParse ( $FORUMEND , $tVars );
2012-12-08 20:22:05 +01:00
$forumstring = $forstr . $forthr . vartrue ( $forrep ) . $forend ;
2006-12-02 04:36:16 +00:00
2008-12-02 21:34:18 +00:00
//If last post came after USERLV and not yet marked as read, mark the thread id as read
2008-12-15 00:29:20 +00:00
$threadsViewed = explode ( ',' , $currentUser [ 'user_plugin_forum_viewed' ]);
2009-09-08 02:00:48 +00:00
if ( $thread -> threadInfo [ 'thread_lastpost' ] > USERLV && ! in_array ( $thread -> threadId , $threadsViewed ))
2008-12-02 21:34:18 +00:00
{
2009-09-08 02:00:48 +00:00
$tst = $forum -> threadMarkAsRead ( $thread -> threadId );
2006-12-02 04:36:16 +00:00
}
2013-03-14 04:05:33 -07:00
$mes = e107 :: getMessage ();
2008-12-17 04:22:37 +00:00
require_once ( HEADERF );
2013-03-14 04:05:33 -07:00
2010-03-10 01:23:57 +00:00
if ( $forum -> prefs -> get ( 'enclose' ))
2008-12-01 21:11:01 +00:00
{
2013-03-14 04:05:33 -07:00
$ns -> tablerender ( LAN_01 , $forumstring , $mes -> render () . array ( 'forum_viewtopic' , 'main' ));
2008-12-01 21:11:01 +00:00
}
else
{
2013-03-14 04:05:33 -07:00
echo $mes -> render () . $forumstring ;
2006-12-02 04:36:16 +00:00
}
// end -------------------------------------------------------------------------------------------------------------------------------------------------------------------
echo " <script type= \" text/javascript \" >
function confirm_ ( mode , forum_id , thread_id , thread ) {
2008-12-11 16:02:05 +00:00
if ( mode == 'Thread' ) {
2008-12-04 21:36:09 +00:00
return confirm ( \ " " . $tp -> toJS ( LAN_409 ) . " \" );
2006-12-02 04:36:16 +00:00
} else {
2008-12-04 21:36:09 +00:00
return confirm ( \ " " . $tp -> toJS ( LAN_410 ) . " [ " . $tp -> toJS ( LAN_411 ) . " \" + thread + \" ] \" );
2006-12-02 04:36:16 +00:00
}
}
</ script > " ;
2008-12-04 21:36:09 +00:00
require_once ( FOOTERF );
2006-12-02 04:36:16 +00:00
2009-09-08 02:00:48 +00:00
function showmodoptions ()
{
global $thread , $postInfo ;
$e107 = e107 :: getInstance ();
$forum_id = $thread -> threadInfo [ 'forum_id' ];
if ( $postInfo [ 'thread_start' ])
{
$type = 'Thread' ;
2011-11-28 14:19:19 +00:00
// XXX _URL_ thread name?
$ret = " <form method='post' action=' " . $e107 -> url -> create ( 'forum/thread/view' , array ( 'id' => $postInfo [ 'post_thread' ])) . " ' id='frmMod_ { $postInfo [ 'post_forum' ] } _ { $postInfo [ 'post_thread' ] } '> " ;
2009-09-08 02:00:48 +00:00
$delId = $postInfo [ 'post_thread' ];
}
else
{
$type = 'Post' ;
2011-04-25 11:29:21 +00:00
$ret = " <form method='post' action=' " . e_SELF . '?' . e_QUERY . " ' id='frmMod_ { $postInfo [ 'post_thread' ] } _ { $postInfo [ 'post_id' ] } '> " ;
2009-09-08 02:00:48 +00:00
$delId = $postInfo [ 'post_id' ];
}
$ret .= "
< div >
2011-11-28 14:19:19 +00:00
< a href = '" . $e107->url->create(' forum / thread / edit ', array(' id ' => $postInfo[' post_id ']))."' > " . IMAGE_admin_edit . " </ a >
2009-09-08 02:00:48 +00:00
< input type = 'image' " . IMAGE_admin_delete . " name = 'delete{$type}_{$delId}' value = 'thread_action' onclick = \ " return confirm_(' { $type } ', { $postInfo [ 'post_forum' ] } , { $postInfo [ 'post_thread' ] } , ' { $postInfo [ 'user_name' ] } ') \" />
< input type = 'hidden' name = 'mod' value = '1' />
" ;
if ( $type == 'Thread' )
{
2011-11-28 14:19:19 +00:00
$ret .= " <a href=' " . $e107 -> url -> create ( 'forum/thread/move' , array ( 'id' => $postInfo [ 'post_id' ])) . " '> " . IMAGE_admin_move2 . " </a> " ;
2009-09-08 02:00:48 +00:00
}
else
{
2011-11-28 14:19:19 +00:00
$ret .= " <a href=' " . $e107 -> url -> create ( 'forum/thread/split' , array ( 'id' => $postInfo [ 'post_id' ])) . " '> " . IMAGE_admin_split . '</a>' ;
2009-09-08 02:00:48 +00:00
}
$ret .= "
</ div >
</ form > " ;
return $ret ;
}
2006-12-02 04:36:16 +00:00
function forumjump ()
{
global $forum ;
2008-12-18 14:08:33 +00:00
$jumpList = $forum -> forumGetAllowed ();
2008-12-04 21:36:09 +00:00
$text = " <form method='post' action=' " . e_SELF . " '><p> " . LAN_65 . " : <select name='forumjump' class='tbox'> " ;
foreach ( $jumpList as $key => $val )
2006-12-02 04:36:16 +00:00
{
2008-12-04 21:36:09 +00:00
$text .= " \n <option value=' " . $key . " '> " . $val . " </option> " ;
2006-12-02 04:36:16 +00:00
}
2013-03-10 19:44:54 -07:00
$text .= " </select> <input class='btn button' type='submit' name='fjsubmit' value=' " . LAN_03 . " ' /></p></form> " ;
2006-12-02 04:36:16 +00:00
return $text ;
}
function rpg ( $user_join , $user_forums )
{
global $FORUMTHREADSTYLE ;
2008-12-18 14:08:33 +00:00
if ( strpos ( $FORUMTHREADSTYLE , '{RPG}' ) === false )
2006-12-02 04:36:16 +00:00
{
return '' ;
}
// rpg mod by Ikari ( kilokan1@yahoo.it | http://artemanga.altervista.org )
$lvl_post_mp_cost = 2.5 ;
$lvl_mp_regen_per_day = 4 ;
$lvl_avg_ppd = 5 ;
$lvl_bonus_redux = 5 ;
2008-12-04 21:36:09 +00:00
$lvl_user_days = max ( 1 , round (( time () - $user_join ) / 86400 ));
2006-12-02 04:36:16 +00:00
$lvl_ppd = $user_forums / $lvl_user_days ;
2008-12-04 21:36:09 +00:00
if ( $user_forums < 1 )
{
2006-12-02 04:36:16 +00:00
$lvl_level = 0 ;
}
2008-12-04 21:36:09 +00:00
else
{
$lvl_level = floor ( pow ( log10 ( $user_forums ), 3 )) + 1 ;
}
if ( $lvl_level < 1 )
{
2006-12-02 04:36:16 +00:00
$lvl_hp = " 0 / 0 " ;
$lvl_hp_percent = 0 ;
2008-12-04 21:36:09 +00:00
}
else
{
$lvl_max_hp = floor (( pow ( $lvl_level , ( 1 / 4 ))) * ( pow ( 10 , pow ( $lvl_level + 2 , ( 1 / 3 )))) / ( 1.5 ));
2006-12-02 04:36:16 +00:00
2008-12-04 21:36:09 +00:00
if ( $lvl_ppd >= $lvl_avg_ppd )
{
$lvl_hp_percent = floor (( . 5 + (( $lvl_ppd - $lvl_avg_ppd ) / ( $lvl_bonus_redux * 2 ))) * 100 );
}
else
{
$lvl_hp_percent = floor ( $lvl_ppd / ( $lvl_avg_ppd / 50 ));
2006-12-02 04:36:16 +00:00
}
2008-12-04 21:36:09 +00:00
if ( $lvl_hp_percent > 100 )
{
$lvl_max_hp += floor (( $lvl_hp_percent - 100 ) * pi ());
2006-12-02 04:36:16 +00:00
$lvl_hp_percent = 100 ;
2008-12-04 21:36:09 +00:00
}
else
{
2006-12-02 04:36:16 +00:00
$lvl_hp_percent = max ( 0 , $lvl_hp_percent );
}
2008-12-04 21:36:09 +00:00
$lvl_cur_hp = floor ( $lvl_max_hp * ( $lvl_hp_percent / 100 ));
2006-12-02 04:36:16 +00:00
$lvl_cur_hp = max ( 0 , $lvl_cur_hp );
$lvl_cur_hp = min ( $lvl_max_hp , $lvl_cur_hp );
$lvl_hp = $lvl_cur_hp . '/' . $lvl_max_hp ;
}
2008-12-04 21:36:09 +00:00
if ( $lvl_level < 1 )
{
2006-12-02 04:36:16 +00:00
$lvl_mp = '0 / 0' ;
$lvl_mp_percent = 0 ;
2008-12-04 21:36:09 +00:00
}
else
{
$lvl_max_mp = floor (( pow ( $lvl_level , ( 1 / 4 ))) * ( pow ( 10 , pow ( $lvl_level + 2 , ( 1 / 3 )))) / ( pi ()));
2006-12-02 04:36:16 +00:00
$lvl_mp_cost = $user_forums * $lvl_post_mp_cost ;
$lvl_mp_regen = max ( 1 , $lvl_user_days * $lvl_mp_regen_per_day );
$lvl_cur_mp = floor ( $lvl_max_mp - $lvl_mp_cost + $lvl_mp_regen );
$lvl_cur_mp = max ( 0 , $lvl_cur_mp );
$lvl_cur_mp = min ( $lvl_max_mp , $lvl_cur_mp );
$lvl_mp = $lvl_cur_mp . '/' . $lvl_max_mp ;
2008-12-04 21:36:09 +00:00
$lvl_mp_percent = floor ( $lvl_cur_mp / $lvl_max_mp * 100 );
2006-12-02 04:36:16 +00:00
}
2008-12-04 21:36:09 +00:00
if ( $lvl_level < 1 )
{
2006-12-02 04:36:16 +00:00
$lvl_exp = " 0 / 0 " ;
$lvl_exp_percent = 100 ;
2008-12-04 21:36:09 +00:00
}
else
{
$lvl_posts_for_next = floor ( pow ( 10 , pow ( $lvl_level , ( 1 / 3 ))));
if ( $lvl_level == 1 )
{
$lvl_posts_for_this = max ( 1 , floor ( pow ( 10 , (( $lvl_level - 1 )))));
}
else
{
$lvl_posts_for_this = max ( 1 , floor ( pow ( 10 , pow (( $lvl_level - 1 ), ( 1 / 3 )))));
2006-12-02 04:36:16 +00:00
}
$lvl_exp = ( $user_forums - $lvl_posts_for_this ) . " / " . ( $lvl_posts_for_next - $lvl_posts_for_this );
2008-12-04 21:36:09 +00:00
$lvl_exp_percent = floor ((( $user_forums - $lvl_posts_for_this ) / max ( 1 , ( $lvl_posts_for_next - $lvl_posts_for_this ))) * 100 );
2006-12-02 04:36:16 +00:00
}
2008-12-04 21:36:09 +00:00
$bar_image = THEME . " images/bar.jpg " ;
if ( ! is_readable ( $bar_image ))
2006-12-02 04:36:16 +00:00
{
2008-12-04 21:36:09 +00:00
$bar_image = e_PLUGIN . " forum/images/ " . IMODE . " /bar.jpg " ;
2006-12-02 04:36:16 +00:00
}
$rpg_info .= " <div style='padding:2px; white-space:nowrap'> " ;
2008-12-04 21:36:09 +00:00
$rpg_info .= " <b>Level = " . $lvl_level . " </b><br /> " ;
$rpg_info .= " HP = " . $lvl_hp . " <br /><img src=' { $bar_image } ' alt='' style='border:#345487 1px solid; height:10px; width: " . $lvl_hp_percent . " %'><br /> " ;
$rpg_info .= " EXP = " . $lvl_exp . " <br /><img src=' { $bar_image } ' alt='' style='border:#345487 1px solid; height:10px; width: " . $lvl_exp_percent . " %'><br /> " ;
$rpg_info .= " MP = " . $lvl_mp . " <br /><img src=' { $bar_image } ' alt='' style='border:#345487 1px solid; height:10px; width: " . $lvl_mp_percent . " %'><br /> " ;
2006-12-02 04:36:16 +00:00
$rpg_info .= " </div> " ;
return $rpg_info ;
}
2009-09-08 02:00:48 +00:00
class e107ForumThread
{
2011-04-26 11:27:36 +00:00
public $message ;
public $threadId ;
public $forumId ;
public $perPage ;
public $noInc ;
public $pages ;
2009-09-08 02:00:48 +00:00
function init ()
{
2010-03-10 01:23:57 +00:00
global $forum ;
2009-09-08 02:00:48 +00:00
$e107 = e107 :: getInstance ();
$this -> threadId = ( int ) varset ( $_GET [ 'id' ]);
2010-03-10 01:23:57 +00:00
$this -> perPage = ( varset ( $_GET [ 'perpage' ]) ? ( int ) $_GET [ 'perpage' ] : $forum -> prefs -> get ( 'postspage' ));
2011-04-25 11:29:21 +00:00
$this -> page = ( varset ( $_GET [ 'p' ]) ? ( int ) $_GET [ 'p' ] : 1 );
2009-09-08 02:00:48 +00:00
2013-04-19 01:41:38 -07:00
if ( ! $this -> threadId && e_QUERY ) //BC Links fix.
{
list ( $id , $page ) = explode ( " . " , e_QUERY );
$this -> threadId = intval ( $id );
$this -> page = intval ( $page );
}
2009-09-08 02:00:48 +00:00
//If threadId doesn't exist, or not given, redirect to main forum page
if ( ! $this -> threadId || ! $this -> threadInfo = $forum -> threadGet ( $this -> threadId ))
{
2011-11-28 14:19:19 +00:00
header ( 'Location:' . $e107 -> url -> create ( 'forum/forum/main' , array (), 'encode=0&full=1' ));
2009-09-08 02:00:48 +00:00
exit ;
}
//If not permitted to view forum, redirect to main forum page
if ( ! $forum -> checkPerm ( $this -> threadInfo [ 'thread_forum_id' ], 'view' ))
{
2011-11-28 14:19:19 +00:00
header ( 'Location:' . $e107 -> url -> create ( 'forum/forum/main' , array (), 'encode=0&full=1' ));
2009-09-08 02:00:48 +00:00
exit ;
}
2011-04-25 16:52:20 +00:00
$this -> pages = ceil (( $this -> threadInfo [ 'thread_total_replies' ]) / $this -> perPage );
2009-09-08 02:00:48 +00:00
$this -> noInc = false ;
}
function toggle_track ()
{
global $forum , $thread ;
$e107 = e107 :: getInstance ();
if ( ! USER || ! isset ( $_GET [ 'id' ])) { return ; }
if ( $thread -> threadInfo [ 'track_userid' ])
{
$forum -> track ( 'del' , USERID , $_GET [ 'id' ]);
$img = IMAGE_untrack ;
}
else
{
$forum -> track ( 'add' , USERID , $_GET [ 'id' ]);
$img = IMAGE_track ;
}
if ( e_AJAX_REQUEST )
{
2011-11-28 14:19:19 +00:00
$url = $e107 -> url -> create ( 'forum/thread/view' , array ( 'name' => $this -> threadInfo [ 'thread_name' ], 'id' => $thread -> threadId ));
2009-09-08 02:00:48 +00:00
echo " <a href=' { $url } ' id='forum-track-trigger'> { $img } </a> " ;
exit ();
}
}
function processFunction ()
{
2010-03-10 01:23:57 +00:00
global $forum , $thread ;
2009-09-08 02:00:48 +00:00
$e107 = e107 :: getInstance ();
2013-03-25 18:48:48 +01:00
$ns = e107 :: getRender ();
$sql = e107 :: getDb ();
2013-03-26 12:33:03 +01:00
$tp = e107 :: getParser ();
2009-09-08 02:00:48 +00:00
if ( ! isset ( $_GET [ 'f' ]))
{
return ;
}
$function = trim ( $_GET [ 'f' ]);
switch ( $function )
{
case 'post' :
$postId = varset ( $_GET [ 'id' ]);
$postInfo = $forum -> postGet ( $postId , 'post' );
$postNum = $forum -> postGetPostNum ( $postInfo [ 'post_thread' ], $postId );
2011-04-25 16:52:20 +00:00
$postPage = ceil ( $postNum / $forum -> prefs -> get ( 'postspage' ));
2011-11-28 14:19:19 +00:00
$url = $e107 -> url -> create ( 'forum/thread/view' , array ( 'id' => $postInfo [ 'post_thread' ], 'name' => $postInfo [ 'thread_name' ], 'page' => $postPage ), 'full=1&encode=0' );
2009-09-08 02:00:48 +00:00
header ( 'location: ' . $url );
exit ;
break ;
case 'last' :
2011-06-28 10:33:12 +00:00
$pages = ceil (( $thread -> threadInfo [ 'thread_total_replies' ]) / $thread -> perPage );
$thread -> page = $_GET [ 'p' ] = $pages ;
2009-09-08 02:00:48 +00:00
break ;
2011-04-25 16:52:20 +00:00
case 'next' : // FIXME - nextprev thread detection not working
2009-09-08 02:00:48 +00:00
$next = $forum -> threadGetNextPrev ( 'next' , $this -> threadId , $this -> threadInfo [ 'forum_id' ], $this -> threadInfo [ 'thread_lastpost' ]);
if ( $next )
{
2011-11-28 14:19:19 +00:00
$url = $e107 -> url -> create ( 'forum/thread/view' , array ( 'id' => $next ), array ( 'encode' => false , 'full' => 1 )); // no thread name info at this time
2009-09-08 02:00:48 +00:00
header ( " location: { $url } " );
exit ;
}
$this -> message = LAN_405 ;
break ;
2011-04-25 16:52:20 +00:00
case 'prev' : // FIXME - nextprev thread detection not working
2009-09-08 02:00:48 +00:00
$prev = $forum -> threadGetNextPrev ( 'prev' , $this -> threadId , $this -> threadInfo [ 'forum_id' ], $this -> threadInfo [ 'thread_lastpost' ]);
if ( $prev )
{
2011-11-28 14:19:19 +00:00
$url = $e107 -> url -> create ( 'forum/thread/view' , array ( 'id' => $prev ), array ( 'encode' => false , 'full' => 1 )); // no thread name info at this time
2009-09-08 02:00:48 +00:00
header ( " location: { $url } " );
exit ;
}
$this -> message = LAN_404 ;
break ;
case 'report' :
2010-03-14 19:07:57 +00:00
$threadId = ( int ) $_GET [ 'id' ];
$postId = ( int ) $_GET [ 'post' ];
2009-09-08 02:00:48 +00:00
$postInfo = $forum -> postGet ( $postId , 'post' );
if ( isset ( $_POST [ 'report_thread' ]))
{
2013-03-26 12:33:03 +01:00
$report_add = $tp -> toDB ( $_POST [ 'report_add' ]);
2010-03-10 01:23:57 +00:00
if ( $forum -> prefs -> get ( 'reported_post_email' ))
2009-09-08 02:00:48 +00:00
{
require_once ( e_HANDLER . 'mail.php' );
2011-04-25 11:29:21 +00:00
$report = LAN_422 . SITENAME . " : " . ( substr ( SITEURL , - 1 ) == " / " ? SITEURL : SITEURL . " / " ) . $e107 -> getFolder ( 'plugins' ) . " forum/forum_viewtopic.php? " . $this -> threadId . " .post \n " . LAN_425 . USERNAME . " \n " . $report_add ;
2009-09-08 02:00:48 +00:00
$subject = LAN_421 . " " . SITENAME ;
sendemail ( SITEADMINEMAIL , $subject , $report );
}
2011-04-25 11:29:21 +00:00
// no reference of 'head' $threadInfo['head']['thread_name']
2013-03-25 18:48:48 +01:00
$sql -> insert ( 'generic' , " 0, 'reported_post', " . time () . " , ' " . USERID . " ', ' { $this -> threadInfo [ 'thread_name' ] } ', " . intval ( $this -> threadId ) . " , ' { $report_add } ' " );
2009-09-08 02:00:48 +00:00
define ( 'e_PAGETITLE' , LAN_01 . " / " . LAN_428 );
2011-11-28 14:19:19 +00:00
$url = $e107 -> url -> create ( 'forum/thread/post' , array ( 'id' => $postId , 'name' => $postInfo [ 'thread_name' ], 'thread' => $threadId )); // both post info and thread info contain thread name
2010-03-14 19:07:57 +00:00
$text = LAN_424 . " <br /><br /><a href=' { $url } '> " . LAN_429 . '</a>' ;
2013-03-25 18:48:48 +01:00
return $ns -> tablerender ( LAN_414 , $text , array ( 'forum_viewtopic' , 'report' ), true );
2009-09-08 02:00:48 +00:00
}
else
{
2013-03-25 18:48:48 +01:00
$thread_name = e107 :: getParser () -> toHTML ( $postInfo [ 'thread_name' ], true , 'no_hook, emotes_off' );
2009-09-08 02:00:48 +00:00
define ( 'e_PAGETITLE' , LAN_01 . ' / ' . LAN_426 . ' ' . $thread_name );
2011-11-28 14:19:19 +00:00
$url = $e107 -> url -> create ( 'forum/thread/post' , array ( 'id' => $postId , 'name' => $postInfo [ 'thread_name' ], 'thread' => $threadId ));
$actionUrl = $e107 -> url -> create ( 'forum/thread/report' , " id= { $threadId } &post= { $postId } " );
2009-09-08 02:00:48 +00:00
$text = " <form action=' " . $actionUrl . " ' method='post'>
< table style = 'width:100%' >
< tr >
< td style = 'width:50%' >
" . LAN_415 . ': ' . $thread_name . " < a href = '".$url."' >< span class = 'smalltext' > " . LAN_420 . " </ span >
</ a >
</ td >
< td style = 'text-align:center;width:50%' >
</ td >
</ tr >
< tr >
< td > " . LAN_417 . " < br /> " . LAN_418 . "
</ td >
2010-03-14 19:07:57 +00:00
</ tr >
< tr >
2009-09-08 02:00:48 +00:00
< td style = 'text-align:center;' >
< textarea cols = '40' rows = '10' class = 'tbox' name = 'report_add' ></ textarea >
</ td >
</ tr >
< tr >
< td colspan = '2' style = 'text-align:center;' >< br />
2013-03-10 19:44:54 -07:00
< input class = 'btn button' type = 'submit' name = 'report_thread' value = '" . LAN_419 . "' />
2009-09-08 02:00:48 +00:00
</ td >
</ tr >
</ table > " ;
2013-03-25 18:48:48 +01:00
return e107 :: getRender () -> tablerender ( LAN_414 , $text , array ( 'forum_viewtopic' , 'report2' ), true );
2009-09-08 02:00:48 +00:00
}
2010-03-14 19:07:57 +00:00
// require_once (FOOTERF);
2009-09-08 02:00:48 +00:00
exit ;
break ;
}
}
}
?>