Go Back   vb.org Archive > vBulletin Modifications > Archive > vB.org Archives > vBulletin 3.6 > vBulletin 3.6 Add-ons
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
Form Hack Details »»
Form Hack
Version: 4.1, by Abe1 Abe1 is offline
Developer Last Online: Jun 2010 Show Printable Version Email this Page

Category: New Posting Features - Version: 3.6.x Rating:
Released: 09-14-2006 Last Update: 04-23-2008 Installs: 1216
Uses Plugins Template Edits
 
No support by the author.

Form Hack 4.1


Features:

Ever wanted an online form that a user can fill out, which when submitted gets:
  • Posted into a new thread in a forum of your choice
  • Create a new poll in the new thread with options of your choice
  • Posted as a reply in an existing thread of your choice
  • PMed to you or someone else
  • Emailed to an email address you specify
  • Choose to redirect to the post, thread or forum, or a custom thank you message
  • Choose to redirect to edit post
  • See a preview before they submit

Or any combination or all of the above?

Well, this is the hack for you!

You can use this for:
  • Moderator Applications
  • Quiz Submit Form which gets PMed to a moderator
  • Contact Form that goes to PM, email or thread
  • Guests to apply to be members
  • Report a Moderator form that goes as a PM to you
  • Guests can PM you for whatever reason
  • Order form to buy things
  • Donation form
  • News or Articles submissions that can go straight to a thread

Or anything you like - this hack is totally customizable via the AdminCP.

The beauty of this hack is that once you install this hack, to make a new form all you need to do is copy the main hook, rename it to whatever you want, edit the variables in the hook, and you have a totally new form!!! You do not need to touch the templates again, but can always create new ones and use different templates for different forms.

Format of the form:
  • One main input question
  • 3 Radio buttons Choice questions
  • 3 Normal text input questions
  • 1 Drop down menu
  • 3 Check boxes
  • 1 Long answer question
  • 1 VB message editor text box question
  • Upload attachments

This is customizable via the hook.

Also:
  • You can set the usergroups you want access to this form.
  • Depending on your forum permissions, if the new thread is in a public forum, members can reply to it. This hack allows a form to submit the new thread or post wherever you want it to go.
  • Force the user to answer all questions.

INSTALLATION
Easy - takes only a few minutes:
  • Import the XML into products. (admin cp -> Plug-in System -> Manage Products -> Add/Import Product)
  • Edit the main plug-in - the instructions are all inside the hook itself, in the top half. Follow the instructions carefully!
  • To get to the form, go to: /newthread.php?do=form (change "form" to the name of your form if you have few)

Done!

Use this hack to make as many forms as you like!

Enjoy!

Updates:

Version 4.0: (09/15/2006)
  • Ported over for vb3.6
  • Send to multiple emails.
  • Send multiple PMs.
  • Parse emails for BBCode
  • And finally, ATTACHMENTS!

Version 4.1: (04/24/2008)
  • Fixed for vb 3.6.10
  • Small bug fixed.
  • List of the 2 quick edits are in the zip file so you don't have to start making a form from scratch.

MAKE SURE YOU CLICK INSTALL!
You will get an email when a new version is released.

Abe1 with rights from Dr Erwin Loh

Supporters / CoAuthors

Show Your Support

  • This modification may not be copied, reproduced or published elsewhere without author's permission.

Comments
  #102  
Old 09-23-2006, 09:48 PM
Martin-TMGRS Martin-TMGRS is offline
 
Join Date: May 2005
Location: Coventry
Posts: 74
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by The-Ensemble
did you edit the templates as well as the php code?
No I didn't but I have now, thanks for your help, many thanks
Reply With Quote
  #103  
Old 09-23-2006, 10:32 PM
The-Ensemble's Avatar
The-Ensemble The-Ensemble is offline
 
Join Date: Jul 2006
Location: United Kingdom
Posts: 278
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

No problem

Anyone on my problem?
Reply With Quote
  #104  
Old 09-24-2006, 05:21 PM
thalamus's Avatar
thalamus thalamus is offline
 
Join Date: Sep 2005
Location: UK
Posts: 66
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I've set this up, and amended the file and templates to generate a Contact us function that is to be posted into a specified forum.

The form looks good, the information is great and it works wonderfully when posting into the forum... for those that have the relevant permissions...

