PAGE_INDEX / viewonline.php

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
HJW
Mitglied
Beiträge: 1302
Registriert: 20.04.2007 20:48
Wohnort: 45481 Mülheim an der Ruhr
Kontaktdaten:

Re: PAGE_INDEX / viewonline.php

Beitrag von HJW »

Hallo,

ich habe es jetzt noch mal getestet. Wenn ich meine Änderung wieder herausnehme und über einen 2.Computer als Gast auf die Hacks-Liste gehe, steht unter 'wer ist online' der Gast auf dem Foren-Index und nicht auf Hacksliste. Füge ich die Änderung wieder ein, steht da korrekt Hacksliste.

Gruß
Hermann Joseph
jimmartens
Mitglied
Beiträge: 369
Registriert: 28.11.2008 20:04
Wohnort: Hamburg
Kontaktdaten:

Re: PAGE_INDEX / viewonline.php

Beitrag von jimmartens »

Also, ich meinte in meinem Beitrag, dass wenn ich in der overall_header auf Hackslist klicke, auch auf dieser ankomme. Da das aber anscheinend nicht dem entspricht, worüber geredet wird, würde es mich freuen, was mit der "Wer-ist-online" Funktion gemeint ist. Wenn ich auf mein Forum gehe stehen unter der Wer-ist-online Box nur die User, die online sind, nicht irgendwelche Seiten. Daher nochmal die Bitte: Um welche Liste geht es hier?
Um es für die Supporter einfacher zu machen: Hier meine Forums-Adresse: Mein Eisenbahn-Forum
HJW
Mitglied
Beiträge: 1302
Registriert: 20.04.2007 20:48
Wohnort: 45481 Mülheim an der Ruhr
Kontaktdaten:

Re: PAGE_INDEX / viewonline.php

Beitrag von HJW »

Hallo,

dann klick doch mal auf 'Wer ist online' und schau mal was passiert. Kannst du auch auf dieser Seite machen.

Gruß
Hermann Joseph
Benutzeravatar
markus giersch
Mitglied
Beiträge: 674
Registriert: 03.04.2008 22:06
Wohnort: Frankfurt am Main
Kontaktdaten:

Re: PAGE_INDEX / viewonline.php

Beitrag von markus giersch »

Bei Ihm klappts, habe es gesehen.

Bei mir klappt es nicht. Habe auch das bboard 3 Portal installiert, da sieht man auch nicht das man darauf ist. da steht auch andauernd "Foren-Übersicht". Genauso auf der Geomap ^-^

Hier die viewonline.php

Code: Alles auswählen

<?php
/**
*
* @package phpBB3
* @version $Id: viewonline.php,v xxx acydburn Exp $
* @copyright (c) 2005 phpBB Group
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/

/**
* @ignore
*/
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('memberlist');

// Get and set some variables
$mode      = request_var('mode', '');
$session_id   = request_var('s', '');
$start      = request_var('start', 0);
$sort_key   = request_var('sk', 'b');
$sort_dir   = request_var('sd', 'd');
$show_guests= ($config['load_online_guests']) ? request_var('sg', 0) : 0;

// Can this user view profiles/memberlist?
if (!$auth->acl_gets('u_viewprofile', 'a_user', 'a_useradd', 'a_userdel'))
{
   if ($user->data['user_id'] != ANONYMOUS)
   {
      trigger_error('NO_VIEW_USERS');
   }

   login_box('', $user->lang['LOGIN_EXPLAIN_VIEWONLINE']);
}

$sort_key_text = array('a' => $user->lang['SORT_USERNAME'], 'b' => $user->lang['SORT_JOINED'], 'c' => $user->lang['SORT_LOCATION']);
$sort_key_sql = array('a' => 'u.username_clean', 'b' => 's.session_time', 'c' => 's.session_page');

// Sorting and order
if (!isset($sort_key_text[$sort_key]))
{
   $sort_key = 'b';
}

