PDA

View Full Version : Attempting Create Thread outside of vB using Data Manager, error with bootstrap


TeknoSounds
09-07-2011, 05:54 AM
Greetings,
I have a script that's trying to create a new thread from a page outside vBulletin.

The error I'm getting is from global.php on line 20 when its storing $specialtemplates in bootstrap: [Notice] Undefined variable: specialtemplates

Source

11 \*================================================ ======================*/
12
13 error_reporting(E_ALL & ~E_NOTICE);
14
15 require('./includes/class_bootstrap.php');
16
17 define('VB_AREA', 'Forum');
18
19 $bootstrap = new vB_Bootstrap_Forum();
20 $bootstrap->datastore_entries = $specialtemplates;
21 $bootstrap->cache_templates = vB_Bootstrap::fetch_required_template_list(
22 empty($_REQUEST['do']) ? '' : $_REQUEST['do'],
23 $actiontemplates, $globaltemplates
24 );
25
26 $bootstrap->bootstrap();


Here is the code that's calling it:
//Create New VB Thread from Event Info
public function CreateNewVBThread($date, $name, $venue, $city, $state) {
$forumdir = "/mysite.com/messageboard";
$currentdir = getcwd();
chdir($forumdir);
require_once($forumdir . '/global.php');
require_once($forumdir . '/includes/class_dm.php');
require_once($forumdir . '/includes/class_dm_threadpost.php');
require_once($forumdir . '/includes/functions_databuild.php');

//Variables
$postip = "127.0.0.1";
$userid = 243;
$username = 'Events Announcer';
$title = ($date . ' - ' . $name . ' @ ' . $venue . ' - ' . $city . ', ' . $state);
$threadinfo = array();

//Determine City/Forum
if ($state = "TX") {
switch ($city) {
case "Austin":
$forumid = 70;
break;
case "Dallas":
$forumid = 77;
break;
case "Houston":
$forumid = 78;
break;
case "San Antonio":
$forumid = 79;
break;
default:
$forumid = 80;
break;
}
}
else {
$forumid = 81;
}


//Connect to VB DB
DB::connect($databaseVB);

//Create new thread given info below
$threaddm =& datamanager_init('Thread_FirstPost', $vbulletin, ERRTYPE_ARRAY, 'threadpost');

$foruminfo = fetch_foruminfo($forumid);
$threaddm->set_info('forum', $foruminfo);
$threaddm->set_info('thread', $threadinfo);
$threaddm->setr('forumid', $forumid);
$threaddm->setr('userid', $userid);
$threaddm->setr('title', $title);
$threaddm->set('username', $username);
$threaddm->set('pagetext', 'This is a test');
$threaddm->set('allowsmilie', 1);
$threaddm->set('visible', 1);
$threaddm->set('ipaddress', $postip);
$threaddm->set('dateline', TIMENOW);

$threaddm->pre_save();
if(count($threaddm->errors) < 1)
{
$threadid = $threaddm->save();
unset($threaddm);
build_thread_counters($threadid);
}
else
{
print "Error making new thread! " . $threaddm->errors[0] . $threaddm->errors[1] . $threaddm->errors[2] ;
}

build_forum_counters($forumid);

//Reconnect to SS DB & change back working directories
chdir($currentdir);
DB::connect($databaseConfig);

} //end CreateNewVBThread()

souperman
09-07-2011, 08:01 AM
and what's the error?

TeknoSounds
09-07-2011, 10:02 AM
Whoops....

[Notice] Undefined variable: specialtemplates

kh99
09-07-2011, 12:28 PM
You can get rid of those by defining the variable:

$specialtemplates = array();


before including global.php. (It looks like you'll get the same message for $actiontemplates and $globaltemplates, and maybe some others).

Those variables control which templates and datastore values are cached. You can look at som of the vb scripts to see how they're used. (e.g. showthread.php).

TeknoSounds
09-09-2011, 03:18 AM
Thanks :D That worked!

Now having an issue with the code no seeming to execute, at least it isn't making a thread, nothing in the database, no errors appear via the page or in the error_log. Unsure whats going on at this point. I just don't think my function is getting called. I think.

HMBeaty
09-09-2011, 03:39 AM
Hopefully this helps you out a bit ;)

This is from one of my modifications (Staff Application) where it creates the threads

require_once(DIR . '/includes/functions_newpost.php');

$forumid = $vbulletin->options['usml_staffapp_forumid'];
$user_id = $vbulletin->userinfo['userid'];
$username = $vbulletin->userinfo['username'];
$target_foruminfo = fetch_foruminfo($forumid);
$newpost = array(
'userid' => $user_id,
'username' => $username,
'message' => $postappmsg,
'title' => $subject,
'poststarttime' => TIMENOW,
'emailupdate' => 0
);

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

if (sizeof($errors) > 0) { $error_info = construct_errors($errors); }

require_once(DIR . '/includes/functions_databuild.php');
build_forum_counters($forumid);