Unfortunately, the form will be completed and submitted by unregistered members and I was wondering whether there's anything at all can be done to allow this to happen. The process is: guest or member (who generally doesn't have access to the forum into which its posted) completes a contact us form. It gets posted into the forum, and a "support" usergroup member responds or it's discussed.

Any clues as to where I should start looking for this solution?

edit: just saw this in the hack description:
Quote:
"Depending on your forum permissions, if the new thread is in a public forum, members can reply to it. This hack allows a form to submit the new thread or post wherever you want it to go."
Well either I'm missing something completely obvious, or it simply doesn't do this. Unless it's this image verification thing that was mentioned a few pages back that's stopping it? I have it set to avoid spammage, so is that the problem I'm facing??

edit again: OK, just found that it *is* the image verification problem that was causing it. It now posts, but as Moderated - guess I'll have to tweak the forum/usergroup permissions to get around that. Just to confirm... by setting Guest Posts needs Image Verification to yes in your vb Options DOES cause this hack not to post into forums in those situations. Oh and the color red becomes green on these forums for some inexplicable reason...
Reply With Quote
  #105  
Old 09-27-2006, 03:55 AM
ChrisBaktis ChrisBaktis is offline
 
Join Date: Mar 2004
Location: CT
Posts: 409
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by ChrisBaktis
I tried that but it just left it out in the thread title

My $postitle code is = $bbuserinfo[username] / $normalanswer1

The thread that is created has a title that is this " / $normalanswer1" - the username doesnt show but the $normalanswer info does
Still looking for support on this.
Reply With Quote
  #106  
Old 09-27-2006, 11:17 AM
maroceve maroceve is offline
 
Join Date: Oct 2005
Location: Casablanca, Morocco
Posts: 232
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

waaay too complicated for us non coders...not for me
Reply With Quote
  #107  
Old 09-27-2006, 04:17 PM
thalamus's Avatar
thalamus thalamus is offline
 
Join Date: Sep 2005
Location: UK
Posts: 66
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by ChrisBaktis
Still looking for support on this.
You may have to set it up as a variable in the xml within the products manager - edit the Forms Hack in Products Manager, then under the VARIABLES section, put:
Quote:
$user_name = $bbuserinfo[username];
then as your title put:
Quote:
$user_name / $normalanswer1
Anyone have any idea as to how I can bypass the moderation queue when I post it into a "closed" forum?
Reply With Quote
  #108  
Old 09-27-2006, 05:38 PM
ChrisBaktis ChrisBaktis is offline
 
Join Date: Mar 2004
Location: CT
Posts: 409
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by thalamus
You may have to set it up as a variable in the xml within the products manager - edit the Forms Hack in Products Manager, then under the VARIABLES section, put:

then as your title put:


Anyone have any idea as to how I can bypass the moderation queue when I post it into a "closed" forum?

I have this in my form hack and it is still a no go.

Code:
// Part 1
$user_name = $bbuserinfo[username];
$vbulletin->input->clean_array_gpc('p', array(
'normalanswer1' => TYPE_STR,
'radioanswer1' => TYPE_STR,
'radioanswer2' => TYPE_STR,
'radioanswer3' => TYPE_STR,
'radioanswer4' => TYPE_STR,
'radioanswer5' => TYPE_STR,
'radioanswer3other' => TYPE_STR,
'answer1' => TYPE_STR,
'answer2' => TYPE_STR,
'answer3' => TYPE_STR,
'dropdownanswer1' => TYPE_STR,
'checkboxanswer1_1' => TYPE_STR,
'checkboxanswer1_2' => TYPE_STR,
'checkboxanswer1_3' => TYPE_STR,
'longanswer1' => TYPE_STR,
'longanswer2' => TYPE_STR,
'longanswer3' => TYPE_STR
));

