1
0
mirror of https://github.com/e107inc/e107.git synced 2025-07-30 19:30:25 +02:00

More forum progress

This commit is contained in:
mcfly
2008-12-02 21:34:18 +00:00
parent aed9cb08e5
commit d968b4f315
7 changed files with 256 additions and 264 deletions

View File

@@ -1,5 +1,5 @@
<?php <?php
// $Id: thread.php,v 1.1 2008-12-02 00:33:29 secretr Exp $ // $Id: thread.php,v 1.2 2008-12-02 21:34:18 mcfly_e107 Exp $
function url_forum_thread($parms) function url_forum_thread($parms)
{ {
switch($parms['func']) switch($parms['func'])
@@ -18,36 +18,36 @@ function url_forum_thread($parms)
break; break;
case 'post': case 'post':
return e_PLUGIN_ABS."forum/forum_viewtopic.php?post={$parms['id']}"; return e_PLUGIN_ABS."forum/forum_viewtopic.php?f=post&id={$parms['id']}";
break; break;
case 'report': case 'report':
$page = (isset($parms['page']) ? (int)$parms['page'] : 0 ); $page = (isset($parms['page']) ? (int)$parms['page'] : 0 );
return e_PLUGIN_ABS."forum/forum_viewtopic.php?id={$parms['id']}&report={$parms['report']}&page={$page}"; return e_PLUGIN_ABS."forum/forum_viewtopic.php?f=report&id={$parms['report']}&page={$page}";
break; break;
case 'edit': case 'edit':
return e_PLUGIN_ABS."forum/forum_post.php?edit={$parms['id']}"; return e_PLUGIN_ABS."forum/forum_post.php?f=edit&id={$parms['id']}";
break; break;
case 'quote': case 'quote':
return e_PLUGIN_ABS."forum/forum_post.php?quote={$parms['id']}"; return e_PLUGIN_ABS."forum/forum_post.php?f=quote&id={$parms['id']}";
break; break;
case 'next': case 'next':
return e_PLUGIN_ABS."forum/forum_viewtopic.php?next={$parms['id']}"; return e_PLUGIN_ABS."forum/forum_viewtopic.php?f=next&id={$parms['id']}";
break; break;
case 'prev': case 'prev':
return e_PLUGIN_ABS."forum/forum_viewtopic.php?prev={$parms['id']}"; return e_PLUGIN_ABS."forum/forum_viewtopic.php?f=prev&id={$parms['id']}";
break; break;
case 'track': case 'track':
return e_PLUGIN_ABS."forum/forum_viewtopic.php?track={$parms['id']}"; return e_PLUGIN_ABS."forum/forum_viewtopic.php?f=track&id={$parms['id']}";
break; break;
case 'untrack': case 'untrack':
return e_PLUGIN_ABS."forum/forum_viewtopic.php?untrack={$parms['id']}"; return e_PLUGIN_ABS."forum/forum_viewtopic.php?f=untrack&id={$parms['id']}";
break; break;

View File

@@ -11,8 +11,8 @@
| GNU General Public License (http://gnu.org). | GNU General Public License (http://gnu.org).
| |
| $Source: /cvs_backup/e107_0.8/e107_plugins/forum/forum_class.php,v $ | $Source: /cvs_backup/e107_0.8/e107_plugins/forum/forum_class.php,v $
| $Revision: 1.14 $ | $Revision: 1.15 $
| $Date: 2008-12-01 21:11:01 $ | $Date: 2008-12-02 21:34:18 $
| $Author: mcfly_e107 $ | $Author: mcfly_e107 $
+----------------------------------------------------------------------------+ +----------------------------------------------------------------------------+
*/ */
@@ -43,7 +43,7 @@ class e107forum
$this->fieldTypes['forum']['forum_lastpost_user'] = 'int'; $this->fieldTypes['forum']['forum_lastpost_user'] = 'int';
// print_a($this->permList); // var_dump($this->permList);
} }
function loadPermList() function loadPermList()
@@ -103,6 +103,7 @@ class e107forum
} }
} }
} }
//var_dump($this->permList);
} }
@@ -144,7 +145,7 @@ class e107forum
$forumInfo['forum_lastpost_user_anon'] = $postInfo['post_anon_name']; $forumInfo['forum_lastpost_user_anon'] = $postInfo['post_anon_name'];
} }
$threadInfo['thread_lastpost'] = $postInfo['post_datestamp']; $threadInfo['thread_lastpost'] = $postInfo['post_datestamp'];
$threadInfo['thread_total_replies'] = 'thread-total_replies + 1'; $threadInfo['thread_total_replies'] = 'thread_total_replies + 1';
$threadInfo['WHERE'] = 'thread_id = '.$postInfo['post_thread']; $threadInfo['WHERE'] = 'thread_id = '.$postInfo['post_thread'];
$threadInfo['_FIELD_TYPES'] = $this->fieldTypes['forum_thread']; $threadInfo['_FIELD_TYPES'] = $this->fieldTypes['forum_thread'];
@@ -166,7 +167,7 @@ class e107forum
$forumInfo['forum_lastpost_user_anon'] = $postInfo['post_anon_name']; $forumInfo['forum_lastpost_user_anon'] = $postInfo['post_anon_name'];
} }
//If we updated the thread, then we assume it was a reply, otherwise we've added a reply only.' //If we update the thread, then we assume it was a reply, otherwise we've added a reply only.
$forumInfo['_FIELD_TYPES'] = $this->fieldTypes['forum']; $forumInfo['_FIELD_TYPES'] = $this->fieldTypes['forum'];
if($updateThread) if($updateThread)
{ {
@@ -190,7 +191,7 @@ class e107forum
VALUES ('.USERID.', 1) VALUES ('.USERID.', 1)
ON DUPLICATE KEY UPDATE user_plugin_forum_posts = user_plugin_forum_posts + 1 ON DUPLICATE KEY UPDATE user_plugin_forum_posts = user_plugin_forum_posts + 1
'; ';
$result = $e107->sql->db_Select_gen($qry, true); $result = $e107->sql->db_Select_gen($qry);
} }
} }
@@ -236,7 +237,7 @@ class e107forum
FROM `#forum_thread` FROM `#forum_thread`
WHERE thread_id = '.$id; WHERE thread_id = '.$id;
} }
if($e107->sql->db_Select_gen($qry, true)) if($e107->sql->db_Select_gen($qry))
{ {
$tmp = $e107->sql->db_Fetch(MYSQL_ASSOC); $tmp = $e107->sql->db_Fetch(MYSQL_ASSOC);
if($tmp) if($tmp)
@@ -268,7 +269,7 @@ class e107forum
ORDER BY p.post_datestamp ASC ORDER BY p.post_datestamp ASC
LIMIT {$start}, {$num} LIMIT {$start}, {$num}
"; ";
if($e107->sql->db_Select_gen($qry, true)) if($e107->sql->db_Select_gen($qry))
{ {
$ret = array(); $ret = array();
while($row = $e107->sql->db_Fetch(MYSQL_ASSOC)) while($row = $e107->sql->db_Fetch(MYSQL_ASSOC))
@@ -386,18 +387,22 @@ class e107forum
$u_new .= USERVIEWED; $u_new .= USERVIEWED;
$t = array_unique(explode('.',$u_new)); // Filter duplicates $t = array_unique(explode('.',$u_new)); // Filter duplicates
$u_new = implode('.',$t); $u_new = implode('.',$t);
$sql->db_Update("user", "user_viewed='{$u_new}' WHERE user_id=".USERID); $sql->db_Update('user', "user_viewed='{$u_new}' WHERE user_id=".USERID);
header("location:".e_SELF); header("location:".e_SELF);
exit; exit;
} }
} }
function thread_markasread($thread_id) function threadMarkAsRead($threadId)
{ {
global $sql; $e107 = e107::getInstance();
$thread_id = intval($thread_id); $threadId = (int)$threadId;
$u_new = USERVIEWED.".".$thread_id; $currentUser['user_plugin_forum_viewed'] = '4..5..6.7.8';
return $sql->db_Update("user", "user_viewed='$u_new' WHERE user_id=".USERID); $_tmp = preg_split('#\.+#', $currentUser['user_plugin_forum_viewed']);
$_tmp[] = $threadId;
$viewed = '.'.implode('.', $_tmp).'.';
unset($_tmp);
return $e107->sql->db_Update('user_extended', "user_plugin_forum_viewed = '{$viewed}' WHERE user_extended_id = ".USERID);
} }
function forum_getparents() function forum_getparents()
@@ -418,7 +423,7 @@ class e107forum
global $sql; global $sql;
if($uclass == e_UC_ADMIN || trim($uclass) == '') if($uclass == e_UC_ADMIN || trim($uclass) == '')
{ {
$sql->db_Select('user', 'user_id, user_name',"user_admin = 1"); $sql->db_Select('user', 'user_id, user_name','user_admin = 1');
} }
else else
{ {
@@ -634,15 +639,15 @@ class e107forum
return $sql->db_Update('forum_t', $newString); return $sql->db_Update('forum_t', $newString);
} }
function forum_get_topics($forum_id, $from, $view) function forumGetThreads($forumId, $from, $view)
{ {
$e107 = e107::getInstance(); $e107 = e107::getInstance();
$forum_id = (int)$forum_id; $forumId = (int)$forumId;
$qry = " $qry = "
SELECT t.*, u.user_name, lpu.user_name AS lastpost_username from `#forum_thread` as t SELECT t.*, u.user_name, lpu.user_name AS lastpost_username from `#forum_thread` as t
LEFT JOIN `#user` AS u ON t.thread_user = u.user_id LEFT JOIN `#user` AS u ON t.thread_user = u.user_id
LEFT JOIN `#user` AS lpu ON t.thread_lastuser = lpu.user_id LEFT JOIN `#user` AS lpu ON t.thread_lastuser = lpu.user_id
WHERE t.thread_forum_id = {$forum_id} WHERE t.thread_forum_id = {$forumId}
ORDER BY ORDER BY
t.thread_s DESC, t.thread_s DESC,
t.thread_lastpost DESC t.thread_lastpost DESC
@@ -684,11 +689,11 @@ class e107forum
return FALSE; return FALSE;
} }
function forum_get_topic_count($forum_id) // function forum_get_topic_count($forum_id)
{ // {
$e107 = e107::getInstance(); // $e107 = e107::getInstance();
return $e107->sql->db_Count('forum_thread', '(*)', 'WHERE thread_forum_id='.(int)$forum_id); // return $e107->sql->db_Count('forum_thread', '(*)', 'WHERE thread_forum_id='.(int)$forum_id);
} // }
function thread_getnext($thread_id, $forum_id, $from = 0, $limit = 100) function thread_getnext($thread_id, $forum_id, $from = 0, $limit = 100)
{ {

View File

@@ -11,8 +11,8 @@
| GNU General Public License (http://gnu.org). | GNU General Public License (http://gnu.org).
| |
| $Source: /cvs_backup/e107_0.8/e107_plugins/forum/forum_post.php,v $ | $Source: /cvs_backup/e107_0.8/e107_plugins/forum/forum_post.php,v $
| $Revision: 1.21 $ | $Revision: 1.22 $
| $Date: 2008-12-01 21:11:01 $ | $Date: 2008-12-02 21:34:18 $
| $Author: mcfly_e107 $ | $Author: mcfly_e107 $
+----------------------------------------------------------------------------+ +----------------------------------------------------------------------------+
*/ */
@@ -47,7 +47,7 @@ switch($action)
case 'rp': case 'rp':
$threadInfo = $forum->threadGet($id, false); $threadInfo = $forum->threadGet($id, false);
$forumId = $threadInfo['thread_forum_id']; $forumId = $threadInfo['thread_forum_id'];
print_a($threadInfo); var_dump($threadInfo);
// if (!is_array($thread_info) || !count($thread_info)) // if (!is_array($thread_info) || !count($thread_info))
// { // {
// $forum_info = false; // Someone fed us a dud forum id - should exist if replying // $forum_info = false; // Someone fed us a dud forum id - should exist if replying
@@ -265,7 +265,7 @@ if (isset($_POST['newthread']) || isset($_POST['reply']))
case 'nt': case 'nt':
$threadInfo['thread_s'] = (MODERATOR ? $_POST['threadtype'] : 0); $threadInfo['thread_s'] = (MODERATOR ? $_POST['threadtype'] : 0);
$threadInfo['thread_name'] = $_POST['subject']; $threadInfo['thread_name'] = $_POST['subject'];
$threadInfo['thread_forum_id'] = $forum_id; $threadInfo['thread_forum_id'] = $forumId;
$threadInfo['thread_active'] = 1; $threadInfo['thread_active'] = 1;
$threadInfo['thread_datestamp'] = $time; $threadInfo['thread_datestamp'] = $time;
$result = $forum->threadAdd($threadInfo, $postInfo); $result = $forum->threadAdd($threadInfo, $postInfo);

View File

@@ -115,8 +115,17 @@ if($post_info['thread_parent'] == 0)
SC_END SC_END
SC_BEGIN SIGNATURE SC_BEGIN SIGNATURE
global $postInfo; if(!USER) { return ''; }
global $postInfo, $pref;
static $forum_sig_shown;
$e107 = e107::getInstance(); $e107 = e107::getInstance();
//$pref['forum_sig_once'] = true;
if(varsettrue($pref['forum_sig_once']))
{
$_tmp = 'forum_sig_shown_'.$postInfo['post_user'];
if(getcachedvars($_tmp)) { return ''; }
cachevars($_tmp, 1);
}
return ($postInfo['user_signature'] ? "<br /><hr style='width:15%; text-align:left' /><span class='smalltext'>".$e107->tp->toHTML($postInfo['user_signature'], true).'</span>' : ''); return ($postInfo['user_signature'] ? "<br /><hr style='width:15%; text-align:left' /><span class='smalltext'>".$e107->tp->toHTML($postInfo['user_signature'], true).'</span>' : '');
SC_END SC_END

View File

@@ -11,23 +11,15 @@
| GNU General Public License (http://gnu.org). | GNU General Public License (http://gnu.org).
| |
| $Source: /cvs_backup/e107_0.8/e107_plugins/forum/forum_viewtopic.php,v $ | $Source: /cvs_backup/e107_0.8/e107_plugins/forum/forum_viewtopic.php,v $
| $Revision: 1.4 $ | $Revision: 1.5 $
| $Date: 2008-12-01 21:11:01 $ | $Date: 2008-12-02 21:34:18 $
| $Author: mcfly_e107 $ | $Author: mcfly_e107 $
+----------------------------------------------------------------------------+ +----------------------------------------------------------------------------+
*/ */
require_once('../../class2.php'); require_once('../../class2.php');
include_lan(e_PLUGIN.'forum/languages/English/lan_forum_viewtopic.php');
include_once(e_PLUGIN.'forum/forum_class.php');
if (file_exists(THEME.'forum_design.php'))
{
include_once(THEME.'forum_design.php');
}
$forum = new e107forum;
if (isset($_POST['fjsubmit'])) if (isset($_POST['fjsubmit']))
{ {
header('location:'.$e107->url->getUrl('forum', 'forum', array('func' => 'view', 'id'=>$_POST['forumjump']))); header('location:'.$e107->url->getUrl('forum', 'forum', array('func' => 'view', 'id'=>$_POST['forumjump'])));
@@ -42,172 +34,38 @@ if (!e_QUERY)
exit; exit;
} }
global $page; include_lan(e_PLUGIN.'forum/languages/English/lan_forum_viewtopic.php');
include_once(e_PLUGIN.'forum/forum_class.php');
$forum = new e107forum;
if(isset($_REQUEST['f']))
{
processFunction();
}
$threadId = (int)varset($_GET['id']); $threadId = (int)varset($_GET['id']);
$perPage = (varset($_REQUEST['perpage']) ? (int)$_REQUEST['perpage'] : $pref['forum_postspage']); $perPage = (varset($_REQUEST['perpage']) ? (int)$_REQUEST['perpage'] : $pref['forum_postspage']);
$page = (varset($_REQUEST['p']) ? (int)$_REQUEST['p'] : 0); $page = (varset($_REQUEST['p']) ? (int)$_REQUEST['p'] : 0);
// $tmp = explode(".", e_QUERY); //If threadId doesn't exist, or not given, redirect to main forum page
// $thread_id = varset($tmp[0]);
// $topic_from = varset($tmp[1], 0);
// $action = varset($tmp[2]);
//$threadInfo = $forum->threadGet($threadId);
//print_a($threadInfo);
//exit;
if (!$threadId || !$threadInfo = $forum->threadGet($threadId)) if (!$threadId || !$threadInfo = $forum->threadGet($threadId))
{ {
header('Location:'.$e107->url->getUrl('forum', 'forum', array('func' => 'main'))); header('Location:'.$e107->url->getUrl('forum', 'forum', array('func' => 'main')));
exit; exit;
} }
//If not permitted to view forum, redirect to main forum page
if(!$forum->checkPerm($threadInfo['thread_forum_id'], 'view')) if(!$forum->checkPerm($threadInfo['thread_forum_id'], 'view'))
{ {
header('Location:'.$e107->url->getUrl('forum', 'forum', array('func' => 'main'))); header('Location:'.$e107->url->getUrl('forum', 'forum', array('func' => 'main')));
exit; exit;
} }
print_a($threadInfo);
//print_a($forum->permList);
//die('here');
if($topic_from === 'post')
{
if($thread_id)
{
$post_num = $forum->thread_postnum($thread_id);
$pages = ceil(($post_num['post_num']+1)/$pref['forum_postspage']);
$topic_from = ($pages-1) * $pref['forum_postspage'];
if($post_num['parent'] != $thread_id)
{
header("location: ".e_SELF."?{$post_num['parent']}.{$topic_from}#post_{$thread_id}");
exit;
}
}
else
{
header('Location:'.$e107->url->getUrl('forum', 'forum', array('func' => 'main')));
exit;
}
}
require_once(e_PLUGIN.'forum/forum_shortcodes.php'); require_once(e_PLUGIN.'forum/forum_shortcodes.php');
if ($action == 'track' && USER)
{
$forum->track($thread_id);
header("location:".e_SELF."?{$thread_id}.{$topic_from}");
exit;
}
if ($action == 'untrack' && USER)
{
$forum->untrack($thread_id);
header("location:".e_SELF."?{$thread_id}.{$topic_from}");
exit;
}
if ($action == 'next')
{
$next = $forum->thread_getnext($thread_id, $topic_from);
if ($next)
{
header("location:".e_SELF."?{$next}");
exit;
}
else
{
require_once(HEADERF);
$ns->tablerender('', LAN_405, array('forum_viewtopic', '405'));
require_once(FOOTERF);
exit;
}
}
if ($action == 'prev')
{
$prev = $forum->thread_getprev($thread_id, $topic_from);
if ($prev)
{
header("location:".e_SELF."?{$prev}");
exit;
}
else
{
require_once(HEADERF);
$ns->tablerender('', LAN_404, array('forum_viewtopic', '404'));
require_once(FOOTERF);
exit;
}
}
if ($action == 'report')
{
$thread_info = $forum->thread_get_postinfo($thread_id, TRUE);
if (isset($_POST['report_thread']))
{
$report_add = $tp -> toDB($_POST['report_add']);
if ($pref['reported_post_email'])
{
require_once(e_HANDLER."mail.php");
$report = LAN_422.SITENAME." : ".(substr(SITEURL, -1) == "/" ? SITEURL : SITEURL."/").$PLUGINS_DIRECTORY."forum/forum_viewtopic.php?".$thread_id.".post\n".LAN_425.USERNAME."\n".$report_add;
$subject = LAN_421." ".SITENAME;
sendemail(SITEADMINEMAIL, $subject, $report);
}
$sql->db_Insert('generic', "0, 'reported_post', ".time().", '".USERID."', '{$thread_info['head']['thread_name']}', ".intval($thread_id).", '{$report_add}'");
define("e_PAGETITLE", LAN_01." / ".LAN_428);
require_once(HEADERF);
$text = LAN_424."<br /><br /><a href='forum_viewtopic.php?".$thread_id.".post'>".LAN_429."</a";
$ns->tablerender(LAN_414, $text, array('forum_viewtopic', 'report'));
}
else
{
$thread_name = $tp -> toHTML($thread_info['head']['thread_name'], TRUE, 'no_hook, emotes_off');
define("e_PAGETITLE", LAN_01." / ".LAN_426." ".$thread_name);
require_once(HEADERF);
$text = "<form action='".e_PLUGIN."forum/forum_viewtopic.php?".e_QUERY."' method='post'> <table style='width:100%'>
<tr>
<td style='width:50%' >
".LAN_415.": ".$thread_name." <a href='".e_PLUGIN."forum/forum_viewtopic.php?".$thread_id.".post'><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>
<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 />
<input class='button' type='submit' name='report_thread' value='".LAN_419."' />
</td>
</tr>
</table>";
$ns->tablerender(LAN_414, $text, array('forum_viewtopic', 'report2'));
}
require_once(FOOTERF);
exit;
}
$pm_installed = plugInstalled('pm'); $pm_installed = plugInstalled('pm');
//$replies = $forum->thread_count($thread_id)-1;
if ($topic_from === 'last')
{
$pref['forum_postspage'] = ($pref['forum_postspage'] ? $pref['forum_postspage'] : 10);
$pages = ceil(($threadInfo['thread_total_replies']+1)/$pref['forum_postspage']);
$topic_from = ($pages-1) * $pref['forum_postspage'];
}
$gen = new convert;
//$thread_info = $forum->thread_get($thread_id, $topic_from-1, $pref['forum_postspage']);
$postList = $forum->PostGet($threadId, $page * $perPage, $perPage);
//Only increment thread views if not being viewed by thread starter //Only increment thread views if not being viewed by thread starter
if(!USER || USER != $threadInfo['thread_user']) if(!USER || USER != $threadInfo['thread_user'])
@@ -215,7 +73,7 @@ if(!USER || USER != $threadInfo['thread_user'])
$forum->threadIncview($threadId); $forum->threadIncview($threadId);
} }
print_a($postList); //print_a($postList);
//if(intval($thread_info['head']['thread_forum_id']) == 0) //if(intval($thread_info['head']['thread_forum_id']) == 0)
//{ //{
// require_once(HEADERF); // require_once(HEADERF);
@@ -231,44 +89,43 @@ print_a($postList);
// exit; // exit;
//} //}
define('e_PAGETITLE', LAN_01.' / '.$e107->tp->toHTML($threadInfo['forum_name'], true, 'no_hook, emotes_off')." / ".$tp->toHTML($threadInfo['thread_name'], true, 'no_hook, emotes_off'));
define('e_PAGETITLE', LAN_01.' / '.$e107->tp->toHTML($forum_info['forum_name'], true, 'no_hook, emotes_off')." / ".$tp->toHTML($thread_info['head']['thread_name'], TRUE, 'no_hook, emotes_off'));
//define("MODERATOR", (preg_match("/".preg_quote(ADMINNAME)."/", $forum_info['forum_moderators']) && getperms('A') ? TRUE : FALSE)); //define("MODERATOR", (preg_match("/".preg_quote(ADMINNAME)."/", $forum_info['forum_moderators']) && getperms('A') ? TRUE : FALSE));
define('MODERATOR', ($forum_info['forum_moderators'] != '' && check_class($forum_info['forum_moderators']))); define('MODERATOR', ($forum_info['forum_moderators'] != '' && check_class($forum_info['forum_moderators'])));
//$modArray = $forum->forum_getmods($forum_info['forum_moderators']); $modArray = $forum->forum_getmods($threadInfo['forum_moderators']);
//var_dump($modArray);
$message = ''; $message = '';
if (MODERATOR) if (MODERATOR && isset($_POST['mod']))
{ {
if ($_POST) require_once(e_PLUGIN.'forum/forum_mod.php');
{ $message = forum_thread_moderate($_POST);
require_once(e_PLUGIN.'forum/forum_mod.php'); $threadInfo = $forum->threadGet($threadId);
$message = forum_thread_moderate($_POST);
$thread_info = $forum->thread_get($thread_id, $topic_from-1, $pref['forum_postspage']);
}
} }
$postList = $forum->PostGet($threadId, $page * $perPage, $perPage);
var_dump($threadInfo);
require_once(HEADERF); require_once(HEADERF);
require_once(e_HANDLER.'level_handler.php'); require_once(e_HANDLER.'level_handler.php');
$gen = new convert;
if ($message) if ($message)
{ {
$ns->tablerender('', $message, array('forum_viewtopic', 'msg')); $ns->tablerender('', $message, array('forum_viewtopic', 'msg'));
} }
if(isset($threadInfo['thread_options']['poll'])) if(isset($threadInfo['thread_options']['poll']))
//if (stristr($thread_info['head']['thread_name'], "[".LAN_430."]"))
{ {
if(!defined('POLLCLASS')) if(!defined('POLLCLASS')) { include(e_PLUGIN.'poll/poll_class.php'); }
{
include(e_PLUGIN.'poll/poll_class.php');
}
$_qry = 'SELECT * FROM `#polls` WHERE `poll_datestamp` = '.$threadId; $_qry = 'SELECT * FROM `#polls` WHERE `poll_datestamp` = '.$threadId;
$poll = new poll; $poll = new poll;
$pollstr = "<div class='spacer'>".$poll->render_poll($_qry, 'forum', 'query', true).'</div>'; $pollstr = "<div class='spacer'>".$poll->render_poll($_qry, 'forum', 'query', true).'</div>';
} }
//Load forum templates //Load forum templates
if (!$FORUMSTART) { if (file_exists(THEME.'forum_design.php')) { include_once(THEME.'forum_design.php'); }
if (!$FORUMSTART)
{
if (file_exists(THEME.'forum_viewtopic_template.php')) if (file_exists(THEME.'forum_viewtopic_template.php'))
{ {
require_once(THEME.'forum_viewtopic_template.php'); require_once(THEME.'forum_viewtopic_template.php');
@@ -283,7 +140,7 @@ if (!$FORUMSTART) {
} }
} }
$forum_info['forum_name'] = $e107->tp->toHTML($threadInfo['forum_name'], true, 'no_hook,emotes_off'); //$forum_info['forum_name'] = $e107->tp->toHTML($threadInfo['forum_name'], true, 'no_hook,emotes_off');
// get info for main thread ------------------------------------------------------------------------------------------------------------------------------------------------------------------- // get info for main thread -------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -296,7 +153,7 @@ $NEXTPREV .= "<a href='".$e107->url->getUrl('forum', 'thread', array('func' => '
if ($pref['forum_track'] && USER) if ($pref['forum_track'] && USER)
{ {
if($forum->track('check', USERID, $threadId)) if($threadInfo['track_userid'])
{ {
$TRACK = "<span class='smalltext'><a href='".$e107->url->getUrl('forum', 'thread', array('func' => 'untrack', 'id' => $threadId))."'>".LAN_392."</a></span>"; $TRACK = "<span class='smalltext'><a href='".$e107->url->getUrl('forum', 'thread', array('func' => 'untrack', 'id' => $threadId))."'>".LAN_392."</a></span>";
} }
@@ -306,12 +163,10 @@ if ($pref['forum_track'] && USER)
} }
} }
$MODERATORS = LAN_321.implode(", ", $modArray); $MODERATORS = LAN_321.implode(', ', $modArray);
$THREADSTATUS = (!$threadInfo['thread_active'] ? LAN_66 : ''); $THREADSTATUS = (!$threadInfo['thread_active'] ? LAN_66 : '');
//$pref['forum_postspage'] = ($pref['forum_postspage'] ? $pref['forum_postspage'] : 10);
$pages = ceil(($threadInfo['thread_total_replies']+1) / $perPage); $pages = ceil(($threadInfo['thread_total_replies']+1) / $perPage);
if ($pages > 1) if ($pages > 1)
@@ -339,32 +194,17 @@ $forstr = preg_replace("/\{(.*?)\}/e", '$\1', $FORUMSTART);
unset($forrep); unset($forrep);
if (!$FORUMREPLYSTYLE) $FORUMREPLYSTYLE = $FORUMTHREADSTYLE; if (!$FORUMREPLYSTYLE) $FORUMREPLYSTYLE = $FORUMTHREADSTYLE;
$alt = false; $alt = false;
//for($i = 0; $i < count($thread_info)-1; $i++)
$i=$page; $i=$page;
global $postInfo; global $postInfo;
foreach($postList as $postInfo) foreach($postList as $postInfo)
{ {
print_a($postInfo); // print_a($postInfo);
$loop_uid = (int)$postInfo['post_user']; $loop_uid = (int)$postInfo['post_user'];
$i++; $i++;
/* //TODO: Look into fixing this, to limit to a single query per pageload
if (!$postInfo['user_name']) $e_hide_query = "SELECT post_id FROM `#forum_post` WHERE (`post_thread` = {$threadId} AND post_user= ".USERID.' LIMIT 1';
{
// guest
$tmp = explode(chr(1), $post_info['thread_anon']);
$ip = $tmp[1];
$host = $e107->get_host_name($ip);
$post_info['iphost'] = "<div class='smalltext' style='text-align:right'>IP: <a href='".e_ADMIN."userinfo.php?$ip'>$ip ( $host )</a></div>";
$post_info['anon'] = false;
}
else
{
$post_info['anon'] = FALSE;
}
*/
$e_hide_query = "SELECT thread_id FROM #forum_t WHERE (`thread_parent` = {$thread_id} OR `thread_id` = {$thread_id}) AND SUBSTRING_INDEX(thread_user,'.',1) = ".USERID;
$e_hide_hidden = FORLAN_HIDDEN; $e_hide_hidden = FORLAN_HIDDEN;
$e_hide_allowed = USER; $e_hide_allowed = USER;
@@ -387,11 +227,11 @@ foreach($postList as $postInfo)
} }
unset($loop_uid); unset($loop_uid);
if (((check_class($forum_info['forum_postclass']) && check_class($forum_info['parent_postclass'])) || MODERATOR) && $thread_info['head']['thread_active'] ) if($forum->checkPerm($threadInfo['thread_forum_id'], 'post') && $threadInfo['thread_active'])
{ {
if (!$forum_quickreply) if (!$forum_quickreply)
{ {
$QUICKREPLY = "<form action='".e_PLUGIN."forum/forum_post.php?rp.".e_QUERY."' method='post'>\n<p>\n".LAN_393.":<br /><textarea cols='60' rows='4' class='tbox' name='post' onselect='storeCaret(this);' onclick='storeCaret(this);' onkeyup='storeCaret(this);'></textarea><br /><input type='submit' name='fpreview' value='".LAN_394."' class='button' /> &nbsp;\n<input type='submit' name='reply' value='".LAN_395."' class='button' />\n<input type='hidden' name='thread_id' value='$thread_parent' />\n</p>\n</form>"; $QUICKREPLY = "<form action='".$e107->url->getUrl('forum', 'thread', array('func' => 'rp', 'id' => $threadId))."' method='post'>\n<p>\n".LAN_393.":<br /><textarea cols='60' rows='4' class='tbox' name='post' onselect='storeCaret(this);' onclick='storeCaret(this);' onkeyup='storeCaret(this);'></textarea><br /><input type='submit' name='fpreview' value='".LAN_394."' class='button' /> &nbsp;\n<input type='submit' name='reply' value='".LAN_395."' class='button' />\n<input type='hidden' name='thread_id' value='$thread_parent' />\n</p>\n</form>";
} }
else else
{ {
@@ -403,8 +243,10 @@ $forend = preg_replace("/\{(.*?)\}/e", '$\1', $FORUMEND);
$forumstring = $forstr.$forthr.$forrep.$forend; $forumstring = $forstr.$forthr.$forrep.$forend;
if ($thread_info['head']['thread_lastpost'] > USERLV && (strpos(USERVIEWED, ".{$thread_info['head']['thread_id']}.") === FALSE)) { //If last post came after USERLV and not yet marked as read, mark the thread id as read
$tst = $forum->thread_markasread($thread_info['head']['thread_id']); if ($threadInfo['thread_lastpost'] > USERLV && (strpos($currentUser['user_plugin_forum_viewed'], '.'.$threadId.'.') === false))
{
$tst = $forum->threadMarkAsRead($threadId);
} }
if ($pref['forum_enclose']) if ($pref['forum_enclose'])
@@ -561,4 +403,138 @@ function rpg($user_join, $user_forums)
return $rpg_info; return $rpg_info;
} }
function processFunction()
{
if($topic_from === 'post')
{
if($thread_id)
{
$post_num = $forum->thread_postnum($thread_id);
$pages = ceil(($post_num['post_num']+1)/$pref['forum_postspage']);
$topic_from = ($pages-1) * $pref['forum_postspage'];
if($post_num['parent'] != $thread_id)
{
header("location: ".e_SELF."?{$post_num['parent']}.{$topic_from}#post_{$thread_id}");
exit;
}
}
else
{
header('Location:'.$e107->url->getUrl('forum', 'forum', array('func' => 'main')));
exit;
}
}
if ($action == 'track' && USER)
{
$forum->track($thread_id);
header("location:".e_SELF."?{$thread_id}.{$topic_from}");
exit;
}
if ($action == 'untrack' && USER)
{
$forum->untrack($thread_id);
header("location:".e_SELF."?{$thread_id}.{$topic_from}");
exit;
}
if ($action == 'next')
{
$next = $forum->thread_getnext($thread_id, $topic_from);
if ($next)
{
header("location:".e_SELF."?{$next}");
exit;
}
else
{
require_once(HEADERF);
$ns->tablerender('', LAN_405, array('forum_viewtopic', '405'));
require_once(FOOTERF);
exit;
}
}
if ($action == 'prev')
{
$prev = $forum->thread_getprev($thread_id, $topic_from);
if ($prev)
{
header("location:".e_SELF."?{$prev}");
exit;
}
else
{
require_once(HEADERF);
$ns->tablerender('', LAN_404, array('forum_viewtopic', '404'));
require_once(FOOTERF);
exit;
}
}
if ($action == 'report')
{
$thread_info = $forum->thread_get_postinfo($thread_id, TRUE);
if (isset($_POST['report_thread']))
{
$report_add = $tp -> toDB($_POST['report_add']);
if ($pref['reported_post_email'])
{
require_once(e_HANDLER."mail.php");
$report = LAN_422.SITENAME." : ".(substr(SITEURL, -1) == "/" ? SITEURL : SITEURL."/").$PLUGINS_DIRECTORY."forum/forum_viewtopic.php?".$thread_id.".post\n".LAN_425.USERNAME."\n".$report_add;
$subject = LAN_421." ".SITENAME;
sendemail(SITEADMINEMAIL, $subject, $report);
}
$sql->db_Insert('generic', "0, 'reported_post', ".time().", '".USERID."', '{$thread_info['head']['thread_name']}', ".intval($thread_id).", '{$report_add}'");
define("e_PAGETITLE", LAN_01." / ".LAN_428);
require_once(HEADERF);
$text = LAN_424."<br /><br /><a href='forum_viewtopic.php?".$thread_id.".post'>".LAN_429."</a";
$ns->tablerender(LAN_414, $text, array('forum_viewtopic', 'report'));
}
else
{
$thread_name = $tp -> toHTML($thread_info['head']['thread_name'], TRUE, 'no_hook, emotes_off');
define("e_PAGETITLE", LAN_01." / ".LAN_426." ".$thread_name);
require_once(HEADERF);
$text = "<form action='".e_PLUGIN."forum/forum_viewtopic.php?".e_QUERY."' method='post'> <table style='width:100%'>
<tr>
<td style='width:50%' >
".LAN_415.": ".$thread_name." <a href='".e_PLUGIN."forum/forum_viewtopic.php?".$thread_id.".post'><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>
<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 />
<input class='button' type='submit' name='report_thread' value='".LAN_419."' />
</td>
</tr>
</table>";
$ns->tablerender(LAN_414, $text, array('forum_viewtopic', 'report2'));
}
require_once(FOOTERF);
exit;
}
if ($topic_from === 'last')
{
$pref['forum_postspage'] = ($pref['forum_postspage'] ? $pref['forum_postspage'] : 10);
$pages = ceil(($threadInfo['thread_total_replies']+1)/$pref['forum_postspage']);
$topic_from = ($pages-1) * $pref['forum_postspage'];
}
}
?> ?>

View File

@@ -29,11 +29,11 @@
<pref name="forum_hilightsticky" value="1" /> <pref name="forum_hilightsticky" value="1" />
</mainPrefs> </mainPrefs>
<userclass name="forum_moderator" description="Moderator of all forums" /> <userclass name="forum_moderator" description="Moderator of all forums" />
<extendedField name="viewed" type='EUF_INTEGER' default='0' active="true" /> <extendedField name="viewed" type='EUF_TEXTAREA' default='0' active="true" />
<extendedField name="posts" type='EUF_INTEGER' default='0' active="true" /> <extendedField name="posts" type='EUF_INTEGER' default='0' active="true" />
<management> <management>
<install when="post" type="classFunction" file="forum_management.php" class="forum_management" function="forum_install_post" /> <install when="post" type="classFunction" file="forum_management.php" class="forum_management" function="forum_install_post" />
<uninstall type="classFunction" file="forum_management.php" class="forum_management" function="forum_uninstall" /> <uninstall type="classFunction" file="forum_management.php" class="forum_management" function="forum_uninstall" />
<upgrade type="classFunction" file="forum_management.php" class="forum_management" function="forum_upgrade" /> <upgrade type="classFunction" file="forum_management.php" class="forum_management" function="forum_upgrade" />
</management> </management>
</e107Plugin> </e107Plugin>

View File

@@ -9,8 +9,8 @@
* View specific forums * View specific forums
* *
* $Source: /cvs_backup/e107_0.8/e107_plugins/forum/viewforum.php,v $ * $Source: /cvs_backup/e107_0.8/e107_plugins/forum/viewforum.php,v $
* $Revision: 1.4 $ * $Revision: 1.5 $
* $Date: 2008-12-01 01:10:50 $ * $Date: 2008-12-02 21:34:18 $
* $Author: mcfly_e107 $ * $Author: mcfly_e107 $
* *
*/ */
@@ -31,7 +31,7 @@ if (!e_QUERY)
} }
$view = 25; $view = 25;
$thread_from = (isset($_REQUEST['p']) ? $_REQUEST['p'] * $view : 0); $threadFrom = (isset($_REQUEST['p']) ? $_REQUEST['p'] * $view : 0);
/* /*
else else
@@ -58,15 +58,15 @@ $VIEWTITLE = LAN_56;
global $forum_info, $FORUM_CRUMB; global $forum_info, $FORUM_CRUMB;
$forum_id = (int)$_REQUEST['id']; $forumId = (int)$_REQUEST['id'];
if (!$forum->checkPerm($forum_id, 'view')) if (!$forum->checkPerm($forumId, 'view'))
{ {
header("Location:".$e107->url->getUrl('forum', 'forum', array('func' => 'main'))); header("Location:".$e107->url->getUrl('forum', 'forum', array('func' => 'main')));
exit; exit;
} }
$forum_info = $forum->forum_get($forum_id); $forumInfo = $forum->forum_get($forumId);
if (!$FORUM_VIEW_START) { if (!$FORUM_VIEW_START) {
if (file_exists(THEME.'forum_viewforum_template.php')) if (file_exists(THEME.'forum_viewforum_template.php'))
@@ -83,10 +83,10 @@ if (!$FORUM_VIEW_START) {
} }
} }
$forum_info['forum_name'] = $e107->tp->toHTML($forum_info['forum_name'], true, 'no_hook, emotes_off'); $forumInfo['forum_name'] = $e107->tp->toHTML($forumInfo['forum_name'], true, 'no_hook, emotes_off');
$forum_info['forum_description'] = $e107->tp->toHTML($forum_info['forum_description'], true, 'no_hook'); $forumInfo['forum_description'] = $e107->tp->toHTML($forumInfo['forum_description'], true, 'no_hook');
$_forum_name = (substr($forum_info['forum_name'], 0, 1) == '*' ? substr($forum_info['forum_name'], 1) : $forum_info['forum_name']); $_forum_name = (substr($forumInfo['forum_name'], 0, 1) == '*' ? substr($forumInfo['forum_name'], 1) : $forumInfo['forum_name']);
define('e_PAGETITLE', LAN_01.' / '.$_forum_name); define('e_PAGETITLE', LAN_01.' / '.$_forum_name);
define('MODERATOR', $forum_info['forum_moderators'] != '' && check_class($forum_info['forum_moderators'])); define('MODERATOR', $forum_info['forum_moderators'] != '' && check_class($forum_info['forum_moderators']));
$modArray = $forum->forum_getmods($forum_info['forum_moderators']); $modArray = $forum->forum_getmods($forum_info['forum_moderators']);
@@ -102,8 +102,8 @@ if (MODERATOR)
if(varset($pref['track_online'])) if(varset($pref['track_online']))
{ {
$member_users = $sql->db_Count('online', '(*)', "WHERE online_location REGEXP('viewforum.php.id=$forum_id\$') AND online_user_id != 0"); $member_users = $sql->db_Count('online', '(*)', "WHERE online_location REGEXP('viewforum.php.id=$forumId\$') AND online_user_id != 0");
$guest_users = $sql->db_Count('online', '(*)', "WHERE online_location REGEXP('viewforum.php.id=$forum_id\$') AND online_user_id = 0"); $guest_users = $sql->db_Count('online', '(*)', "WHERE online_location REGEXP('viewforum.php.id=$forumId\$') AND online_user_id = 0");
$users = $member_users+$guest_users; $users = $member_users+$guest_users;
} }
@@ -114,32 +114,34 @@ if ($message)
$ns->tablerender('', $message, array('forum_viewforum', 'msg')); $ns->tablerender('', $message, array('forum_viewforum', 'msg'));
} }
$topics = $forum->forum_get_topic_count($forum_id); $threadCount = $forumInfo['forum_threads'];
if ($topics > $view)
if ($threadCount > $view)
{ {
$pages = ceil($topics/$view); $pages = ceil($threadCount/$view);
} }
else else
{ {
$pages = false; $pages = false;
} }
//echo "pages = $pages <br />";
if ($pages) if ($pages)
{ {
if(strpos($FORUM_VIEW_START, 'THREADPAGES') !== FALSE || strpos($FORUM_VIEW_END, 'THREADPAGES') !== FALSE) if(strpos($FORUM_VIEW_START, 'THREADPAGES') !== false || strpos($FORUM_VIEW_END, 'THREADPAGES') !== false)
{ {
$parms = "{$topics},{$view},{$thread_from},".e_SELF.'?'.$forum_id.'.[FROM],off'; $parms = "{$threadCount},{$view},{$threadFrom},".e_SELF.'?'.$forumId.'.[FROM],off';
$THREADPAGES = $tp->parseTemplate("{NEXTPREV={$parms}}"); $THREADPAGES = $tp->parseTemplate("{NEXTPREV={$parms}}");
} }
} }
if($forum->checkPerm($forum_id, 'post')) if($forum->checkPerm($forumId, 'post'))
{ {
$NEWTHREADBUTTON = "<a href='".$e107->url->getUrl('forum', 'thread', array('func' => 'nt', 'id' => $forum_id))."'>".IMAGE_newthread.'</a>'; $NEWTHREADBUTTON = "<a href='".$e107->url->getUrl('forum', 'thread', array('func' => 'nt', 'id' => $forumId))."'>".IMAGE_newthread.'</a>';
} }
if(substr($forum_info['forum_name'], 0, 1) == '*') if(substr($forumInfo['forum_name'], 0, 1) == '*')
{ {
$forum_info['forum_name'] = substr($forum_info['forum_name'], 1); $forum_info['forum_name'] = substr($forum_info['forum_name'], 1);
$container_only = true; $container_only = true;
@@ -200,7 +202,7 @@ $SEARCH = "
</p> </p>
</form>"; </form>";
if($forum->checkPerm($forum_id, 'post')) if($forum->checkPerm($forumId, 'post'))
{ {
$PERMS = LAN_204.' - '.LAN_206.' - '.LAN_208; $PERMS = LAN_204.' - '.LAN_206.' - '.LAN_208;
} }
@@ -214,8 +216,8 @@ $stuck = false;
$reg_threads = 0; $reg_threads = 0;
$unstuck = false; $unstuck = false;
$thread_list = $forum->forum_get_topics($forum_id, $thread_from, $view); $threadList = $forum->forumGetThreads($forumId, $threadFrom, $view);
$sub_list = $forum->forum_getsubs($forum_id); $subList = $forum->forum_getsubs($forum_id);
//print_a($sub_list); //print_a($sub_list);
$gen = new convert; $gen = new convert;
@@ -231,14 +233,14 @@ if(is_array($sub_list))
$SUBFORUMS = $FORUM_VIEW_SUB_START.$sub_info.$FORUM_VIEW_SUB_END; $SUBFORUMS = $FORUM_VIEW_SUB_START.$sub_info.$FORUM_VIEW_SUB_END;
} }
if (count($thread_list) ) if (count($threadList) )
{ {
foreach($thread_list as $thread_info) foreach($threadList as $thread_info)
{ {
$idArray[] = $thread_info['thread_id']; $idArray[] = $thread_info['thread_id'];
} }
$inList = '('.implode(',', $idArray).')'; $inList = '('.implode(',', $idArray).')';
foreach($thread_list as $thread_info) foreach($threadList as $thread_info)
{ {
if ($thread_info['thread_s']) if ($thread_info['thread_s'])
{ {