That's the problem, I don't have a plugin and need to create one but have no little idea as to what I should include in it. I'm positive I am using the correct hook, but the contents of my plugin are what I need help in creating. Here is all the code associated with my function in question.
This is found in functions.php, line 1248:
Code:
function fetch_userinfo(&$userid, $option = 0, $languageid = 0)
{
global $vbulletin, $usercache, $vbphrase, $permissions, $phrasegroups;
if ($userid == $vbulletin->userinfo['userid'] AND $option != 0 AND isset($usercache["$userid"]))
{
// clear the cache if we are looking at ourself and need to add one of the JOINS to our information.
unset($usercache["$userid"]);
}
$userid = intval($userid);
// return the cached result if it exists
if (isset($usercache["$userid"]))
{
return $usercache["$userid"];
}
$hook_query_fields = $hook_query_joins = '';
($hook = vBulletinHook::fetch_hook('fetch_userinfo_query')) ? eval($hook) : false;
// no cache available - query the user
$user = $vbulletin->db->query_first_slave("
SELECT " .
iif(($option & FETCH_USERINFO_ADMIN), ' administrator.*, ') . "
userfield.*, usertextfield.*, user.*, UNIX_TIMESTAMP(passworddate) AS passworddate,
IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid" .
iif(($option & FETCH_USERINFO_AVATAR) AND $vbulletin->options['avatarenabled'], ', avatar.avatarpath, NOT ISNULL(customavatar.userid) AS hascustomavatar, customavatar.dateline AS avatardateline, customavatar.width AS avwidth, customavatar.height AS avheight, customavatar.height_thumb AS avheight_thumb, customavatar.width_thumb AS avwidth_thumb, customavatar.filedata_thumb').
iif(($option & FETCH_USERINFO_PROFILEPIC), ', customprofilepic.userid AS profilepic, customprofilepic.dateline AS profilepicdateline, customprofilepic.width AS ppwidth, customprofilepic.height AS ppheight') .
iif(($option & FETCH_USERINFO_SIGPIC), ', sigpic.userid AS sigpic, sigpic.dateline AS sigpicdateline, sigpic.width AS sigpicwidth, sigpic.height AS sigpicheight') .
(($option & FETCH_USERINFO_USERCSS) ? ', usercsscache.cachedcss, IF(usercsscache.cachedcss IS NULL, 0, 1) AS hascachedcss, usercsscache.buildpermissions AS cssbuildpermissions' : '') .
iif(!isset($vbphrase), fetch_language_fields_sql(), '') .
(($vbulletin->userinfo['userid'] AND ($option & FETCH_USERINFO_ISFRIEND)) ?
", IF(userlist1.friend = 'yes', 1, 0) AS isfriend, IF (userlist1.friend = 'pending' OR userlist1.friend = 'denied', 1, 0) AS ispendingfriend" .
", IF(userlist1.userid IS NOT NULL, 1, 0) AS u_iscontact_of_bbuser, IF (userlist2.friend = 'pending', 1, 0) AS requestedfriend" .
", IF(userlist2.userid IS NOT NULL, 1, 0) AS bbuser_iscontact_of_user" : "") . "
$hook_query_fields
FROM " . TABLE_PREFIX . "user AS user
LEFT JOIN " . TABLE_PREFIX . "userfield AS userfield ON (user.userid = userfield.userid)
LEFT JOIN " . TABLE_PREFIX . "usertextfield AS usertextfield ON (usertextfield.userid = user.userid) " .
iif(($option & FETCH_USERINFO_AVATAR) AND $vbulletin->options['avatarenabled'], "LEFT JOIN " . TABLE_PREFIX . "avatar AS avatar ON (avatar.avatarid = user.avatarid) LEFT JOIN " . TABLE_PREFIX . "customavatar AS customavatar ON (customavatar.userid = user.userid) ") .
iif(($option & FETCH_USERINFO_PROFILEPIC), "LEFT JOIN " . TABLE_PREFIX . "customprofilepic AS customprofilepic ON (user.userid = customprofilepic.userid) ") .
iif(($option & FETCH_USERINFO_ADMIN), "LEFT JOIN " . TABLE_PREFIX . "administrator AS administrator ON (administrator.userid = user.userid) ") .
iif(($option & FETCH_USERINFO_SIGPIC), "LEFT JOIN " . TABLE_PREFIX . "sigpic AS sigpic ON (user.userid = sigpic.userid) ") .
(($option & FETCH_USERINFO_USERCSS) ? 'LEFT JOIN ' . TABLE_PREFIX . 'usercsscache AS usercsscache ON (user.userid = usercsscache.userid)' : '') .
iif(!isset($vbphrase), "LEFT JOIN " . TABLE_PREFIX . "language AS language ON (language.languageid = " . (!empty($languageid) ? $languageid : "IF(user.languageid = 0, " . intval($vbulletin->options['languageid']) . ", user.languageid)") . ") ") .
(($vbulletin->userinfo['userid'] AND ($option & FETCH_USERINFO_ISFRIEND)) ?
"LEFT JOIN " . TABLE_PREFIX . "userlist AS userlist1 ON (userlist1.relationid = user.userid AND userlist1.type = 'buddy' AND userlist1.userid = " . $vbulletin->userinfo['userid'] . ")" .
"LEFT JOIN " . TABLE_PREFIX . "userlist AS userlist2 ON (userlist2.userid = user.userid AND userlist2.type = 'buddy' AND userlist2.relationid = " . $vbulletin->userinfo['userid'] . ")" : "") . "
$hook_query_joins
WHERE user.userid = $userid
");
if (!$user)
{
return false;
}
if (!isset($vbphrase) AND $user['lang_options'] === null)
{
trigger_error('The requested language does not exist, reset via tools.php.', E_USER_ERROR);
}
$user['languageid'] = (!empty($languageid) ? $languageid : $user['languageid']);
// decipher 'options' bitfield
$user['options'] = intval($user['options']);
foreach ($vbulletin->bf_misc_useroptions AS $optionname => $optionval)
{
$user["$optionname"] = ($user['options'] & $optionval ? 1 : 0);
//DEVDEBUG("$optionname = $user[$optionname]");
}
foreach($vbulletin->bf_misc_adminoptions AS $optionname => $optionval)
{
$user["$optionname"] = ($user['adminoptions'] & $optionval ? 1 : 0);
}
// make a username variable that is safe to pass through URL links
$user['urlusername'] = urlencode(unhtmlspecialchars($user['username']));
fetch_musername($user);
// get the user's real styleid (not the cookie value)
$user['realstyleid'] = $user['styleid'];
$user['securitytoken'] = sha1($user['userid'] . sha1($user['salt']) . sha1(COOKIE_SALT));
$user['logouthash'] =& $user['securitytoken'];
if ($option & FETCH_USERINFO_LOCATION)
{ // Process Location info for this user
require_once(DIR . '/includes/functions_online.php');
$user = fetch_user_location_array($user);
}
($hook = vBulletinHook::fetch_hook('fetch_userinfo')) ? eval($hook) : false;
$usercache["$userid"] = $user;
return $usercache["$userid"];
}
This is the only page which contains the isfriend conditional in this fashion.
The location where it is functional now, only on the
member.php includes the following code on line 277:
Code:
$fetch_userinfo_options = (
FETCH_USERINFO_AVATAR | FETCH_USERINFO_LOCATION |
FETCH_USERINFO_PROFILEPIC | FETCH_USERINFO_SIGPIC |
FETCH_USERINFO_USERCSS | FETCH_USERINFO_ISFRIEND
);
The code above does not appear to be inside another function but rather by itself. I tested the code by removing it and I noticed all the accociated functions with the isfriend function ceased to work, so it seems that it is indeed the right code.
The issue is my lacking ability to create a plugin for this function to work on other areas of my board, that's all.