$order_by = $sort_key_sql[$sort_key] . ' ' . (($sort_dir == 'a') ? 'ASC' : 'DESC');

// Whois requested
if ($mode == 'whois' && $auth->acl_get('a_') && $session_id)
{
   include($phpbb_root_path . 'includes/functions_user.' . $phpEx);

   $sql = 'SELECT u.user_id, u.username, u.user_type, s.session_ip
      FROM ' . USERS_TABLE . ' u, ' . SESSIONS_TABLE . " s
      WHERE s.session_id = '" . $db->sql_escape($session_id) . "'
         AND   u.user_id = s.session_user_id";
   $result = $db->sql_query($sql);

   if ($row = $db->sql_fetchrow($result))
   {
      $template->assign_var('WHOIS', user_ipwhois($row['session_ip']));
   }
   $db->sql_freeresult($result);

   // Output the page
   page_header($user->lang['WHO_IS_ONLINE']);

   $template->set_filenames(array(
      'body' => 'viewonline_whois.html')
   );
   make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx"));

   page_footer();
}

// Forum info
$sql = 'SELECT forum_id, forum_name, parent_id, forum_type, left_id, right_id
   FROM ' . FORUMS_TABLE . '
   ORDER BY left_id ASC';
$result = $db->sql_query($sql, 600);

$forum_data = array();
while ($row = $db->sql_fetchrow($result))
{
   $forum_data[$row['forum_id']] = $row;
}
$db->sql_freeresult($result);

$guest_counter = 0;

