Seite 1 von 1

Friend List Mod erweitern

Verfasst: 13.03.2013 21:18
von Maugrim
Hallo!

Ich habe mir einen Mod installiert, um in der memberlist_view.html (also dem Profil der User) die Freunde sowie deren Avatare anzeigen zu lassen

Nun würde ich gerne, sofern das geht, noch einige Inhalte aus custom.profile Fields dazu angeben

Wo die custom.profile Fields abgelegt sind habe ich schon gefunden.

in der Datenbank unter phpbb_profile_fields_data

Ich würde gerne 2 Profile Feld Angaben der entsprechenden User zusätlich auslesen und unter dem Avatar anzeigen.
Wie muss ich den unteren Code erweitern, damit alles gemeinsam ausgelesen und angezeigt wird??
Kann mir da vielleicht jemand bitte helfen? :)

Die Felder heißen pf_char_1 und pf_char_2

Code: Alles auswählen

   $user_id = request_var('u', 0);
   $start   = request_var('start', 0);
   $limit = request_var('limit', intval($config['number_friends']));
   $sql = $db->sql_build_query('SELECT', array(
   'SELECT'   => 'u.user_avatar, u.username, u.user_colour, u.user_avatar_type, u.user_avatar_width, u.user_avatar_height, z.user_id, u.user_regdate, u.user_lastvisit, user_posts, z.zebra_id, z.friend',
   'FROM'      => array(
      USERS_TABLE      => 'u',
   ),
   'LEFT_JOIN'   => array(
      array(
         'FROM'   => array(ZEBRA_TABLE => 'z'),
         'ON'   => 'u.user_id=z.zebra_id'      
      )
   ),
      'WHERE'      => " u.user_id=z.zebra_id AND z.friend = 1 AND z.user_id = $user_id",
      'ORDER_BY'   => 'z.zebra_id'
   ));
   $result = $db->sql_query_limit($sql, $limit, $start);
         
   while($row_av = $db->sql_fetchrow( $result ))
   {
      $avatar_friend = get_user_avatar($row_av['user_avatar'], $row_av['user_avatar_type'], $row_av['user_avatar_width'],       $row_av['user_avatar_height']);
      $friend_id = $row_av['zebra_id'];
      $avatar_size_size = $config['friend_avatar_size'];

      $template->assign_block_vars('fri',array(

            'FRI_ID'            => $row_av['zebra_id'],
            'FRI_AV'            => $avatar_friend,
            'USERNAME'         => $row_av['username'],
            'WIDTH'            => $config['friend_avatar_size'],
            'USER_COLOR'       => $row_av['user_colour'],
            'AV_LINK'         => append_sid("{$phpbb_root_path}memberlist.$phpEx", "mode=viewprofile&u=$friend_id"), 
            'FRI_AV_THUMB'      =>   ($row_av['user_avatar']) ? get_user_avatar($row_av['user_avatar'], $row_av['user_avatar_type'], ($row_av['user_avatar_width'] > $row_av['user_avatar_height']) ? $avatar_size_size : ($avatar_size_size / $row_av['user_avatar_height']) * $row_av['user_avatar_width'], ($row_av['user_avatar_height'] > $row_av['user_avatar_width']) ? $avatar_size_size : ($avatar_size_size / $row_av['user_avatar_width']) * $row_av['user_avatar_height']) : '',
            'ONLINE_USER'      => is_user_online($row_av['zebra_id'])
));
}    

Re: Friend List Mod erweitern

Verfasst: 13.03.2013 23:38
von Maugrim
SorrY für den Doppelpost:

Ich wollte noch eine SQL Abfrage reingeben, um abzufragen OB der AUFGERUFENE User Freunde hat
Wenn er Freunde hat, will ich folgendes

Code: Alles auswählen

<!-- IF HAS_FRIENDS -->
<h6>FREUNDE</h6>
<!-- ENDIF -->
im Template anzeigen


Ich habe mich an ähnlichen SQL Abfragen orientiert...und oh Freude :) Es klappt sogar!

Code: Alles auswählen

    $sql = 'SELECT user_id
			FROM ' . ZEBRA_TABLE . "
			WHERE user_id = $user_id";
      
		$result = $db->sql_query($sql);
		$row = $db->sql_fetchrow($result);
    $has_friends = ($row['user_id']) ? true : false;
		$db->sql_freeresult($result);
		$template->assign_vars(array(
			'HAS_FRIENDS'	=> $has_friends,
    ));
