Users Viewing Forum on Index

Users Viewing Forum on Index

Postby Primy on Fri Apr 25, 2008 11:34 pm

Una mod interessante da realizzare per phpBB3 è la "Users Viewing Forum on Index" disponibile per phpBB2. Questa modifica praticamente consente di mostrare quanti utenti (inclusi gli ospiti) stanno visuallizzando quel forum. Non dovrebbe essere complicata da fare, ma io chiaramente non so dove mettere mani :mrgreen:

Questo è il codice della mod per phpBB2

Code: Select all
#################################################################
## Mod Title: Counter user access to a box of forum
## Mod Author: BaoChung (VietNam) < wall85vn@yahoo.com >
## Mod Version: 1.0.2
## Mod Time: 22/03/06
## Mod Description: This will help users can see how many user are
##                  viewing into forums. It like "12 viewing"
##      
## Installation Level: Easy
## Installation Time: 15 Minutes
##
## Files To Edit: 3 (it is 4 if Easy Sub-Forums was installed)
##   index.php
##   viewforum.php (if Easy Sub-Forums was installed)
##   includes/session.php
##   templates/yourtemplate/index_body.tpl
##
## Included Files: (none)
##
## NOTE: it can have some non-acuracy, tell me if you have
##       a problem with it. See website http://vietshare.tk for the demo
##
#################################################################
## WHAT'S NEW IN THIS VERSION (1.0.2)?
## - fix code to show more correcly
## - make it can work with Easy Sub-Forums MOD v1.0.8
#################################################################
## THANKS TO
## Phuong < anhchang_pcit@yahoo.com > for report some error
##
#################################################################

#
#-----[ SQL Query ]----------------------------------------------
# If your phpbb table prefix is different, then change it to
# reflect the correct one.

ALTER TABLE `phpbb_sessions` ADD `session_forum` INT( 15 ) NOT NULL DEFAULT '0';

#################################################################
#
#-----[ OPEN ]---------------------------------------------------
#
   index.php
#
#-----[ FIND ]---------------------------------------------------
#

//
// Start page proper
//
$sql = "SELECT c.cat_id, c.cat_title, c.cat_order

#
#-----[ BEFORE, ADD ]--------------------------------------------
#

//
// BEGIN: number of user view forum
//
$sql = "SELECT s.session_forum, count(*) as numviewforum 
   FROM ".SESSIONS_TABLE." s
   WHERE (s.session_time >= ".( time() - 300 ) . ")
   GROUP BY s.session_forum";
if ( !($result = $db->sql_query($sql)) )
{
   message_die(GENERAL_ERROR, 'Could not obtain reg user/online information', '', __LINE__, __FILE__, $sql);
}

$session_forum_rows = array();

while( $row = $db->sql_fetchrow($result) )
{
   $session_forum_rows[] = $row;
}
$db->sql_freeresult($result);

function getIDsessionforum($n)
{
   global $session_forum_rows;
   for ($i=0; $i<count($session_forum_rows); $i++)
      if($session_forum_rows[$i]['session_forum']==$n) return $i;
   return -1;
}
//
// END: number of user view forum
//