// Get number of online guests (if we do not display them)
if (!$show_guests)
{
   switch ($db->sql_layer)
   {
      case 'sqlite':
         $sql = 'SELECT COUNT(session_ip) as num_guests
            FROM (
               SELECT DISTINCT session_ip
                  FROM ' . SESSIONS_TABLE . '
                  WHERE session_user_id = ' . ANONYMOUS . '
                     AND session_time >= ' . (time() - ($config['load_online_time'] * 60)) .
            ')';
      break;

      default:
         $sql = 'SELECT COUNT(DISTINCT session_ip) as num_guests
            FROM ' . SESSIONS_TABLE . '
            WHERE session_user_id = ' . ANONYMOUS . '
               AND session_time >= ' . (time() - ($config['load_online_time'] * 60));
      break;
   }
   $result = $db->sql_query($sql);
   $guest_counter = (int) $db->sql_fetchfield('num_guests');
   $db->sql_freeresult($result);
}

// Get user list
$sql = 'SELECT u.user_id, u.username, u.username_clean, u.user_type, u.user_colour, s.session_id, s.session_time, s.session_page, s.session_ip, s.session_browser, s.session_viewonline
   FROM ' . USERS_TABLE . ' u, ' . SESSIONS_TABLE . ' s
   WHERE u.user_id = s.session_user_id
      AND s.session_time >= ' . (time() - ($config['load_online_time'] * 60)) .
      ((!$show_guests) ? ' AND s.session_user_id <> ' . ANONYMOUS : '') . '
   ORDER BY ' . $order_by;
$result = $db->sql_query($sql);

$prev_id = $prev_ip = $user_list = array();
$logged_visible_online = $logged_hidden_online = $counter = 0;

while ($row = $db->sql_fetchrow($result))
{
   if ($row['user_id'] != ANONYMOUS && !isset($prev_id[$row['user_id']]))
   {
      $view_online = $s_user_hidden = false;
      $user_colour = ($row['user_colour']) ? ' style="color:#' . $row['user_colour'] . '" class="username-coloured"' : '';
      
      $username_full = ($row['user_type'] != USER_IGNORE) ? get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']) : '<span' . $user_colour . '>' . $row['username'] . '</span>';

      if (!$row['session_viewonline'])
      {
         $view_online = ($auth->acl_get('u_viewonline')) ? true : false;
         $logged_hidden_online++;

         $username_full = '<em>' . $username_full . '</em>';
         $s_user_hidden = true;
      }
      else
      {
         $view_online = true;
         $logged_visible_online++;
      }

      $prev_id[$row['user_id']] = 1;

      if ($view_online)
      {
         $counter++;
      }

      if (!$view_online || $counter > $start + $config['topics_per_page'] || $counter <= $start)
      {
         continue;
      }
   }
   else if ($show_guests && $row['user_id'] == ANONYMOUS && !isset($prev_ip[$row['session_ip']]))
   {
      $prev_ip[$row['session_ip']] = 1;
      $guest_counter++;
      $counter++;

      if ($counter > $start + $config['topics_per_page'] || $counter <= $start)
      {
         continue;
      }

      $s_user_hidden = false;
      $username_full = get_username_string('full', $row['user_id'], $user->lang['GUEST']);
   }
   else
   {
      continue;
   }

   preg_match('#^([a-z/]+)#i', $row['session_page'], $on_page);
   if (!sizeof($on_page))
   {
      $on_page[1] = '';
   }

   switch ($on_page[1])
   {
      case 'index':
         $location = $user->lang['INDEX'];
         $location_url = append_sid("{$phpbb_root_path}index.$phpEx");
      break;

      case 'adm/index':
         $location = $user->lang['ACP'];
         $location_url = append_sid("{$phpbb_root_path}index.$phpEx");
      break;

      case 'posting':
      case 'viewforum':
      case 'viewtopic':
         preg_match('#_f_=([0-9]+)x#i', $row['session_page'], $forum_id);
         $forum_id = (sizeof($forum_id)) ? (int) $forum_id[1] : 0;

         if ($forum_id && $auth->acl_get('f_list', $forum_id))
         {
            $location = '';
            $location_url = append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $forum_id);

            if ($forum_data[$forum_id]['forum_type'] == FORUM_LINK)
            {
               $location = sprintf($user->lang['READING_LINK'], $forum_data[$forum_id]['forum_name']);
               break;
            }

            switch ($on_page[1])
            {
               case 'posting':
                  preg_match('#mode=([a-z]+)#', $row['session_page'], $on_page);

                  switch ($on_page[1])
                  {
                     case 'reply':
                     case 'quote':
                        $location = sprintf($user->lang['REPLYING_MESSAGE'], $forum_data[$forum_id]['forum_name']);
                     break;

                     default:
                        $location = sprintf($user->lang['POSTING_MESSAGE'], $forum_data[$forum_id]['forum_name']);
                     break;
                  }
               break;

               case 'viewtopic':
                  $location = sprintf($user->lang['READING_TOPIC'], $forum_data[$forum_id]['forum_name']);
               break;

               case 'viewforum':
                  $location = sprintf($user->lang['READING_FORUM'], $forum_data[$forum_id]['forum_name']);
               break;
            }
         }
         else
         {
            $location = $user->lang['INDEX'];
            $location_url = append_sid("{$phpbb_root_path}index.$phpEx");
         }
      break;

      case 'search':
         $location = $user->lang['SEARCHING_FORUMS'];
         $location_url = append_sid("{$phpbb_root_path}search.$phpEx");
      break;

      case 'faq':
         $location = $user->lang['VIEWING_FAQ'];
         $location_url = append_sid("{$phpbb_root_path}faq.$phpEx");
      break;

      case 'viewonline':
         $location = $user->lang['VIEWING_ONLINE'];
         $location_url = append_sid("{$phpbb_root_path}viewonline.$phpEx");
      break;

      case 'memberlist':
         $location = (strpos($row['session_page'], 'mode=viewprofile') !== false) ? $user->lang['VIEWING_MEMBER_PROFILE'] : $user->lang['VIEWING_MEMBERS'];
         $location_url = append_sid("{$phpbb_root_path}memberlist.$phpEx");
      break;

      case 'mcp':
         $location = $user->lang['VIEWING_MCP'];
         $location_url = append_sid("{$phpbb_root_path}index.$phpEx");
      break;

      case 'ucp':
         $location = $user->lang['VIEWING_UCP'];

         // Grab some common modules
         $url_params = array(
            'mode=register'      => 'VIEWING_REGISTER',
            'i=pm&mode=compose'   => 'POSTING_PRIVATE_MESSAGE',
            'i=pm&'            => 'VIEWING_PRIVATE_MESSAGES',
            'i=profile&'      => 'CHANGING_PROFILE',
            'i=prefs&'         => 'CHANGING_PREFERENCES',
         );

         foreach ($url_params as $param => $lang)
         {
            if (strpos($row['session_page'], $param) !== false)
            {
               $location = $user->lang[$lang];
               break;
            }
         }

         $location_url = append_sid("{$phpbb_root_path}index.$phpEx");
      break;

      case 'download':
         $location = $user->lang['DOWNLOADING_FILE'];
         $location_url = append_sid("{$phpbb_root_path}index.$phpEx");
      break;

      case 'report':
         $location = $user->lang['REPORTING_POST'];
         $location_url = append_sid("{$phpbb_root_path}index.$phpEx");
      break;
      
      case 'bundesbanner_startseite':
         $location = 'Betrachtet die "Homepage"';
         $location_url = append_sid("{$phpbb_root_path}bundesbanner_startseite.$phpEx");
      break;
      
      default:
         $location = $user->lang['INDEX'];
         $location_url = append_sid("{$phpbb_root_path}index.$phpEx");
      break;
   }

   $template->assign_block_vars('user_row', array(
      'USERNAME'          => $row['username'],
      'USERNAME_COLOUR'   => $row['user_colour'],
      'USERNAME_FULL'      => $username_full,
      'LASTUPDATE'      => $user->format_date($row['session_time']),
      'FORUM_LOCATION'   => $location,
      'USER_IP'         => ($auth->acl_get('a_')) ? (($mode == 'lookup' && $session_id == $row['session_id']) ? gethostbyaddr($row['session_ip']) : $row['session_ip']) : '',
      'USER_BROWSER'      => ($auth->acl_get('a_user')) ? $row['session_browser'] : '',

      'U_USER_PROFILE'   => ($row['user_type'] != USER_IGNORE) ? get_username_string('profile', $row['user_id'], '') : '',
      'U_USER_IP'         => append_sid("{$phpbb_root_path}viewonline.$phpEx", 'mode=lookup' . (($mode != 'lookup' || $row['session_id'] != $session_id) ? '&s=' . $row['session_id'] : '') . "&sg=$show_guests&start=$start&sk=$sort_key&sd=$sort_dir"),
      'U_WHOIS'         => append_sid("{$phpbb_root_path}viewonline.$phpEx", 'mode=whois&s=' . $row['session_id']),
      'U_FORUM_LOCATION'   => $location_url,
      
      'S_USER_HIDDEN'      => $s_user_hidden,
      'S_GUEST'         => ($row['user_id'] == ANONYMOUS) ? true : false,
      'S_USER_TYPE'      => $row['user_type'],
   ));
}
$db->sql_freeresult($result);
unset($prev_id, $prev_ip);

