Hello,
I've been trying to get the User CP to support buddylist-related needs. That is, I added the template code of the buddylist template and added this plugin code for usercp_start hook:
PHP Code:
if (!$vbulletin->userinfo['userid'])
{
print_no_permission();
}
($hook = vBulletinHook::fetch_hook('misc_buddylist_start')) ? eval($hook) : false;
$buddies =& $vbulletin->input->clean_gpc('r', 'buddies', TYPE_STR);
if (trim($vbulletin->userinfo['buddylist']))
{
$buddylist = preg_split('/( )+/', trim($vbulletin->userinfo['buddylist']), -1, PREG_SPLIT_NO_EMPTY);
$datecut = TIMENOW - $vbulletin->options['cookietimeout'];
$buddys = $db->query_read_slave("
SELECT
user.username, (user.options & " . $vbulletin->bf_misc_useroptions['invisible'] . ") AS invisible, user.userid, session.lastactivity
FROM " . TABLE_PREFIX . "user AS user
LEFT JOIN " . TABLE_PREFIX . "session AS session ON(session.userid = user.userid)
WHERE user.userid IN (" . implode(',', $buddylist) . ")
ORDER BY username ASC,session.lastactivity DESC
");
$onlineusers = '';
$offlineusers = '';
$newusersound = '';
$lastonline = array();
if (isset($buddies))
{
$buddies = urldecode($buddies);
$lastonline = explode(' ', $buddies);
}
$buddies = '0 ';
$show['playsound'] = false;
require_once(DIR . '/includes/functions_bigthree.php');
while ($buddy = $db->fetch_array($buddys))
{
if ($doneuser["$buddy[userid]"])
{
continue;
}
$doneuser["$buddy[userid]"] = true;
if ($onlineresult = fetch_online_status($buddy))
{
if ($onlineresult == 1)
{
$buddy['statusicon'] = 'online';
}
else
{
$buddy['statusicon'] = 'invisible';
}
$buddies .= $buddy['userid'] . ' ';
}
else
{
$buddy['statusicon'] = 'offline';
}
$show['highlightuser'] = false;
($hook = vBulletinHook::fetch_hook('misc_buddylist_bit')) ? eval($hook) : false;
if ($buddy['statusicon'] != 'offline')
{
if (!in_array($buddy['userid'], $lastonline) AND !empty($lastonline))
{
$show['playsound'] = true;
$show['highlightuser'] = true;
// add name to top of list
eval('$onlineusers = "' . fetch_template('buddylistbit') . '" . $onlineusers;');
}
else
{
eval('$onlineusers .= "' . fetch_template('buddylistbit') . '";');
}
}
else
{
eval('$offlineusers .= "' . fetch_template('buddylistbit') . '";');
}
}
}
$buddies = urlencode(trim($buddies));
It works great on usercp.php, but I wish for it to work globally on the usercp_shell template. So, I tried the usercp_nav_start hook and got this error:
Quote:
Fatal error: Call to a member function on a non-object in /home/gaminghy/public_html/forums/includes/functions_user.php(51) : eval()'d code on line 16
|
What would the correct way to optimize the code so it still works, but doesn't cause the errors? I plan to release this as a hack/template mod here, but just need help with that one part.
Thank you.