Hi,
This works great for posting into one forum, but I'm having a problem figuring out how to get it to post to various forums depending on the value selected from the drop-down.
What I am trying to achieve is this :
If dropdownanswer1 = dropdownchoice1a then formforumid="59"
If dropdownanswer1 = dropdownchoice1b then formforumid="26"
I have about 18 different forums where this form will be used, I only have 3 in the templates for now for testing.
Can't seem to figure out whether the problem lies in the hook, or whether there needs to be some template mod.
Anything I try results in either a parse error or a scalar value error.
Any help appreciated.
Thx.
PHP 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 = "guildpm";
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(
//'radioanswer1' => TYPE_STR,
'answer1' => TYPE_STR,
'answer2' => TYPE_STR,
//'answer3' => TYPE_STR,
//'answer4' => TYPE_STR,
//'answer5' => TYPE_STR,
//'answer6' => TYPE_STR,
//'answer7' => TYPE_STR,
'longanswer1' => TYPE_STR,
//'longanswer2' => TYPE_STR,
'dropdownanswer1' => TYPE_STR,
//'answer8' => TYPE_STR,
));
// Part 2
//$radioanswer1 = $vbulletin->GPC['radioanswer1'];
$answer1 = $vbulletin->GPC['answer1'];
$answer2 = $vbulletin->GPC['answer2'];
//$answer3 = $vbulletin->GPC['answer3'];
//$answer4 = $vbulletin->GPC['answer4'];
//$answer5 = $vbulletin->GPC['answer5'];
//$answer6 = $vbulletin->GPC['answer6'];
//$answer7 = $vbulletin->GPC['answer7'];
$longanswer1 = $vbulletin->GPC['longanswer1'];
//$longanswer2 = $vbulletin->GPC['longanswer2'];
//$answer8 = $vbulletin->GPC['answer8'];
$dropdownanswer1 = $vbulletin->GPC['dropdownanswer1'];
////////////////////////////////////////////////////////////////////////////////////////////////////
//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,7))) 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 = "gui_form_guildpm";
// Name of the answer template
$answertemplate = "gui_formanswers_guildpm";
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
//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 = "109";
//$formforumid = $f ;
//ENABLE POLL TO BE CREATED - 1 = yes, 0 = no
$formpoll = "0";
$polloption[1] = "Approve";
$polloption[2] = "Denied";
$polloption[3] = "Decline";
$polloption[4] = "No vote";
//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
$formpmname = "Abe";
////////////////////////////////////////////////////////////////////////////////////////////////////
//ENABLE FORM TO BE EMAILED - 1 = yes, 0 = no
$formemail = "0";
//EMAIL ADDRESS TO EMAIL TO
$formemailaddress = "youremail@yourforums.com";
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
//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 to upload attachments (thread or reply)
//
// Feel free to change the thank you message if you choose option 0
////////////////////////////////////////////////////////////////////////////////////////////////////
$redirectoption = "0";
$errormessage = "Letter has now been posted to the Guild."; //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 = "Send a Letter to a Guild";
////////////////////////////////////////////////////////////////////////////////////////////////////
//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 = "$answer1 | $answer2";
////////////////////////////////////////////////////////////////////////////////////////////////////
//PURPOSE OF FORM (do not use quotation marks or you will get a parse error, besides the quotes around the whole text)
////////////////////////////////////////////////////////////////////////////////////////////////////
$formpurpose = "The purpose of this form is to allow you to send an IC letter to a Guild. The letter will only be seen by that Guild";
////////////////////////////////////////////////////////////////////////////////////////////////////
//$radioquestion1 = "Choose the type of your request:";
//$radiochoice1a = "Request for Class";
//$radiochoice1b = "Request for Subrace";
//$radiochoice1c = "Request for Special Names";
//$radiochoice1d = "Other Requests";
$question1 = "1. Name of Character:";
$explain1 = "Please enter your characters name here.";
$question2 = "Subject";
$explain2 = "Please enter a subject line";
//$question3 = "3. NWN Account:";
//$explain3 = "Please enter your NWN account with which you want to create the requested character.";
//$question4 = "4. Current level of character:";
//$explain4 = "Please enter the current level of your character (in case it already exists).";
//$question5 = "5. Current CLASS of character:";
//$explain5 = "";
//$question6 = "6. Alignment:";
//$explain6 = "";
//$question7 = "7. Spell focus or Weapon focus:";
//$explain7 = "";
$longquestion1 = "Enter Letter here";
$longexplain1 = "Enter your IC letter here";
//$longquestion2 = "9. An OOC summary of the request:";
//$longexplain2 = "";
//$question8 = "10. Mentor's name for any class that may require:";
//$explain8 = "";
$dropdownquestion1 = "Which Guild to send this to";
// The following choices must NOT have quotation marks
$dropdownchoice1a = "Blackwood";
$dropdownchoice1b = "Halfling Alliance";
$dropdownchoice1c = "LightWarrior Merchants";
////////////////////////////////////////////////////////////////////////////////////////////////
////// 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") . '";');
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';
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";
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")
{
vbmail($formemailaddress, $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')
{
// set message box width to usercp size
$stylevar['messagewidth'] = $stylevar['messagewidth_usercp'];
$editorid = construct_edit_toolbar($vbtextanswer);
eval('print_output("' . fetch_template("$maintemplate") . '");');
}
}
main template
HTML Code:
$stylevar[htmldoctype]
<html dir="$stylevar[textdirection]" lang="$stylevar[languagecode]">
<head>
$headinclude
<title>$vboptions[bbtitle] - $formtitle</title>
</head>
<body>
$header
$navbar
<!-- main -->
<br />
<form enctype="multipart/form-data" method="post" action="newthread.php">
<input type="hidden" value="$formname" name="do" />
<input type="hidden" value="submit" name="action" />
<input type="hidden" value="$forumid" name="f" />
<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="60%" align="center">
<tr>
<td class="tcat" colspan="2"> $vboptions[bbtitle] - $formtitle </td>
</tr>
<tr>
<td class="panelsurround" align="center" colspan="2"> <table class="panel" cellpadding="0" cellspacing="$stylevar[formspacer]" border="0" width="100%">
<tr>
<td align="$stylevar[left]"> <fieldset class="fieldset" style="margin:0px">
<table cellpadding="0" cellspacing="$stylevar[formspacer]" border="0">
<tr>
<td> $formpurpose </td>
</tr>
</table>
</fieldset></td>
</tr>
</table></td>
</tr>
<tr>
<td width="50" valign="middle" class="alt1"> <b>Username</b></td>
<td class="alt1" valign="middle"> <b>$bbuserinfo[username]</b></td>
</tr>
<tr>
<td class="alt1" valign="middle" colspan="2"> </td>
</tr>
</tr>
<tr>
<td class="alt1" valign="middle">
<b>$dropdownquestion1</b>:
</td>
<td class="alt1" valign="middle">
<select name="dropdownanswer1">
<option value="$dropdownchoice1a" <if condition="$dropdownchoice1a == $dropdownanswer1">selected="selected"</if>>$dropdownchoice1a</option>
<option value="$dropdownchoice1b" <if condition="$dropdownchoice1b == $dropdownanswer1">selected="selected"</if>>$dropdownchoice1b</option>
<option value="$dropdownchoice1c" <if condition="$dropdownchoice1c == $dropdownanswer1">selected="selected"</if>>$dropdownchoice1c</option>
</select></td>
</tr>
<tr>
<td colspan="2" valign="middle" class="alt2"> </td>
</tr>
<tr>
<td colspan="2" valign="middle" class="alt2"> <b>$question1</b></td>
</tr>
<tr>
<td colspan="2" valign="middle" class="alt1"><span class="alt2">
<input name="answer1" type="text" value="" size="70">
</span></td>
</tr>
<tr>
<td class="alt2" valign="middle" colspan="2"> </td>
</tr>
<tr>
<td colspan="2" valign="middle" class="alt2"><b>$question2</b></td>
</tr>
<tr>
<td colspan="2" valign="middle" class="alt1"><span class="alt2">
<input name="answer2" type="text" value="" size="70">
</span></td>
</tr>
<tr>
<td class="alt2" valign="middle" colspan="2"> </td>
</tr>
<tr>
<td class="alt2" valign="middle" colspan="2"><b>$longquestion1</b></td>
</tr>
<tr>
<td colspan="2" valign="middle" class="alt1"><textarea rows="10" cols="70" name="longanswer1"></textarea> </td>
</tr>
<tr>
<td class="alt2" valign="middle" colspan="2"> </td>
</tr>
<tr>
<td class="alt1" valign="top" colspan="2"> <p align="center">
<input type="submit" value="Submit" name="submit" style="font-family: Verdana; font-size: 10pt" class="button" />
<input type="reset" value="Reset" name="reset" style="font-family: Verdana; font-size: 10pt" class="button" />
</p></td>
</tr>
</table>
</form>
$footer
</body>
</html>
answer template
Code:
Letter placed by: $bbuserinfo[username]
-----------------------------------------------------
To the Leaders of $dropdownanswer1
-----------------------------------------------------
From: $answer1
-----------------------------------------------------
Subject : $answer2
-----------------------------------------------------
$longanswer1