Seite 1 von 1

Problem mit Freundesliste Mod

Verfasst: 10.03.2010 22:17
von Trichter
Hallo,

ich habe folgenden Mod eingebaut: [url=ttp://itmods.com/viewtopic.php?f=11&t=3][VALIDATED] Profile friends mod 1.2.0[/url]

Ich habe es eingebaut und es funktioniert auch wirklich gut. Nur manchmal melden mir User folgende Fehlermeldung:
Fatal error: Call to a member function on a non-object in /var/www/webxxx/html/includes/functions.php on line 4476
Um den Mod einzubauen, musste man genau an der Stelle der funktions.php Datei was verändern, hier die Veränderung:

Find

Code: Alles auswählen

function phpbb_user_session_handler()
{
	global $phpbb_hook;

	if (!empty($phpbb_hook) && $phpbb_hook->call_hook(__FUNCTION__))
	{
		if ($phpbb_hook->hook_return(__FUNCTION__))
		{
			return $phpbb_hook->hook_return_result(__FUNCTION__);
		}
	}

	return;
}
Add after

Code: Alles auswählen

// function to check if the friend is online or not.
function is_user_online($id)
{
		global $db, $config;
		
        $session_sql = 'SELECT MAX(session_time) AS session_time, MIN(session_viewonline) AS session_viewonline
            FROM ' . SESSIONS_TABLE . '
            WHERE session_user_id = '.intval($id);
        $session_result = $db->sql_query($session_sql);
        $session_row = $db->sql_fetchrow($session_result);

        $member['session_time'] = (isset($session_row['session_time'])) ? $session_row['session_time'] : 0;
        $member['session_viewonline'] = (isset($session_row['session_viewonline'])) ? $session_row['session_viewonline'] :    0;

        $update_time = $config['load_online_time'] * 60;
        $online = (time() - $update_time < $member['session_time'] && ((isset($member['session_viewonline']) && $member['session_viewonline']) || $auth->acl_get('u_viewonline'))) ? true : false;
        $db->sql_freeresult($session_sql);

        return $online;

}
Die Zeile 4476 ist Folgende:

Code: Alles auswählen

        $online = (time() - $update_time < $member['session_time'] && ((isset($member['session_viewonline']) && $member['session_viewonline']) || $auth->acl_get('u_viewonline'))) ? true : false;
Jetzt weiß ich überhaupt nicht, wieso und wann dieser Fehler auftritt. Hoffe mir kann jemand helfen.

Lg

Re: Problem mit Freundesliste Mod

Verfasst: 14.03.2010 19:06
von Trichter
Hallo,

das Problem besteht weiterhin. Eben haben 2 Profile ungefähr 5 Minuten lang nicht funktioniert, jetzt geht es komischerweise wieder. Ich kann mir nicht erklären, was der Auslöser sein könnte.

Würde mich über Hilfe freuen.

Lg

Edit: Der Link zum Mod lautet: http://itmods.com/viewtopic.php?f=11&t=3

Re: Problem mit Freundesliste Mod

Verfasst: 18.03.2010 16:28
von Trichter
Push

Code: Alles auswählen

Fatal error: Call to a member function on a non-object in /var/www/webXXX/includes/functions.php on line 4480

Re: Problem mit Freundesliste Mod

Verfasst: 18.03.2010 17:04
von 4seven
Trichter hat geschrieben:
Fatal error: Call to a member function on a non-object in /var/www/webxxx/html/includes/functions.php on line 4476
könnte man auch so übersetzen, das das member-object leer ist.

das heißt, der mod (der warscheinlich vor zeile 4476 eingefügt wurde) bringt einen leeeren rückgabewert für

$member['session_time']
oder
$member['session_viewonline']

der den boardeigenen wert überschreibt, der warscheinlich kaum solche fehlermeldung produziert

Die Zeile 4476 ist Folgende:
$online = (time() - $update_time < $member['session_time'] && ((isset($member['session_viewonline']) && $member['session_viewonline']) || $auth->acl_get('u_viewonline'))) ? true : false;
mögliche lösung:

ersetze mal den kompletten mod code-block testweise mit

Code: Alles auswählen

// function to check if the friend is online or not.
function is_user_online($id)
{
      global $db, $config;
      
        $session_sql = 'SELECT MAX(session_time) AS session_time, MIN(session_viewonline) AS session_viewonline
            FROM ' . SESSIONS_TABLE . '
            WHERE session_user_id = '.intval($id);
        $session_result = $db->sql_query($session_sql);
        $session_row = $db->sql_fetchrow($session_result);

        if (!empty($session_row['session_time'])){
        $member['session_time'] = (isset($session_row['session_time'])) ? $session_row['session_time'] : 0;}

        if (!empty($session_row['session_viewonline'])){
        $member['session_viewonline'] = (isset($session_row['session_viewonline'])) ? $session_row['session_viewonline'] : 0;}

        $update_time = $config['load_online_time'] * 60;
        
        if ((!empty($session_row['session_time'])) && (!empty($session_row['session_viewonline']))){
        $online = (time() - $update_time < $member['session_time'] && ((isset($member['session_viewonline']) && $member['session_viewonline']) || $auth->acl_get('u_viewonline'))) ? true : false;}
        
        $db->sql_freeresult($session_sql);
        
        if(isset($online)){
        return $online;} 
} 
nur mal so aus den stehgreif..

Re: Problem mit Freundesliste Mod

Verfasst: 18.03.2010 17:22
von 4seven
zusatz:

alternativ den veränderten part

Code: Alles auswählen

        if(isset($online)){
        return $online;}  
mit dem hier ersetzen

Code: Alles auswählen

        if((isset($online)) && (!empty($online))){
        return $online;}  

Re: Problem mit Freundesliste Mod

Verfasst: 19.03.2010 20:10
von 4seven
ein feedback hierzu wäre interessant...

Re: Problem mit Freundesliste Mod

Verfasst: 20.03.2010 01:20
von Trichter
Hi,

eben mal die Veränderungen ausprobiert und es hat scheinbar geklappt :grin: Ich bedanke mich, wirklich Top!! :D

Danke

Lg