PDA

View Full Version : Getting a message to post


sweeps78
09-27-2011, 09:12 PM
I haven't written any PHP since I was in school about 8 years ago so I'm sure this is going to be a pretty n00b question.


I'm working on my first product and had a question about how to post messages. I got pretty far with the awesome articles here but I'm at a point where I'm lost to the extent of where I don't even know what terms I would use to search for an answer.


I have the following PHP file:

<?php

error_reporting(E_ALL & ~E_NOTICE);
// add for wysiwyg
define('GET_EDIT_TEMPLATES', true);
define('THIS_SCRIPT', 'trprojects_test');
define('CSRF_PROTECTION', true);

// ################### PRE-CACHE TEMPLATES AND DATA ######################
// get special phrase groups
$phrasegroups = array();

// get special data templates from the datastore
$specialtemplates = array();

// pre-cache templates used by all actions
$globaltemplates = array('trprojects_test',);

// pre-cache templates used by specific actions
$actiontemplates = array();

// ######################### REQUIRE BACK-END ############################
// if your page is outside of your normal vb forums directory, you should change directories by uncommenting the next line
chdir ('/home/sandboxt/public_html');
require_once('./global.php');
require_once(DIR . '/includes/functions_editor.php');
require_once(DIR . '/includes/functions_bigthree.php');


// ################################################## #####################
// ######################## START MAIN SCRIPT ############################
// ################################################## #####################


//$editorid = construct_edit_toolbar('',1,'signature',1,1,($vbul letin->userinfo['userid']));
$editorid = construct_edit_toolbar("test body text",0,0,1,1,0,'fe');

// ###### YOUR CUSTOM CODE GOES HERE #####
$pagetitle = 'My Projects';

// ###### NOW YOUR TEMPLATE IS BEING RENDERED ######

$templater = vB_Template::create('trprojects_test');
$templater->register_page_templates();
$templater->register('pagetitle', $pagetitle);
$templater->register('editorid', $editorid);
$templater->register('messagearea', $messagearea);
print_output($templater->render());

if ($_POST['do'] == 'postreply')
{
$outputvar .= "test it";
}


and my template:

{vb:stylevar htmldoctype}
<html xmlns="http://www.w3.org/1999/xhtml"<vb:if condition="$vboptions['enablefacebookconnect']"> xmlns:fb="http://www.facebook.com/2008/fbml"</vb:if> dir="{vb:stylevar textdirection}" lang="{vb:stylevar languagecode}">
<head>
{vb:raw headinclude}

{vb:cssfile attachment.css}
<script type="text/javascript" src="clientscript/vbulletin-editor.js?v={vb:raw vboptions.simpleversion}"></script>
<title>{vb:raw vboptions.bbtitle} - {vb:raw pagetitle}</title>
{vb:raw headinclude_bottom}
</head>
<body>
{vb:raw header}

{vb:raw navbar}

<div id="pagetitle">
<h1>{vb:raw pagetitle}</h1>
</div>



<form class="vbform block" action="/projects/post.php?do=postreply" method="post" name="vbform" onsubmit="return vB_Editor['{vb:raw editorid}'].prepare_submit(0,0)">

<h2 class="blockhead">{vb:rawphrase your_message}</h2>
<div class="blockbody formcontrols">
<div class="section">

{vb:raw messagearea}

</div>
</div>
<div class="blockfoot actionbuttons">
<div class="group">
<input type="hidden" name="s" value="{vb:raw session.sessionhash}" />
<input type="hidden" name="securitytoken" value="{vb:raw bbuserinfo.securitytoken}" />
<input type="hidden" name="do" value="postreply" />
<input type="submit" class="button" name="sbutton" id="{vb:raw editorid}_save" value="submit it" accesskey="s" tabindex="1" />
<input type="submit" class="button" name="preview" value="preview" accesskey="r" tabindex="1" />
</div>
</div>
</form>

{vb:raw footer}

</body>
</html>

My question is how do I get the text that is entered in the form's messagearea to display on a new page? I'll be eventually sending this message to the DB. As long as I know how to get the text to show up on a new page, I'm sure I can figure out the rest (I'm pretty well versed in other languages).

--------------- Added 1317163406 at 1317163406 ---------------

I meant how do I get the text to show up in a new vBulletin page?

An example would be when I click "Go Advanced" it takes me to newreply.php. Then when I enter text and click submit reply it takes me back to showthread.php.

Lynne
09-27-2011, 10:06 PM
You would need to write some php to process the form and do something with the information. Take a look at newreply.php under do=postreply (around line 258). Notice how the variables are all passed there and then used for something new (look at the $newpost variable).

sweeps78
09-28-2011, 03:05 PM
K, thanks Lynne and thanks for the awesome tutorial on creating a page! I'm digging into it now:)

Any personal recommendations on a PHP IDE? :)

Lynne
09-28-2011, 03:34 PM
I am on a Mac and I just use BBEdit when coding.

sweeps78
09-30-2011, 01:02 PM
I got a new page loading now but I'm having trouble getting the currently logged in user's ID.

I'm trying print_output($vbulletin->userinfo['userid']);, but nothing's getting returned. I even tried print_r($vbulletin->userinfo); to see what's in the array but still nothing:( I'd expect a Null reference error thrown if it was empty.

Lynne
09-30-2011, 04:28 PM
You cannot do print_output. You need to put the information into a variable and then spit the variable out in the template after registering it for use in the template.

sweeps78
09-30-2011, 06:58 PM
gotcha, thanks!

BTW - For anyone else that comes across this thread, this post (https://vborg.vbsupport.ru/showthread.php?t=228078) helped greatly with understanding how to register variables and render templates)

sweeps78
10-03-2011, 05:34 PM
Hi Lynne,

I thought I figured out how to load a new page but I guess not:( Is there any chance you could tell me what is the standard way/method of loading a new page in vBulletin? I see many different functions from the API manual (http://members.vbulletin.com/api/) that load new URLs but I haven't came across one that really made sense to use. All of them that I've found seem to be more for error/exception handling.

Going through the newreply template I see on line 23 the Form submit is loading newreply.php. However, when I am on newreply.php and click the submit button it takes me to showthread.php. Where inside newreply.php does showthread.php get loaded? I've looked in both "if ($_REQUEST['do'] == 'newreply')" sections but couldn't find anything that loaded a new page. Am I looking in the wrong place?

Lynne
10-03-2011, 05:52 PM
I believe they use the print_standard_redirect function to do the redirect.