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 01-27-2005, 06:18 PM
sabret00the's Avatar
sabret00the sabret00the is offline
 
Join Date: Jan 2003
Location: London
Posts: 5,268
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default will this bring the server to it's knees?

PHP Code:
    foreach ($moderatememberaction AS $userid => $action)
    {
        if (
$action == 0)
        { 
// no point in checking the permission if they dont want to do anything to the group
            
continue;
        }

        if (
$action == 1)
        { 
// validate

            
$validateinfo $DB_site->query_first("
                SELECT user.*
                FROM user
            "
);

            
$DB_site->query("
                UPDATE grps_user
                SET approved = 1
                WHERE groupid = 
$groupid
                AND userid = 
$userid
            "
);

            
// add data to their usertable row
            
            // send pm to user to let them know their accounts been validated
            
$message ="Hey $user, you're request to join $groupname has been accepted! :)";
            
$user['userid'] = $userid['leaderid'];
            
$user['username'] = $userid['username'];
            
$sendto["$username"] = true;
            
$tostring["$user[userid]"] = $user['username'];
            
$newpmtitle "RE: Request To Join" $validateinfo['title'];
        
            
$DB_site->query("
               INSERT INTO " 
TABLE_PREFIX "pmtext(fromuserid,fromusername, title, message, touserarray, iconid, dateline,showsignature)
               VALUES(
$bbuserinfo[userid], '" .addslashes($bbuserinfo['username']) . "', '" addslashes($newpmtitle). "', '".addslashes($message)."', '" addslashes(serialize($tostring)). "', 0, '" TIMENOW "', 1)
            "
); 

            
$pmtextid $DB_site->insert_id(); 
    
            
$DB_site->query("
               INSERT INTO " 
TABLE_PREFIX "pm (pmtextid,userid, messageread)
                VALUES (
$pmtextid$validateinfo[userid], 0)
            "
); 

            
$DB_site->shutdown_query("
               UPDATE " 
TABLE_PREFIX "user SETpmtotal=pmtotal+1, pmunread=pmunread+1 WHERE userid = $userid
            "
); 
        }
        else if (
$action == -1)
        { 
// delete

            
$validateinfo $DB_site->query_first("
                SELECT user.*
                FROM user
            "
);

            
$DB_site->query("
                DELETE 
                FROM grps_user
                WHERE groupid = 
$groupid
                AND userid = 
$userid
            "
);
            
            
// send pm to let em down gently.
            
$message ="Sorry $user, you're request to join $groupname has been denied! :(";
            
$user['userid'] = $validateinfo['userid'];
            
$user['username'] = $validateinfo['username'];
            
$sendto["$username"] = true;
            
$tostring["$user[userid]"] = $user['username'];
            
$newpmtitle "RE: Request To Join" $validateinfo['title'];
        
            
$DB_site->query("
               INSERT INTO " 
TABLE_PREFIX "pmtext(fromuserid,fromusername, title, message, touserarray, iconid, dateline,showsignature)
               VALUES(
$bbuserinfo[userid], '" .addslashes($bbuserinfo['username']) . "', '" addslashes($newpmtitle). "', '".addslashes($message)."', '" addslashes(serialize($tostring)). "', 0, '" TIMENOW "', 1)
            "
); 

            
$pmtextid $DB_site->insert_id(); 
    
            
$DB_site->query("
               INSERT INTO " 
TABLE_PREFIX "pm (pmtextid,userid, messageread)
                VALUES (
$pmtextid$userid, 0)
            "
); 

            
$DB_site->shutdown_query("
               UPDATE " 
TABLE_PREFIX "user SETpmtotal=pmtotal+1, pmunread=pmunread+1 WHERE userid = $userid
            "
); 

        }
    } 
admittedly not all the codes right, but you get th eidea of how many queries it's gonna do per record it validates
Reply With Quote
  #2  
Old 01-27-2005, 06:40 PM
Colin F's Avatar
Colin F Colin F is offline
 
Join Date: Jul 2004
Location: Switzerland
Posts: 1,551
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

why don't you collect the values you can and then call them after the loop, with something like this:

[sql]
INSERT INTO " . TABLE_PREFIX : "pm
(pmtextid, userid, messageread)
VALUES
(3, 7, 0),
(2, 9, 0),
(5, 7, 0)[/sql]

I usually do this by saving everything in an array and then imploding the array.
Reply With Quote
  #3  
Old 01-27-2005, 06:44 PM
sabret00the's Avatar
sabret00the sabret00the is offline
 
Join Date: Jan 2003
Location: London
Posts: 5,268
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

hmm that's not a bad idea, will it only work for the pm query or willit work for all of em?

also how would i generate the pmtextid's?
Reply With Quote
  #4  
Old 01-28-2005, 02:01 AM
Natch's Avatar
Natch Natch is offline
 
Join Date: Nov 2002
Location: Australia
Posts: 851
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Basically, you will build a multi-dimensional array based on the userid, the actions you want to validate, and the tasks to perform for each action:
Code:
[userid] => array([actionid] => array([taskid] => array('taskitem1', 'taskitem2', 'taskitem3')))
then you walk thru this array later and build up one query to INSERT each lot of PM text's, run each lot of user UPDATES, etc.
Reply With Quote
  #5  
Old 01-28-2005, 02:16 AM
filburt1 filburt1 is offline
 
Join Date: Feb 2002
Location: Maryland, US
Posts: 6,144
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You should also look into the switch statement. It won't likely change the speed, but it is a far preferable way to take actions based on multiple values of the same variable.
Reply With Quote
  #6  
Old 01-29-2005, 11:59 PM
miz miz is offline
 
Join Date: Mar 2003
Posts: 416
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by sabret00the
hmm that's not a bad idea, will it only work for the pm query or willit work for all of em?

also how would i generate the pmtextid's?
like that (i didnt read your code till the end - sorry)

PHP Code:

$pmtextid 
$DB_site->insert_id();

$DB_site->query("INSERT INTO " TABLE_PREFIX "pm (pmtextid,userid, folderid, messageread) VALUES ('$pmtextid', '$userid', '0','0')");

//dont forget to update user pms count

    
$DB_site->query("
        UPDATE " 
TABLE_PREFIX "user
        SET  pmunread = pmunread+1, pmtotal = pmtotal+1
        WHERE userid ='
$userid'
    "
); 
this is the code i used on my hack,
works like charm
Reply With Quote
  #7  
Old 01-31-2005, 09:08 AM
Carnage Carnage is offline
 
Join Date: Jan 2005
Location: uk
Posts: 760
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

might just be me but is selecting everything from the usertable nessisary?

PHP Code:
           $validateinfo $DB_site->query_first(
                SELECT user.* 
                FROM user 
            "
); 
that will cause some slowups imo using something like:

PHP Code:
           $validateinfo $DB_site->query_first(
                SELECT user.userid, user.username, user.membergroupids (example of rows you need, i dont know which ones these are so i put in some randoms.) 
                FROM user 
                WHERE user.userid = 
$userid
            "
); 
may be better
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 09:39 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.04449 seconds
  • Memory Usage 2,272KB
  • 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
  • (1)bbcode_code
  • (4)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