// Generate reg/hidden/guest online text
$vars_online = array(
   'REG'   => array('logged_visible_online', 'l_r_user_s'),
   'HIDDEN'=> array('logged_hidden_online', 'l_h_user_s'),
   'GUEST'   => array('guest_counter', 'l_g_user_s')
);

foreach ($vars_online as $l_prefix => $var_ary)
{
   switch ($$var_ary[0])
   {
      case 0:
         $$var_ary[1] = $user->lang[$l_prefix . '_USERS_ZERO_ONLINE'];
      break;

      case 1:
         $$var_ary[1] = $user->lang[$l_prefix . '_USER_ONLINE'];
      break;

      default:
         $$var_ary[1] = $user->lang[$l_prefix . '_USERS_ONLINE'];
      break;
   }
}
unset($vars_online);

$pagination = generate_pagination(append_sid("{$phpbb_root_path}viewonline.$phpEx", "sg=$show_guests&sk=$sort_key&sd=$sort_dir"), $counter, $config['topics_per_page'], $start);

// Grab group details for legend display
if ($auth->acl_gets('a_group', 'a_groupadd', 'a_groupdel'))
{
   $sql = 'SELECT group_id, group_name, group_colour, group_type
      FROM ' . GROUPS_TABLE . '
      WHERE group_legend = 1
      ORDER BY group_name ASC';
}
else
{
   $sql = 'SELECT g.group_id, g.group_name, g.group_colour, g.group_type
      FROM ' . GROUPS_TABLE . ' g
      LEFT JOIN ' . USER_GROUP_TABLE . ' ug
         ON (
            g.group_id = ug.group_id
            AND ug.user_id = ' . $user->data['user_id'] . '
            AND ug.user_pending = 0
         )
      WHERE g.group_legend = 1
         AND (g.group_type <> ' . GROUP_HIDDEN . ' OR ug.user_id = ' . $user->data['user_id'] . ')
      ORDER BY g.group_name ASC';
}
$result = $db->sql_query($sql);

