PDA

View Full Version : Want to show user image on the header of every page


ltwinnerr
08-10-2011, 02:03 PM
When a user is logged into my site I want to show their avatar in the header of every page.

I thought it would be a simple matter of retrieving user image from some global variable but after looking at the avatars in the forum, which have src attributes like "image.php?u=1&dateline=1312310668" and did some debugging with netbeans and I can see it is more complicated than that and the avatars are retrieved using the image.php script.

I have inserted a template_hook.user_pic into my header template and I have a plugin that registers the variable -

$template_hook['user_pic'] = xyz

All I am missing is the xyz. So how can I retrieve the image of the currently logged in user so I can replace the xyz with the users image? Cheers.

kh99
08-10-2011, 02:36 PM
I always cheat on stuff like that because it's hard to figure out. So in this case I went to includes/class_postbit.php and stole the code (and changed $post to $vbulletin->userinfo):

if ($vbulletin->userinfo['avatarid'])
{
$vbulletin->userinfo['avatarurl'] = $vbulletin->userinfo['avatarpath'];
}
else
{
if ($vbulletin->userinfo['hascustomavatar'] AND $vbulletin->options['avatarenabled'])
{
if ($vbulletin->options['usefileavatar'])
{
$vbulletin->userinfo['avatarurl'] = $vbulletin->options['avatarurl'] . '/avatar' . $vbulletin->userinfo['userid'] . '_' . $vbulletin->userinfo['avatarrevision'] . '.gif';
}
else
{
$vbulletin->userinfo['avatarurl'] = 'image.php?' . $vbulletin->session->vars['sessionurl'] . 'u=' . $vbulletin->userinfo['userid'] . '&dateline=' . $vbulletin->userinfo['avatardateline'];
}
}
else
{
$vbulletin->userinfo['avatarurl'] = '';
}
}


putting that in parse_templates seems to work. And you also need a plugin on init_startup with:

define('AVATAR_ON_NAVBAR', 1);


Strangely, the code already has checks for AVATAR_ON_NAVBAR, but it seems to do nothing except load the avatar data into $vbulletin->userinfo[] (but it turns out to be what's needed to make this work).

Anyway, then you should be able to use {vb:raw bbuserinfo.avatarurl} in a template.