Ich frage nur noch sicherheitshalber: IST diese Abfrage in Ordnung? Oder wäre sie anders geschrieben besser?

Re: Friend List Mod erweitern

Verfasst: 14.03.2013 18:31
von Nuramon
Maugrim hat geschrieben:

Code: Alles auswählen

    $sql = 'SELECT user_id
			FROM ' . ZEBRA_TABLE . "
			WHERE user_id = $user_id";
      
		$result = $db->sql_query($sql);
		$row = $db->sql_fetchrow($result);
    $has_friends = ($row['user_id']) ? true : false;
		$db->sql_freeresult($result);
		$template->assign_vars(array(
			'HAS_FRIENDS'	=> $has_friends,
    ));
Ich frage nur noch sicherheitshalber: IST diese Abfrage in Ordnung? Oder wäre sie anders geschrieben besser?
Neee, das geht schon so, wobei ich schon bei dem Result abgefragt hätte, ob überhaupt ein positives Ergebnis zurückkommt.
Ich bin mich ziemlich sicher, dass $result nämlich false ist, wenn keine Datensätze zurückkommen.
Denke das macht aber keinen wirklichen Unterschied.
Passt also so (:

Re: Friend List Mod erweitern

Verfasst: 14.03.2013 19:03
von Miriam
Anm.:
$result als Objekt der Klasse mysqli_result entält immer Daten, wenn es eine gültige Abfrage / Verbindung zur DB gibt.
Du kannst aber direkt schauen, ob $result['num_rows'] > 0 ist; von daher hättest Du eine Zeile eingespart.

Auf dem ersten Blick sieht es so aus, als sei HAS_FRIENDS ein Ja / Nein - Schalter. Sollte dem so sein und Du auch in der phpBB3 Terminologie arbeiten wollen, wäre der Variablenname S_HAS_FRIENDS "passender".

Re: Friend List Mod erweitern

Verfasst: 14.03.2013 20:16
von Maugrim
also statt

Code: Alles auswählen

      $result = $db->sql_query($sql);
      $row = $db->sql_fetchrow($result);
das hier

Code: Alles auswählen

$result['num_rows'] > 0;
?
Sollte dem so sein und Du auch in der phpBB3 Terminologie arbeiten wollen, wäre der Variablenname S_HAS_FRIENDS "passender".
Danke für den Hinweis :)

Re: Friend List Mod erweitern

Verfasst: 14.03.2013 22:07
von Miriam
Wie mein Vorredner schon ausführte: Du kannst den Code so lassen.

Re: Friend List Mod erweitern

Verfasst: 15.03.2013 00:02
von Maugrim
Auch gut :)
Freut mich, dass ich es alleine geschafft habe 8)

Nur die "Frage" im ersten Beitrag, schaffe ich nicht alleine... :(

Re: Friend List Mod erweitern

Verfasst: 15.03.2013 20:20
von Miriam
Hast Du mal das Forum nach Zusätzliche Profil-Felder in Mitgliederprofilen anzeigen durchsucht?

Re: Friend List Mod erweitern

Verfasst: 15.03.2013 21:05
von Maugrim
Ich möchte ja die Zusätzlichen Profilfelder der FREUNDE im Profilfeld anzeigen (also 2 davon)

die EIGENEN Profilfelder der User habe ich schon im Profil der entsprechenden User
Aber wenn diese User noch Freunde in ihre Freundesliste adden, dann möchte ich nicht nur den Namen und den Avatar des Freundes anzeigen, sondern auch diese zwei Profilfelder :oops:



Um das zu bewerkstelligen müsste ich ja den Code im ersten Beitrag ändern, denn dieser liest ja die Freunde aus und übergibt diese dann an das Template
also muss der Code zusätzlich noch die beiden Werte aus den entsprechenden custom.profile FIELDS auslesen


oder nicht? ;)

Re: Friend List Mod erweitern

Verfasst: 26.03.2013 07:58
von Maugrim
Ich steh hier noch auf dem Schlauch.

im ersten Beitrag habe ich eine SQL Abfrage, die ich erweitern möchte, dass nicht nur Avatar und Name eines Freundes ausgelesen und angezeigt wird, sondern auch 2 Custom Profile Fields

kann mir da vielleicht jemand helfen?? :-?