$legend = '';
while ($row = $db->sql_fetchrow($result))
{
   if ($row['group_name'] == 'BOTS')
   {
      $legend .= (($legend != '') ? ', ' : '') . '<span style="color:#' . $row['group_colour'] . '">' . $user->lang['G_BOTS'] . '</span>';
   }
   else
   {
      $legend .= (($legend != '') ? ', ' : '') . '<a style="color:#' . $row['group_colour'] . '" href="' . append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=group&g=' . $row['group_id']) . '">' . (($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $row['group_name']] : $row['group_name']) . '</a>';
   }
}
$db->sql_freeresult($result);

// Refreshing the page every 60 seconds...
meta_refresh(60, append_sid("{$phpbb_root_path}viewonline.$phpEx", "sg=$show_guests&sk=$sort_key&sd=$sort_dir&start=$start"));

// Send data to template
$template->assign_vars(array(
   'TOTAL_REGISTERED_USERS_ONLINE'   => sprintf($l_r_user_s, $logged_visible_online) . sprintf($l_h_user_s, $logged_hidden_online),
   'TOTAL_GUEST_USERS_ONLINE'      => sprintf($l_g_user_s, $guest_counter),
   'LEGEND'                  => $legend,
   'PAGINATION'               => $pagination,
   'PAGE_NUMBER'               => on_page($counter, $config['topics_per_page'], $start),

   'U_SORT_USERNAME'      => append_sid("{$phpbb_root_path}viewonline.$phpEx", 'sk=a&sd=' . (($sort_key == 'a' && $sort_dir == 'a') ? 'd' : 'a') . '&sg=' . ((int) $show_guests)),
   'U_SORT_UPDATED'      => append_sid("{$phpbb_root_path}viewonline.$phpEx", 'sk=b&sd=' . (($sort_key == 'b' && $sort_dir == 'a') ? 'd' : 'a') . '&sg=' . ((int) $show_guests)),
   'U_SORT_LOCATION'      => append_sid("{$phpbb_root_path}viewonline.$phpEx", 'sk=c&sd=' . (($sort_key == 'c' && $sort_dir == 'a') ? 'd' : 'a') . '&sg=' . ((int) $show_guests)),

   'U_SWITCH_GUEST_DISPLAY'   => append_sid("{$phpbb_root_path}viewonline.$phpEx", 'sg=' . ((int) !$show_guests)),
   'L_SWITCH_GUEST_DISPLAY'   => ($show_guests) ? $user->lang['HIDE_GUESTS'] : $user->lang['DISPLAY_GUESTS'],
   'S_SWITCH_GUEST_DISPLAY'   => ($config['load_online_guests']) ? true : false)
);

// We do not need to load the who is online box here. ;)
$config['load_online'] = false;

// Output the page
page_header($user->lang['WHO_IS_ONLINE']);

$template->set_filenames(array(
   'body' => 'viewonline_body.html')
);
make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx"));