// Part 2
$user_name = $bbuserinfo[username];
$normalanswer1 = $vbulletin->GPC['normalanswer1'];
$radioanswer1 = $vbulletin->GPC['radioanswer1'];
$radioanswer2 = $vbulletin->GPC['radioanswer2'];
$radioanswer3 = $vbulletin->GPC['radioanswer3'];
$radioanswer4 = $vbulletin->GPC['radioanswer4'];
$radioanswer5 = $vbulletin->GPC['radioanswer5'];
$radioanswer3other = $vbulletin->GPC['radioanswer3other'];
$answer1 = $vbulletin->GPC['answer1'];
$answer2 = $vbulletin->GPC['answer2'];
$answer3 = $vbulletin->GPC['answer3'];
$dropdownanswer1 = $vbulletin->GPC['dropdownanswer1'];
$checkboxanswer1_1 = $vbulletin->GPC['checkboxanswer1_1'];
$checkboxanswer1_2 = $vbulletin->GPC['checkboxanswer1_2'];
$checkboxanswer1_3 = $vbulletin->GPC['checkboxanswer1_3'];
$longanswer1 = $vbulletin->GPC['longanswer1'];
$longanswer2 = $vbulletin->GPC['longanswer2'];
$longanswer3 = $vbulletin->GPC['longanswer3'];
Reply With Quote
  #109  
Old 09-27-2006, 06:41 PM
thalamus's Avatar
thalamus thalamus is offline
 
Join Date: Sep 2005
Location: UK
Posts: 66
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You don't need it in part 1, only part 2 where you're defining the variable. Also make sure you set your title to reflect the given variable $user_name
Reply With Quote
  #110  
Old 09-27-2006, 07:35 PM
ChrisBaktis ChrisBaktis is offline
 
Join Date: Mar 2004
Location: CT
Posts: 409
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by thalamus
You don't need it in part 1, only part 2 where you're defining the variable. Also make sure you set your title to reflect the given variable $user_name
I really appreciate your help on this but it is still not working....here is my form maybe im messing something up somewhere.

Code:
// To add more then one form, copy this whole text, and creat a new plug-in with the hook location 'newthread_start'.
// After, change the form name. You can't have 2 forms with the same name.

// Name of this form
$formname = "tradeform";

if ($_REQUEST['do'] == $formname)
{

// #######################################################################
// ######################## CUSTOMIZE VARIABLES ##########################
// #######################################################################

////////////////////////////////////////////////////////////////////////////////////////////////////
////// BEGIN CUSTOMIZATION BELOW////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////
//VARIABLES
//Study how variables are add here to add or remove any. If you add a variable to your form, you must add it to part one and part two.
////////////////////////////////////////////////////////////////////////////////////////////////////

// Part 1
$vbulletin->input->clean_array_gpc('p', array(
'normalanswer1' => TYPE_STR,
'radioanswer1' => TYPE_STR,
'radioanswer2' => TYPE_STR,
'radioanswer3' => TYPE_STR,
'radioanswer4' => TYPE_STR,
'radioanswer5' => TYPE_STR,
'radioanswer3other' => TYPE_STR,
'answer1' => TYPE_STR,
'answer2' => TYPE_STR,
'answer3' => TYPE_STR,
'dropdownanswer1' => TYPE_STR,
'checkboxanswer1_1' => TYPE_STR,
'checkboxanswer1_2' => TYPE_STR,
'checkboxanswer1_3' => TYPE_STR,
'longanswer1' => TYPE_STR,
'longanswer2' => TYPE_STR,
'longanswer3' => TYPE_STR
));

// Part 2
$user_name = $bbuserinfo[username];
$normalanswer1 = $vbulletin->GPC['normalanswer1'];
$radioanswer1 = $vbulletin->GPC['radioanswer1'];
$radioanswer2 = $vbulletin->GPC['radioanswer2'];
$radioanswer3 = $vbulletin->GPC['radioanswer3'];
$radioanswer4 = $vbulletin->GPC['radioanswer4'];
$radioanswer5 = $vbulletin->GPC['radioanswer5'];
$radioanswer3other = $vbulletin->GPC['radioanswer3other'];
$answer1 = $vbulletin->GPC['answer1'];
$answer2 = $vbulletin->GPC['answer2'];
$answer3 = $vbulletin->GPC['answer3'];
$dropdownanswer1 = $vbulletin->GPC['dropdownanswer1'];
$checkboxanswer1_1 = $vbulletin->GPC['checkboxanswer1_1'];
$checkboxanswer1_2 = $vbulletin->GPC['checkboxanswer1_2'];
$checkboxanswer1_3 = $vbulletin->GPC['checkboxanswer1_3'];
$longanswer1 = $vbulletin->GPC['longanswer1'];
$longanswer2 = $vbulletin->GPC['longanswer2'];
$longanswer3 = $vbulletin->GPC['longanswer3'];

////////////////////////////////////////////////////////////////////////////////////////////////////
//USERGROUPS ALLOWED
//You can add or remove usegroups that are ALLOWED to use this form by changing the numbers below in the array.
//To enable this feature, remove the '//' before the 'if'.
////////////////////////////////////////////////////////////////////////////////////////////////////

// if (!in_array($vbulletin->userinfo['usergroupid'], array(2,5,6,22,13,27,33,9,28,31,24,19,15))) print_no_permission();

////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////
//NAME OF TEMPLATES - DO THIS BIT IF YOU ARE MAKING MORE FORMS AND WANT TO USE A DIFFERENT LOOKING TEMPLATE
////////////////////////////////////////////////////////////////////////////////////////////////////

// Name of the main template
$maintemplate = "tradeform";
// Name of the answer template
$answertemplate = "tradeformanswers";

////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////
//CHOOSE WHETHER YOU WANT FORM TO BE POSTED IN A NEW THREAD, NEW POLL, REPLY TO EXISITING THREAD, PMed OR EMAILED
///////////////////////////////////////////////////////////////////////////////////////////////////

//ENABLE FORM TO BE POSTED - 1 = yes, 0 = no
$formforum = "1";

//FORUM TO POST NEW THREAD IN
//You CAN make this number a variable. You can have a drop down menu or in the link like do=form&f=1. Make sure you add it the variables list.
$formforumid = "36";

//ENABLE POLL TO BE CREATED - 1 = yes, 0 = no
$formpoll = "0";
$polloption[1] = "Yes";
$polloption[2] = "No";
$polloption[3] = "Maybe";

//Make poll public - 1 = yes, 0 = no
$pollpublic = "0";

////////////////////////////////////////////////////////////////////////////////////////////////////

//ENABLE FORM TO REPLY TO EXISTING THREAD - 1 = yes, 0 = no
$formreply = "0";

//EXISTING THREAD ID FOR FORM TO REPLY IN
$formreplythreadid = "12345";

////////////////////////////////////////////////////////////////////////////////////////////////////

//ENABLE FORM TO BE PMED (guests CANNOT use this option) - 1 = yes, 0 = no
$formpm = "0";

//USERNAME TO PM TO (separate multiple usernames with a ';')
$formpmname = "Abe";

////////////////////////////////////////////////////////////////////////////////////////////////////

//ENABLE FORM TO BE EMAILED - 1 = yes, 0 = no
$formemail = "0";

//EMAIL ADDRESS TO EMAIL TO (separate multiple usernames with a ';')
$formemailaddress = "youremail@yourforums.com";

////////////////////////////////////////////////////////////////////////////////////////////////////

//ENABLE ATTACHMENTS - 1 = yes, 0 = no
//attachments can only be used if the form is going to make a new thread or post
$allow_attachments = "1";

////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////
//REDIRECT OPTIONS:
// 0 - thank you message (thread, reply, pm, or email)
// 1 - redirect to post (thread or reply)
// 2 - redirect to thread (thread only)
// 3 - redirect to forum (thread only)
// 4 - redirect to editpost (thread or reply)
//
// Feel free to change the thank you message if you choose option 0
////////////////////////////////////////////////////////////////////////////////////////////////////

$redirectoption = "2";

$errormessage = "Thank you for submitting this form!"; //This is the thank you message

////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////
//FORCE USER TO ANSWER ALL QUESTIONS - 1 = yes, 0 = no
//If you added or deleted variables, you must edit what it checked for. Search for "$answerall ==" and edit 2 lines under it.
////////////////////////////////////////////////////////////////////////////////////////////////////

$answerall = "0";

////////////////////////////////////////////////////////////////////////////////////////////////////
//TITLE OF FORM (do not use quotation marks or you will get a parse error, besides the quotes around the whole title)
////////////////////////////////////////////////////////////////////////////////////////////////////

$formtitle = "Sports Card Haven Trade Post Form";

////////////////////////////////////////////////////////////////////////////////////////////////////
//TITLE OF THREAD/POST/PM/EMAIL (do not use quotation marks in the title or you will get a parse error)
//You may use variables from the form for this.
////////////////////////////////////////////////////////////////////////////////////////////////////

$posttitle = "$user_name / $normalanswer1";

////////////////////////////////////////////////////////////////////////////////////////////////////
//PURPOSE OF FORM (do not use quotation marks or you will get a parse error, besides the quotes around the whole text)
////////////////////////////////////////////////////////////////////////////////////////////////////

$formpurpose = "This form allows you to easily post a trade with your trade partner.  Please be sure to spell your trade partner's username correctly..";

////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////
//NORMAL INPUT BOX : QUESTION 1 (do not use quotation marks or you will get a parse error, besides the quotes around the whole text)
////////////////////////////////////////////////////////////////////////////////////////////////////

$normalquestion1 = "Trade Partner's Username";

////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////
//RADIO BOX CHOICES : QUESTION 1 (do not use quotation marks or you will get a parse error, besides the quotes around the whole text)
////////////////////////////////////////////////////////////////////////////////////////////////////

$radioquestion1 = "Insurance?";

// The following choices must NOT have quotation marks
$radiochoice1a = "Yes";
$radiochoice1b = "No";

////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////
//RADIO BOX CHOICES : QUESTION 2 (do not use quotation marks or you will get a parse error, besides the quotes around the whole text)
////////////////////////////////////////////////////////////////////////////////////////////////////

$radioquestion2 = "Delivery Confirmation?";

// The following choices must NOT have quotation marks
$radiochoice2a = "Yes";
$radiochoice2b = "No";


////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////
//RADIO BOX CHOICES : QUESTION 3 (do not use quotation marks or you will get a parse error, besides the quotes around the whole text)
////////////////////////////////////////////////////////////////////////////////////////////////////

$radioquestion3 = "Bubble Mailer?";

// The following choices must NOT have quotation marks
$radiochoice3a = "Yes";
$radiochoice3b = "No";

////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////
//RADIO BOX CHOICES : QUESTION 4 (do not use quotation marks or you will get a parse error, besides the quotes around the whole text)
////////////////////////////////////////////////////////////////////////////////////////////////////

$radioquestion4 = "Who Is Sending First??";

// The following choices must NOT have quotation marks
$radiochoice4a = "Me";
$radiochoice4b = "Trade Partner";
$radiochoice4c = "Same Time";

////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////
//RADIO BOX CHOICES : QUESTION 5 (do not use quotation marks or you will get a parse error, besides the quotes around the whole text)
////////////////////////////////////////////////////////////////////////////////////////////////////

$radioquestion5 = "SCH Escrow Sale?";

// The following choices must NOT have quotation marks
$radiochoice5a = "Yes";
$radiochoice5b = "No";

////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////
//LONG TEXT AREA INPUT: QUESTION 1 (do not use quotation marks or you will get a parse error, besides the quotes around the whole text)
////////////////////////////////////////////////////////////////////////////////////////////////////

$longquestion1 = "Items Your Getting";
$longexplain1 = "List items that you are getting.";

////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////
//LONG TEXT AREA INPUT: QUESTION 2 (do not use quotation marks or you will get a parse error, besides the quotes around the whole text)
////////////////////////////////////////////////////////////////////////////////////////////////////

$longquestion2 = "Trade Partner Gets";
$longexplain2 = "List items that you are sending.";

////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////
//LONG TEXT AREA INPUT: QUESTION 3 (do not use quotation marks or you will get a parse error, besides the quotes around the whole text)
////////////////////////////////////////////////////////////////////////////////////////////////////

$longquestion3 = "Misc Info";
$longexplain3 = "Please post any additional information about this trade.";

////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////
//VB TEXT AREA INPUT: You can only have ONE vb text question. (do not use quotation marks or you will get a parse error, besides the quotes around the whole text)
////////////////////////////////////////////////////////////////////////////////////////////////////

$vbtextquestion = "Please write down a paragraph about how you like this forum.";
$vbtextexplain = "For example, what makes this forum different from all other forums?";

////////////////////////////////////////////////////////////////////////////////////////////////
////// END OF CUSTOMIZATION ////////////////////////////////////////////////////////////////////
/////  DO NOT CHANGE BELOW UNLESS YOU KNOW WHAT YOU ARE DOING!!! ////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////

// #######################################################################
// ######################## START MAIN SCRIPT ############################
// #######################################################################
if ($_REQUEST['action'] == '')
{
  $_REQUEST['action'] = "form";
}

$bbuserinfo = $vbulletin->userinfo;

// start navbar
$navbits = array();
$navbits['newthread.php?' . $vbulletin->session->vars['sessionurl'] . "do=$formname"] = $formtitle;

$navbits = construct_navbits($navbits);
eval('$navbar = "' . fetch_template('navbar') . '";');

if ($_REQUEST['action'] == "submit")
{

    if ($answerall == "1")
    {
        if ($normalanswer1 == '' OR $radioanswer1 == '' OR $radioanswer2 == '' OR $radioanswer3 == '' OR $answer1 == '' OR $answer2 == '' OR $answer3 == '' OR ($checkboxchoice1_1 AND $checkboxchoice1_2 AND $checkboxchoice1_3) OR $longanswer1 == '')
        {
            $errormessage = "$bbuserinfo[username], you need to answer every question!";
            eval('print_output("' . fetch_template('STANDARD_ERROR') . '");');
            exit();
        }
    }

	$vbulletin->input->clean_array_gpc('p', array(
		'wysiwyg'			=> TYPE_BOOL,
		'message'			=> TYPE_STR
		));

	if ($vbulletin->GPC['wysiwyg'])
	{
		require_once(DIR . '/includes/functions_wysiwyg.php');
		$vbtextanswer = convert_wysiwyg_html_to_bbcode($vbulletin->GPC['message'], $foruminfo['allowhtml']);
	}
	else
	{
		$vbtextanswer =& $vbulletin->GPC['message'];
	}

    eval('$formsend = "' . fetch_template("$answertemplate") . '";');

	$posthash = $vbulletin->input->clean_gpc('p', 'posthash', TYPE_NOHTML);
	$poststarttime = $vbulletin->input->clean_gpc('p', 'poststarttime', TYPE_UINT);

	if ($_POST['submit'] == 'Submit')
	{
		if ($formforum == "1")
    	{
        	$foruminfo = verify_id('forum', $formforumid, 0, 1);
        	$forumperms = fetch_permissions($foruminfo[forumid]);
        	$newpost['username'] =& $vbulletin->userinfo['username'];
        	$newpost['message'] =& $formsend;
        	$newpost['title'] =& $posttitle;
        	$newpost['parseurl'] = '1';
        	$newpost['poststarttime'] = $poststarttime;
			$newpost['posthash'] = $posthash;

			if ($vbulletin->userinfo['autosubscribe'] != -1)
			{
				$newpost['emailupdate'] = $vbulletin->userinfo['autosubscribe'];
			}
			else
			{
				$newpost['emailupdate'] = 9999;
			}

			if ($vbulletin->userinfo['signature'] != '')
			{
				$newpost['signature'] = '1';
			}
			else
			{
				$newpost['signature'] = '0';
			}

    		build_new_post('thread', $foruminfo, array(), array(), $newpost, $errors);

        	if ($formpoll == "1")
        	{
            	$threadinfo = verify_id('thread', $newpost[threadid], 0, 1);
            	$polloptions = count($polloption);
            	$question = $posttitle;
            	$vbulletin->GPC['options'] = $polloption;

            	$counter = 0;
            	$optioncount = 0;
            	$badoption = '';
            	while ($counter++ < $polloptions)
            	{ // 0..Pollnum-1 we want, as arrays start with 0
                	if ($vbulletin->options['maxpolllength'] AND vbstrlen($vbulletin->GPC['options']["$counter"]) > $vbulletin->options['maxpolllength'])
                	{
                    	$badoption .= iif($badoption, ', ') . $counter;
                	}
                	if (!empty($vbulletin->GPC['options']["$counter"]))
                	{
                    	$optioncount++;
                	}
            	}

            	// Add the poll
            	$poll =& datamanager_init('Poll', $vbulletin, ERRTYPE_STANDARD);

            	$counter = 0;
            	while ($counter++ < $polloptions)
            	{
                	if ($vbulletin->GPC['options']["$counter"] != '')
                	{
                    	$poll->set_option($vbulletin->GPC['options']["$counter"]);
                	}
            	}

            	$poll->set('question',	$question);
            	$poll->set('dateline',	TIMENOW);
            	$poll->set('active',	'1');
            	$poll->set('public',	$pollpublic);

            	$pollid = $poll->save();
            	//end create new poll

            	// update thread
            	$threadman =& datamanager_init('Thread', $vbulletin, ERRTYPE_STANDARD, 'threadpost');
            	$threadman->set_existing($threadinfo);
            	$threadman->set('pollid', $pollid);
            	$threadman->save();
			}
    	}

    	if ($formreply == "1")
    	{
        	$threadinfo = verify_id('thread', $formreplythreadid, 0, 1);
        	$forumperms = fetch_permissions($threadinfo[forumid]);
        	$newpost['username'] =& $vbulletin->userinfo['username'];
        	$newpost['message'] =& $formsend;
        	$newpost['title'] =& $posttitle;
        	$newpost['parseurl'] = "1";
        	$newpost['poststarttime'] = $poststarttime;
			$newpost['posthash'] = $posthash;
        
			if ($vbulletin->userinfo['autosubscribe'] != -1)
			{
				$newpost['emailupdate'] = $vbulletin->userinfo['autosubscribe'];
			}
			else
			{
				$newpost['emailupdate'] = 9999;
			}

			if ($vbulletin->userinfo['signature'] != '')
			{
				$newpost['signature'] = '1';
			}
			else
			{
				$newpost['signature'] = '0';
			}

        	build_new_post('reply', $foruminfo, $threadinfo, $postinfo, $newpost, $errors);
    	}

    	if ($formpm == "1")
    	{
        	$vbulletin->GPC['message'] =& $formsend;
        	$vbulletin->GPC['title'] =& $posttitle;
        	$vbulletin->GPC['recipients'] =& $formpmname;

        	$pm['message'] =& $vbulletin->GPC['message'];
        	$pm['title'] =& $vbulletin->GPC['title'];
        	$pm['recipients'] =& $vbulletin->GPC['recipients'];

        	// create the DM to do error checking and insert the new PM
        	$pmdm =& datamanager_init('PM', $vbulletin, ERRTYPE_ARRAY);

        	$pmdm->set('fromuserid', $vbulletin->userinfo['userid']);
        	$pmdm->set('fromusername', $vbulletin->userinfo['username']);
        	$pmdm->setr('title', $pm['title']);
        	$pmdm->setr('message', $pm['message']);
        	$pmdm->set_recipients($pm['recipients'], $permissions);
        	$pmdm->set('dateline', TIMENOW);

        	// everything's good!
        	$pmdm->save();
    	}

		if ($formemail == "1")
    	{
			require_once(DIR . '/includes/class_bbcode_alt.php');
			$plaintext_parser =& new vB_BbCodeParser_PlainText($vbulletin, fetch_tag_list());
			$plaintext_parser->set_parsing_language($touserinfo['languageid']);
			$formsend = $plaintext_parser->parse($formsend);

    		$emails = explode(';', $formemailaddress);
    		foreach ($emails AS $email)
    		{
        		vbmail($email, $posttitle, $formsend);
			}
    	}

    	if ($redirectoption == "1")
    	{
        	$vbulletin->url = 'showthread.php?' . $vbulletin->session->vars['sessionurl'] . "p=$newpost[postid]";
        	eval(print_standard_redirect('redirect_postthanks'));
        	exit();
    	}
    	if ($redirectoption == "2")
    	{
        	$vbulletin->url = 'showthread.php?' . $vbulletin->session->vars['sessionurl'] . "t=$newpost[threadid]";
        	eval(print_standard_redirect('redirect_postthanks'));
        	exit();
    	}
    	if ($redirectoption == "3")
    	{
        	$vbulletin->url = 'forumdisplay.php?' . $vbulletin->session->vars['sessionurl'] . "f=$foruminfo[forumid]";
        	eval(print_standard_redirect('redirect_postthanks'));
        	exit();
    	}
    	if ($redirectoption == "4")
    	{
        	$vbulletin->url = 'editpost.php?do=editpost&' . $vbulletin->session->vars['sessionurl'] . "p=$newpost[postid]";
        	eval(print_standard_redirect('redirect_postthanks'));
        	exit();
    	}
    	eval('print_output("' . fetch_template('STANDARD_ERROR') . '");');
    	exit();
	}
	else
	{
  		require_once('./includes/class_bbcode.php');
        $parser =& new vB_BbCodeParser($vbulletin, fetch_tag_list());
        $preview = $parser->do_parse($formsend);

		$_REQUEST['action'] = 'form';
	}
}

if ($_REQUEST['action'] == 'form')
{
	if (($formforum OR $formreply) AND $allow_attachments)
	{
		if ($formforum AND $formreply)
		{
			$forumid = $formforumid;
		}
		else if ($formreply)
		{
			$threadid = $formreplythreadid;
        	$threadinfo = verify_id('thread', $threadid, 0, 1);
        	$forumid = $threadinfo[forumid];
		}
		else
		{
			$forumid = $formforumid;
		}

        $forumperms = fetch_permissions($forumid);

		// get attachment options
		require_once(DIR . '/includes/functions_file.php');
		$inimaxattach = fetch_max_upload_size();

		$maxattachsize = vb_number_format($inimaxattach, 1, true);
		$attachcount = 0;
		$attach_editor = array();
		$attachment_js = '';

		if ($forumperms & $vbulletin->bf_ugp_forumpermissions['canpostattachment'] AND $vbulletin->userinfo['userid'] AND !empty($vbulletin->userinfo['attachmentextensions']))
		{
			if (!$posthash OR !$poststarttime)
			{
				$poststarttime = TIMENOW;
				$posthash = md5($poststarttime . $vbulletin->userinfo['userid'] . $vbulletin->userinfo['salt']);
			}
			else
			{
				if (empty($postattach))
				{
					$currentattaches = $db->query_read("
						SELECT dateline, filename, filesize, attachmentid
						FROM " . TABLE_PREFIX . "attachment
						WHERE posthash = '" . $db->escape_string($posthash) . "'
							AND userid = " . $vbulletin->userinfo['userid']
					);

					while ($attach = $db->fetch_array($currentattaches))
					{
						$postattach["$attach[attachmentid]"] = $attach;
					}
				}

				if (!empty($postattach))
				{
					foreach($postattach AS $attachmentid => $attach)
					{
						$attach['extension'] = strtolower(file_extension($attach['filename']));
						$attach['filename'] = htmlspecialchars_uni($attach['filename']);
						$attach['filesize'] = vb_number_format($attach['filesize'], 1, true);
							$attach['imgpath'] = "$stylevar[imgdir_attach]/$attach[extension].gif";
						$show['attachmentlist'] = true;
						eval('$attachments .= "' . fetch_template('newpost_attachmentbit') . '";');

						$attachment_js .= construct_attachment_add_js($attachmentid, $attach['filename'], $attach['filesize'], $attach['extension']);

						$attach_editor["$attachmentid"] = $attach['filename'];
					}
				}
			}

			if ($threadid)
			{
				$attachurl = "t=$threadid";
			}
			else
			{
				$attachurl = "f=$forumid";			
			}
			$newpost_attachmentbit = prepare_newpost_attachmentbit();
			eval('$attachmentoption = "' . fetch_template('newpost_attachment') . '";');

			if ($threadid)
			{
				$attach_editor['hash'] = $threadid;
				$attach_editor['url'] = "newattachment.php?$session[sessionurl]t=$threadid&amp;poststarttime=$poststarttime&amp;posthash=$posthash";
			}
			else
			{
				$attach_editor['hash'] = $forumid;
				$attach_editor['url'] = "newattachment.php?$session[sessionurl]f=$forumid&amp;poststarttime=$poststarttime&amp;posthash=$posthash";		
			}
		}
		else
		{
			$attachmentoption = '';
		}
	}
	else
	{
		$attachmentoption = '';
	}

	// set message box width to usercp size
	$stylevar['messagewidth'] = $stylevar['messagewidth_usercp'];
	$editorid = construct_edit_toolbar($vbtextanswer);

	eval('print_output("' . fetch_template("$maintemplate") . '");');
}
}
Reply With Quote
  #111  
Old 10-01-2006, 08:29 AM
thalamus's Avatar
thalamus thalamus is offline
 
Join Date: Sep 2005
Location: UK
Posts: 66
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

The only thing I can think of is that the initial variables are set when the action of the form is set to 'do form'... perhaps at the beginning of the script, where it says:
Code:
if ($_REQUEST['do'] == $formname)
{
add a "$bbuserinfo = $vbulletin->userinfo;" instruction just after the opening brace before it goes on to define the custom variables?
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 03:14 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.06991 seconds
  • Memory Usage 2,378KB
  • Queries Executed 26 (?)
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
  • (3)bbcode_code
  • (8)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_post
  • (1)navbar
  • (6)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (3)pagenav_pagelinkrel
  • (11)post_thanks_box
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (11)postbit_onlinestatus
  • (11)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
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete