Seite 5 von 7

Re: [Suche] Default Avatar für Gender Mod

Verfasst: 07.01.2009 14:54
von Thyron
In den Profilen erscheinen die geschlechtsspezifischen Avatare, in der Mitgliederliste noch nicht.

In der memberlist hab ich nochmal geschaut. Unter prepare profile data is erstmal nichts von Avataren, direkt danach kommt dann im Original aber das, was für die Anzeige in der Mitgliederliste da ist:

Code: Alles auswählen

	// Dump it out to the template

	return array(

		'USER_AVATAR'		=> get_user_avatar($data['user_avatar'], $data['user_avatar_type'], $data['user_avatar_width'], $data['user_avatar_height']),

		'USER_AVATAR_THUMB'	=> ($data['user_avatar']) ? get_user_avatar($data['user_avatar'], $data['user_avatar_type'], ($data['user_avatar_width'] > $data['user_avatar_height']) ? 25 : (25 / $data['user_avatar_height']) * $data['user_avatar_width'], ($data['user_avatar_height'] > $data['user_avatar_width']) ? 25 : (25 / $data['user_avatar_width']) * $data['user_avatar_height']) : '',
Das habe ich dann so erweitert. Vielleicht is da ein Fehler drin? Sonst muss es an einer fehlenden SQL-Abfrage liegen.

Code: Alles auswählen

// Dump it out to the template
	return array(

		'USER_AVATAR'		=> get_user_avatar($data['user_avatar'], $data['user_avatar_type'], $data['user_avatar_width'], $data['user_avatar_height'], $data['user_id'], $data['pf_gender']),

		'USER_AVATAR_THUMB'	=> ($data['user_avatar']) ? get_user_avatar($data['user_avatar'], $data['user_avatar_type'], ($data['user_avatar_width'] > $data['user_avatar_height']) ? 25 : (25 / $data['user_avatar_height']) * $data['user_avatar_width'], ($data['user_avatar_height'] > $data['user_avatar_width']) ? 25 : (25 / $data['user_avatar_width']) * $data['user_avatar_height'], $data['user_id'], $data['pf_gender']) : '',
Deine obige Änderung hab ich gemacht, leider erscheinen die Avatare in den Nachrichten noch nicht. Sicher, dass die Abfrage korrekt ist?

Re: [Suche] Default Avatar für Gender Mod

Verfasst: 07.01.2009 16:50
von Helmut
Hallo Thyron,

für die Anzeige der Userliste probiere mal folgendes:

Öffne die memberlist.php und finde darin:

Code: Alles auswählen

    // Dump it out to the template      
und füge folgendes davor ein

Code: Alles auswählen

    if (empty($data['user_avatar']))
    {
        $sql = 'SELECT *
            FROM ' . PROFILE_FIELDS_DATA_TABLE . '
            WHERE user_id = ' . (int) $user_id;
        $result = $db->sql_query($sql);
        $data = $db->sql_fetchrow($result);
        $db->sql_freeresult($result);
    }
 
Damit sollte auch $data['pf_gender'] den passenden Wert enthalten.

Die Änderung in der ucp_pm_viewmessage.php sollte eigentlich gehen, bei mir läuft sie. Ich hatte das vergessen in meiner Anleitung mit einzufügen und habe es jetzt nachgetragen. Bei mir gibt es nur bei einer ausgewählten PM ein Userinfo Feld auf der rechten Seite, bei den Antworten darauf aber nicht. Hast du auch den Cache geleert?

Die functions_profileviews.php muss ich mir erst noch genauer anschauen, aber auf den ersten Blick müssen da auch die SQL Abfragen rein. Sonst sind die Änderungen ähnlich wie bei der memberlist.php zu machen.

Gruß Helmut

Re: [Suche] Default Avatar für Gender Mod

Verfasst: 07.01.2009 17:32
von Thyron
Jetzt kommt da:

Code: Alles auswählen

Fatal error: Call to a member function sql_query() on a non-object in /kunden/221194_22041/webseiten/forum/memberlist.php on line 2104
Das wäre dann diese (neu eingefügte) Zeile:

Code: Alles auswählen

$result = $db->sql_query($sql);
PS: Cache habe ich gelöscht, statt des geschlechtsspezifischen Avatars erscheint in den PM's trotzdem nur ein Textlink "Benutzeravatar".

Re: [Suche] Default Avatar für Gender Mod

Verfasst: 07.01.2009 17:58
von Helmut
Hallo Thyron,,

huh ... sollte eigentlich gehen. Gut dann ersetze mal

Code: Alles auswählen

    if (empty($data['user_avatar']))
    {
        $sql = 'SELECT *
            FROM ' . PROFILE_FIELDS_DATA_TABLE . '
            WHERE user_id = ' . (int) $user_id;
        $result = $db->sql_query($sql);
        $data = $db->sql_fetchrow($result);
        $db->sql_freeresult($result);
    }
 
durch

Code: Alles auswählen

   if (empty($data['user_avatar']))
    {
        $sql = 'SELECT *
            FROM ' . PROFILE_FIELDS_DATA_TABLE . "
            WHERE user_id = $user_id";
        $result = $db->sql_query($sql);
        $data = $db->sql_fetchrow($result);
        $db->sql_freeresult($result);
    }
 
Bei den PM's kann ich mir das nicht anschauen, im Testaccount ist keine PM dabei wo ich das sehen kann.

Gruß Helmut

Re: [Suche] Default Avatar für Gender Mod

Verfasst: 07.01.2009 18:22
von Thyron
Dann kommt die gleiche Fehlermeldung. Hab ne PM an den Testaccount geschickt, mit der du es siehst.

Re: [Suche] Default Avatar für Gender Mod

Verfasst: 07.01.2009 19:09
von Helmut
Hallo Thyron,

hab den Fehler gefunden, für die SQL Abfrage muss noch folgendes geändert werden:

Öffne die memberlist.php und finde darin:

Code: Alles auswählen

function show_profile($data)
{
    global $config, $auth, $template, $user, $phpEx, $phpbb_root_path;
 
und ersetze durch folgendes:

Code: Alles auswählen

function show_profile($data)
{
    global $db, $config, $auth, $template, $user, $phpEx, $phpbb_root_path;
 
Ich hatte vergessen dass bei der Abfrage ja bei global noch $db mit gebraucht wird, dann sollte es aber gehen.

Bei dem PM'S probiere mal folgendes: Gib in der ucp_pm_viewmessage.php nach der geänderten SQL Abfrage echo $user_row['pf_gender']; ein und schaue was da angezeigt wird.

Gruß Helmut

Re: [Suche] Default Avatar für Gender Mod

Verfasst: 07.01.2009 19:23
von Thyron
Brache beides kein Erfolg. In den Nachrichten keine Veränderung. Bei der memberlist is die Fehlermeldung weg, dafür werden bei avatarlosen Usern nun nicht nur keine Gender-Avatare sondern auch keine Beitragszahlen und Wohnorte usw. mehr angezeigt...

Re: [Suche] Default Avatar für Gender Mod

Verfasst: 07.01.2009 20:19
von Helmut
Hallo Thyron,

ok, dann änder mal folgendes ab:

Code: Alles auswählen

    if (empty($data['user_avatar']))
    {
        $sql = 'SELECT *
            FROM ' . PROFILE_FIELDS_DATA_TABLE . '
            WHERE user_id = ' . (int) $user_id;
        $result = $db->sql_query($sql);
        $data = $db->sql_fetchrow($result);
        $db->sql_freeresult($result);
    }
 
nach

Code: Alles auswählen

    if (empty($data['user_avatar']))
    {
        $sql = 'SELECT *
            FROM ' . PROFILE_FIELDS_DATA_TABLE . '
            WHERE user_id = ' . (int) $user_id;
        $result = $db->sql_query($sql);
        $data_pf = $db->sql_fetchrow($result);                
        $data['pf_gender'] = $data_pf['pf_gender'];                
    }
 
Aber jetzt sollte es mit der Userliste gehen ..... :oops:

Gruß Helmut

Re: [Suche] Default Avatar für Gender Mod

Verfasst: 07.01.2009 22:48
von Thyron
Dann erscheinen die Avatare immer noch nocht :-?

Hab ich die Teile mit user_id und pf_gender beim Avatar Thumb überhaupt richtig eingesetzt? Hab das ja oben gepostet. Vielleicht is da ein Fehler.

Hier is übrigens der Mod dazu. Is eigentlich nur die eine Ergänzung in der Memberlist und eine css-Datei.

Wir können das auch erstmal auf Seite legen. Vielleicht fällt in der Zwischenzeit Mirijam oder jemand andrem ja noch ein Fehler auf. Wenn die Dinger in der Mitgliederliste nicht angezeigt werden, is nicht so dramatisch. In den Nachrichten und der Profilbesucherstatistik wäre wichtiger.

Re: [Suche] Default Avatar für Gender Mod

Verfasst: 08.01.2009 09:33
von Helmut
Hallo Thyron,

also das mit den Nachrichten scheint ein Problem mit der SQL Abfrage zu sein. Probiere mal folgendes aus:

Öffne die includes/ucp/ucp_pm_viewmessage.php und finde darin die geänderte Abfrage:

Code: Alles auswählen

   if (empty($user_row))
    {
        $sql = 'SELECT *
            FROM ' . USERS_TABLE . ' u
            LEFT JOIN ' . PROFILE_FIELDS_DATA_TABLE . ' pf
                ON pf.user_id = u.user_id            
            WHERE u.user_id = ' . (int) $user_id;
        $result = $db->sql_query($sql);
        $user_row = $db->sql_fetchrow($result);
        $db->sql_freeresult($result);
    }
  
und ersetze sie durch folgendes:

Code: Alles auswählen

    if (empty($user_row))
    {
        $sql = 'SELECT *
            FROM ' . USERS_TABLE . '
            WHERE user_id = ' . (int) $user_id;
        $result = $db->sql_query($sql);
        $user_row = $db->sql_fetchrow($result);
        $db->sql_freeresult($result);
    }

        $sql = 'SELECT *
            FROM ' . PROFILE_FIELDS_DATA_TABLE . '
             WHERE user_id = ' . (int) $user_id;
        $result = $db->sql_query($sql);
        $user_pf = $db->sql_fetchrow($result);
        $db->sql_freeresult($result);
 
finde etwas später:

Code: Alles auswählen

$user_row['avatar'] = ($user->optionget('viewavatars')) ? get_user_avatar($user_row['user_avatar'], $user_row['user_avatar_type'], $user_row['user_avatar_width'], $user_row['user_avatar_height'], $user_row['user_id'], $user_row['pf_gender']) : ''; 
und ersetze sie durch folgendes:

Code: Alles auswählen

$user_row['avatar'] = ($user->optionget('viewavatars')) ? get_user_avatar($user_row['user_avatar'], $user_row['user_avatar_type'], $user_row['user_avatar_width'], $user_row['user_avatar_height'], $user_row['user_id'], $user_pf['pf_gender']) : ''; 
Jetzt müsste es aber bei den Nachrichten klappen mit der Anzeige. Ich habe die Abfragen nun getrennt, damit immer diese Tabelle ausgelesen wird.

Die Profilbesucherstatistik ist deutlich schwieriger und mit erheblich mehr Zeitaufwand zu machen, da hier die Abfragen für die Avatare anders aufgebaut sind. Dafür habe ich aber im Augenblick nicht die nötige Zeit.

Warum das bei der Userliste immer noch nicht geht, da bin ich langsam echt überfragt. Bei meinen Versuchen hatte er immer dazu die Felder mit ausgelesen.

Gruß Helmut