#
#-----[ FIND ]---------------------------------------------------
#
   for($j = 0; $j < $total_forums; $j++)
   {
      if ( $forum_data[$j]['cat_id'] == $cat_id )
      {

#
#-----[ AFTER, ADD ]---------------------------------------------
#
   $nviewforum=0;
#
#-----[ FIND ]---------------------------------------------------
# it has just been used if Easy Sub-Forums MOD was installed

            $sub_forum_id = $value['forum_id'];
            if ($value['attached_forum_id']==$forum_id && $is_auth_ary[$sub_forum_id]['auth_view'])
            {

#
#-----[ AFTER, ADD ]---------------------------------------------
# it has just been used if Easy Sub-Forums MOD was installed

         $nviewforum+=$session_forum_rows[getIDsessionforum($sub_forum_id)]['numviewforum'];

#
#-----[ FIND ]---------------------------------------------------
#
   $template->assign_block_vars('catrow.forumrow',   array(
      'ROW_COLOR' => '#' . $row_color,
      'ROW_CLASS' => $row_class,
      'FORUM_FOLDER_IMG' => $folder_image,
      'FORUM_NAME' => $forum_data[$j]['forum_name'],

#
#-----[ BEFORE, ADD ]--------------------------------------------
#
   $nviewforum+=$session_forum_rows[getIDsessionforum($j+1)]['numviewforum'];
   
#
#-----[ AFTER, ADD ]---------------------------------------------
#
      'FORUM_VIEW' => ($nviewforum)?'('.$nviewforum.' viewing)':'',

#################################################################
#-----[ OPEN ]---------------------------------------------------
# it has just been used if Easy Sub-Forums MOD was installed

   viewforum.php

#
#-----[ FIND ]---------------------------------------------------
# it has just been used if Easy Sub-Forums MOD was installed

   $attach_forum_link = append_sid('viewforum.php?f=' . $value['forum_id']);

#
#-----[ BEFORE, ADD ]--------------------------------------------
# it has just been used if Easy Sub-Forums MOD was installed

               $sql3 = "SELECT count(*) as numviewforum 
                  FROM ".SESSIONS_TABLE." s
                  WHERE (s.session_forum=".$value['forum_id'].") AND (s.session_time >= ".( time() - 300 ) . ")
                  GROUP BY s.session_forum LIMIT 1";
               if ( !($result3 = $db->sql_query($sql3)) )
               {
                  message_die(GENERAL_ERROR, 'Could not obtain reg user/online information', '', __LINE__, __FILE__, $sql3);
               }
               
               $snumusersforum = "";
               if ( $row3 = $db->sql_fetchrow($result3) )
               {
                  $snumusersforum = ($row3['numviewforum'])?'('.$row3['numviewforum'].' viewing)':'';
               }
               $db->sql_freeresult($result3);

#
#-----[ FIND ]---------------------------------------------------
# it has just been used if Easy Sub-Forums MOD was installed
   
   $attach_forum_name = '<a href="' . append_sid('viewforum.php?f=' . $value['forum_id']) . '">' . $value['forum_name'] . '</a>' ;

#
#-----[ REPLACE ]------------------------------------------------
# it has just been used if Easy Sub-Forums MOD was installed

   $attach_forum_name = '<a href="' . append_sid('viewforum.php?f=' . $value['forum_id']) . '">' . $value['forum_name'] . '</a> ' . $snumusersforum ;

#################################################################
#-----[ OPEN ]---------------------------------------------------
#
   includes/session.php

#
#-----[ FIND ]---------------------------------------------------
#
   //
   // Adds/updates a new session to the database for the given userid.
   // Returns the new session ID on success.
   //

#
#-----[ AFTER, ADD ]---------------------------------------------
#
   $myforum=(!empty($HTTP_GET_VARS['f']))?$HTTP_GET_VARS['f']:0;

#
#-----[ FIND ]---------------------------------------------------
#

function session_begin($user_id, $user_ip, $page_id, $auto_create = 0, $enable_autologin = 0, $admin = 0)
{
   global $db, $board_config;

#
#-----[ AFTER, ADD ]---------------------------------------------
#
   global $myforum;

#
#-----[ FIND ]---------------------------------------------------
#
      $sql = "INSERT INTO " . SESSIONS_TABLE . "
         (session_id, session_user_id, session_start, session_time, session_ip, session_page, session_logged_in, session_admin)
         VALUES ('$session_id', $user_id, $current_time, $current_time, '$user_ip', $page_id, $login, $admin)";

#
#-----[ REPLACE ]------------------------------------------------
#
      $sql = "INSERT INTO " . SESSIONS_TABLE . "
         (session_id, session_user_id, session_start, session_time, session_ip, session_page, session_logged_in, session_admin, session_forum)
         VALUES ('$session_id', $user_id, $current_time, $current_time, '$user_ip', $page_id, $login, $admin, $myforum)";

#
#-----[ FIND ]---------------------------------------------------
#

function session_pagestart($user_ip, $thispage_id)
{
   global $db, $lang, $board_config;

#
#-----[ AFTER, ADD ]---------------------------------------------
#
   global $myforum;

#
#-----[ FIND ]---------------------------------------------------
#
            //
            // Only update session DB a minute or so after last update
            //
            if ( $current_time - $userdata['session_time'] > 60 )
            {
               // A little trick to reset session_admin on session re-usage
               $update_admin = (!defined('IN_ADMIN') && $current_time - $userdata['session_time'] > ($board_config['session_length']+60)) ? ', session_admin = 0' : '';

               $sql = "UPDATE " . SESSIONS_TABLE . "
                  SET session_time = $current_time, session_page = $thispage_id$update_admin
                  WHERE session_id = '" . $userdata['session_id'] . "'";

#
#-----[ REPLACE ]------------------------------------------------
#
            $sql = "UPDATE " . SESSIONS_TABLE . "
                  SET session_forum = $myforum
                  WHERE session_id = '" . $userdata['session_id'] . "'";
            if ( !$db->sql_query($sql) )
            {
               message_die(CRITICAL_ERROR, 'Error updating sessions table', '', __LINE__, __FILE__, $sql);
            }

            //
            // Only update session DB a minute or so after last update
            //
            if ( $current_time - $userdata['session_time'] > 60 )
            {
               // A little trick to reset session_admin on session re-usage
               $update_admin = (!defined('IN_ADMIN') && $current_time - $userdata['session_time'] > ($board_config['session_length']+60)) ? ', session_admin = 0' : '';

               $sql = "UPDATE " . SESSIONS_TABLE . "
                  SET session_time = $current_time, session_page = $thispage_id$update_admin, session_forum = $myforum
                  WHERE session_id = '" . $userdata['session_id'] . "'";


#################################################################
#-----[ OPEN ]---------------------------------------------------
#
   templates/yourtempate/index_body.tpl

#
#-----[ FIND ]---------------------------------------------------
#
   <a href="{catrow.forumrow.U_VIEWFORUM}" class="forumlink">{catrow.forumrow.FORUM_NAME}</a>

#
#-----[ AFTER, ADD ]---------------------------------------------
#
   </span><span class="gensmall">&nbsp;{catrow.forumrow.FORUM_VIEW}

#
#-----[ SAVE/CLOSE ALL FILES ]-----------------------------------
#
#EoM


Purtroppo non ho trovato forum phpBB2 che hanno questa mod e quindi non ho potuto fare degli screen da postare, però vB ha questa funzione di default, quindi ecco qui un esempio:

Image
User avatar
Primy
Moderator
Moderator
 
Posts: 60
Joined: Sun Apr 20, 2008 3:16 pm
Highscores: 7

google adsense
Google
 

Re: Users Viewing Forum on Index

Postby Admin on Sun Apr 27, 2008 8:08 pm

Richiesta accettata!
Qui lo sviluppo : viewtopic.php?f=48&t=78
we don't see things like they are but we see them like we are
User avatar
Admin
Site Admin
Site Admin
 
Posts: 113
Joined: Wed Mar 05, 2008 6:31 am
Location: Internet
Highscores: 6


Return to MOD Requests

Who is online

Users browsing this forum: No registered users and 0 guests

cron