Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 Programming Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 04-21-2008, 07:59 PM
noonespecial noonespecial is offline
 
Join Date: Nov 2002
Posts: 250
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Quickly Add or Remove Users from Buddy List

I'm looking to quickly add a user into the buddylist array - or then remove it from that array with a different command.

So if user A wants to add user B to their buddylist, it runs a quick check, then alters that column (usertextfield.buddylist).

If they want to remove the buddy - it removes the ID from usertextfield.buddylist.

What's the SQL for this? Do I have to first grab all the data from buddylist, and then add the value, and then put it back in? Is there a easier way?
Reply With Quote
  #2  
Old 04-21-2008, 08:49 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Are you thinking of writing this as a Mod because there already is one: Buddy & Ignore List Add/Remove in Postbit I'm sure you can download that and see what the query is.
Reply With Quote
  #3  
Old 04-21-2008, 08:55 PM
noonespecial noonespecial is offline
 
Join Date: Nov 2002
Posts: 250
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

That just provides a link to send someone to the profile.php page to add buddies. That page for adding buddies is absolutely annoying.
Reply With Quote
  #4  
Old 04-21-2008, 09:03 PM
MoT3rror MoT3rror is offline
 
Join Date: Mar 2007
Posts: 423
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

This is how I add friends through php.
PHP Code:
$db->query_write("
                REPLACE INTO " 
TABLE_PREFIX "userlist
                    (userid, relationid, type, friend)
                VALUES
                    (
$userid2$userid, 'buddy', 'yes'),
                    (
$userid$userid2, 'buddy', 'yes')
            "
);

$db->query_write("
                UPDATE " 
TABLE_PREFIX "user
                SET friendcount = friendcount + 1
                WHERE userid IN (
$userid2, " $userid ")
            "
);

            
$db->query_write("
                UPDATE " 
TABLE_PREFIX "user
                SET friendreqcount = IF(friendreqcount > 0, friendreqcount - 1, 0)
                WHERE userid = " 
$userid
            
);

require_once(
DIR '/includes/functions_databuild.php');
build_userlist($userid);
build_userlist($userid2); 
Reply With Quote
  #5  
Old 04-21-2008, 09:41 PM
noonespecial noonespecial is offline
 
Join Date: Nov 2002
Posts: 250
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by MoT3rror View Post
This is how I add friends through php.
PHP Code:
$db->query_write("
                REPLACE INTO " 
TABLE_PREFIX "userlist
                    (userid, relationid, type, friend)
                VALUES
                    (
$userid2$userid, 'buddy', 'yes'),
                    (
$userid$userid2, 'buddy', 'yes')
            "
);

$db->query_write("
                UPDATE " 
TABLE_PREFIX "user
                SET friendcount = friendcount + 1
                WHERE userid IN (
$userid2, " $userid ")
            "
);

            
$db->query_write("
                UPDATE " 
TABLE_PREFIX "user
                SET friendreqcount = IF(friendreqcount > 0, friendreqcount - 1, 0)
                WHERE userid = " 
$userid
            
);

require_once(
DIR '/includes/functions_databuild.php');
build_userlist($userid);
build_userlist($userid2); 
So using a different table than VB's default?

Interesting.
Reply With Quote
  #6  
Old 04-21-2008, 09:47 PM
MoT3rror MoT3rror is offline
 
Join Date: Mar 2007
Posts: 423
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

It is code for vBulletin 3.7. Probably different then 3.6 or 3.5.
Reply With Quote
  #7  
Old 04-21-2008, 10:01 PM
noonespecial noonespecial is offline
 
Join Date: Nov 2002
Posts: 250
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Yep, it is. :-/

That's too bad - that's easier to manipulate and get at the data. 3.6 is different.

--------------- Added [DATE]1208820707[/DATE] at [TIME]1208820707[/TIME] ---------------

I ended up just doing it kinda like this:

PHP Code:
require_once('./global.php');
require_once(
DIR '/includes/functions_user.php');

$userid $vbulletin->input->clean_gpc('r''u'TYPE_UINT); 
$buddylist=explode(' 'trim($vbulletin->userinfo['buddylist']));

if (!
in_array($userid$buddylist))
{
$db->query_write("update usertextfield 
SET buddylist = '"
.$vbulletin->userinfo['buddylist'].$userid'
WHERE userid="
.$vbulletin->userinfo['userid']."
"
);
}
else
{
echo 
"Already your friend ++++head.";

--------------- Added [DATE]1208821038[/DATE] at [TIME]1208821038[/TIME] ---------------

If anyone has a better/more efficient way -- I'd love to hear it.

Thanks!
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 05:37 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.02031 seconds
  • Memory Usage 2,237KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (3)bbcode_php
  • (1)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (7)post_thanks_box
  • (7)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (7)post_thanks_postbit_info
  • (7)postbit
  • (7)postbit_onlinestatus
  • (7)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.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_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • 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
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete