Anpassen von viewonline.php

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
hkfk
Mitglied
Beiträge: 2
Registriert: 11.12.2002 10:50

Anpassen von viewonline.php

Beitrag von hkfk »

Hi,

ich habe versucht viewonline.php aus der Version 2.0.2 dahingehend anzupassen und als viewonline_lastday abzuspeichern, dass ich nicht mehr nur die User der letzten 5 Minuten sehen kann, sondern der letzten 24 Stunden. Ausserdem möchte ich alle sehen, egal ob sie sich verstecken oder nicht.

Code: Alles auswählen

viewonline_lastday.php 

<?php 
/*************************************************************************** 
*                              viewonline_lastday.php 
*                            ------------------------------ 
*   begin                : Saturday, Feb 13, 2001 
*   copyright            : (C) 2001 The phpBB Group 
*   email                : support@phpbb.com 
* 
*   $Id: viewonline.php,v 1.54.2.1 2002/04/08 14:37:17 psotfx Exp $ 
* 
* 
***************************************************************************/ 

/*************************************************************************** 
* 
*   This program is free software; you can redistribute it and/or modify 
*   it under the terms of the GNU General Public License as published by 
*   the Free Software Foundation; either version 2 of the License, or 
*   (at your option) any later version. 
* 
***************************************************************************/ 
/*************************************************************************** 
* 
*    Bei viewonline_lastday handelt es sich um eine Kopie der Funktion 
*    viewonline.php. Einzig der Wert für die Rückschau wurde von 
*    300 Sekunden (= 5 Minuten) auf 86400 Sekunden (= 1 Tag) geändert 
*    (siehe Änderung 1). 
*    Zusätzlich muss noch die Anzeige der versteckten 
*    Mitglieder eingeschaltet werden (siehe Änderung 2). 
* 
* 
****************************************************************************/ 

define('IN_PHPBB', true); 
$phpbb_root_path = './'; 
include($phpbb_root_path . 'extension.inc'); 
include($phpbb_root_path . 'common.'.$phpEx); 

// 
// Start session management 
// 
$userdata = session_pagestart($user_ip, PAGE_VIEWONLINE); 
init_userprefs($userdata); 
// 
// End session management 
// 

// 
// Output page header and load viewonline template 
// 
$page_title = $lang['Who_is_online']; 
include($phpbb_root_path . 'includes/page_header.'.$phpEx); 

$template->set_filenames(array( 
   'body' => 'viewonline_body.tpl') 
); 
make_jumpbox('viewforum.'.$phpEx); 

$template->assign_vars(array( 
   'L_WHOSONLINE' => $lang['Who_is_online'], 
   'L_ONLINE_EXPLAIN' => $lang['Online_explain'], 
   'L_USERNAME' => $lang['Username'], 
   'L_FORUM_LOCATION' => $lang['Forum_Location'], 
   'L_LAST_UPDATE' => $lang['Last_updated']) 
); 

// 
// Forum info 
// 
$sql = "SELECT forum_name, forum_id 
   FROM " . FORUMS_TABLE; 
if ( $result = $db->sql_query($sql) ) 
{ 
   while( $row = $db->sql_fetchrow($result) ) 
   { 
      $forum_data[$row['forum_id']] = $row['forum_name']; 
   } 
} 
else 
{ 
   message_die(GENERAL_ERROR, 'Could not obtain user/online forums information', '', __LINE__, __FILE__, $sql); 
} 

// 
// Get auth data 
// 
$is_auth_ary = array(); 
$is_auth_ary = auth(AUTH_VIEW, AUTH_LIST_ALL, $userdata); 

// 
// Get user list 
// 
/****************************************************************************** 
* Änderung 1 
*******************************************************************************/ 
/* 
* ALT 
* 
* $sql = "SELECT u.user_id, u.username, u.user_allow_viewonline, u.user_level, s.session_logged_in, s.session_time, s.session_page, s.session_ip 
*     FROM ".USERS_TABLE." u, ".SESSIONS_TABLE." s 
*     WHERE u.user_id = s.session_user_id 
*        AND s.session_time >= ".( time() - 300 ) . " 
*     ORDER BY u.username ASC, s.session_ip ASC"; 
*/ 
/* 
* NEU ANFANG 
*/ 
$sql = "SELECT u.user_id, u.username, u.user_allow_viewonline, u.user_level, s.session_logged_in, s.session_time, s.session_page, s.session_ip 
   FROM ".USERS_TABLE." u, ".SESSIONS_TABLE." s 
   WHERE u.user_id = s.session_user_id 
      AND s.session_time >= ".( time() - 86400 ) . " 
   ORDER BY u.username ASC, s.session_ip ASC"; 
/* 
* NEU ENDE 
*/ 
if ( !($result = $db->sql_query($sql)) ) 
{ 
   message_die(GENERAL_ERROR, 'Could not obtain regd user/online information', '', __LINE__, __FILE__, $sql); 
} 

$guest_users = 0; 
$registered_users = 0; 
$hidden_users = 0; 

$reg_counter = 0; 
$guest_counter = 0; 
$prev_user = 0; 
$prev_ip = ''; 

while ( $row = $db->sql_fetchrow($result) ) 
{ 
   $view_online = false; 

   if ( $row['session_logged_in'] ) 
   { 
      $user_id = $row['user_id']; 

      if ( $user_id != $prev_user ) 
      { 
         $username = $row['username']; 

         $style_color = ''; 
         if ( $row['user_level'] == ADMIN ) 
         { 
            $username = '<b style="color:#' . $theme['fontcolor3'] . '">' . $username . '</b>'; 
         } 
         else if ( $row['user_level'] == MOD ) 
         { 
            $username = '<b style="color:#' . $theme['fontcolor2'] . '">' . $username . '</b>'; 
         } 
/****************************************************************************** 
* Änderung 2 
*******************************************************************************/ 
/* 
* ALT 
* 
*          if ( !$row['user_allow_viewonline'] ) 
*          { 
*              $view_online = ( $userdata['user_level'] == ADMIN ) ? true : false; 
*             $hidden_users++; 
* 
*             $username = '<i>' . $username . '</i>'; 
*          } 
*          else 
*          { 
*             $view_online = true; 
*             $registered_users++; 
*          } 
*/ 
/* 
* NEU ANFANG 
*/ 
            $view_online = true; 
         $registered_users++; 
/* 
* NEU Ende 
*/ 

         $which_counter = 'reg_counter'; 
         $which_row = 'reg_user_row'; 
         $prev_user = $user_id; 
      } 
   } 
   else 
   { 
      if ( $row['session_ip'] != $prev_ip ) 
      { 
         $username = $lang['Guest']; 
         $view_online = true; 
         $guest_users++; 
    
         $which_counter = 'guest_counter'; 
         $which_row = 'guest_user_row'; 
      } 
   } 

   $prev_ip = $row['session_ip']; 

   if ( $view_online ) 
   { 
      if ( $row['session_page'] < 1 || !$is_auth_ary[$row['session_page']]['auth_view'] ) 
      { 
         switch( $row['session_page'] ) 
         { 
            case PAGE_INDEX: 
               $location = $lang['Forum_index']; 
               $location_url = "index.$phpEx"; 
               break; 
            case PAGE_POSTING: 
               $location = $lang['Posting_message']; 
               $location_url = "index.$phpEx"; 
               break; 
            case PAGE_LOGIN: 
               $location = $lang['Logging_on']; 
               $location_url = "index.$phpEx"; 
               break; 
            case PAGE_SEARCH: 
               $location = $lang['Searching_forums']; 
               $location_url = "search.$phpEx"; 
               break; 
            case PAGE_PROFILE: 
               $location = $lang['Viewing_profile']; 
               $location_url = "index.$phpEx"; 
               break; 
            case PAGE_VIEWONLINE: 
               $location = $lang['Viewing_online']; 
               $location_url = "viewonline.$phpEx"; 
               break; 
            case PAGE_VIEWMEMBERS: 
               $location = $lang['Viewing_member_list']; 
               $location_url = "memberlist.$phpEx"; 
               break; 
            case PAGE_PRIVMSGS: 
               $location = $lang['Viewing_priv_msgs']; 
               $location_url = "privmsg.$phpEx"; 
               break; 
            case PAGE_FAQ: 
               $location = $lang['Viewing_FAQ']; 
               $location_url = "faq.$phpEx"; 
               break; 
            default: 
               $location = $lang['Forum_index']; 
               $location_url = "index.$phpEx"; 
         } 
      } 
      else 
      { 
         $location_url = append_sid("viewforum.$phpEx?" . POST_FORUM_URL . '=' . $row['session_page']); 
         $location = $forum_data[$row['session_page']]; 
      } 

      $row_color = ( $$which_counter % 2 ) ? $theme['td_color1'] : $theme['td_color2']; 
      $row_class = ( $$which_counter % 2 ) ? $theme['td_class1'] : $theme['td_class2']; 

      $template->assign_block_vars("$which_row", array( 
         'ROW_COLOR' => '#' . $row_color, 
         'ROW_CLASS' => $row_class, 
         'USERNAME' => $username, 
         'LASTUPDATE' => create_date($board_config['default_dateformat'], $row['session_time'], $board_config['board_timezone']), 
         'FORUM_LOCATION' => $location, 

         'U_USER_PROFILE' => append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . '=' . $user_id), 
         'U_FORUM_LOCATION' => append_sid($location_url)) 
      ); 

      $$which_counter++; 
   } 
} 

