count('forum_post'); $total_topics = $sql->count('forum_thread'); $total_replies = $total_posts - $total_topics; $total_views = 0; $query = 'SELECT sum(thread_views) AS total FROM `#forum_thread` '; if ($sql->gen($query)) { $row = $sql->fetch(); $total_views = $row['total']; } $firstpost = $sql->select('forum_post', 'post_datestamp', 'post_datestamp > 0 ORDER BY post_datestamp ASC LIMIT 0,1', 'default'); $fp = $sql->fetch(); $open_ds = $fp['post_datestamp']; $open_date = $gen->convert_date($open_ds, 'long'); $open_since = $gen -> computeLapse($open_ds); $open_days = floor((time()-$open_ds) / 86400); $postsperday = ($open_days < 1 ? $total_posts : round($total_posts / $open_days)); global $mySQLdefaultdb; $query = "SHOW TABLE STATUS FROM `{$mySQLdefaultdb}`"; $sql->gen($query); $array = $sql -> db_getList(); foreach($array as $table) { if($table['Name'] == MPREFIX.'forum_post') { $db_size = eHelper::parseMemorySize($table['Data_length']); $avg_row_len = eHelper::parseMemorySize($table['Avg_row_length']); break; } } $query = " SELECT ft.thread_id, ft.thread_user, ft.thread_name, ft.thread_total_replies, ft.thread_datestamp, f.forum_sef, 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_active > 0 AND f.forum_class IN (".USERCLASS_LIST.") ORDER BY ft.thread_total_replies DESC LIMIT 0,10"; $sql->gen($query); $most_activeArray = $sql->db_getList(); $query = " SELECT ft.*, f.forum_class, f.forum_sef, 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 f.forum_class IN (".USERCLASS_LIST.") ORDER BY ft.thread_views DESC LIMIT 0,10"; $sql->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"); $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->gen($query); // $top_repliers_data = $sql->db_getList('ALL', false, false, 'user_id'); $top_repliers_data = $sql->retrieve($query,true); // build top posters meanwhile $top_posters = array(); $topReplier = array(); foreach($top_repliers_data as $poster) { $percent = round(($poster['post_count'] / $total_posts) * 100, 2); $topReplier[] = intval($poster['user_id']); $top_posters[] = array("user_id" => $poster['user_id'], "user_name" => vartrue($poster['user_name'],LAN_ANONYMOUS), "user_forums" => $poster['post_count'], "percentage" => $percent); } // end build top posters $ids = implode(',', $topReplier); // 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->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->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" => vartrue($poster['user_name'],LAN_ANONYMOUS), "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 WHERE ft.thread_parent=0 GROUP BY t_user ORDER BY ucount DESC LIMIT 0,10"; $sql -> db_Select_gen($query); $posters = $sql -> db_getList(); $top_topic_starters = array(); 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 WHERE ft.thread_parent!=0 GROUP BY t_user ORDER BY ucount DESC LIMIT 0,10"; $sql -> db_Select_gen($query); $posters = $sql -> db_getList(); $top_repliers = array(); 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_0 = "
".LAN_FORUM_6001.":  {$open_date}
".LAN_FORUM_6002.":  {$open_since}
".LAN_FORUM_6003.":  {$total_posts}
".LAN_FORUM_1007.":  {$total_topics}
".LAN_FORUM_6004.":  {$total_replies}
".LAN_FORUM_6005.":  {$total_views}
".LAN_FORUM_6014.":  {$postsperday}
".LAN_FORUM_6006.":  {$db_size}
".LAN_FORUM_6007.":  {$avg_row_len}
"; $text_1 = " "; $count=1; foreach($most_activeArray as $ma) { if($ma['user_name']) { //$uinfo = "{$ma['user_name']}"; //TODO SEf Url . $uparams = array('id' => $ma['user_id'], 'name' => $ma['user_name']); $link = e107::getUrl()->create('user/profile/view', $uparams); $uinfo = "".$ma['user_name'].""; } else { $tmp = explode(chr(1), $ma['thread_anon']); $uinfo = $tp->toHTML($tmp[0]); } $ma['thread_sef'] = eHelper::title2sef($ma['thread_name'],'dashl'); $url = e107::url('forum','topic', $ma); $text_1 .= " "; $count++; } $text_1 .= "
".LAN_FORUM_6008." ".LAN_FORUM_1003." ".LAN_FORUM_0003." ".LAN_FORUM_6009." ".LAN_DATE."
$count {$ma['thread_name']} {$ma['thread_total_replies']} {$uinfo} ".$gen->convert_date($ma['thread_datestamp'], "forum")."
"; $text_2 = " "; $count=1; foreach($most_viewedArray as $ma) { if($ma['user_name']) { //$uinfo = "".$ma['user_name'].""; //TODO SEf Url . $uparams = array('id' => $ma['user_id'], 'name' => $ma['user_name']); $link = e107::getUrl()->create('user/profile/view', $uparams); $uinfo = "".$ma['user_name'].""; } else { $tmp = explode(chr(1), $ma['thread_anon']); $uinfo = $tp->toHTML($tmp[0]); } $ma['thread_sef'] = eHelper::title2sef($ma['thread_name'],'dashl'); $url = e107::url('forum','topic', $ma); $text_2 .= " "; $count++; } $text_2 .= "
".LAN_FORUM_6008." ".LAN_FORUM_1003." ".LAN_FORUM_1005." ".LAN_FORUM_6009." ".LAN_DATE."
$count ".$ma['thread_name']." ".$ma['thread_views']." ".$uinfo." ".$gen->convert_date($ma['thread_datestamp'], "forum")."
"; $text_3 = " "; $count=1; foreach($top_posters as $ma) { $text_3 .= " "; $count++; } $text_3 .= "
".LAN_FORUM_6008." ".LAN_NAME." ".LAN_FORUM_2032." %  
$count ".$ma['user_name']." ".$ma['user_forums']." ".$ma['percentage']."% ".$this->showBar($ma['percentage'])."
"; $text_4 = " "; $count=1; foreach($top_topic_starters as $ma) { $text_4 .= " "; $count++; } $text_4 .= "
".LAN_FORUM_6008." ".LAN_NAME." ".LAN_FORUM_2032." %  
$count ".$ma['user_name']." ".$ma['user_forums']." ".$ma['percentage']."% ".$this->showBar($ma['percentage'])."
"; $text_5 = " "; $count=1; foreach($top_repliers as $ma) { $text_5 .= " "; $count++; } $text_5 .= '
".LAN_FORUM_6008." ".LAN_NAME." ".LAN_FORUM_2032." %  
$count ".$ma['user_name']." ".$ma['user_forums']." ".$ma['percentage']."% ".$this->showBar($ma['percentage'])."
'; if(deftrue('BOOTSTRAP')) { $tabs = array(); $tabs[0] = array('caption'=>LAN_FORUM_6000, 'text'=>$text_0); $tabs[1] = array('caption'=>LAN_FORUM_0011, 'text'=>$text_1); $tabs[2] = array('caption'=>LAN_FORUM_6010, 'text'=>$text_2); $tabs[3] = array('caption'=>LAN_FORUM_0010, 'text'=>$text_3); $tabs[4] = array('caption'=>LAN_FORUM_6011, 'text'=>$text_4); $tabs[5] = array('caption'=>LAN_FORUM_6012, 'text'=>$text_5); $frm = e107::getForm(); $breadarray = array( array('text'=> e107::pref('forum','title', LAN_PLUGIN_FORUM_NAME), 'url' => e107::url('forum','index') ), array('text'=>LAN_FORUM_6013, 'url'=>null) ); $text = $frm->breadcrumb($breadarray); $text = "
". $text . e107::getForm()->tabs($tabs)."
"; } else { $text ="

