PDA

View Full Version : Avatars On Custom Page


t3h3th32
12-17-2013, 05:36 PM
Hello,

I've got yet another thingy, I can't seem to be able to resolve on my own.

Basically, what this is, is that I have a custom page, it's a TSO leader board (stands for: Time Spent Online), it's basically very similar to "memberlist.php", just different layout and different data in, but the principle is the same.

Now to the problem itself. Thing is, I wanted to have avatars there for the displayed members, but all I got is the default [?] unknown.gif avatar displaying.

May I please ask someone to check this code out and find my mistake?

//Get sorted user records loop thro and run templater to build the template data
$leaders = $db->query_read_slave("
SELECT
user.*, avatar.avatarpath,NOT ISNULL(customavatar.userid) AS hascustomavatar,customavatar.dateline AS avatardateline, customavatar.width AS avwidth, customavatar.height AS avheight
FROM
" . TABLE_PREFIX . "user AS user
LEFT JOIN " . TABLE_PREFIX . "avatar AS avatar ON(avatar.avatarid = user.avatarid) LEFT JOIN " . TABLE_PREFIX . "customavatar AS customavatar ON(customavatar.userid = user.userid)
" . ($include_userfield_join ? "LEFT JOIN " . TABLE_PREFIX . "userfield AS userfield USING (userid)" : '') . "
WHERE $condition
ORDER BY user.timespentonline DESC
LIMIT " . ($limitlower - 1) . ", $perpage
");

$content = '';
$itemcount = ($pagenumber - 1) * $perpage;
$first = $itemcount + 1;

while ($leader = $db->fetch_array($leaders))
{

$leader['avwidth'] = '';
$leader['avheight'] = '';
if ($leader['avatarid'])
{
$leader['avatarurl'] = $leader['avatarpath'];
}
else
{
if ($leader['hascustomavatar'] AND $vbulletin->options['avatarenabled'] AND ($leader['permissions']['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canuseavatar'] OR $leader['adminavatar']))
{
if ($vbulletin->options['usefileavatar'])
{
$leader['avatarurl'] = $vbulletin->options['avatarurl'] . "/thumbs/avatar$userinfo[userid]_$userinfo[avatarrevision].gif";
}
else
{
$leader['avatarurl'] = 'image.php?' . $vbulletin->session->vars['sessionurl'] . "u=$userinfo[userid]&dateline=$userinfo[avatardateline]" . '&type=thumb';
}
if ($userinfo['avheight'] AND $userinfo['avwidth'])
{
$leader['avheight'] = "height=\"$userinfo[avheight]\"";
$leader['avwidth'] = "width=\"$userinfo[avwidth]\"";
}
}
else
{
$leader['avatarurl'] = '';
}
}

if (empty($leader['avatarurl'])) {
$leader['avatarurl'] = vB_Template_Runtime::fetchStyleVar('imgdir_misc') . '/unknown.gif';
}

fetch_musername($leader);
$leader['timespentonline_formatted'] = calc_timespent($leader['timespentonline']);
$leader['timespentonline_perday_formatted'] = calc_timeperday($leader['timespentonline'],$leader['joindate']);

Much appreciated,
~t3h'P?r4d0x

kh99
12-17-2013, 06:04 PM
I think the problem is probably that your code refers to $leader['permissions'] and $leader['adminavatar'], which I don't think are being set. But I don't know offhand what to do about it.

t3h3th32
12-17-2013, 08:25 PM
I think the problem is probably that your code refers to $leader['permissions'] and $leader['adminavatar'], which I don't think are being set. But I don't know offhand what to do about it.

Oh, thanks for the effort of looking at it, but I'm not sure, I completely follow. Thing is, those forum users have their own unique avatars, but the unknown.gif (no avatar) is being displayed instead. I'm kinda helpless.

Any ideas, what should I try to do now?

Regards,
~t3h'P?r4d0x

kh99
12-17-2013, 08:41 PM
Well, if you remove some of the condition from one of the "if" statements, like this (remove part in red):

else
{
if ($leader['hascustomavatar'] AND $vbulletin->options['avatarenabled'] AND ($leader['permissions']['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canuseavatar'] OR $leader['adminavatar']))
{
if ($vbulletin->options['usefileavatar'])


then see if it works (save a copy or maybe copy the line as is and comment it out first, in case you want it back). That will try to show avatars even if a user has no permissions to use an avatar, or if "adminavatar" is not true, although I don't know what that is offhand. But it could be that those aren't important in your case so you might find that it works without that part of the condition. If not, then I'll try to figure it out when I get a chance (or maybe someone else will beat me to it).

t3h3th32
12-17-2013, 11:09 PM
Hi again, removed the red part, but it changed the avatars on that page to a white one, on which was written vBulletin.

I'll appreciate any other suggestions.

Many thanks,
~t3h'Pâr4d0x

mokujin
12-18-2013, 08:50 AM
Remove

if (empty($leader['avatarurl'])) {
$leader['avatarurl'] = vB_Template_Runtime::fetchStyleVar('imgdir_misc') . '/unknown.gif';
}

And replace $leader['avatarurl'] = '';
with $leader['avatarurl'] = vB_Template_Runtime::fetchStyleVar('imgdir_misc') . '/unknown.gif';