Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 Programming Discussions
  #1  
Old 03-23-2005, 12:15 PM
sabret00the's Avatar
sabret00the sabret00the is offline
 
Join Date: Jan 2003
Location: London
Posts: 5,268
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default for,foreach or while?

ok to understand this script, you need to know that $grps_showgroup is predefined at an earlier part of the script

the form that sends the data to the scipt is
HTML Code:
			<form action="invitation.php" method="post">
				<table>
					<tr>
						<td valign="top">
							<fieldset>
								<legend>Users To Invite</legend>
								Username: <input name="invite_username[]" type="text" size="25" maxlength="250"><br />
								<br />
								Username: <input name="invite_username[]" type="text" size="25" maxlength="250"><br />
								<br />
								Username: <input name="invite_username[]" type="text" size="25" maxlength="250"><br />
								<br />
								Username: <input name="invite_username[]" type="text" size="25" maxlength="250"><br />
								<br />
								Username: <input name="invite_username[]" type="text" size="25" maxlength="250"><br />
							</fieldset>
						</td>
						<td valign="top">
							<fieldset>
								<legend>Personal Message To Be Included</legend>
									<textarea name="personal_message" cols="50" rows="9" id="personal_message">Please Enter A Personal Message The Group Description and Group Title Will Be Automatically Included.</textarea>
							</fieldset>
						</td>
					</tr>
				</table>
				<br />
				<input name="submit" type="button" value="Send Invite(s)">
				<input type="hidden" name="do" value="doinvite" />
			</form>
