View Single Post
  #8  
Old 05-07-2008, 10:23 AM
GameWizard's Avatar
GameWizard GameWizard is offline
 
Join Date: Apr 2004
Location: Vancouver, BC
Posts: 319
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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.
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01132 seconds
  • Memory Usage 1,801KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD_SHOWPOST
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (2)bbcode_code
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • reputationlevel
  • showthread
Included Files:
  • ./showpost.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showpost_start
  • bbcode_fetch_tags
  • bbcode_create
  • postbit_factory
  • showpost_post
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • showpost_complete