diff --git a/e107_plugins/forum/forum.php b/e107_plugins/forum/forum.php
index d2280ceec..a6d2e4036 100644
--- a/e107_plugins/forum/forum.php
+++ b/e107_plugins/forum/forum.php
@@ -1,787 +1,842 @@
-isInstalled('forum'))
-{
- // FIXME GLOBAL - get rid of all e_BASE|e_HTTP|Whatever/index.php - just point to SITEURL
- e107::redirect();
- exit;
-}
-e107::lan('forum', "front", true);
-// include_lan(e_PLUGIN.'forum/languages/'.e_LANGUAGE.'/lan_forum.php'); // using English_front.php now
-
-if(!deftrue('BOOTSTRAP'))
-{
- $bcDefs = array(
- 'FORLAN_11' => 'LAN_FORUM_0039',
- 'FORLAN_12' => 'LAN_FORUM_0040',
- 'FORLAN_18' => 'LAN_FORUM_0041',
- );
-
- e107::getLanguage()->bcDefs($bcDefs);
-}
-
-
-require_once(e_PLUGIN.'forum/forum_class.php');
-$forum = new e107forum;
-
-if(e_AJAX_REQUEST)
-{
- if(varset($_POST['action']) == 'track')
- {
- $forum->ajaxTrack();
- }
-
-}
-
-/*
-if ($untrackId = varset($_REQUEST['untrack']))
-{
- $forum->track('del', USERID, $untrackId);
- header('location:'.$e107->url->create('forum/thread/track', array(), 'full=1&encode=0'));
- exit;
-}
-*/
-
-if(isset($_GET['f']))
-{
- if(isset($_GET['id']))
- {
- $id = (int)$_GET['id'];
- }
-
- switch($_GET['f'])
- {
- case 'mfar':
- $forum->forumMarkAsRead($id);
- header('location:'.e_SELF);
- exit;
- break;
-
- case 'rules':
- include_once(HEADERF);
-
- forum_rules('show');
- include_once(FOOTERF);
- exit;
- break;
-
- case 'track':
- include_once(HEADERF);
-
- forum_track();
- include_once(FOOTERF);
- exit;
- break;
- }
-}
-$fVars = new e_vars;
-$gen = new convert;
-
-$fVars->FORUMTITLE = e107::pref('forum','title', LAN_PLUGIN_FORUM_NAME);
-$fVars->THREADTITLE = LAN_FORUM_0002;
-$fVars->REPLYTITLE = LAN_FORUM_0003;
-$fVars->LASTPOSTITLE = LAN_FORUM_0004;
-$fVars->INFOTITLE = LAN_FORUM_0009;
-$fVars->LOGO = IMAGE_e;
-$fVars->NEWTHREADTITLE = LAN_FORUM_0075;
-$fVars->POSTEDTITLE = LAN_FORUM_0074;
-$fVars->NEWIMAGE = IMAGE_new_small;
-$fVars->TRACKTITLE = LAN_FORUM_0073;
-
-$rules_text = forum_rules('check');
-
-$fVars->USERINFO = "".LAN_FORUM_0010." | ".LAN_FORUM_0011."";
-if(USER)
-{
- $fVars->USERINFO .= " | ".LAN_FORUM_0012." | ".LAN_FORUM_0013." | ".LAN_FORUM_0014."";
- if($forum->prefs->get('attach') && (check_class($pref['upload_class']) || getperms('0')))
- {
- $fVars->USERINFO .= " | ".LAN_FORUM_0015."";
- }
-}
-if(!empty($rules_text))
-{
- $fVars->USERINFO .= " | ".LAN_FORUM_0016.'';
-}
-
-
-// v2.x --------------------
-$uInfo = array();
-$uInfo[0] = "".LAN_FORUM_6013.'';
-
-if(!empty($rules_text))
-{
- $uInfo[1] = "".LAN_FORUM_0016.'';
-}
-
-$trackPref = $forum->prefs->get('track');
-if(!empty($trackPref))
-{
- $uInfo[2] = "".LAN_FORUM_0030."";
-}
-$fVars->USERINFOX = implode(" | ",$uInfo);
-// -----------
-
-
-
-
-$total_topics = $sql->count("forum_thread", "(*)");
-$total_replies = $sql->count("forum_post", "(*)");
-$total_members = $sql->count("user");
-$newest_member = $sql->select("user", "*", "user_ban='0' ORDER BY user_join DESC LIMIT 0,1");
-list($nuser_id, $nuser_name) = $sql->fetch('num'); // FIXME $nuser_id & $user_name return empty even though print_a($newest_member); returns proper result.
-
-if(!defined('e_TRACKING_DISABLED'))
-{
- $member_users = $sql->select("online", "*", "online_location REGEXP('forum.php') AND online_user_id!='0' ");
- $guest_users = $sql->select("online", "*", "online_location REGEXP('forum.php') AND online_user_id='0' ");
- $users = $member_users+$guest_users;
- $fVars->USERLIST = LAN_FORUM_0036.": ";
- global $listuserson;
- $c = 0;
- if(is_array($listuserson))
- {
- foreach($listuserson as $uinfo => $pinfo)
- {
- list($oid, $oname) = explode(".", $uinfo, 2);
- $c ++;
- $fVars->USERLIST .= "$oname".($c == MEMBERS_ONLINE ? "." :", ");
- }
- }
- $fVars->USERLIST .= "
".LAN_FORUM_0037." ".LAN_FORUM_0038;
-}
-$fVars->STATLINK = "".LAN_FORUM_0017."\n";
-$fVars->ICONKEY = "
-
\n
-".IMAGE_new_small." |
-".LAN_FORUM_0039." |
-".IMAGE_nonew_small." |
-".LAN_FORUM_0040." |
-".IMAGE_closed_small." |
-".LAN_FORUM_0041." |
-
\n
\n";
-
-if(!$srchIcon = $tp->toGlyph('fa-search'))
-{
- $srchIcon = LAN_SEARCH;
-}
-
-$fVars->SEARCH = "
-\n";
-
-$fVars->PERMS = (USER == TRUE || ANON == TRUE ? LAN_FORUM_0043." - ".LAN_FORUM_0045." - ".LAN_FORUM_0047 : LAN_FORUM_0044." - ".LAN_FORUM_0046." - ".LAN_FORUM_0048);
-
-$fVars->INFO = "";
-if (USER == TRUE)
-{
- $total_new_threads = $sql->count('forum_thread', '(*)', "WHERE thread_datestamp>'".USERLV."' ");
- if (USERVIEWED != "")
- {
- $tmp = explode(".", USERVIEWED); // List of numbers, separated by single period
- $total_read_threads = count($tmp);
- }
- else
- {
- $total_read_threads = 0;
- }
-
- $fVars->INFO = LAN_FORUM_0018." ".USERNAME."
";
- $lastvisit_datestamp = $gen->convert_date(USERLV, 'long');
- $datestamp = $gen->convert_date(time(), "long");
- if (!$total_new_threads)
- {
- $fVars->INFO .= LAN_FORUM_0019." ";
- }
- elseif($total_new_threads == 1)
- {
- $fVars->INFO .= LAN_FORUM_0020;
- }
- else
- {
- $fVars->INFO .= LAN_FORUM_0021." ".$total_new_threads." ".LAN_FORUM_0022." ";
- }
- $fVars->INFO .= LAN_FORUM_0023;
- if ($total_new_threads == $total_read_threads && $total_new_threads != 0 && $total_read_threads >= $total_new_threads)
- {
- $fVars->INFO .= LAN_FORUM_0029;
- $allread = TRUE;
- }
- elseif($total_read_threads != 0)
- {
- $fVars->INFO .= " (".LAN_FORUM_0027." ".$total_read_threads." ".LAN_FORUM_0028.")";
- }
-
- $fVars->INFO .= "
- ".LAN_FORUM_0024." ".$lastvisit_datestamp."
- ".LAN_FORUM_0025." ".$datestamp;
-}
-else
-{
- $fVars->INFO .= '';
- if (ANON == TRUE)
- {
- $fVars->INFO .= LAN_FORUM_0049.'
'.LAN_FORUM_0050." ".LAN_FORUM_0051." ".LAN_FORUM_0052;
- }
- elseif(USER == FALSE)
- {
- $fVars->INFO .= LAN_FORUM_0049.'
'.LAN_FORUM_0053." ".LAN_FORUM_0054." ".LAN_FORUM_0055;
- }
-}
-
-if (USER && vartrue($allread) != TRUE && $total_new_threads && $total_new_threads >= $total_read_threads)
-{
- $fVars->INFO .= "
".LAN_FORUM_0057.''.(e_QUERY != 'new' ? ", ".LAN_FORUM_0058."" : '');
-}
-
-$trackPref = $forum->prefs->get('track');
-if (USER && vartrue($trackPref) && e_QUERY != 'track')
-{
- $fVars->INFO .= "
".LAN_FORUM_0030.'';
-}
-
-$fVars->FORUMINFO =
-str_replace("[x]", ($total_topics+$total_replies), LAN_FORUM_0031)." ($total_topics ".($total_topics == 1 ? LAN_FORUM_0032 : LAN_FORUM_0033).", $total_replies ".($total_replies == 1 ? LAN_FORUM_0034 : LAN_FORUM_0035).")
-".(!defined("e_TRACKING_DISABLED") ? "" : "
".$users." ".($users == 1 ? LAN_FORUM_0059 : LAN_FORUM_0060)." (".$member_users." ".($member_users == 1 ? LAN_FORUM_0061 : LAN_FORUM_0062).", ".$guest_users." ".($guest_users == 1 ? LAN_FORUM_0063 : LAN_FORUM_0064).")
".LAN_FORUM_0066." ".$total_members."
".LAN_FORUM_0065." ".$nuser_name.".\n"); // FIXME cannot find other references to e_TRACKING_DISABLED, use pref?
-
-// FIX - core template always override theme template
-// Include core template
-include(e_PLUGIN.'forum/templates/forum_template.php');
-
-// Override with theme template
-if (file_exists(THEME.'forum_template.php'))
-{
- include_once(THEME.'forum_template.php');
-}
-elseif(file_exists(THEME.'templates/forum/forum_template.php'))
-{
- require_once(THEME.'templates/forum/forum_template.php');
-}
-
-
-
-
-if(is_array($FORUM_TEMPLATE) && deftrue('BOOTSTRAP',false)) // new v2.x format.
-{
-
- if(varset($FORUM_TEMPLATE['main-start'])) // correction of previous v2.x setup.
- {
- $FORUM_TEMPLATE['main']['start'] = $FORUM_TEMPLATE['main-start'];
- $FORUM_TEMPLATE['main']['parent'] = $FORUM_TEMPLATE['main-parent'];
- $FORUM_TEMPLATE['main']['forum'] = $FORUM_TEMPLATE['main-forum'];
- $FORUM_TEMPLATE['main']['end'] = $FORUM_TEMPLATE['main-end'];
- }
-
- $FORUM_MAIN_START = $FORUM_TEMPLATE['main']['start'];
- $FORUM_MAIN_PARENT = $FORUM_TEMPLATE['main']['parent'];
- $FORUM_MAIN_FORUM = $FORUM_TEMPLATE['main']['forum'];
- $FORUM_MAIN_END = $FORUM_TEMPLATE['main']['end'];
-
- $FORUM_NEWPOSTS_START = $FORUM_TEMPLATE['main']['start']; // $FORUM_TEMPLATE['new-start'];
- $FORUM_NEWPOSTS_MAIN = $FORUM_TEMPLATE['main']['forum']; // $FORUM_TEMPLATE['new-main'];
- $FORUM_NEWPOSTS_END = $FORUM_TEMPLATE['main']['end']; // $FORUM_TEMPLATE['new-end'];
-
-
-}
-
-
-require_once(HEADERF);
-
-$forumList = $forum->forumGetForumList();
-$newflag_list = $forum->forumGetUnreadForums();
-
-if (!$forumList)
-{
- $ns->tablerender(LAN_PLUGIN_FORUM_NAME, "".LAN_FORUM_0067.'
', array('forum', '51'));
- require_once(FOOTERF);
- exit;
-}
-
-$forum_string = '';
-$pVars = new e_vars;
-$frm = e107::getForm();
-
-foreach ($forumList['parents'] as $parent)
-{
- $status = parse_parent($parent);
- $pVars->PARENTSTATUS = $status;
-
- $pVars->PARENTID = $parent['forum_id'];
-// $pVars->PARENTNAME = "".$parent['forum_name']."";
- $pVars->PARENTNAME = $parent['forum_name'];
- $forum_string .= $tp->simpleParse($FORUM_MAIN_PARENT, $pVars);
- if (!count($forumList['forums'][$parent['forum_id']]))
- {
- $text .= "";
- }
- else
- {
- //TODO: Rework the restricted string
- foreach($forumList['forums'][$parent['forum_id']] as $f)
- {
- if ($f['forum_class'] == e_UC_ADMIN && ADMIN)
- {
- $forum_string .= parse_forum($f, LAN_FORUM_0005);
- }
- elseif($f['forum_class'] == e_UC_MEMBER && USER)
- {
- $forum_string .= parse_forum($f, LAN_FORUM_0006);
- }
- elseif($f['forum_class'] == e_UC_READONLY)
- {
- $forum_string .= parse_forum($f, LAN_FORUM_0007);
- }
- elseif($f['forum_class'] && check_class($f['forum_class']))
- {
- $forum_string .= parse_forum($f, LAN_FORUM_0008);
- }
- elseif(!$f['forum_class'])
- {
- $forum_string .= parse_forum($f);
- }
- }
- if (isset($FORUM_MAIN_PARENT_END))
- {
- $forum_string .= $tp->simpleParse($FORUM_MAIN_PARENT_END, $pVars);
- }
- }
-}
-
-function parse_parent($parent)
-{
- if(!check_class($parent['forum_postclass']))
- {
- $status = '('.LAN_FORUM_0056.')';
- }
- return vartrue($status);
-}
-
-function parse_forum($f, $restricted_string = '')
-{
- global $FORUM_MAIN_FORUM, $gen, $forum, $newflag_list, $forumList;
- $fVars = new e_vars;
- $e107 = e107::getInstance();
- $tp = e107::getParser();
-
- if(USER && is_array($newflag_list) && in_array($f['forum_id'], $newflag_list))
- {
- $fVars->NEWFLAG = "".IMAGE_new.'';
- }
- elseif(empty($f['forum_replies']) && defined('IMAGE_noreplies'))
- {
- $fVars->NEWFLAG = IMAGE_noreplies;
- }
- else
- {
- $fVars->NEWFLAG = IMAGE_nonew;
- }
-
- if(substr($f['forum_name'], 0, 1) == '*')
- {
- $f['forum_name'] = substr($f['forum_name'], 1);
- }
- $f['forum_name'] = $tp->toHTML($f['forum_name'], true, 'no_hook');
- $f['forum_description'] = $tp->toHTML($f['forum_description'], TRUE, "BODY");
-
-
- //$url= $e107->url->create('forum/forum/view', $f);
- $url = e107::url('forum', 'forum', $f);
- $fVars->FORUMNAME = "{$f['forum_name']}";
- $fVars->FORUMDESCRIPTION = $f['forum_description'].($restricted_string ? "
$restricted_string" : "");
- $fVars->THREADS = $f['forum_threads'];
- $fVars->REPLIES = $f['forum_replies'];
- $fVars->FORUMSUBFORUMS = '';
-
-
-
-
-
- $badgeReplies = ($f['forum_replies']) ? "badge-info" : "";
- $badgeThreads = ($f['forum_threads']) ? "badge-info" : "";
-
- $fVars->THREADSX = "".$f['forum_threads']."";
- $fVars->REPLIESX = "".$f['forum_replies']."";
-
-
- $subId = $f['forum_id'];
- if(!empty($forumList['subs']) && is_array($forumList['subs'][$subId]))
- {
- list($lastpost_datestamp, $lastpost_thread) = explode('.', $f['forum_lastpost_info']);
- $ret = parse_subs($forumList, $f['forum_id'], $lastpost_datestamp);
- $fVars->FORUMSUBFORUMS = "
".LAN_FORUM_0069.": {$ret['text']}
";
- $fVars->THREADS += $ret['threads'];
- $fVars->REPLIES += $ret['replies'];
- if(isset($ret['lastpost_info']))
- {
- $f['forum_lastpost_info'] = $ret['lastpost_info'];
- $f['forum_lastpost_user'] = $ret['lastpost_user'];
- $f['forum_lastpost_user_anon'] = $ret['lastpost_user_anon'];
- $f['user_name'] = $ret['user_name'];
- }
- }
-
- if ($f['forum_lastpost_info'])
- {
- list($lastpost_datestamp, $lastpost_thread) = explode('.', $f['forum_lastpost_info']);
- if ($f['user_name'])
- {
-
- $lastpost_name = " $f['user_name'], 'id' => $f['forum_lastpost_user']))."'>{$f['user_name']}";
- }
- else
- {
- $lastpost_name = $tp->toHTML($f['forum_lastpost_user_anon']);
- }
-
- $lastpost = $forum->threadGetLastpost($lastpost_thread); //XXX TODO inefficient to have SQL query here.
-
- $fVars->LASTPOSTUSER = $lastpost_name;
- // {forum_sef}/{thread_id}-{thread_sef}
-
- $urlData = array('forum_sef'=>$f['forum_sef'], 'thread_id'=>$lastpost['post_thread'],'thread_sef'=>$lastpost['thread_sef']);
- $url = e107::url('forum', 'topic', $urlData)."?last=1#post-".$lastpost['post_id'];
- $fVars->LASTPOSTDATE .= "". $gen->computeLapse($lastpost_datestamp, time(), false, false, 'short')."";
- $lastpost_datestamp = $gen->convert_date($lastpost_datestamp, 'forum');
- $fVars->LASTPOST = $lastpost_datestamp.'
'.$lastpost_name." $lastpost_name, 'id' => $lastpost_thread))."'>".IMAGE_post2.'';
-
- }
- else
- {
- $fVars->LASTPOSTUSER = "";
- $fVars->LASTPOSTDATE = "-";
- $fVars->LASTPOST = '-';
- }
-
-
- return $tp->simpleParse($FORUM_MAIN_FORUM, $fVars);
-}
-
-
-
-function parse_subs($forumList, $id ='', $lastpost_datestamp)
-{
-
- $tp = e107::getParser();
- $ret = array();
-
- $subList = $forumList['subs'][$id];
-
- $ret['text'] = '';
- $ret['threads'] = 0;
- $ret['replies'] = 0;
-
- foreach($subList as $sub)
- {
- // print_a($sub);
-
- $ret['text'] .= ($ret['text'] ? ', ' : '');
-
- $urlData = $sub;
- $urlData['parent_sef'] = $forumList['all'][$sub['forum_sub']]['forum_sef']; // = array('parent_sef'=>
- $suburl = e107::url('forum','forum', $urlData);
-
- $ret['text'] .= "".$tp->toHTML($sub['forum_name']).'';
- $ret['threads'] += $sub['forum_threads'];
- $ret['replies'] += $sub['forum_replies'];
- $tmp = explode('.', $sub['forum_lastpost_info']);
-
- if($tmp[0] > $lastpost_datestamp)
- {
- $ret['lastpost_info'] = $sub['forum_lastpost_info'];
- $ret['lastpost_user'] = $sub['forum_lastpost_user'];
- $ret['lastpost_user_anon'] = $sub['forum_lastpost_user_anon'];
- $ret['user_name'] = $sub['user_name'];
- $lastpost_datestamp = $tmp[0];
- }
- }
-
-
- return $ret;
-}
-
-
-
-if (e_QUERY == 'track')
-{
-
-}
-
-
-
-if (e_QUERY == 'new')
-{
- $nVars = new e_vars;
- $newThreadList = $forum->threadGetNew(10);
- foreach($newThreadList as $thread)
- {
- $author_name = ($thread['user_name'] ? $thread['user_name'] : $thread['lastuser_anon']);
-
- $datestamp = $gen->convert_date($thread['thread_lastpost'], 'forum');
- if(!$thread['user_name'])
- {
- $nVars->STARTERTITLE = $author_name.'
'.$datestamp;
- }
- else
- {
- $nVars->STARTERTITLE = " $thread['thread_lastuser'], 'name' => $author_name))."'>{$author_name}
".$datestamp;
- }
- $nVars->NEWSPOSTNAME = "".$tp->toHTML($thread['thread_name'], TRUE, 'no_make_clickable, no_hook').'';
-
- $forum_newstring .= $tp->simpleParse($FORUM_NEWPOSTS_MAIN, $nVars);
- }
-
- if (empty($newThreadList))
- {
- $nVars->NEWSPOSTNAME = LAN_FORUM_0029;
- $forum_newstring = $tp->simpleParse($FORUM_NEWPOSTS_MAIN, $nVars);
-
- }
- $forum_new_start = $tp->simpleParse($FORUM_NEWPOSTS_START, $nVars);
- $forum_new_end = $tp->simpleParse($FORUM_NEWPOSTS_END, $nVars);
-
- if ($forum->prefs->get('enclose'))
- {
- $ns->tablerender($forum->prefs->get('title'), $forum_new_start.$forum_newstring.$forum_new_end, array('forum', 'main2'));
- }
- else
- {
- echo $forum_new_start.$forum_newstring.$forum_new_end;
- }
-}
-
-$frm = e107::getForm();
-
-$breadarray = array(
- array('text'=> $forum->prefs->get('title'), 'url' => e107::url('forum','index') )
-);
-
-$fVars->FORUM_BREADCRUMB = $frm->breadcrumb($breadarray);
-
-$forum_main_start = $tp->simpleParse($FORUM_MAIN_START, $fVars);
-$forum_main_end = $tp->simpleParse($FORUM_MAIN_END, $fVars);
-
-if ($forum->prefs->get('enclose'))
-{
- $ns->tablerender($forum->prefs->get('title'), $forum_main_start.$forum_string.$forum_main_end, 'forum');
-}
-else
-{
- echo $forum_main_start.$forum_string.$forum_main_end;
-}
-
-
-
-
-
-
-
-
-require_once(FOOTERF);
-
-function forum_rules($action = 'check')
-{
- if (ADMIN == true)
- {
- $type = 'forum_rules_admin';
- }
- elseif(USER == true)
- {
- $type = 'forum_rules_member';
- }
- else
- {
- $type = 'forum_rules_guest';
- }
- $result = e107::getDb()->select('generic', 'gen_chardata', "gen_type = '$type' AND gen_intdata = 1");
- if ($action == 'check') { return $result; }
-
- if ($result)
- {
- $row = e107::getDb()->fetch();
- $rules_text = e107::getParser()->toHTML($row['gen_chardata'], true);
- }
- else
- {
- $rules_text = LAN_FORUM_0072;
- }
-
- $text = '';
-
- if(deftrue('BOOTSTRAP'))
- {
- $breadarray = array(
- array('text'=> e107::pref('forum','title', LAN_PLUGIN_FORUM_NAME), 'url' => e107::url('forum','index') ),
- array('text'=>LAN_FORUM_0016, 'url'=>null)
- );
-
- $text = e107::getForm()->breadcrumb($breadarray);
- }
-
- $text .= "".$rules_text."
";
- $text .= "".e107::getForm()->pagination(e107::url('forum','index'), LAN_BACK)."
";
-
- e107::getRender()->tablerender(LAN_FORUM_0016, $text, array('forum', 'forum_rules'));
-}
-
-
-function forum_track()
-{
- global $forum;
-
- $trackPref = $forum->prefs->get('track');
- $trackEmailPref = $forum->prefs->get('trackemail',true);
-
-
- if(empty($trackPref))
- {
- echo "Disabled";
- return false;
- }
-
-
- $FORUM_TEMPLATE = null;
-
- include(e_PLUGIN.'forum/templates/forum_template.php');
-
- // Override with theme template
- if (file_exists(THEME.'forum_template.php'))
- {
- include(THEME.'forum_template.php');
- }
- elseif(file_exists(THEME.'templates/forum/forum_template.php'))
- {
- require(THEME.'templates/forum/forum_template.php');
- }
-
- $IMAGE_nonew_small = IMAGE_nonew_small;
- $IMAGE_new_small = IMAGE_new_small;
-
- if(is_array($FORUM_TEMPLATE) && deftrue('BOOTSTRAP',false)) // new v2.x format.
- {
- $FORUM_TRACK_START = $FORUM_TEMPLATE['track']['start']; // $FORUM_TEMPLATE['track-start'];
- $FORUM_TRACK_MAIN = $FORUM_TEMPLATE['track']['item']; // $FORUM_TEMPLATE['track-main'];
- $FORUM_TRACK_END = $FORUM_TEMPLATE['track']['end']; // $FORUM_TEMPLATE['track-end'];
-
- $IMAGE_nonew_small = IMAGE_nonew;
- $IMAGE_new_small = IMAGE_new;
-
- }
-
- $sql = e107::getDb();
- $tp = e107::getParser();
-
- $trackDiz = ($trackEmailPref) ? LAN_FORUM_3040 : LAN_FORUM_3041;
-
-
- if($trackedThreadList = $forum->getTrackedThreadList(USERID, 'list'))
- {
-
- $viewed = $forum->threadGetUserViewed();
-
- $qry = "SELECT t.*,th.*, f.*,u.user_name FROM `#forum_track` AS t
- LEFT JOIN `#forum_thread` AS th ON t.track_thread = th.thread_id
- LEFT JOIN `#forum` AS f ON th.thread_forum_id = f.forum_id
- LEFT JOIN `#user` AS u ON th.thread_lastuser = u.user_id
- WHERE t.track_userid = ".USERID." ORDER BY th.thread_lastpost DESC";
-
- $forum_trackstring = '';
- $data = array();
- if($sql->gen($qry))
- {
- while($row = $sql->fetch())
- {
- // e107::getDebug()->log($row);
- $row['thread_sef'] = eHelper::title2sef($row['thread_name'],'dashl');
-
- $data['NEWIMAGE'] = $IMAGE_nonew_small;
-
- if ($row['thread_datestamp'] > USERLV && !in_array($row['thread_id'], $viewed))
- {
- $data['NEWIMAGE'] = $IMAGE_new_small;
- }
-
- $data['LASTPOSTUSER'] = !empty($row['user_name']) ? " $row['user_name'], 'id' => $row['thread_lastuser']))."'>".$row['user_name']."" : LAN_ANONYMOUS;
- $data['LASTPOSTDATE'] = $tp->toDate($row['thread_lastpost'],'relative');
-
- $buttonId = "forum-track-button-".intval($row['thread_id']);
-
- $forumUrl = e107::url('forum','forum',$row);
- $threadUrl = e107::url('forum','topic',$row, array('query'=>array('last'=>1))); // ('forum/thread/view', $row); // configs will be able to map thread_* vars to the url
- $data['TRACKPOSTNAME'] = "". $row['forum_name']." / ".$tp->toHTML($row['thread_name'], false, 'TITLE').'';
- // $data['UNTRACK'] = "".LAN_FORUM_0070."";
-
-
- $data['UNTRACK'] = "".IMAGE_track."";
-
- $forum_trackstring .= $tp->simpleParse($FORUM_TRACK_MAIN, $data);
- }
- }
- // print_a($FORUM_TRACK_START);
-
-
- if(deftrue('BOOTSTRAP'))
- {
- $breadarray = array(
- array('text'=> e107::pref('forum','title', LAN_PLUGIN_FORUM_NAME), 'url' => e107::url('forum','index') ),
- array('text'=>LAN_FORUM_0030, 'url'=>null)
- );
-
- $data['FORUM_BREADCRUMB'] = e107::getForm()->breadcrumb($breadarray);
- }
-
-
- $forum_track_start = $tp->simpleParse($FORUM_TRACK_START, $data);
- $forum_track_end = $tp->simpleParse($FORUM_TRACK_END, $data);
-
- // if ($forum->prefs->get('enclose'))
- {
- // $ns->tablerender($forum->prefs->get('title'), $forum_track_start.$forum_trackstring.$forum_track_end, array('forum', 'main1'));
- }
- // else
- {
- $tracktext = $forum_track_start.$forum_trackstring.$forum_track_end;
- }
- }
-
-
- $text ='';
-
-
-
- $text .= $tracktext;
- $text .= "".e107::getForm()->pagination(e107::url('forum','index'), LAN_BACK)."
";
-
- e107::getRender()->tablerender(LAN_FORUM_0030, $text, array('forum', 'forum_track'));
-
-
-}
-
-
-?>
+isInstalled('forum'))
+{
+ // FIXME GLOBAL - get rid of all e_BASE|e_HTTP|Whatever/index.php - just point to SITEURL
+ e107::redirect();
+ exit;
+}
+e107::lan('forum', "front", true);
+// include_lan(e_PLUGIN.'forum/languages/'.e_LANGUAGE.'/lan_forum.php'); // using English_front.php now
+
+if(!deftrue('BOOTSTRAP'))
+{
+ $bcDefs = array(
+ 'FORLAN_11' => 'LAN_FORUM_0039',
+ 'FORLAN_12' => 'LAN_FORUM_0040',
+ 'FORLAN_18' => 'LAN_FORUM_0041',
+ );
+
+ e107::getLanguage()->bcDefs($bcDefs);
+}
+
+
+require_once(e_PLUGIN.'forum/forum_class.php');
+$forum = new e107forum;
+
+if(e_AJAX_REQUEST)
+{
+ if(varset($_POST['action']) == 'track')
+ {
+ $forum->ajaxTrack();
+ }
+
+}
+
+/*
+if ($untrackId = varset($_REQUEST['untrack']))
+{
+ $forum->track('del', USERID, $untrackId);
+ header('location:'.$e107->url->create('forum/thread/track', array(), 'full=1&encode=0'));
+ exit;
+}
+*/
+
+if(isset($_GET['f']))
+{
+ if(isset($_GET['id']))
+ {
+ $id = (int)$_GET['id'];
+ }
+
+ switch($_GET['f'])
+ {
+ case 'mfar':
+ $forum->forumMarkAsRead($id);
+ header('location:'.e_SELF);
+ exit;
+ break;
+
+ case 'rules':
+ include_once(HEADERF);
+
+ forum_rules('show');
+ include_once(FOOTERF);
+ exit;
+ break;
+
+ case 'track':
+ include_once(HEADERF);
+
+ forum_track();
+ include_once(FOOTERF);
+ exit;
+ break;
+ }
+}
+
+//echo "
";
+ $sc = e107::getScBatch('forum', true);
+//echo "
";
+//var_dump ($sc);
+// $sc->forum = $forum;
+//var_dump ($sc);
+//echo $tp->parseTemplate("====>{FORUMTITLE}<====", false, $sc);
+//echo "
";
+//var_dump (is_object($sc));
+//var_dump (is_array($sc));
+
+//--$fVars = new e_vars;
+$gen = new convert;
+
+/*--
+// Gonne directly to shortcode file
+$fVars->FORUMTITLE = e107::pref('forum','title', LAN_PLUGIN_FORUM_NAME);
+// Gonne directly to template file
+$fVars->THREADTITLE = LAN_FORUM_0002;
+// Gonne directly to template file
+$fVars->REPLYTITLE = LAN_FORUM_0003;
+// Gonne directly to template file
+$fVars->LASTPOSTITLE = LAN_FORUM_0004;
+// Gonne directly to template file
+$fVars->INFOTITLE = LAN_FORUM_0009;
+// Gonne directly to shortcode file
+$fVars->LOGO = IMAGE_e;
+// Gonne directly to template file
+$fVars->NEWTHREADTITLE = LAN_FORUM_0075;
+// Gonne directly to template file
+$fVars->POSTEDTITLE = LAN_FORUM_0074;
+// Gonne directly to shortcode file
+$fVars->NEWIMAGE = IMAGE_new_small;
+// Gonne directly to template file
+$fVars->TRACKTITLE = LAN_FORUM_0073;
+--*/
+/*--
+// Gonne directly to shortcode file
+$rules_text = forum_rules('check');
+
+$fVars->USERINFO = "".LAN_FORUM_0010." | ".LAN_FORUM_0011."";
+if(USER)
+{
+ $fVars->USERINFO .= " | ".LAN_FORUM_0012." | ".LAN_FORUM_0013." | ".LAN_FORUM_0014."";
+ if($forum->prefs->get('attach') && (check_class($pref['upload_class']) || getperms('0')))
+ {
+ $fVars->USERINFO .= " | ".LAN_FORUM_0015."";
+ }
+}
+if(!empty($rules_text))
+{
+ $fVars->USERINFO .= " | ".LAN_FORUM_0016.'';
+}
+
+
+// v2.x --------------------
+$uInfo = array();
+$uInfo[0] = "".LAN_FORUM_6013.'';
+
+if(!empty($rules_text))
+{
+ $uInfo[1] = "".LAN_FORUM_0016.'';
+}
+
+$trackPref = $forum->prefs->get('track');
+if(!empty($trackPref))
+{
+ $uInfo[2] = "".LAN_FORUM_0030."";
+}
+$fVars->USERINFOX = implode(" | ",$uInfo);
+// -----------
+--*/
+
+
+/*--
+// Gonne to foruminfo shortcode
+$total_topics = $sql->count("forum_thread", "(*)");
+$total_replies = $sql->count("forum_post", "(*)");
+$total_members = $sql->count("user");
+$newest_member = $sql->select("user", "*", "user_ban='0' ORDER BY user_join DESC LIMIT 0,1");
+list($nuser_id, $nuser_name) = $sql->fetch('num'); // FIXME $nuser_id & $user_name return empty even though print_a($newest_member); returns proper result.
+
+if(!defined('e_TRACKING_DISABLED'))
+{
+ $member_users = $sql->select("online", "*", "online_location REGEXP('forum.php') AND online_user_id!='0' ");
+ $guest_users = $sql->select("online", "*", "online_location REGEXP('forum.php') AND online_user_id='0' ");
+ $users = $member_users+$guest_users;
+// Gonne to shortcode file
+/*--
+ $fVars->USERLIST = LAN_FORUM_0036.": ";
+ global $listuserson;
+ $c = 0;
+ if(is_array($listuserson))
+ {
+ foreach($listuserson as $uinfo => $pinfo)
+ {
+ list($oid, $oname) = explode(".", $uinfo, 2);
+ $c ++;
+ $fVars->USERLIST .= "$oname".($c == MEMBERS_ONLINE ? "." :", ");
+ }
+ }
+ $fVars->USERLIST .= "
".LAN_FORUM_0037." ".LAN_FORUM_0038;
+}
+--*/
+// Gonne directly to shortcode file
+/*--
+$fVars->STATLINK = "".LAN_FORUM_0017."\n";
+$fVars->ICONKEY = "
+\n
+".IMAGE_new_small." |
+".LAN_FORUM_0039." |
+".IMAGE_nonew_small." |
+".LAN_FORUM_0040." |
+".IMAGE_closed_small." |
+".LAN_FORUM_0041." |
+
\n
\n";
+
+if(!$srchIcon = $tp->toGlyph('fa-search'))
+{
+ $srchIcon = LAN_SEARCH;
+}
+
+$fVars->SEARCH = "
+\n";
+
+$fVars->PERMS = (USER == TRUE || ANON == TRUE ? LAN_FORUM_0043." - ".LAN_FORUM_0045." - ".LAN_FORUM_0047 : LAN_FORUM_0044." - ".LAN_FORUM_0046." - ".LAN_FORUM_0048);
+
+$fVars->INFO = "";
+if (USER == TRUE)
+{
+ $total_new_threads = $sql->count('forum_thread', '(*)', "WHERE thread_datestamp>'".USERLV."' ");
+ if (USERVIEWED != "")
+ {
+ $tmp = explode(".", USERVIEWED); // List of numbers, separated by single period
+ $total_read_threads = count($tmp);
+ }
+ else
+ {
+ $total_read_threads = 0;
+ }
+
+ $fVars->INFO = LAN_FORUM_0018." ".USERNAME."
";
+ $lastvisit_datestamp = $gen->convert_date(USERLV, 'long');
+ $datestamp = $gen->convert_date(time(), "long");
+ if (!$total_new_threads)
+ {
+ $fVars->INFO .= LAN_FORUM_0019." ";
+ }
+ elseif($total_new_threads == 1)
+ {
+ $fVars->INFO .= LAN_FORUM_0020;
+ }
+ else
+ {
+ $fVars->INFO .= LAN_FORUM_0021." ".$total_new_threads." ".LAN_FORUM_0022." ";
+ }
+ $fVars->INFO .= LAN_FORUM_0023;
+ if ($total_new_threads == $total_read_threads && $total_new_threads != 0 && $total_read_threads >= $total_new_threads)
+ {
+ $fVars->INFO .= LAN_FORUM_0029;
+ $allread = TRUE;
+ }
+ elseif($total_read_threads != 0)
+ {
+ $fVars->INFO .= " (".LAN_FORUM_0027." ".$total_read_threads." ".LAN_FORUM_0028.")";
+ }
+
+ $fVars->INFO .= "
+ ".LAN_FORUM_0024." ".$lastvisit_datestamp."
+ ".LAN_FORUM_0025." ".$datestamp;
+}
+else
+{
+ $fVars->INFO .= '';
+ if (ANON == TRUE)
+ {
+ $fVars->INFO .= LAN_FORUM_0049.'
'.LAN_FORUM_0050." ".LAN_FORUM_0051." ".LAN_FORUM_0052;
+ }
+ elseif(USER == FALSE)
+ {
+ $fVars->INFO .= LAN_FORUM_0049.'
'.LAN_FORUM_0053." ".LAN_FORUM_0054." ".LAN_FORUM_0055;
+ }
+}
+
+if (USER && vartrue($allread) != TRUE && $total_new_threads && $total_new_threads >= $total_read_threads)
+{
+ $fVars->INFO .= "
".LAN_FORUM_0057.''.(e_QUERY != 'new' ? ", ".LAN_FORUM_0058."" : '');
+}
+
+$trackPref = $forum->prefs->get('track');
+if (USER && vartrue($trackPref) && e_QUERY != 'track')
+{
+ $fVars->INFO .= "
".LAN_FORUM_0030.'';
+}
+
+$fVars->FORUMINFO =
+str_replace("[x]", ($total_topics+$total_replies), LAN_FORUM_0031)." ($total_topics ".($total_topics == 1 ? LAN_FORUM_0032 : LAN_FORUM_0033).", $total_replies ".($total_replies == 1 ? LAN_FORUM_0034 : LAN_FORUM_0035).")
+".(!defined("e_TRACKING_DISABLED") ? "" : "
".$users." ".($users == 1 ? LAN_FORUM_0059 : LAN_FORUM_0060)." (".$member_users." ".($member_users == 1 ? LAN_FORUM_0061 : LAN_FORUM_0062).", ".$guest_users." ".($guest_users == 1 ? LAN_FORUM_0063 : LAN_FORUM_0064).")
".LAN_FORUM_0066." ".$total_members."
".LAN_FORUM_0065." ".$nuser_name.".\n"); // FIXME cannot find other references to e_TRACKING_DISABLED, use pref?
+--*/
+
+// FIX - core template always override theme template
+// Include core template
+include(e_PLUGIN.'forum/templates/forum_template.php');
+
+// Override with theme template
+if (file_exists(THEME.'forum_template.php'))
+{
+ include_once(THEME.'forum_template.php');
+}
+elseif(file_exists(THEME.'templates/forum/forum_template.php'))
+{
+ require_once(THEME.'templates/forum/forum_template.php');
+}
+
+if(is_array($FORUM_TEMPLATE) && deftrue('BOOTSTRAP',false)) // new v2.x format.
+{
+
+ if(varset($FORUM_TEMPLATE['main-start'])) // correction of previous v2.x setup.
+ {
+ $FORUM_TEMPLATE['main']['start'] = $FORUM_TEMPLATE['main-start'];
+ $FORUM_TEMPLATE['main']['parent'] = $FORUM_TEMPLATE['main-parent'];
+ $FORUM_TEMPLATE['main']['forum'] = $FORUM_TEMPLATE['main-forum'];
+ $FORUM_TEMPLATE['main']['end'] = $FORUM_TEMPLATE['main-end'];
+ }
+
+ $FORUM_MAIN_START = $FORUM_TEMPLATE['main']['start'];
+ $FORUM_MAIN_PARENT = $FORUM_TEMPLATE['main']['parent'];
+ $FORUM_MAIN_FORUM = $FORUM_TEMPLATE['main']['forum'];
+ $FORUM_MAIN_END = $FORUM_TEMPLATE['main']['end'];
+
+ $FORUM_NEWPOSTS_START = $FORUM_TEMPLATE['main']['start']; // $FORUM_TEMPLATE['new-start'];
+ $FORUM_NEWPOSTS_MAIN = $FORUM_TEMPLATE['main']['forum']; // $FORUM_TEMPLATE['new-main'];
+ $FORUM_NEWPOSTS_END = $FORUM_TEMPLATE['main']['end']; // $FORUM_TEMPLATE['new-end'];
+}
+
+require_once(HEADERF);
+
+$forumList = $forum->forumGetForumList();
+$newflag_list = $forum->forumGetUnreadForums();
+
+if (!$forumList)
+{
+ $ns->tablerender(LAN_PLUGIN_FORUM_NAME, "".LAN_FORUM_0067.'
', array('forum', '51'));
+ require_once(FOOTERF);
+ exit;
+}
+
+$forum_string = '';
+//--$pVars = new e_vars;
+//--$frm = e107::getForm();
+foreach ($forumList['parents'] as $parent)
+{
+// Gonne directly to shortcode file
+//-- $status = parse_parent($parent);
+//-- $pVars->PARENTSTATUS = $status;
+//---- $sc->parentstatus = parse_parent($parent);
+
+// Gonne directly to shortcode file
+// $pVars->PARENTNAME = "".$parent['forum_name']."";
+// $pVars->PARENTNAME = $parent['forum_name'];
+//---- $sc->parentname = $parent['forum_name'];
+//-- $forum_string .= $tp->simpleParse($FORUM_MAIN_PARENT, $pVars);
+// $sc->fparent = $parent;
+ $sc->setVars($parent);
+ $forum_string .= $tp->parseTemplate($FORUM_MAIN_PARENT, false, $sc);
+ if (!count($forumList['forums'][$parent['forum_id']]))
+ {
+ $text .= "";
+ }
+ else
+ {
+ //TODO: Rework the restricted string
+ foreach($forumList['forums'][$parent['forum_id']] as $f)
+ {
+ if ($f['forum_class'] == e_UC_ADMIN && ADMIN)
+ {
+ $forum_string .= parse_forum($f, LAN_FORUM_0005);
+ }
+ elseif($f['forum_class'] == e_UC_MEMBER && USER)
+ {
+ $forum_string .= parse_forum($f, LAN_FORUM_0006);
+ }
+ elseif($f['forum_class'] == e_UC_READONLY)
+ {
+ $forum_string .= parse_forum($f, LAN_FORUM_0007);
+ }
+ elseif($f['forum_class'] && check_class($f['forum_class']))
+ {
+ $forum_string .= parse_forum($f, LAN_FORUM_0008);
+ }
+ elseif(!$f['forum_class'])
+ {
+ $forum_string .= parse_forum($f);
+ }
+ }
+ if (isset($FORUM_MAIN_PARENT_END))
+ {
+//-- $forum_string .= $tp->simpleParse($FORUM_MAIN_PARENT_END, $pVars);
+ $forum_string .= $tp->parseTemplate($FORUM_MAIN_PARENT_END, false, $sc);
+ }
+ }
+}
+
+/*----
+function parse_parent($parent)
+{
+ if(!check_class($parent['forum_postclass']))
+ {
+ $status = '('.LAN_FORUM_0056.')';
+ }
+ return vartrue($status);
+}
+*/
+function parse_forum($f, $restricted_string = '')
+{
+//---- global $FORUM_MAIN_FORUM, $gen, $forum, $newflag_list, $forumList, $sc;
+ global $FORUM_MAIN_FORUM, $forumList, $sc;
+//-- $fVars = new e_vars;
+//---- $e107 = e107::getInstance();
+ $tp = e107::getParser();
+
+// Gonne directly to shortcode file
+/*--
+ if(USER && is_array($newflag_list) && in_array($f['forum_id'], $newflag_list))
+ {
+
+ $fVars->NEWFLAG = "".IMAGE_new.'';
+ }
+ elseif(empty($f['forum_replies']) && defined('IMAGE_noreplies'))
+ {
+ $fVars->NEWFLAG = IMAGE_noreplies;
+ }
+ else
+ {
+ $fVars->NEWFLAG = IMAGE_nonew;
+ }
+--*/
+
+// Gonne directly to shortcode file
+/*--
+ if(substr($f['forum_name'], 0, 1) == '*')
+ {
+ $f['forum_name'] = substr($f['forum_name'], 1);
+ }
+ $f['forum_name'] = $tp->toHTML($f['forum_name'], true, 'no_hook');
+ $f['forum_description'] = $tp->toHTML($f['forum_description'], true, 'no_hook');
+
+
+ //$url= $e107->url->create('forum/forum/view', $f);
+ $url = e107::url('forum', 'forum', $f);
+ $fVars->FORUMNAME = "{$f['forum_name']}";
+ $fVars->FORUMDESCRIPTION = $f['forum_description'].($restricted_string ? "
$restricted_string" : "");
+--*/
+//-- $fVars->THREADS = $f['forum_threads'];
+//---- $sc->threads = $f['forum_threads'];
+//-- $fVars->REPLIES = $f['forum_replies'];
+//---- $sc->replies = $f['forum_replies'];
+//-- $fVars->FORUMSUBFORUMS = '';
+
+//-- $badgeReplies = ($f['forum_replies']) ? "badge-info" : "";
+//-- $badgeThreads = ($f['forum_threads']) ? "badge-info" : "";
+
+//-- $fVars->THREADSX = "".$f['forum_threads']."";
+//-- $fVars->REPLIESX = "".$f['forum_replies']."";
+
+
+//---- $subId = $f['forum_id'];
+//---- if(!empty($forumList['subs']) && is_array($forumList['subs'][$subId]))
+ if(!empty($forumList['subs']) && is_array($forumList['subs'][$f['forum_id']]))
+ {
+//---- list($lastpost_datestamp, $lastpost_thread) = explode('.', $f['forum_lastpost_info']);
+ $lastpost_datestamp = reset(explode('.', $f['forum_lastpost_info']));
+ $ret = parse_subs($forumList, $f['forum_id'], $lastpost_datestamp);
+// $fVars->FORUMSUBFORUMS = "
".LAN_FORUM_0069.": {$ret['text']}
";
+//-- $fVars->THREADS += $ret['threads'];
+//-- $fVars->REPLIES += $ret['replies'];
+ $f['forum_threads'] += $ret['threads'];
+ $f['forum_replies'] += $ret['replies'];
+ if(isset($ret['lastpost_info']))
+ {
+ $f['forum_lastpost_info'] = $ret['lastpost_info'];
+ $f['forum_lastpost_user'] = $ret['lastpost_user'];
+ $f['forum_lastpost_user_anon'] = $ret['lastpost_user_anon'];
+ $f['user_name'] = $ret['user_name'];
+ }
+ $f['text'] = $ret['text'];
+ }
+
+ $sc->setVars($f);
+/*--
+ if ($f['forum_lastpost_info'])
+ {
+ list($lastpost_datestamp, $lastpost_thread) = explode('.', $f['forum_lastpost_info']);
+ if ($f['user_name'])
+ {
+
+ $lastpost_name = " $f['user_name'], 'id' => $f['forum_lastpost_user']))."'>{$f['user_name']}";
+ }
+ else
+ {
+ $lastpost_name = $tp->toHTML($f['forum_lastpost_user_anon']);
+ }
+
+ $lastpost = $forum->threadGetLastpost($lastpost_thread); //XXX TODO inefficient to have SQL query here.
+
+ $fVars->LASTPOSTUSER = $lastpost_name;
+ // {forum_sef}/{thread_id}-{thread_sef}
+
+ $urlData = array('forum_sef'=>$f['forum_sef'], 'thread_id'=>$lastpost['post_thread'],'thread_sef'=>$lastpost['thread_sef']);
+ $url = e107::url('forum', 'topic', $urlData)."?last=1#post-".$lastpost['post_id'];
+ $fVars->LASTPOSTDATE .= "". $gen->computeLapse($lastpost_datestamp, time(), false, false, 'short')."";
+ $lastpost_datestamp = $gen->convert_date($lastpost_datestamp, 'forum');
+ $fVars->LASTPOST = $lastpost_datestamp.'
'.$lastpost_name." $lastpost_name, 'id' => $lastpost_thread))."'>".IMAGE_post2.'';
+
+ }
+ else
+ {
+ $fVars->LASTPOSTUSER = "";
+ $fVars->LASTPOSTDATE = "-";
+ $fVars->LASTPOST = '-';
+ }
+--*/
+
+//-- return $tp->simpleParse($FORUM_MAIN_FORUM, $fVars);
+ return $tp->parseTemplate($FORUM_MAIN_FORUM, false, $sc);
+}
+
+
+
+function parse_subs($forumList, $id ='', $lastpost_datestamp)
+{
+
+ $tp = e107::getParser();
+ $ret = array();
+
+ $subList = $forumList['subs'][$id];
+
+ $ret['text'] = '';
+ $ret['threads'] = 0;
+ $ret['replies'] = 0;
+
+ foreach($subList as $sub)
+ {
+ // print_a($sub);
+
+ $ret['text'] .= ($ret['text'] ? ', ' : '');
+
+ $urlData = $sub;
+ $urlData['parent_sef'] = $forumList['all'][$sub['forum_sub']]['forum_sef']; // = array('parent_sef'=>
+ $suburl = e107::url('forum','forum', $urlData);
+
+ $ret['text'] .= "".$tp->toHTML($sub['forum_name']).'';
+ $ret['threads'] += $sub['forum_threads'];
+ $ret['replies'] += $sub['forum_replies'];
+ $tmp = explode('.', $sub['forum_lastpost_info']);
+
+ if($tmp[0] > $lastpost_datestamp)
+ {
+ $ret['lastpost_info'] = $sub['forum_lastpost_info'];
+ $ret['lastpost_user'] = $sub['forum_lastpost_user'];
+ $ret['lastpost_user_anon'] = $sub['forum_lastpost_user_anon'];
+ $ret['user_name'] = $sub['user_name'];
+ $lastpost_datestamp = $tmp[0];
+ }
+ }
+
+
+ return $ret;
+}
+
+if (e_QUERY == 'track')
+{
+
+}
+
+if (e_QUERY == 'new')
+{
+//-- $nVars = new e_vars;
+ $newThreadList = $forum->threadGetNew(10);
+ foreach($newThreadList as $thread)
+ {
+//-- $author_name = ($thread['user_name'] ? $thread['user_name'] : $thread['lastuser_anon']);
+//---- $sc->author_name = ($thread['user_name'] ? $thread['user_name'] : $thread['lastuser_anon']);
+
+//-- $datestamp = $gen->convert_date($thread['thread_lastpost'], 'forum');
+//---- $sc->datestamp = $gen->convert_date($thread['thread_lastpost'], 'forum');
+/*--
+ if(!$thread['user_name'])
+ {
+ $nVars->STARTERTITLE = $author_name.'
'.$datestamp;
+ }
+ else
+ {
+ $nVars->STARTERTITLE = " $thread['thread_lastuser'], 'name' => $author_name))."'>{$author_name}
".$datestamp;
+ }
+
+ $nVars->NEWSPOSTNAME = "".$tp->toHTML($thread['thread_name'], TRUE, 'no_make_clickable, no_hook').'';
+--*/
+
+//-- $forum_newstring .= $tp->simpleParse($FORUM_NEWPOSTS_MAIN, $nVars);
+ $sc->setVars($thread);
+ $forum_newstring .= $tp->parseTemplate($FORUM_NEWPOSTS_MAIN, false, $sc);
+ }
+
+ if (empty($newThreadList))
+ {
+//-- $nVars->NEWSPOSTNAME = LAN_FORUM_0029;
+//-- $forum_newstring = $tp->simpleParse($FORUM_NEWPOSTS_MAIN, $nVars);
+ $forum_newstring = $tp->parseTemplate($FORUM_NEWPOSTS_MAIN, false, $sc);
+
+ }
+//-- $forum_new_start = $tp->simpleParse($FORUM_NEWPOSTS_START, $nVars);
+//-- $forum_new_end = $tp->simpleParse($FORUM_NEWPOSTS_END, $nVars);
+ $forum_new_start = $tp->parseTemplate($FORUM_NEWPOSTS_START, false, $sc);
+ $forum_new_end = $tp->parseTemplate($FORUM_NEWPOSTS_END, false, $sc);
+
+ if ($forum->prefs->get('enclose'))
+ {
+ $ns->tablerender($forum->prefs->get('title'), $forum_new_start.$forum_newstring.$forum_new_end, array('forum', 'main2'));
+ }
+ else
+ {
+ echo $forum_new_start.$forum_newstring.$forum_new_end;
+ }
+}
+
+//$frm = e107::getForm();
+
+$breadarray = array(
+ array('text'=> $forum->prefs->get('title'), 'url' => e107::url('forum','index') )
+);
+
+//-- $fVars->FORUM_BREADCRUMB = $frm->breadcrumb($breadarray);
+
+//-- $forum_main_start = $tp->simpleParse($FORUM_MAIN_START, $fVars);
+$forum_main_start = $tp->parseTemplate($FORUM_MAIN_START, false, $sc);
+//-- $forum_main_end = $tp->simpleParse($FORUM_MAIN_END, $fVars);
+$forum_main_end = $tp->parseTemplate($FORUM_MAIN_END, false, $sc);
+
+if ($forum->prefs->get('enclose'))
+{
+ $ns->tablerender($forum->prefs->get('title'), $forum_main_start.$forum_string.$forum_main_end, 'forum');
+}
+else
+{
+ echo $forum_main_start.$forum_string.$forum_main_end;
+}
+
+
+
+
+
+
+
+
+require_once(FOOTERF);
+
+function forum_rules($action = 'check')
+{
+ if (ADMIN == true)
+ {
+ $type = 'forum_rules_admin';
+ }
+ elseif(USER == true)
+ {
+ $type = 'forum_rules_member';
+ }
+ else
+ {
+ $type = 'forum_rules_guest';
+ }
+ $result = e107::getDb()->select('generic', 'gen_chardata', "gen_type = '$type' AND gen_intdata = 1");
+ if ($action == 'check') { return $result; }
+
+ if ($result)
+ {
+ $row = e107::getDb()->fetch();
+ $rules_text = e107::getParser()->toHTML($row['gen_chardata'], true);
+ }
+ else
+ {
+ $rules_text = LAN_FORUM_0072;
+ }
+
+ $text = '';
+
+ if(deftrue('BOOTSTRAP'))
+ {
+ $breadarray = array(
+ array('text'=> e107::pref('forum','title', LAN_PLUGIN_FORUM_NAME), 'url' => e107::url('forum','index') ),
+ array('text'=>LAN_FORUM_0016, 'url'=>null)
+ );
+
+ $text = e107::getForm()->breadcrumb($breadarray);
+ }
+
+ $text .= "".$rules_text."
";
+ $text .= "".e107::getForm()->pagination(e107::url('forum','index'), LAN_BACK)."
";
+
+ e107::getRender()->tablerender(LAN_FORUM_0016, $text, array('forum', 'forum_rules'));
+}
+
+
+function forum_track()
+{
+ global $forum;
+
+ $trackPref = $forum->prefs->get('track');
+ $trackEmailPref = $forum->prefs->get('trackemail',true);
+
+
+ if(empty($trackPref))
+ {
+ echo "Disabled";
+ return false;
+ }
+
+
+ $FORUM_TEMPLATE = null;
+
+ include(e_PLUGIN.'forum/templates/forum_template.php');
+
+ // Override with theme template
+ if (file_exists(THEME.'forum_template.php'))
+ {
+ include(THEME.'forum_template.php');
+ }
+ elseif(file_exists(THEME.'templates/forum/forum_template.php'))
+ {
+ require(THEME.'templates/forum/forum_template.php');
+ }
+
+ $IMAGE_nonew_small = IMAGE_nonew_small;
+ $IMAGE_new_small = IMAGE_new_small;
+
+ if(is_array($FORUM_TEMPLATE) && deftrue('BOOTSTRAP',false)) // new v2.x format.
+ {
+ $FORUM_TRACK_START = $FORUM_TEMPLATE['track']['start']; // $FORUM_TEMPLATE['track-start'];
+ $FORUM_TRACK_MAIN = $FORUM_TEMPLATE['track']['item']; // $FORUM_TEMPLATE['track-main'];
+ $FORUM_TRACK_END = $FORUM_TEMPLATE['track']['end']; // $FORUM_TEMPLATE['track-end'];
+
+ $IMAGE_nonew_small = IMAGE_nonew;
+ $IMAGE_new_small = IMAGE_new;
+
+ }
+
+ $sql = e107::getDb();
+ $tp = e107::getParser();
+
+ $trackDiz = ($trackEmailPref) ? LAN_FORUM_3040 : LAN_FORUM_3041;
+
+
+ if($trackedThreadList = $forum->getTrackedThreadList(USERID, 'list'))
+ {
+
+ $viewed = $forum->threadGetUserViewed();
+
+ $qry = "SELECT t.*,th.*, f.*,u.user_name FROM `#forum_track` AS t
+ LEFT JOIN `#forum_thread` AS th ON t.track_thread = th.thread_id
+ LEFT JOIN `#forum` AS f ON th.thread_forum_id = f.forum_id
+ LEFT JOIN `#user` AS u ON th.thread_lastuser = u.user_id
+ WHERE t.track_userid = ".USERID." ORDER BY th.thread_lastpost DESC";
+
+ $forum_trackstring = '';
+ $data = array();
+ if($sql->gen($qry))
+ {
+ while($row = $sql->fetch())
+ {
+ // e107::getDebug()->log($row);
+ $row['thread_sef'] = eHelper::title2sef($row['thread_name'],'dashl');
+
+ $data['NEWIMAGE'] = $IMAGE_nonew_small;
+
+ if ($row['thread_datestamp'] > USERLV && !in_array($row['thread_id'], $viewed))
+ {
+ $data['NEWIMAGE'] = $IMAGE_new_small;
+ }
+
+ $data['LASTPOSTUSER'] = !empty($row['user_name']) ? " $row['user_name'], 'id' => $row['thread_lastuser']))."'>".$row['user_name']."" : LAN_ANONYMOUS;
+ $data['LASTPOSTDATE'] = $tp->toDate($row['thread_lastpost'],'relative');
+
+ $buttonId = "forum-track-button-".intval($row['thread_id']);
+
+ $forumUrl = e107::url('forum','forum',$row);
+ $threadUrl = e107::url('forum','topic',$row, array('query'=>array('last'=>1))); // ('forum/thread/view', $row); // configs will be able to map thread_* vars to the url
+ $data['TRACKPOSTNAME'] = "". $row['forum_name']." / ".$tp->toHTML($row['thread_name'], false, 'TITLE').'';
+ // $data['UNTRACK'] = "".LAN_FORUM_0070."";
+
+
+ $data['UNTRACK'] = "".IMAGE_track."";
+
+ $forum_trackstring .= $tp->simpleParse($FORUM_TRACK_MAIN, $data);
+ }
+ }
+ // print_a($FORUM_TRACK_START);
+
+
+ if(deftrue('BOOTSTRAP'))
+ {
+ $breadarray = array(
+ array('text'=> e107::pref('forum','title', LAN_PLUGIN_FORUM_NAME), 'url' => e107::url('forum','index') ),
+ array('text'=>LAN_FORUM_0030, 'url'=>null)
+ );
+
+ $data['FORUM_BREADCRUMB'] = e107::getForm()->breadcrumb($breadarray);
+ }
+
+
+ $forum_track_start = $tp->simpleParse($FORUM_TRACK_START, $data);
+ $forum_track_end = $tp->simpleParse($FORUM_TRACK_END, $data);
+
+ // if ($forum->prefs->get('enclose'))
+ {
+ // $ns->tablerender($forum->prefs->get('title'), $forum_track_start.$forum_trackstring.$forum_track_end, array('forum', 'main1'));
+ }
+ // else
+ {
+ $tracktext = $forum_track_start.$forum_trackstring.$forum_track_end;
+ }
+ }
+
+
+ $text ='';
+
+
+
+ $text .= $tracktext;
+ $text .= "".e107::getForm()->pagination(e107::url('forum','index'), LAN_BACK)."
";
+
+ e107::getRender()->tablerender(LAN_FORUM_0030, $text, array('forum', 'forum_track'));
+
+
+}
+
+
+?>