vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 3.5 Add-ons (https://vborg.vbsupport.ru/forumdisplay.php?f=113)
-   -   Forms Hack (https://vborg.vbsupport.ru/showthread.php?t=93970)

Spinball 12-27-2005 03:50 PM

Quote:

Originally Posted by Abe1
Can you post your plug-in here?

plug-in:
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 "classifieds_form";

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(
'advert_type' => TYPE_STR,
'advert_title' => TYPE_STR,
'location' => TYPE_STR,
'confirmation' => TYPE_STR
));

// Part 2
$advert_type $vbulletin->GPC['advert_type'];
$advert_title $vbulletin->GPC['advert_title'];
$location $vbulletin->GPC['location'];
$confirmation $vbulletin->GPC['confirmation'];

////////////////////////////////////////////////////////////////////////////////////////////////////
//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,24,25))) 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 "form_ads";
// Name of the answer template
$answertemplate "formanswers";

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

////////////////////////////////////////////////////////////////////////////////////////////////////
//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 $forumid;

//if (strlen($formforumid) == 0) {
//   $errormessage = $vbulletin->userinfo['username'] . ", Fatal Error - please contact admin and tell them the formforumid variable was blank when trying to create a new classified advert.  Thanks!";
//   eval('print_output("' . fetch_template('STANDARD_ERROR') . '");');
//   exit();
//}

//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 - 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 "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 "1";

////////////////////////////////////////////////////////////////////////////////////////////////////
//TITLE OF FORM (do not use quotation marks or you will get a parse error)
////////////////////////////////////////////////////////////////////////////////////////////////////

$formtitle "Create a new classified advert";

////////////////////////////////////////////////////////////////////////////////////////////////////
//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 "$advert_type $advert_title";

////////////////////////////////////////////////////////////////////////////////////////////////////
//PURPOSE OF FORM (do not use quotation marks or you will get a parse error)
////////////////////////////////////////////////////////////////////////////////////////////////////

$formpurpose "Please complete all the questions below to create your classified advert.<br>
These adverts are for individuals selling their own personal property only.<br>
Please note that each AV Forums member may have one 'For Sale' and one 'Wanted' advert only."
;

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

////////////////////////////////////////////////////////////////////////////////////////////////////
//NORMAL INPUT BOX : QUESTION 1 (do not use quotation marks or you will get a parse error)
////////////////////////////////////////////////////////////////////////////////////////////////////

$advert_title_question "Enter the title of your advert";
$advert_title_explain "Use the full make & model so that people searching will find your advert.";

////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
//QUESTION 1 (do not use quotation marks or you will get a parse error)
$location_question "Enter your location";
$location_explain "State your city and country so that people know where you are located.";

////////////////////////////////////////////////////////////////////////////////////////////////////
//DROP DOWN CHOICES : QUESTION 1 (do not use quotation marks or you will get a parse error)
////////////////////////////////////////////////////////////////////////////////////////////////////

$advert_type_question "Select the type of advert";

// The following choices must NOT have quotation marks
$advert_typea "For Sale:";
$advert_typeb "For Trade:";
$advert_typec "Wanted:";
$advert_type_explain "This is added to the start of your advert title.";

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

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

$advert_text_question "Enter the text of your advert.";
$advert_text_explain "We have some important trading rules for your protection.<br>
Please note the following key points:<br>
1) adverts for hardware may not be listed elsewhere.<br>
2) you must always specify a price and whether it includes delivery.<br>
3) you must not include contact details within your advert since all negotiations should occur in your advert thread.<br>
For an explanation on the above, please refer to the <A HREF=\"http://www.avforums.com/forums/view.php?pg=trading_rules\" target=\"_blank\">trading rules</A> thread."
;

////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
//VB TICKBOX INPUT: You can only have ONE vb text question. (do not use quotation marks or you will get a parse error)
////////////////////////////////////////////////////////////////////////////////////////////////////

