PDA

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);