PDA

View Full Version : Need some help with my first real from scratch vbulletin page


JoeBOBBillyTed
09-07-2008, 10:34 PM
I have included the php code. I am trying just a real basic make a thread, and post up to 5 replies. I have included the php. Currently the form submitts, passes to the second page. I believe the issue is in the datamanager parts, most likely it is in the thread portion. When I submit the thread, it does return a id for the thread, however the thread doesn't show up at all.

<?php
error_reporting(E_ALL & ~E_NOTICE);

require_once('./global.php');
require_once('./includes/class_dm.php');
require_once('./includes/class_dm_threadpost.php');

if($_POST)
{
$threaddm =& datamanager_init('Thread_FirstPost', $vbulletin, ERRTYPE_ARRAY, 'threadpost');

//$forumid = $vbulletin->GPC['fid']; // can also be a number ;)
$forumdid= 37;

$foruminfo = fetch_foruminfo($forumid);
$threaddm->set_info('forum', $foruminfo);

$threaddm->set('forumid', $forumid);
$threaddm->set('userid', 1);
$threaddm->set('title', 'Testtitle');
$threaddm->set('pagetext', 'a little test');
$threaddm->set('allowsmilie', 1);
$threaddm->set('visible', 1);
$threaddm->set('dateline', TIMENOW);
$postthreadid = $threaddm->save();
unset($threaddm);

for($i=1;$i<=5;$i++)
{
$postdm = new vB_DataManager_Post($vbulletin, ERRTYPE_STANDARD);
$poster = 'poster_' . $i;
$post = 'reply_' . $i;
$postuserid = $_POST[$poster];
$postpagetext = $_POST[$post];
if($postuserid != '')
{
$threadinfo = fetch_threadinfo($postthreadid);
$foruminfo = fetch_foruminfo($threadinfo['forumid']);

$postdm->set_info('forum', $foruminfo);
$postdm->set_info('thread', $threadinfo);
$postdm->set('threadid', $postthreadid);
$postdm->set('userid', $postuserid);
$postdm->set('pagetext', $postpagetext);
$postdm->set('allowsmilie', 1);
$postdm->set('visible', 1);
$postdm->set('dateline', TIMENOW);
$postdm->save();
unset($postdm);
}
}

}

// #################### DEFINE IMPORTANT CONSTANTS #######################
define('NO_REGISTER_GLOBALS', 1);
define('THIS_SCRIPT', 'test'); // change this depending on your filename

// ################### 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(
'Test',
);

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

// ######################### REQUIRE BACK-END ############################
require_once('./global.php');

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

$navbits = array();
$navbits[$parent] = 'Test Page';

$navbits = construct_navbits($navbits);
eval('$navbar = "' . fetch_template('navbar') . '";');
eval('print_output("' . fetch_template('Test') . '");');
?>

Opserty
09-08-2008, 06:53 AM
Maybe start again, this tutorial is more up to date: [How-To] vBulletin API Basics: Creating Custom Pages & Misc. (https://vborg.vbsupport.ru/showthread.php?t=98009)

You've put your custom PHP code all in the wrong place, it should go after it says:
// ################################################## #####################
// ######################## START MAIN SCRIPT ############################
// ################################################## #####################
:p

(What do you mean by "It doesn't show up" ? Have you browsed directly to the threads URL? Does it show up then or do you get an error?)

Guest190829
09-10-2008, 06:23 PM
Also, an error could be occuring without you knowing. You need to call pre_save() on the data manager object - this checks whether or not any errors occurred. If any errors did, then an errors array would be filled:

Eg:

if(is_array($postdm->errors) && count($postdm->errors))) {

// Iterate and display to user

}
else {
$postdm->save();
}