$confirmation_question "Please click the box to agree to the following statement";
$confirmation_explain "I have read the <A HREF=\"http://www.avforums.com/forums/view.php?pg=trading_rules\" target=\"_blank\">trading rules</A> and agree to abide by them at all times until the transaction is concluded to the satisfaction of all parties involved.";

////////////////////////////////////////////////////////////////////////////////////////////////
////// 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")
{
    
$vbulletin->input->clean_array_gpc('p', array(
        
'wysiwyg'            => TYPE_BOOL,
        
'message'            => TYPE_STR
        
));

    if (
$vbulletin->GPC['wysiwyg'])
    {
        require_once(
DIR '/includes/functions_wysiwyg.php');
        
$advert_text_answer convert_wysiwyg_html_to_bbcode($vbulletin->GPC['message'], $foruminfo['allowhtml']);
    }
    else
    {
        
$advert_text_answer =& $vbulletin->GPC['message'];
    }
    if (
$answerall == "1")
    {
        if (
$advert_title == '' OR $location == '' OR $advert_text_answer == '' OR $confirmation == '')
        {
            
$errormessage "$bbuserinfo[username], you need to answer every question!";
            eval(
'print_output("' fetch_template('STANDARD_ERROR') . '");');
            exit();
        }
    }

    eval(
'$formsend = "' fetch_template("$answertemplate") . '";');
    if (
$formforum == "1")
    {
      if (
$formforumid == 62) {
         if (
$advert_type == "Wanted:") {
            
$formforumid 198;
         }
      } elseif (
$formforumid == 198) {
         if (
$advert_type == "For Sale:" or $advert_type == "For Trade:") {
            
$formforumid 62;
         }
      }


        
$foruminfo verify_id('forum'$formforumid01);
        
$forumperms fetch_permissions($foruminfo[forumid]);
        
$newpost['message'] =& $formsend;
        
$newpost['title'] =& $posttitle;
        
$newpost['parseurl'] = '1';
        
$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], 01);
            
$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'$vbulletinERRTYPE_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'$vbulletinERRTYPE_STANDARD'threadpost');
            
$threadman->set_existing($threadinfo);
            
$threadman->set('pollid'$pollid);
            
$threadman->save();

        }
    }

    if (
$formreply == "1")
    {
        
$threadinfo verify_id('thread'$formreplythreadid01);
        
$forumperms fetch_permissions($threadinfo[forumid]);
        
$newpost['message'] =& $formsend;
        
$newpost['title'] =& $posttitle;
        
$newpost['parseurl'] = "1";
        
$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'$vbulletinERRTYPE_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();
}

if (
$_REQUEST['action'] == 'form')
{
              
// set message box width to usercp size
            
$stylevar['messagewidth'] = $stylevar['messagewidth_usercp'];
            
$dontusewysiwyg 1;
            
$editorid construct_edit_toolbar();

  eval(
'print_output("' fetch_template("$maintemplate") . '");');
}


submission form:
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" />

  <table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" align="center">
      <tr>
            <td class="tcat" colspan="3">$vboptions[bbtitle] - $formtitle</td>
      </tr>
      <tr>
            <td class="panelsurround" align="center" colspan="3">

        <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 class="alt1" align="right"><b>$advert_type_question</b><br /><select name="advert_type">
              <option value="$advert_typea">$advert_typea</option>
              <option value="$advert_typeb">$advert_typeb</option>
              <option value="$advert_typec">$advert_typec</option>
            </select><br /><div class="smallfont">$advert_type_explain</div> </td>
        <td colspan="2" class="alt1"><b>$advert_title_question</b><br /><input type="text" size="30" name="advert_title" /><br /><div class="smallfont">$advert_title_explain</div></td>
      </tr>
      <tr>
        <td colspan="3" class="alt2"><b>$advert_text_question</b><br /><div class="smallfont">$advert_text_explain</div><br />
              <table cellpadding="0" cellspacing="0" border="0"><tr><td>$messagearea</td></tr></table>
        </td>
      </tr>
      <tr>
        <td class="alt1" colspan="3"><b>$location_question</b><br /><input type="text" size="30" name="location" /><br /><div class="smallfont">$location_explain</div></td>
      </tr>
      <tr>
        <td valign="top" class="alt1"><b>$confirmation_question</b></td>
        <td class="alt1" colspan="2"><div class="smallfont"><input type="checkbox" name="confirmation" value="Yes"> $confirmation_explain</div></td>
      </tr>
      <tr>
        <td class="alt1" valign="top" colspan="3">
<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 form:
HTML Code:

$advert_text_answer

Location: $location
I have read and agreed to abide by the AV Forums trading rules : $confirmation.

Thanks, Abe.

Abe1 12-27-2005 06:40 PM

In the answer template, add a space after $confirmation

Spinball 12-27-2005 08:09 PM

Thanks Abe, but that didn't make any difference.

Abe1 12-27-2005 11:55 PM

Quote:

Originally Posted by Spinball
Thanks Abe, but that didn't make any difference.

Where are you grtting the forumid?

Spinball 12-28-2005 08:13 AM

Quote:

Originally Posted by Abe1
Where are you grtting the forumid?

It's being passed from the URL as 'f' as per your instructions in this thread.
http://www.avforums.com/forums/newth...ieds_form&f=62

Abe1 12-28-2005 12:26 PM

Quote:

Originally Posted by Spinball
It's being passed from the URL as 'f' as per your instructions in this thread.
http://www.avforums.com/forums/newth...ieds_form&f=62

in the form main template,

find this:
PHP Code:

<input type="hidden" value="submit" name="action" /> 

add under this:
PHP Code:

<input type="hidden" value="$forumidname="f" /> 


Spinball 12-28-2005 04:06 PM

Abe, that works!!!!
Thanks very much for your patience and help in sorting this out.
AV Forums members now get a classified advert submission form (with rules agreement tickbox) when creating a thread in in all the classifieds forums.
Using it with your related new thread hack.
May I suggest that you add this useful information into the hack as standard?
Thaks again. Fantastic.

steven s 12-28-2005 10:54 PM

I'm posting this again.
I'd like to have the form sent to the user as a PM.

//USERNAME TO PM TO
//$formpmname = "Abe";
$formpmname = $vbulletin->userinfo['username'];

Will work unless the person has their PMs OFF. Then I get
Fatal error: Unable to proceed with save while $errors array is not empty in class vb_datamanager_pm in /includes/class_dm.php on line 758

Is there a conditional statement I can use if the person is accepting PMs and not above quota, use $formpm = "1"; and if not $formpm = "0";

pipin 12-29-2005 07:20 AM

Quote:

Originally Posted by Abe1
in the form main template,

find this:
PHP Code:

<input type="hidden" value="submit" name="action" /> 

add under this:
PHP Code:

<input type="hidden" value="$forumidname="f" /> 


thx
used this with threadid and t
and it works now.

but i found a new glitch :speechless:

a posting done through the form wont be shown in the upper category of a subforum as last posting.

https://vborg.vbsupport.ru/external/2006/01/10.jpg

Abe1 12-29-2005 12:20 PM

Quote:

Originally Posted by pipin
thx
used this with threadid and t
and it works now.

but i found a new glitch :speechless:

a posting done through the form wont be shown in the upper category of a subforum as last posting.

https://vborg.vbsupport.ru/external/2006/01/10.jpg

It looks like your camparing it to a category and not another thread.


All times are GMT. The time now is 10:54 AM.

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.04885 seconds
  • Memory Usage 1,998KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (2)bbcode_html_printable
  • (5)bbcode_php_printable
  • (6)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (3)pagenav_pagelinkrel
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.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/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.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
  • printthread_start
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete