PDA

View Full Version : Creating a thread outside of vBulletin


sifuhall
11-03-2009, 12:51 PM
I'm working on an application that will integrate with vBulletin and I need a set of fresh eyes and ideas to help.

I have code that will create a thread in vBulletin from a PHP page and it works well enough when I test it by itself.

However, when I add it as the contents of a function inside a different class I get the following error:


Error: Registry object is not an object in /home/bushido/public_html/lf/forum/includes/class_dm.php on line177


Here is my code:


private function makeThread() {

// get current dir
$mycurdir = getcwd();

// change to forum dir
chdir($_SERVER['DOCUMENT_ROOT'] . '/forum');


// include vBulletin files to create post
require_once($_SERVER['DOCUMENT_ROOT'] . '/forum/global.php');
require_once($_SERVER['DOCUMENT_ROOT'] . '/forum/includes/class_dm.php');
require_once($_SERVER['DOCUMENT_ROOT'] . '/forum/includes/class_dm_threadpost.php');
require_once($_SERVER['DOCUMENT_ROOT'] . '/forum/includes/functions_databuild.php');

$forumid = 10;
$userid = 1;
$thread_title = 'New Thread Title';
$thread_body = 'testing new thread body test';
$thread_allow_smile = '1';
$thread_visible = '1';
$thread_ip = '1.1.1.1';
$user_name = 'admin';

$threaddm =& datamanager_init('Thread_FirstPost', $vbulletin, ERRTYPE_SILENT, 'threadpost');
$threaddm->do_set('forumid', $forumid);
$threaddm->do_set('postuserid', $userid);
$threaddm->do_set('userid', $userid);
$threaddm->do_set('username', $user_name);
$threaddm->do_set('title', $thread_title);
$threaddm->do_set('pagetext', $thread_body);
$threaddm->do_set('allowsmilie', $thread_allow_smile);
$threaddm->do_set('visible', $thread_visible);
$threaddm->do_set('ipaddress', $thread_ip);
$threadid = $threaddm->save();

// rebuild cache
build_thread_counters($threadid);
build_forum_counters($forumid);

unset($threaddm);

// return to previous dir
chdir($mycurdir);

}


Adding echo statements I have found the error occurs on the line including the datamanager_init.

Any ideas on what I can try to address this?

Blaine0002
11-03-2009, 01:23 PM
I stole this from a thread by andreas located here:https://vborg.vbsupport.ru/showthread.php?t=82836&highlight=Create+New+User

Important Notice
It is assumed that you are using this code from 'within' vBulletin, eg with the vBulletin backend loaded.
If this is not the case, you must include smth. like the following code in global context:
PHP Code:
define('VB_AREA', 'External');
define('SKIP_SESSIONCREATE', 1);
define('SKIP_USERINFO', 1);
define('CWD', '/path/to/vbulletin');
require_once(CWD . '/includes/init.php');
Keep in mind that if you are using the a/m Datamanager-Code within a function or method you must global $vbulletin.

the thread is about making new users but you should follow the same guidelines

sifuhall
11-03-2009, 05:52 PM
Thanks! global vbulletin was the answer.