page_footer();

?>
Kann es sein das sie zerschossen ist?

Alles andere klappt reibungslos
Zuletzt geändert von markus giersch am 12.01.2009 23:23, insgesamt 1-mal geändert.
phpbb wird noch mindestens 40 Jahre existieren!!! Wo? Hier: D-A-F | Demokratische Armee Fraktion! Darum brauchen wir euch noch min. 40 Jahre!!!
HJW
Mitglied
Beiträge: 1302
Registriert: 20.04.2007 20:48
Wohnort: 45481 Mülheim an der Ruhr
Kontaktdaten:

Re: PAGE_INDEX / viewonline.php

Beitrag von HJW »

Hallo,

wenn das deine aktuelle viewonline ist, dann hast du meine Änderung ja auch nicht ausgeführt.
so sieht es bei dir aus

Code: Alles auswählen

 preg_match('#^([a-z/]+)#i', $row['session_page'], $on_page);
   if (!sizeof($on_page))
und so sollte es sein

Code: Alles auswählen

 preg_match('#^([a-z/_]+)#i', $row['session_page'], $on_page);
   if (!sizeof($on_page))
wichtig ist der Unterstrich "_" nach a-z/

Gruß
Hermann Joseph
Benutzeravatar
markus giersch
Mitglied
Beiträge: 674
Registriert: 03.04.2008 22:06
Wohnort: Frankfurt am Main
Kontaktdaten:

Re: PAGE_INDEX / viewonline.php

Beitrag von markus giersch »

SRY

PERFEKT!!!

Man sollte das in die Anleitung hinzufügen!!!!
phpbb wird noch mindestens 40 Jahre existieren!!! Wo? Hier: D-A-F | Demokratische Armee Fraktion! Darum brauchen wir euch noch min. 40 Jahre!!!
Benutzeravatar
nickvergessen
Ehrenadmin
Beiträge: 11559
Registriert: 09.10.2006 21:56
Wohnort: Stuttgart, Germany
Kontaktdaten:

Re: PAGE_INDEX / viewonline.php

Beitrag von nickvergessen »

Ich hab das mal als Bug gemeldet. Sollte meiner Meinung nach schon so sein, dass _ in Dateinamen unterstützt werden.
kein Support per PN
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17473
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Re: PAGE_INDEX / viewonline.php

Beitrag von Dr.Death »

Solange wie der "Bug" noch existent ist, habe ich den wiki Eintrag geändert.

http://wiki.phpbb.com/Deutsch:Vorlage_f ... ene_Seiten
Benutzeravatar
markus giersch
Mitglied
Beiträge: 674
Registriert: 03.04.2008 22:06
Wohnort: Frankfurt am Main
Kontaktdaten:

Re: PAGE_INDEX / viewonline.php

Beitrag von markus giersch »

wenn ich es so mache wie gesagt, dann geht das whois nicht mehr.
da kommt zwar das fenster mit dem richtigen "page-head-inhalt", aber der rest bleibt weis.

kann ich es vieleicht so einrichten, das man die ip an http://www.utrace.de schicken kann?

natürlich wäre ich auch zufrieden, wenn das standart "whois" wieder geht.

Schau hier:

http://www.f-r-o-n-t.de/Bilder/whoisleer.GIF
Zuletzt geändert von markus giersch am 12.01.2009 22:57, insgesamt 1-mal geändert.
phpbb wird noch mindestens 40 Jahre existieren!!! Wo? Hier: D-A-F | Demokratische Armee Fraktion! Darum brauchen wir euch noch min. 40 Jahre!!!
HJW
Mitglied
Beiträge: 1302
Registriert: 20.04.2007 20:48
Wohnort: 45481 Mülheim an der Ruhr
Kontaktdaten:

Re: PAGE_INDEX / viewonline.php

Beitrag von HJW »

Hallo,

bei mir klappt das WHOIS noch einwandfrei.

Gruß
Hermann Joseph
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“