1
0
mirror of https://github.com/e107inc/e107.git synced 2025-01-17 20:58:30 +01:00

More forum problems fixed (stats, some outdated sql queries), more to do

This commit is contained in:
secretr 2011-04-25 14:13:45 +00:00
parent 1a562f6fa2
commit 5204861279
6 changed files with 115 additions and 41 deletions

View File

@ -2,10 +2,11 @@
// $Id$
function url_forum_forum($parms)
{
$amp = isset($parms['raw']) ? '&' : '&';
switch($parms['func'])
{
case 'view':
$page = (varset($parms['page']) ? '&p='.$parms['page'] : '');
$page = (varset($parms['page']) ? $amp.'p='.$parms['page'] : '');
return e_PLUGIN_ABS."forum/forum_viewforum.php?id={$parms['id']}{$page}";
break;
@ -26,7 +27,7 @@ function url_forum_forum($parms)
break;
case 'mfar':
return e_PLUGIN_ABS.'forum/forum.php?f=mfar&id='.$parms['id'];
return e_PLUGIN_ABS.'forum/forum.php?f=mfar'.$amp.'id='.$parms['id'];
break;
}

View File

@ -2,69 +2,70 @@
// $Id$
function url_forum_thread($parms)
{
$amp = isset($parms['raw']) ? '&' : '&';
switch($parms['func'])
{
case 'nt':
return e_PLUGIN_ABS."forum/forum_post.php?f=nt&id={$parms['id']}";
return e_PLUGIN_ABS."forum/forum_post.php?f=nt{$amp}id={$parms['id']}";
break;
case 'rp':
return e_PLUGIN_ABS."forum/forum_post.php?f=rp&id={$parms['id']}";
return e_PLUGIN_ABS."forum/forum_post.php?f=rp{$amp}id={$parms['id']}";
break;
case 'view':
$page = (varset($parms['page']) ? '&p='.$parms['page'] : '');
$page = (varset($parms['page']) ? $amp.'p='.$parms['page'] : '');
return e_PLUGIN_ABS."forum/forum_viewtopic.php?id={$parms['id']}{$page}";
break;
case 'last':
return e_PLUGIN_ABS."forum/forum_viewtopic.php?id={$parms['id']}&last=1";
return e_PLUGIN_ABS."forum/forum_viewtopic.php?id={$parms['id']}{$amp}last=1";
break;
case 'post':
return e_PLUGIN_ABS."forum/forum_viewtopic.php?f=post&id={$parms['id']}";
return e_PLUGIN_ABS."forum/forum_viewtopic.php?f=post{$amp}id={$parms['id']}";
break;
case 'report':
$page = (isset($parms['page']) ? (int)$parms['page'] : 0 );
return e_PLUGIN_ABS."forum/forum_viewtopic.php?f=report&id={$parms['id']}&post={$parms['post']}&p={$page}";
return e_PLUGIN_ABS."forum/forum_viewtopic.php?f=report{$amp}id={$parms['id']}{$amp}post={$parms['post']}{$amp}p={$page}";
break;
case 'edit':
return e_PLUGIN_ABS."forum/forum_post.php?f=edit&id={$parms['id']}";
return e_PLUGIN_ABS."forum/forum_post.php?f=edit{$amp}id={$parms['id']}";
break;
case 'move':
return e_PLUGIN_ABS."forum/forum_conf.php?f=move&id={$parms['id']}";
return e_PLUGIN_ABS."forum/forum_conf.php?f=move{$amp}id={$parms['id']}";
break;
case 'split':
return e_PLUGIN_ABS."forum/forum_conf.php?f=split&id={$parms['id']}";
return e_PLUGIN_ABS."forum/forum_conf.php?f=split{$amp}id={$parms['id']}";
break;
case 'quote':
return e_PLUGIN_ABS."forum/forum_post.php?f=quote&id={$parms['id']}";
return e_PLUGIN_ABS."forum/forum_post.php?f=quote{$amp}id={$parms['id']}";
break;
case 'next':
return e_PLUGIN_ABS."forum/forum_viewtopic.php?f=next&id={$parms['id']}";
return e_PLUGIN_ABS."forum/forum_viewtopic.php?f=next{$amp}id={$parms['id']}";
break;
case 'prev':
return e_PLUGIN_ABS."forum/forum_viewtopic.php?f=prev&id={$parms['id']}";
return e_PLUGIN_ABS."forum/forum_viewtopic.php?f=prev{$amp}id={$parms['id']}";
break;
case 'track':
return e_PLUGIN_ABS."forum/forum_viewtopic.php?f=track&id={$parms['id']}";
return e_PLUGIN_ABS."forum/forum_viewtopic.php?f=track{$amp}id={$parms['id']}";
break;
case 'untrack':
return e_PLUGIN_ABS."forum/forum_viewtopic.php?f=untrack&id={$parms['id']}";
return e_PLUGIN_ABS."forum/forum_viewtopic.php?f=untrack{$amp}id={$parms['id']}";
break;
case 'track_toggle':
return e_PLUGIN_ABS."forum/forum_viewtopic.php?f=track_toggle&id={$parms['id']}";
return e_PLUGIN_ABS."forum/forum_viewtopic.php?f=track_toggle{$amp}id={$parms['id']}";
break;
}

View File

@ -17,7 +17,7 @@ if(!defined('e107_INIT'))
require_once('../../class2.php');
}
$e107 = e107::getInstance();
if (!$e107->isInstalled('forum'))
if (!$e107->isInstalled('forum'))
{
header('Location: '.e_BASE.'index.php');
exit;
@ -86,8 +86,8 @@ if($rules_text != '')
{
$fVars->USERINFO .= " | <a href='".$e107->url->getUrl('forum', 'forum', "func=rules")."'>".LAN_433.'</a>';
}
$total_topics = $sql->db_Count("forum_t", "(*)", " WHERE thread_parent='0' ");
$total_replies = $sql->db_Count("forum_t", "(*)", " WHERE thread_parent!='0' ");
$total_topics = $sql->db_Count("forum_thread", "(*)");
$total_replies = $sql->db_Count("forum_post", "(*)");
$total_members = $sql->db_Count("user");
$newest_member = $sql->db_Select("user", "*", "user_ban='0' ORDER BY user_join DESC LIMIT 0,1");
list($nuser_id, $nuser_name) = $sql->db_Fetch();
@ -136,7 +136,7 @@ $fVars->PERMS = (USER == TRUE || ANON == TRUE ? LAN_204." - ".LAN_206." - ".LAN_
$fVars->INFO = "";
if (USER == TRUE)
{
$total_new_threads = $sql->db_Count('forum_t', '(*)', "WHERE thread_datestamp>'".USERLV."' ");
$total_new_threads = $sql->db_Count('forum_thread', '(*)', "WHERE thread_datestamp>'".USERLV."' ");
if (USERVIEWED != "")
{
$tmp = explode(".", USERVIEWED); // List of numbers, separated by single period

View File

@ -20,7 +20,7 @@ $ns = e107::getRender();
if (!$e107->isInstalled('forum'))
{
header('Location: '.e_BASE.'index.php');
header('Location: '.SITEURL.'index.php');
exit;
}
@ -28,7 +28,7 @@ include_lan(e_PLUGIN.'forum/languages/'.e_LANGUAGE.'/lan_forum_post.php');
if (isset($_POST['fjsubmit']))
{
header('location:'.$e107->url->getUrl('forum', 'thread', array('func' => 'view', 'id'=>$_POST['forumjump'])));
header('Location:'.$e107->url->getUrl('forum', 'thread', array('func' => 'view', 'id'=>$_POST['forumjump'], 'raw' => true)));
exit;
}
@ -37,7 +37,7 @@ $forum = new e107forum();
if (!e_QUERY || !isset($_GET['id']))
{
header('Location:'.$e107->url->getUrl('forum', 'forum', array('func' => 'main')));
header('Location:'.$e107->url->getUrl('forum', 'forum', array('func' => 'main', 'raw' => true)));
exit;
}
@ -66,7 +66,7 @@ switch($action)
break;
default:
header("Location:".$e107->url->getUrl('forum', 'forum', array('func' => 'main')));
header("Location:".$e107->url->getUrl('forum', 'forum', array('func' => 'main', 'raw' => true)));
exit;
}
@ -332,7 +332,7 @@ if (isset($_POST['newthread']) || isset($_POST['reply']))
$forumLink = $e107->url->getUrl('forum', 'forum', array('func' => 'view', 'id' => $forumId));
if ($forum->prefs->get('redirect'))
{
header('location:'.$threadLink);
header('location:'.$e107->url->getUrl('forum', 'thread', array('func' => 'last', 'id' => $threadId, 'raw' => true)));
exit;
}
else

View File

@ -13,8 +13,11 @@
*/
require_once('../../class2.php');
$e107 = e107::getInstance();
if (!$e107->isInstalled('forum'))
$sql = e107::getDb();
if (!$e107->isInstalled('forum'))
{
header('Location: '.e_BASE.'index.php');
exit;
@ -68,36 +71,98 @@ foreach($array as $table)
}
$query = "
SELECT ft.thread_id, ft.thread_user, ft.thread_name, ft.thread_total_replies, ft.thread_datestamp, f.forum_class, u.user_name, u.user_id FROM #forum_t as ft
LEFT JOIN #user AS u ON SUBSTRING_INDEX(ft.thread_user,'.',1) = u.user_id
SELECT ft.thread_id, ft.thread_user, ft.thread_name, ft.thread_total_replies, ft.thread_datestamp, f.forum_class, u.user_name, u.user_id FROM #forum_thread as ft
LEFT JOIN #user AS u ON ft.thread_user = u.user_id
LEFT JOIN #forum AS f ON f.forum_id = ft.thread_forum_id
WHERE ft.thread_parent = 0
AND ft.thread_active != 0
WHERE ft.thread_active > 0
AND f.forum_class IN (".USERCLASS_LIST.")
ORDER BY thread_total_replies DESC LIMIT 0,10";
ORDER BY ft.thread_total_replies DESC LIMIT 0,10";
$sql -> db_Select_gen($query);
$most_activeArray = $sql -> db_getList();
$query = "
SELECT ft.*, f.forum_class, u.user_name, u.user_id FROM #forum_t as ft
LEFT JOIN #user AS u ON SUBSTRING_INDEX(ft.thread_user,'.',1) = u.user_id
SELECT ft.*, f.forum_class, u.user_name, u.user_id FROM #forum_thread as ft
LEFT JOIN #user AS u ON ft.thread_user = u.user_id
LEFT JOIN #forum AS f ON f.forum_id = ft.thread_forum_id
WHERE ft.thread_parent=0
AND f.forum_class IN (".USERCLASS_LIST.")
ORDER BY thread_views DESC LIMIT 0,10";
WHERE f.forum_class IN (".USERCLASS_LIST.")
ORDER BY ft.thread_views DESC LIMIT 0,10";
$sql -> db_Select_gen($query);
$most_viewedArray = $sql -> db_getList();
$sql->db_Select("user", "user_id, user_name, user_forums", "ORDER BY user_forums DESC LIMIT 0, 10", "no_where");
/*$sql->db_Select("user", "user_id, user_name, user_forums", "ORDER BY user_forums DESC LIMIT 0, 10", "no_where");
$posters = $sql -> db_getList();
$top_posters = array();
foreach($posters as $poster)
{
$percen = round(($poster['user_forums'] / $total_posts) * 100, 2);
$top_posters[] = array("user_id" => $poster['user_id'], "user_name" => $poster['user_name'], "user_forums" => $poster['user_forums'], "percentage" => $percen);
}*/
// get all replies
$query = "
SELECT COUNT(fp.post_id) AS post_count, u.user_name, u.user_id, fp.post_thread FROM #forum_post as fp
LEFT JOIN #user AS u ON fp.post_user = u.user_id
GROUP BY fp.post_user
ORDER BY post_count DESC LIMIT 0,10";
$sql -> db_Select_gen($query);
$top_repliers_data = $sql -> db_getList('ALL', false, false, 'user_id');
// build top posters meanwhile
$top_posters = array();
foreach($top_repliers_data as $poster)
{
$percent = round(($poster['post_count'] / $total_posts) * 100, 2);
$top_posters[] = array("user_id" => $poster['user_id'], "user_name" => $poster['user_name'], "user_forums" => $poster['post_count'], "percentage" => $percent);
}
// end build top posters
$ids = implode(',', array_keys($top_repliers_data));
// find topics by top 10 users
$query = "
SELECT COUNT(ft.thread_id) AS thread_count, u.user_id FROM #forum_thread as ft
LEFT JOIN #user AS u ON ft.thread_user = u.user_id
WHERE u.user_id IN ({$ids})
GROUP BY ft.thread_user";
$sql -> db_Select_gen($query);
$top_repliers_data_c = $sql -> db_getList('ALL', false, false, 'user_id');
$top_repliers = array();
foreach($top_repliers_data as $uid => $poster)
{
$poster['post_count'] = $poster['post_count'] - $top_repliers_data_c[$uid]['thread_count'];
$percent = round(($poster['post_count'] / $total_replies) * 100, 2);
$top_repliers_sort[$uid] = $poster['post_count'];
//$top_repliers[$uid] = $poster;
$top_repliers_data[$uid]['user_forums'] = $poster['post_count'];
$top_repliers_data[$uid]['percentage'] = $percent;
//$top_repliers_data[$uid] = array("user_id" => $poster['user_id'], "user_name" => $poster['user_name'], "user_forums" => $poster['post_count'], "percentage" => $percent);
}
// sort
arsort($top_repliers_sort, SORT_NUMERIC);
// build top repliers
foreach ($top_repliers_sort as $uid => $c)
{
$top_repliers[] = $top_repliers_data[$uid];
}
// get all replies
$query = "
SELECT COUNT(ft.thread_id) AS thread_count, u.user_name, u.user_id FROM #forum_thread as ft
LEFT JOIN #user AS u ON ft.thread_user = u.user_id
GROUP BY ft.thread_user
ORDER BY thread_count DESC LIMIT 0,10";
$sql -> db_Select_gen($query);
$top_topic_starters_data = $sql -> db_getList();
$top_topic_starters = array();
foreach($top_topic_starters_data as $poster)
{
$percent = round(($poster['thread_count'] / $total_topics) * 100, 2);
$top_topic_starters[] = array("user_id" => $poster['user_id'], "user_name" => $poster['user_name'], "user_forums" => $poster['thread_count'], "percentage" => $percent);
}
/*
$query = "
SELECT SUBSTRING_INDEX(thread_user,'.',1) AS t_user, COUNT(SUBSTRING_INDEX(ft.thread_user,'.',1)) AS ucount, u.user_name, u.user_id FROM #forum_t as ft
LEFT JOIN #user AS u ON SUBSTRING_INDEX(ft.thread_user,'.',1) = u.user_id
@ -112,8 +177,9 @@ foreach($posters as $poster)
{
$percen = round(($poster['ucount'] / $total_topics) * 100, 2);
$top_topic_starters[] = array("user_id" => $poster['user_id'], "user_name" => $poster['user_name'], "user_forums" => $poster['ucount'], "percentage" => $percen);
}
}*/
/*
$query = "
SELECT SUBSTRING_INDEX(thread_user,'.',1) AS t_user, COUNT(SUBSTRING_INDEX(ft.thread_user,'.',1)) AS ucount, u.user_name, u.user_id FROM #forum_t as ft
LEFT JOIN #user AS u ON SUBSTRING_INDEX(ft.thread_user,'.',1) = u.user_id
@ -130,7 +196,7 @@ foreach($posters as $poster)
$percen = round(($poster['ucount'] / $total_replies) * 100, 2);
$top_repliers[] = array("user_id" => $poster['user_id'], "user_name" => $poster['user_name'], "user_forums" => $poster['ucount'], "percentage" => $percen);
}
*/
$text = "

View File

@ -46,6 +46,11 @@ include_once(e_PLUGIN . 'forum/templates/forum_icons_template.php');
$forum = new e107forum();
$thread = new e107ForumThread();
if (isset($_GET['last']))
{
$_GET['f'] = 'last';
}
if(isset($_GET['f']) && $_GET['f'] == 'post')
{
$thread->processFunction();
@ -523,6 +528,7 @@ class e107ForumThread
{
global $forum, $thread;
$e107 = e107::getInstance();
if (!isset($_GET['f']))
{
return;
@ -543,7 +549,7 @@ class e107ForumThread
case 'last':
$pages = ceil(($thread->threadInfo['thread_total_replies'] + 1) / $thread->perPage);
$thread->page = ($pages - 1);
$thread->page = ($pages);
break;
case 'next':