View Full Version : Abstract API Init Problem
devoidfeast
06-13-2017, 02:58 PM
Ciao,
i am trying to integrate an external php script with vbulletin 5, i searched the forum and web for possible solutions and i found some but i think either they were incomplete or i was not good enough to understand.
here is the code snippet from vbulletin official post.
$vbpath = '/var/www/html';
define('CSRF_PROTECTION', false);
require_once($vbpath . '/includes/vb5/autoloader.php');
vB5_Autoloader::register($vbpath);
vB5_Frontend_Application::init('config.php');
in my case everything works ok until the config file is loaded. the last line always greet me with the following error
<head>
<title>System Error</title>
</head>
<body>
<h1> A System Error has occured.</h1>
<p> The software is experiencing a systems error.</p>
<p> You should attempt to repeat your last action. If this error occurs again, please contact the <a href="mailto:dbmaster@example.com">site administrator</a>.</p>
vbulletin Ver: 5.3.0
am i doing it right?
thanks!!
noypiscripter
06-13-2017, 06:04 PM
Enable debug mode to see the actual error.
http://vb5support.com/reference/debug_mode
devoidfeast
06-13-2017, 06:44 PM
Enable debug mode to see the actual error.
http://vb5support.com/reference/debug_mode
nailed it. thanks vergara!!!
noypiscripter
06-14-2017, 05:34 PM
Glad to help. But what was the error? This might help others if you mention what the error was and how you fixed it.
devoidfeast
06-14-2017, 10:25 PM
Glad to help. But what was the error? This might help others if you mention what the error was and how you fixed it.
Ciao vergara,
it was a stupid error, i was running lampp as my test server and i was running the custom script using the local php where mysql extension was missing. debug mode told me that mysql_init() is what..:p and i quickly resolved the problem but then again things got restrained back to their normal state and everything was chaos and still it is.
$vbpath = "/var/www/html";
define('CSRF_PROTECTION', false);
require_once($vbpath . '/includes/vb5/autoloader.php');
vB5_Autoloader::register($vbpath);
$app = vB5_Frontend_Application::init('config.php');
$username = 'admin';
$password = 'admin123';
$api = Api_InterfaceAbstract::instance();
$loginInfo = $api->callApi('user', 'login', [$username, $password]);
$rememberThisUser = true;
vB5_Auth::setLoginCookies($loginInfo, '', $rememberThisUser);
$options = [];
$wakht = time();
$input = [
'publisheddate' =>$wakht,
'userid' => 1,
'authorname' => 'admin',
'description' => 'wonderful world but for what?',
'pagetext' => '',
'rawtext' => 'i wonder how would i get posted, he do not know how to do it.they should switch vbulletin to python..:(',
'title' => 'i will be a shining thread if!!',
'htmltitle' => 'i will be a shining thread if!!',
'parentid' => 3,
'created' => $wakht,
'lastcontent' => $wakht,
'lastcontentauthor' => 'admin',
'lastauthorid' => 1,
'hvinput'=>'',
];
$nodee = $api->callApi('content_text', 'add', [$input, $options]);
print("done?");
OutPut:
PHP Notice: Undefined index: host in /var/www/html/core/vb/request/web.php on line 272
PHP Notice: Undefined index: host in /var/www/html/core/vb/request/web.php on line 274
PHP Notice: Undefined index: REQUEST_METHOD in /var/www/html/includes/api/interface/collapsed.php on line 105
PHP Notice: Undefined index: sessionhash in /var/www/html/includes/vb5/auth.php on line 26
PHP Notice: Undefined index: password in /var/www/html/includes/vb5/auth.php on line 36
PHP Notice: Undefined index: userid in /var/www/html/includes/vb5/auth.php on line 36
here is the output of $logingInfo.
Array
(
[0] => Array
(
[0] => unexpected_error
[1] => Invalid value for vB_dB_Type_UInt constructor. Value must be numeric (hex notation allowed).
)
)
any help??
noypiscripter
06-16-2017, 04:15 AM
Did it show the error stack trace showing the file and line number where that unexpected_error is coming from?
devoidfeast
06-16-2017, 01:20 PM
Did it show the error stack trace showing the file and line number where that unexpected_error is coming from?
ciao vergara,
thank you for the response,no it do not show in fact when i access the script through a browser every thing works well, the table entries are created, but it fails in terminal. do i need to set extra bits in input data? because in terminal the script fails to execute the login call and return an unexpected error.
cheers!
devoidfeast
06-19-2017, 06:27 PM
finally i made it work...here is how i did it..
$vbpath = "/var/www/html";
define("CSRF_PROTECTION", false);
require_once($vbpath . "/includes/vb5/autoloader.php");
vB5_Autoloader::register($vbpath);
vB5_Frontend_Application::init("config.php");
vB::getDbAssertor()->delete("session", array("sessionhash" => vB::getCurrentSession()->get("dbsessionhash")));
$username = vB_String::htmlSpecialCharsUni("ADMIN");
$userinfo = vB::getDbAssertor()->getRow("user", array("username" => $username));
$auth = array_intersect_key($userinfo, array_flip(["userid","secret","lastvisit", "lastactivity"]));
$loginInfo = vB_User::processNewLogin($auth);
vB5_Auth::setLoginCookies($loginInfo,"",false);
$api = Api_InterfaceAbstract::instance();
$options = [];
$wakht = time();
$input = [
"publisheddate" =>$wakht,
"userid" => 1,
"authorname" => "ADMIN",
"description" => "dsdf",
"pagetext" => "",
"rawtext" => "OK OK OK OK ",
"title" => "j TEA TIME!",
"htmltitle" => "BLAAAAH BLAAH!",
"parentid" => 3,
"created" => $wakht,
"lastcontent" => $wakht,
"lastcontentauthor" => "ADMIN",
"lastauthorid" => 1,
"hvinput"=>"",
];
$nodee = $api->callApi("content_text", "add", [$input, $options]);
// for some reasons that i was not able to figure out the post is added as guest so i had to updated the node.
$changes = array(
'authorname'=> $username,
'lastcontentauthor'=> $username,
);
vB::getDbAssertor()->update('vBForum:node', $changes, array('nodeid' => $nodee));
vB_Cache::allCacheEvent("nodeChg_" .$nodee);
vBulletin® v3.8.12 by vBS, Copyright ©2000-2025, vBulletin Solutions Inc.