Log in

View Full Version : Friend in postbit


felixthekat85
08-12-2011, 11:14 PM
is can show $block_data[friendbits] (template: memberinfo_block_friend) in postbit?

Frosty
08-13-2011, 04:20 AM
Amigo, why would you want that in the postbit? It kinda makes no sense. :/

felixthekat85
08-13-2011, 08:42 AM
My idea is to show how many friends you have.($post[friendcount])
and below, 6 images at random avatars of his friends.
any ideas?

Frosty
08-13-2011, 09:46 AM
It's possible, but it would definitely slow down the load of threads. I wouldn't recommend that, but count of total friends is acceptable - and I assume you already know how to add it to the postbit. I'd personally stick with that. :)

felixthekat85
08-13-2011, 06:37 PM
Thank you friend.
consider your suggestion to not load the show threads.
Equal, if you know it, I would like it you share it. and I evaluated whether it is worthwhile or not.

Another question.
The condition of MemberInfo
<if condition="$prepared['isfriend'] OR $post['userid'] == $bbuserinfo['userid']">
content
</if>
is possible apply in Postbit??

kh99
08-14-2011, 12:17 AM
Equal, if you know it, I would like it you share it. and I evaluated whether it is worthwhile or not.

I put this together by taking code from vb scripts. If you make a plugin using hook location postbit_display_complete you will have the information for up to 6 of the the posting user's friends:

if (!function_exists('get_random_friends'))
{
function get_random_friends($userid, $random = true, $max = 6)
{
global $vbulletin;
static $cache_friends = array();

if (!is_array($cache_friends[$userid]))
{
$cache_friends[$userid] = array();
$res = $vbulletin->db->query_read_slave("SELECT relationid
FROM " . TABLE_PREFIX . "userlist as userlist
WHERE userlist.userid = $userid
AND userlist.type = 'buddy'
AND userlist.friend = 'yes'
");
while ($user = $vbulletin->db->fetch_array($res))
$cache_friends[$userid][$user['relationid']] = array();
}
$ret = array();
if (count($cache_friends[$userid]))
{
if ($random)
{
$ids = array_rand($cache_friends[$userid], min($max, count($cache_friends[$userid])));
if (!is_array($ids))
$ids = array($ids);
}
else
$ids = array_slice(array_keys($cache_friends[$userid]), 0, min($max, count($cache_friends[$userid])));

$idlist = "0";
foreach ($ids as $id)
{
if (count($cache_friends[$userid][$id]) == 0)
$idlist .= ", $id";
$ret[$id] = &$cache_friends[$userid][$id];
}
if ($idlist !== "0")
{
$res = $vbulletin->db->query_read_slave("
SELECT user.userid as userid, username, 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
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)
WHERE user.userid IN ($idlist)
");
while ($userinfo = $vbulletin->db->fetch_array($res))
$ret[$userinfo['userid']] = $userinfo;
}
}
return $ret;
}
}

$friends = get_random_friends($post['userid']);
//echo "<pre>" . print_r($friends, true) . "</pre></br>";


You can uncomment the echo line to see what is available. I'll leave it to you to figure out how to display the avatars :)
Also, if you don't use the thumbnail images, it's probably a good idea to remove the "thumb" fields from the query to cut down on memory used.
I should probably add that I'm not a database expert, so this may not be the most efficient way to get the info you need.


Another question.

The condition of MemberInfo
<if condition="$prepared['isfriend'] OR $post['userid'] == $bbuserinfo['userid']">
content
</if>
is possible apply in Postbit??

No, $prepared is not available in postbit.