diff --git a/e107_plugins/forum/e_url.php b/e107_plugins/forum/e_url.php index 22c65ffe5..986bde8c3 100644 --- a/e107_plugins/forum/e_url.php +++ b/e107_plugins/forum/e_url.php @@ -37,6 +37,12 @@ class forum_url // plugin-folder + '_url' 'redirect' => '{e_PLUGIN}forum/forum_stats.php', ); + $config['track'] = array( + 'regex' => '^forum/track/?', + 'sef' => 'forum/track', + 'redirect' => '{e_PLUGIN}forum/forum.php?f=track', + ); + $config['post'] = array( 'regex' => '^forum/post/?', 'sef' => 'forum/post/', diff --git a/e107_plugins/forum/forum.php b/e107_plugins/forum/forum.php index cd2981ea2..829802ede 100644 --- a/e107_plugins/forum/forum.php +++ b/e107_plugins/forum/forum.php @@ -41,6 +41,15 @@ if(!deftrue('BOOTSTRAP')) 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); @@ -64,9 +73,17 @@ if(isset($_GET['f'])) break; case 'rules': + include_once(HEADERF); + + forum_rules('show'); + include_once(FOOTERF); + exit; + break; + + case 'track': include_once(HEADERF); - forum_rules('show'); + forum_track(); include_once(FOOTERF); exit; break; @@ -112,6 +129,11 @@ 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); // ----------- @@ -259,25 +281,33 @@ 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. { - $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']; + 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']; - $FORUM_TRACK_START = $FORUM_TEMPLATE['main-start']; // $FORUM_TEMPLATE['track-start']; - $FORUM_TRACK_MAIN = $FORUM_TEMPLATE['main-forum']; // $FORUM_TEMPLATE['track-main']; - $FORUM_TRACK_END = $FORUM_TEMPLATE['main-end']; // $FORUM_TEMPLATE['track-end']; } - require_once(HEADERF); $forumList = $forum->forumGetForumList(); @@ -484,43 +514,7 @@ function parse_subs($forumList, $id ='', $lastpost_datestamp) if (e_QUERY == 'track') { - if($trackedThreadList = $forum->getTrackedThreadList(USERID, 'list')) - { - $trackVars = new e_vars; - $viewed = $forum->threadGetUserViewed(); - $qry = " - SELECT t.*, p.* from `#forum_thread` AS t - LEFT JOIN `#forum_post` AS p ON p.post_thread = t.thread_id AND p.post_datestamp = t.thread_datestamp - WHERE thread_id IN({$trackedThreadList}) - ORDER BY thread_lastpost DESC - "; - if($sql->gen($qry)) - { - while($row = $sql->fetch(MYSQL_ASSOC)) - { - $trackVars->NEWIMAGE = IMAGE_nonew_small; - if ($row['thread_datestamp'] > USERLV && !in_array($row['thread_id'], $viewed)) - { - $trackVars->NEWIMAGE = IMAGE_new_small; - } - $url = $e107->url->create('forum/thread/view', $row); // configs will be able to map thread_* vars to the url - $trackVars->TRACKPOSTNAME = "".$tp->toHTML($row['thread_name']).''; - $trackVars->UNTRACK = "".LAN_FORUM_0070.""; - $forum_trackstring .= $tp->simpleParse($FORUM_TRACK_MAIN, $trackVars); - } - } - $forum_track_start = $tp->simpleParse($FORUM_TRACK_START, $trackVars); - $forum_track_end = $tp->simpleParse($FORUM_TRACK_END, $trackVars); - if ($forum->prefs->get('enclose')) - { - $ns->tablerender($forum->prefs->get('title'), $forum_track_start.$forum_trackstring.$forum_track_end, array('forum', 'main1')); - } - else - { - echo $forum_track_start.$forum_trackstring.$forum_track_end; - } - } } @@ -640,4 +634,126 @@ function forum_rules($action = 'check') e107::getRender()->tablerender(LAN_FORUM_0016, $text, array('forum', 'forum_rules')); } + +function forum_track() +{ + global $forum; + + $trackPref = $forum->prefs->get('track'); + 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(); + + if($trackedThreadList = $forum->getTrackedThreadList(USERID, 'list')) + { + + $viewed = $forum->threadGetUserViewed(); + + $qry = "SELECT t.*,th.*, f.* 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 + WHERE t.track_userid = ".USERID." ORDER BY th.thread_lastpost DESC"; + + $forum_trackstring = ''; + $data = array(); + if($sql->gen($qry)) + { + while($row = $sql->fetch(MYSQL_ASSOC)) + { + $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; + } + + $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']).''; + // $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')); + + +} + + ?> \ No newline at end of file diff --git a/e107_plugins/forum/forum_class.php b/e107_plugins/forum/forum_class.php index 960e1374d..56ac7bf28 100644 --- a/e107_plugins/forum/forum_class.php +++ b/e107_plugins/forum/forum_class.php @@ -702,7 +702,7 @@ class e107forum { $ret = array(); - while($row = $sql->fetch(MYSQL_ASSOC)) + while($row = $sql->fetch()) { $ret[] = $row['track_thread']; } diff --git a/e107_plugins/forum/languages/English/English_front.php b/e107_plugins/forum/languages/English/English_front.php index 73830e3fe..97b9a9f8e 100644 --- a/e107_plugins/forum/languages/English/English_front.php +++ b/e107_plugins/forum/languages/English/English_front.php @@ -53,7 +53,7 @@ define("LAN_FORUM_0025", "It is now"); // LAN_37 define("LAN_FORUM_0027", "You have read"); // LAN_196 define("LAN_FORUM_0028", "of these posts."); // LAN_197 define("LAN_FORUM_0029", "All new posts have been read."); // LAN_198 -define("LAN_FORUM_0030", "List tracked topics"); // LAN_393 +define("LAN_FORUM_0030", "Tracked topics"); // LAN_393 define("LAN_FORUM_0031", "The users of this forum have made a total of [x] posts."); // LAN_192 and LAN_404 define("LAN_FORUM_0032", "topic"); // LAN_411 define("LAN_FORUM_0033", "topics"); // LAN_413 @@ -132,6 +132,8 @@ define("LAN_FORUM_1016", "Poll"); // FORLAN_23 define("LAN_FORUM_1017", "Go to"); // LAN_401 (p?) define("LAN_FORUM_1018", "New topic"); // define("LAN_FORUM_1019", "Are you sure?"); // new +define("LAN_FORUM_1020", "Modify"); + // starting at LAN_FORUM_2xxx => forum_viewtopic.php define("LAN_FORUM_2001", "Previous topic"); // LAN_389 diff --git a/e107_plugins/forum/templates/forum_template.php b/e107_plugins/forum/templates/forum_template.php index d237001c8..553c496c7 100644 --- a/e107_plugins/forum/templates/forum_template.php +++ b/e107_plugins/forum/templates/forum_template.php @@ -79,7 +79,7 @@ $FORUM_TRACK_END = "
TRACK-END"; // New in v2.x - requires a bootstrap theme be loaded. -$FORUM_TEMPLATE['main-start'] = "{FORUM_BREADCRUMB} +$FORUM_TEMPLATE['main']['start'] = "{FORUM_BREADCRUMB}
@@ -99,7 +99,7 @@ $FORUM_TEMPLATE['main-start'] = "{FORUM_BREADCRUMB} {FORUMTITLE} "; -$FORUM_TEMPLATE['main-parent'] = " +$FORUM_TEMPLATE['main']['parent'] = " {PARENTNAME} {PARENTSTATUS} ".LAN_FORUM_0003." ".LAN_FORUM_0002." @@ -107,7 +107,7 @@ $FORUM_TEMPLATE['main-parent'] = " "; -$FORUM_TEMPLATE['main-forum'] = " +$FORUM_TEMPLATE['main']['forum'] = " {NEWFLAG} {FORUMNAME}
{FORUMDESCRIPTION}{FORUMSUBFORUMS} {REPLIESX} @@ -115,7 +115,38 @@ $FORUM_TEMPLATE['main-forum'] = " {LASTPOSTUSER} {LASTPOSTDATE} "; -$FORUM_TEMPLATE['main-end'] = "
{USERINFOX}
"; +$FORUM_TEMPLATE['main']['end'] = "
{USERINFOX}
"; + + + +// Tracking +$FORUM_TEMPLATE['track']['start'] = "{FORUM_BREADCRUMB}
+ + + + + + + + + + + + + + "; + +$FORUM_TEMPLATE['track']['item'] = " + + + + "; + + +$FORUM_TEMPLATE['track']['end'] = "
".LAN_FORUM_1003."".LAN_FORUM_1020."
{NEWIMAGE}{TRACKPOSTNAME}{UNTRACK}
\n
"; + + + /* $FORUM_TEMPLATE['main-end'] .= "