Warum eigentlich den Usernamen ermitteln wenn er bereits zur Verfügung steht?
Wo auch immer dieser Code bzw. diese Funktion aufgerufen wird (Profil, Beitragsansicht, Mitgliederliste, bei den PNs, ...). Wenn man den Aufruf der Funktion geschickt platziert, dann existiert der Username bereits und muss nur an die Funktion übergeben werden.
Also:
Code: Alles auswählen
function get_buddy_img(&$user_id, &$buddy_id, $username = '')
{
global $db, $lang, $template, $theme, $images, $phpEx;
global $HTTP_SERVER_VARS;
$action = preg_replace("#(\&buddy=remove)+?#si", '', $HTTP_SERVER_VARS['REQUEST_URI']);
$action = preg_replace("#(\&b=$buddy_id)+?#si", '', $action);
$action = preg_replace('#.*?([a-z]+?\.' . $phpEx . '.*?)$#i', '\1', htmlspecialchars($action));
$buddy = '';
$buddy_img = '';
if( $buddy_id != $user_id && $user_id != ANONYMOUS && $buddy_id != ANONYMOUS )
{
$sql = "SELECT buddy_id FROM " . BUDDIES_TABLE . " WHERE user_id = $user_id AND buddy_id = $buddy_id";
if( !$result = $db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not retrieve buddy information', '', __LINE__, __FILE__, $sql);
}
if( $row = $db->sql_fetchrow($result) )
{
$temp_url = $action . ( ( preg_match('#\?#', $action) ) ? '&' : '?' ) . "buddy=remove&b=$buddy_id";
$buddy_img = '<a href="' . $temp_url . '"><img src="' . $images['icon_buddy_remove'] . '" alt="' . $lang['Remove_buddy'] . '" title="' . $lang['Remove_buddy'] . '" border="0" /></a>';
$buddy = '<a href="' . $temp_url . '">' . $username . ' ' . $lang['Remove_buddy'] . '</a>';
}
else
{
$temp_url = $action . ( ( preg_match('#\?#', $action) ) ? '&' : '?' ) . "buddy=add&b=$buddy_id";
$buddy_img = '<a href="' . $temp_url . '"><img src="' . $images['icon_buddy'] . '" alt="' . $lang['Add_buddy'] . '" title="' . $lang['Add_buddy'] . '" border="0" /></a>';
$buddy = '<a href="' . $temp_url . '">' . $username . ' ' . $lang['Add_buddy'] . '</a>';
}
$db->sql_freeresult($result);
}
return array($buddy_img, $buddy);
}Im Profil wäre der Aufruf somit:
Code: Alles auswählen
get_buddy_img (&$user_id, &$buddy_id, $profiledata['username']);Code: Alles auswählen
get_buddy_img (&$user_id, &$buddy_id, $poster);Damit wäre auch das Problem gelöst das der Name (von diesem Code) nur Ermittelt werden kann, wenn der entsprechende User sich bereits in der Buddyliste befindet.
(Soviel nochmal zur Logik.
