Pagina 1 van 1

Keep Unread Flags extratje gevraagd

Geplaatst: 06 nov 2004, 11:58
door Purmerend
Hallo php freaks :lol:

Ik hoop dat iemand mij kan helpen met het volgende probleem,
ik probeer op een website in een apart frame een lijstje te maken met " Who is online " .
Opzich werkt dit wel, alleen als ik dat online zet worden nieuwe berichten als gelezen beschouwd.

ik heb de Keep Unread Flags mod al geinstaleerd en die werkt ook goed,
totdat ik dit online script plaats.

Nu denk ik dat er in dat online script dus ook iets moet worden veranderd zoals dat word gedaan met de Keep Unread Flags mod. Alleen heb ik geen flauw idee hoe :oops:

Please help...

Dit is het online script :

Code: Selecteer alles

<?php
define('IN_PHPBB', true);

$phpbb_root_path = "forum/"; 
include($phpbb_root_path . 'extension.inc'); 
include($phpbb_root_path . 'common.'.$phpEx); 

$userdata = session_pagestart($user_ip, PAGE_INDEX, $session_length); 
init_userprefs($userdata); 

$sql = "SELECT u.username, u.user_id, u.user_allow_viewonline, u.user_level, s.session_logged_in, 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"; 
$result = $db->sql_query($sql); 
if(!$result) 
{ 
   message_die(GENERAL_ERROR, "Couldn't obtain user/online information.", "", __LINE__, __FILE__, $sql); 
} 

$userlist_ary = array(); 
$userlist_visible = array(); 

$logged_visible_online = 0; 
$logged_hidden_online = 0; 
$guests_online = 0; 
$online_userlist = ""; 

$prev_user_id = 0; 
$prev_session_ip = 0; 

while( $row = $db->sql_fetchrow($result) ) 
{ 
        if( $row['session_logged_in'] ) 
        { 
                if( $row['user_id'] != $prev_user_id ) 
                { 
                        $style_color = ""; 
                        if( $row['user_level'] == ADMIN ) 
                        { 
                                $row['username'] = '<b>' . $row['username'] . '</b>'; 
                                $style_color = 'style="color:#' . $theme['fontcolor3'] . '"'; 
                        } 
                        else if( $row['user_level'] == MOD ) 
                        { 
                                $row['username'] = '<b>' . $row['username'] . '</b>'; 
                                $style_color = 'style="color:#' . $theme['fontcolor2'] . '"'; 
                        } 

                        if( $row['user_allow_viewonline'] ) 
                        { 
                                $user_online_link = '<a href="' . append_sid($phpbb_root_path."profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $row['user_id']) . '" target="mainFrame" ' . $style_color .'>' . $row['username'] . '</a>'; 
                                $logged_visible_online++; 
                        } 
                        else 
                        { 
                                $user_online_link = '<a href="' . append_sid($phpbb_root_path."profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $row['user_id']) . '" target="mainFrame" ' . $style_color .'><i>' . $row['username'] . '</i></a>'; 
                                $logged_hidden_online++; 
                        } 
          
                        if( $row['user_allow_viewonline'] || $userdata['user_level'] == ADMIN ) 
                        { 
                                $online_userlist .= ( $online_userlist != "" ) ? ", " . $user_online_link : $user_online_link; 
                        } 
                } 
        } 
        else 
        { 
                if( $row['session_ip'] != $prev_session_ip )
                {
                        $guests_online++; 
                }  
        } 

        $prev_user_id = $row['user_id']; 
        $prev_session_ip = $row['session_ip']; 
} 


$total_online_users = $logged_visible_online + $logged_hidden_online + $guests_online; 
//$total_online_users); // all users
//$logged_visible_online); // visible users
//$logged_hidden_online); // hidden users
//$guests_online);  // guests


echo ('<font size="1">Online:&nbsp;[&nbsp;Totaal:&nbsp;<strong>');
echo $total_online_users;
echo ('</strong>&nbsp;]&nbsp;[&nbsp;Gasten:&nbsp;<strong>');
echo $guests_online;
echo ('</strong>&nbsp;]&nbsp;[&nbsp;Leden:&nbsp;<strong>');
echo ($online_userlist);
echo ('</strong>&nbsp;]</font>');
?>

Geplaatst: 06 nov 2004, 12:20
door ElbertF
Volgens mij moet je gewoon voorkomen dat er wordt ingelogt. Ik weet het niet zeker, maar je kan proberen deze functie bovenaan even weg te halen:

Code: Selecteer alles

$userdata = session_pagestart($user_ip, PAGE_INDEX, $session_length);

Geplaatst: 06 nov 2004, 12:27
door Purmerend
Dat heb ik inderdaad ook gebrobeerd,
en opzich werkt dat wel maar het probleem is dat je dan nog niet kan zien wie er online is op de complete site.
Dan is alleen zichtbaar wie er in het forum is, en dat is niet de bedoeling.

Het vreemde is dat als je nu gewoon naar het forum gaat, en daar weer vertrekt of uitlogd dat dan het Keep unread, wel werkt.

Geplaatst: 06 nov 2004, 12:38
door ElbertF
Dan moet je die mod waarschijnlijk ook nog toepassen op het bovenstaande script!

Geplaatst: 06 nov 2004, 17:10
door Purmerend
Spambot schreef:Dan moet je die mod waarschijnlijk ook nog toepassen op het bovenstaande script!
Precies dat denk ik ook, maar ik hoop dat iemand weet hoe,
want ik ben aan het vergelijken geweest maar kom er niet uit,
ben een leek hierin

Geplaatst: 06 nov 2004, 17:16
door ElbertF
Het bovenstaande script is een stukje van index.php? Als je de mod dan volgt, en dezelfde wijzigingen maakt, kom je er dan niet uit?