if( $registered_users == 0 ) 
{ 
   $l_r_user_s = $lang['Reg_users_zero_online']; 
} 
else if( $registered_users == 1 ) 
{ 
   $l_r_user_s = $lang['Reg_user_online']; 
} 
else 
{ 
   $l_r_user_s = $lang['Reg_users_online']; 
} 

if( $hidden_users == 0 ) 
{ 
   $l_h_user_s = $lang['Hidden_users_zero_online']; 
} 
else if( $hidden_users == 1 ) 
{ 
   $l_h_user_s = $lang['Hidden_user_online']; 
} 
else 
{ 
   $l_h_user_s = $lang['Hidden_users_online']; 
} 

if( $guest_users == 0 ) 
{ 
   $l_g_user_s = $lang['Guest_users_zero_online']; 
} 
else if( $guest_users == 1 ) 
{ 
   $l_g_user_s = $lang['Guest_user_online']; 
} 
else 
{ 
   $l_g_user_s = $lang['Guest_users_online']; 
} 

$template->assign_vars(array( 
   'TOTAL_REGISTERED_USERS_ONLINE' => sprintf($l_r_user_s, $registered_users) . sprintf($l_h_user_s, $hidden_users), 
   'TOTAL_GUEST_USERS_ONLINE' => sprintf($l_g_user_s, $guest_users)) 
); 

if ( $registered_users + $hidden_users == 0 ) 
{ 
   $template->assign_vars(array( 
      'L_NO_REGISTERED_USERS_BROWSING' => $lang['No_users_browsing']) 
   ); 
} 

if ( $guest_users == 0 ) 
{ 
   $template->assign_vars(array( 
      'L_NO_GUESTS_BROWSING' => $lang['No_users_browsing']) 
   ); 
} 

$template->pparse('body'); 

include($phpbb_root_path . 'includes/page_tail.'.$phpEx); 

?> 
Die meiner Meinung nach dazu notwendigen Änderungen sind im Script antesprechend markiert.
Während die Anzeige aller funktioniert, zeigt das Script aber nicht alle Mitglieder an, die sich innerhalb der letzten 24 Stunden angemeldet haben.

Habe ich was vergessen, oder was mache ich falsch?

Vielen Dank für die Hilfe schon mal,

hkfk
Benutzeravatar
Simpson
Ehemaliges Teammitglied
Beiträge: 1088
Registriert: 20.05.2002 17:35
Wohnort: Göttingen
Kontaktdaten:

Beitrag von Simpson »

sondern der letzten 24 Stunden
Dann installiere den Last Visit Mod
http://mods.db9.dk/viewtopic.php?t=5
egal ob sie sich verstecken oder nicht
Dafür habe ich ne Lösung, weil ich das bei mir auch fast so gemacht habe, ich sage fast weil ich das nur in soweit geändert habe das man beim "Wer war heute online" (das ist der Mod oben) auch sehen kann welche versteckten User da waren, wenn die User aber gerade da sind, wird das nicht angezeigt ;)

Wenn de den Mod oben drin hast, machste folgendes in der index.php:

search:

Code: Alles auswählen

$users_today_list .= ($users_today_list&& ($todayrow['user_allow_viewonline'] || $userdata[user_level]==ADMIN))? ', ':''; 
replace:

Code: Alles auswählen

$users_today_list .= ($users_today_list)? ', ':''; 
search:

Code: Alles auswählen

$users_today_list.=( $todayrow['user_allow_viewonline'])?' <a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $todayrow['user_id']) . '"' . $style_color .'>' . $todayrow['username'] . '</a>':(($userdata[user_level]==ADMIN)?' <a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $todayrow['user_id']) . '"' . $style_color .'><i>' . $todayrow['username'] . '</i></a>':'');



replace:

Code: Alles auswählen

$users_today_list.=' <a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $todayrow['user_id']) . '"' . $style_color .'>' . $todayrow['username'] . '</a>';
hkfk
Mitglied
Beiträge: 2
Registriert: 11.12.2002 10:50

Beitrag von hkfk »

Hallo Simpson,

vielen Dank für die Hilfe. Werde ich machen.

Warum mein Versuch aber schief geht, verstehe ich aber immer noch nicht, aber egal.
Schöne Grüße,

hkfk
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“