and this is the process engine
PHP Code:
if ($do == "doinvite")
{
    
globalize($_POST, array('invite_username' => STRpersonal_message => INT));

    if (
$personal_message)
    {
        
$og_personal_message "Please Enter A Personal Message The Group Description and Group Title Will Be Automatically Included.";
        if ((
strstr($personal_message$og_personal_message)) AND (strlen($personal_message) == strlen($og_personal_message))
        {
            
$include_message TRUE;
        }
    }

    foreach (
$invite_username AS $invite_id => $username)
    {
        if (
$username == "")
        { 
// no point in checking the permission if they dont want to do anything to the confession
            //eval(print_standard_error('invalid_username'));
            // do nothing
        
}
        else
        {
            
$message "$bbuserinfo[username] feels that you may be interested in joining one of the $vboptions[hometitle] Groups, this one in particular [url=$vboptions[homeurl]/groups/groups.php?$session[sessionurl]g=$groupid]$grps_showgroup[title]"[/url]" . if ($include_message) {"\n\nThey also included this message:\n=========================\n\n$personal_message. ;} . "\n\n=========================\n\n Please take a look at the group, review it and then join.\n\nIf you'd like to just join straight away, please click this link [url=$vboptions[homeurl]/groups/membership.php?$session[sessionurl]g=$groupid]JOIN NOW" "[/url]";
            
$user['userid'] = //need to get the userid somehow?;
            
$user['username'] = $username;
            
$sendto["$username"] = true;
            
$tostring["$user[userid]"] = $user['username'];
            
$newpmtitle "You've Been Invited To Join " $grps_membership['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$user[userid], 0)
            "
); 

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

am i doing this all wrong? and how would i go about getting the userid? as this seems to be evading me especially as i'm getting the usernames as part of the loop.
Reply With Quote
  #2  
Old 03-23-2005, 02:43 PM
Revan's Avatar
Revan Revan is offline
 
Join Date: Jan 2004
Location: Norway
Posts: 1,671
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

First thing I would like to say is that you have to seperate your form names.
Else, since all form names are the same, you get one username.
Second, having the
PHP Code:
if ($username == "")
        { 
// no point in checking the permission if they dont want to do anything to the confession
            //eval(print_standard_error('invalid_username'));
            // do nothing
        
}
        else
        { 
is abit redundant. just say if (!empty($username))

Third, if you pass invite_username as a STR, you will break it as it is an array of usernames.
you must pass it without a datatype.
Reply With Quote
  #3  
Old 03-23-2005, 06:28 PM
sabret00the's Avatar
sabret00the sabret00the is offline
 
Join Date: Jan 2003
Location: London
Posts: 5,268
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

heh, sorry i totally missed that whole post and got it sorted but i was put onto some super code

PHP Code:
    if ($do == "doinvite")
    {
        
globalize($_POST, array(
            
'personal_message' => STR,
            
'invite_username'
        
));

        if (
$personal_message)
        {
            
$og_personal_message "Please Enter A Personal Message The Group Description and Group Title Will Be Automatically Included.";

            if ((
strstr($personal_message$og_personal_message)) AND (strlen($personal_message) == strlen($og_personal_message)))
            {
                
$include_message TRUE;
            }
        }

        
$invite_users explode(";"addslashes(htmlspecialchars_uni(implode(";"$invite_username))));

        
$receipants $DB_site->query("
            SELECT user.userid as userid, user.username as username
            FROM " 
TABLE_PREFIX "user AS user
            WHERE username='" 
implode('\' OR username=\''$invite_users) . "'
            ORDER BY user.username
        "
);

        if (
$DB_site->num_rows($receipants) != count($invite_username))
        {
            eval(
print_standard_error('grps_invite_invalidusername'));
            die();
        } 
only problem is, i need to make sure that if they only want to invite one person it will still go through?

i've figured the best thing would be to let it go through, split the array at an empty point then remerge it?

that way i'm not making the database so any extra work as even if they put in two usernames, had a blank field then another two usernames it would just remove the space and then do the queries for the other four?
Reply With Quote
  #4  
Old 03-23-2005, 07:57 PM
Revan's Avatar
Revan Revan is offline
 
Join Date: Jan 2004
Location: Norway
Posts: 1,671
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

PHP Code:
foreach ($invite_users as $key => $invite)
{
    if (!empty(
$invite))
    {
         
$inviteusers[] = $invite
    }

I believe this should work fine
Reply With Quote
  #5  
Old 03-23-2005, 08:03 PM
sabret00the's Avatar
sabret00the sabret00the is offline
 
Join Date: Jan 2003
Location: London
Posts: 5,268
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

this is the below code, is it compatible?
PHP Code:
        $message $bbuserinfo['username'] . " feels that you may be interested in joining one of the " $vboptions['hometitle'] . " Groups, this one in particular [url=" $vboptions['homeurl'] . "/groups/groups.php?" $session[sessionurl] . "g=" $groupid "]" $grps_showgroup['title'] . "[/url]: " $grps_showgroup['description'];
        
        if (
$include_message)
        {
            
$message .= "\n\nThey also included this message:\n=========================\n\n$personal_message\n\n=========================";
        }
        
        
$message .= "\n\n Please take a look at the group, review it and then join.\n\nIf you'd like to just join straight away, please click this link [url=" $vboptions['homeurl'] . "/groups/membership.php?" $session['sessionurl'] . "g=" $groupid "][b]JOIN NOW[/b][/url]";

        while (
$receipant $DB_site->fetch_array($receipants))
        { 
            
$sendto["$username"] = true;
            
$tostring["$receipant[userid]"] = $receipant['username'];
            
$newpmtitle "You've Been Invited To Join " $grps_showgroup['title'];
            echo 
"<br />We got username $receipant[username] with userid: $receipant[userid]";

            
$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$receipant[userid], 0)
            "
); 

            
$DB_site->shutdown_query("
                UPDATE " 
TABLE_PREFIX "user SET pmtotal=pmtotal+1, pmunread=pmunread+1 WHERE userid = $receipant[userid]
            "
); 
        }

        
//redirect
        
$url "groups.php?$session[sessionurl]g=$groupid";
        
$_REQUEST['forceredirect'] = true
        eval(
print_standard_redirect('grps_invitesent'));
    } 
Reply With Quote
  #6  
Old 03-23-2005, 08:09 PM
Revan's Avatar
Revan Revan is offline
 
Join Date: Jan 2004
Location: Norway
Posts: 1,671
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

My first comment would be that you NEED to use an if() for the pmpopup. It was what annoyed me the most about rpg v2

and I believe you can just use my foreach before the $recipants (:P) query.
The purpose of my code was to eliminate empty array keys before the query, I think
Reply With Quote
  #7  
Old 03-23-2005, 08:28 PM
sabret00the's Avatar
sabret00the sabret00the is offline
 
Join Date: Jan 2003
Location: London
Posts: 5,268
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

done that, but now it's failing at
PHP Code:
        if ($DB_site->num_rows($receipants) != count($invite_username))
        {
            eval(
print_standard_error('grps_invite_invalidusername'));
            die();
        } 
btw, pm popup, i wondered how to do that? how do you do that?
Reply With Quote
  #8  
Old 03-23-2005, 08:36 PM
Revan's Avatar
Revan Revan is offline
 
Join Date: Jan 2004
Location: Norway
Posts: 1,671
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

If I was you, I would just steal vB's PM Send code
It takes care of all that bs and produces perfectly coded PMs

And ti fails at that point because you need to rename the count()'d array
Reply With Quote
  #9  
Old 03-24-2005, 06:22 AM
sabret00the's Avatar
sabret00the sabret00the is offline
 
Join Date: Jan 2003
Location: London
Posts: 5,268
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks Revan, working perfectly
Reply With Quote
Reply

Thread Tools
Display Modes

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 03:53 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.04291 seconds
  • Memory Usage 2,328KB
  • Queries Executed 13 (?)
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_html
  • (6)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (9)post_thanks_box
  • (9)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (9)post_thanks_postbit_info
  • (9)postbit
  • (9)postbit_onlinestatus
  • (9)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_postinfo_query
  • fetch_postinfo
  • 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