".LAN_FORUM_6000."

". $text_0 . "

".LAN_FORUM_0011."

". $text_1 . "

".LAN_FORUM_6010."

". $text_2 . "

".LAN_FORUM_0010."

".$text_3 . "

".LAN_FORUM_6011."

". $text_4 . "

".LAN_FORUM_6012."

". $text_5; } $text .= "
".e107::getForm()->pagination(e107::url('forum','index'), LAN_BACK)."
"; $ns -> tablerender(LAN_FORUM_6013, $text); } function showBar($perc) { return e107::getForm()->progressBar('prog',$perc); } function topPosters() // from top.php - unused. { $pref = e107::pref('core'); $rank = e107::getRank(); $sql = e107::getDb(); $sql2 = e107::getDb('sql2'); $ns = e107::getRender(); $tp = e107::getParser(); define('IMAGE_rank_main_admin_image', ($pref['rank_main_admin_image'] && file_exists(THEME."forum/".$pref['rank_main_admin_image']) ? "" : "")); define('IMAGE_rank_admin_image', ($pref['rank_admin_image'] && file_exists(THEME."forum/".$pref['rank_admin_image']) ? "" : "")); define('IMAGE_rank_moderator_image', ($pref['rank_moderator_image'] && file_exists(THEME."forum/".$pref['rank_moderator_image']) ? "" : "")); if ($this->subaction == 'forum' || $this->subaction == 'all') { require_once (e_PLUGIN.'forum/forum_class.php'); $forum = new e107forum(); $qry = " SELECT ue.*, u.* FROM `#user_extended` AS ue LEFT JOIN `#user` AS u ON u.user_id = ue.user_extended_id WHERE ue.user_plugin_forum_posts > 0 ORDER BY ue.user_plugin_forum_posts DESC LIMIT {$this->from}, {$this->view} "; // $top_forum_posters = $sql->db_Select("user", "*", "`user_forums` > 0 ORDER BY user_forums DESC LIMIT ".$from.", ".$view.""); $text = "
\n"; $counter = 1 + $this->from; if ($sql2->gen($qry)) { while ($row = $sql2->fetch()) { //$ldata = get_level($row['user_id'], $row['user_plugin_forum_posts'], $row['user_comments'], $row['user_chats'], $row['user_visits'], $row['user_join'], $row['user_admin'], $row['user_perms'], $pref); $ldata = $rank->getRanks($row, (USER && $forum->isModerator(USERID))); if(vartrue($ldata['special'])) { $r = $ldata['special']; } else { $r = $ldata['pic'] ? $ldata['pic'] : defset($ldata['name'], $ldata['name']); } if(!$r) $r = 'n/a'; $text .= ""; $counter++; } } $text .= "
  ".TOP_LAN_1." ".TOP_LAN_2." ".TOP_LAN_6."
{$counter} {$row['user_name']} {$row['user_plugin_forum_posts']} {$r}
\n
"; if ($this->subaction == 'forum') { $ftotal = $sql->count('user', '(*)', 'WHERE `user_forums` > 0'); $parms = "{$ftotal},{$this->view},{$this->from},".e_SELF.'?[FROM].top.forum.'.$this->view; $text .= "
".$tp->parseTemplate("{NEXTPREV={$parms}}").'
'; } $ns->tablerender(TOP_LAN_0, $text); } } function mostActiveTopics() // from top.php - unused. { //require_once (e_HANDLER.'userclass_class.php'); $sql = e107::getDb(); $tp = e107::getParser(); $ns = e107::getRender(); require_once (e_PLUGIN.'forum/forum_class.php'); $forum = new e107forum(); $forumList = implode(',', $forum->getForumPermList('view')); $qry = " SELECT t.*, u.user_name, ul.user_name AS user_last, f.forum_name FROM `#forum_thread` as t LEFT JOIN `#forum` AS f ON f.forum_id = t.thread_forum_id LEFT JOIN `#user` AS u ON u.user_id = t.thread_user LEFT JOIN `#user` AS ul ON ul.user_id = t.thread_lastuser WHERE t.thread_forum_id IN ({$forumList}) ORDER BY t.thread_views DESC LIMIT {$this->from}, {$this->view} "; if ($sql->gen($qry)) { $text = "
\n\n"; $gen = e107::getDate(); $text .= "\n"; while ($row = $sql->fetch(MYSQL_ASSOC)) { if ($row['user_name']) { $POSTER = "{$row['user_name']}"; } else { $POSTER = $row['thread_user_anon']; } $LINKTOTHREAD = e107::getUrl()->create('forum/thread/view', array('id' =>$row['thread_id'])); //$e107->url->getUrl('forum', 'thread', "func=view&id={$row['thread_id']}"); $LINKTOFORUM = e107::getUrl()->create('forum/forum/view', array('id' => $row['thread_forum_id'])); //$e107->url->getUrl('forum', 'forum', "func=view&id={$row['thread_forum_id']}"); $lastpost_datestamp = $gen->convert_date($row['thread_lastpost'], 'forum'); if ($row['user_last']) { $LASTPOST = "{$row['user_last']}
".$lastpost_datestamp; } else { $LASTPOST = $row['thread_lastuser_anon'].'
'.$lastpost_datestamp; } $text .= "\n"; } $text .= "
  ".LAN_1." ".LAN_2." ".LAN_3." ".LAN_4." ".LAN_5."
{$row['thread_name']} ({$row['forum_name']}) {$POSTER} {$row['thread_views']} {$row['thread_total_replies']} {$LASTPOST}
\n
"; $ftotal = $sql->count('forum_thread', '(*)', 'WHERE `thread_parent` = 0'); $parms = "{$ftotal},{$this->view},{$this->from},".e_SELF.'?[FROM].active.forum.'.$this->view; $text .= "
".$tp->parseTemplate("{NEXTPREV={$parms}}").'
'; $ns->tablerender(LAN_7, $text, 'nfp'); } } } $frmStats = new forumStats; require_once(HEADERF); $frmStats->init(); require_once(FOOTERF);