Originally Posted by scott8539
(Post 812015)
I finally got a working script to add a user to vB offline. I maintain a separate Membership System. When a user registers in this separate system, an account is automatically created for them in vB.
When they register (again, this is in my own Member System -- on a different domain), I collect those variables that I need specifically (and minimally) to create an account in vB.
I then cURL those variables to a custom script (called bb_add_user.php) which resides in the root folder of the forum. The results of bb_add_user.php are printed, which are then collected in the result of the cURL. If there are errors, the Membership System takes appropriate action. If successul, then I grab the vbuserid from the cURL result and go about my business.
Although I am still proving this system on a development server, my goal will be to change all of the 'register.php' links on vBulletin and point them to the register script on my Membership System.
Here is the bb_add_user.php code.
Code:
<?php
# Add a user to vBulletin (offline)
function qpc_post($varname)
{
return trim(stripslashes((get_magic_quotes_gpc()) ? $_POST[$varname] : addslashes($_POST[$varname])));
}
define('THIS_SCRIPT', 'bb_add_user.php');
require_once('./global.php');
require_once('./includes/class_dm.php');
require_once('./includes/class_dm_user.php');
$userdm = new vB_DataManager_User($vbulletin, ERRTYPE_ARRAY);
$userdm->set('username', qpc_post('username'));
$userdm->set('email', qpc_post('email'));
$userdm->set('password', qpc_post('password'));
$userdm->set('usergroupid', 2);
$userdm->set('ipaddress', qpc_post('ipaddress'));
$userdm->set('referrerid', qpc_post('referrername'));
$userdm->set('timezoneoffset', qpc_post('timezoneoffset'));
$userdm->set_bitfield('options', 'adminemail', intval(qpc_post('adminemail')));
$userdm->set_bitfield('options', 'showemail', intval(qpc_post('showemail')));
$dst_setting = intval(qpc_post('dst'));
switch ($dst_setting)
{
case 0:
case 1:
$userdm->set_bitfield('options', 'dstonoff', $dst_setting);
break;
case 2:
$userdm->set_bitfield('options', 'dstauto', 1);
break;
}
#If there are errors (eMail not set, eMail banned, Username taken, etc.) you can check for errors using
if (count($userdm->errors)) {
for($i=0; $i<count($userdm->errors); $i++) {
print "ERROR{$i}:{$userdm->errors[$i]}\n";
}
} else {
# If everything is OK
$newuserid = $userdm->save();
print "vbuserid:$newuserid\n";
}
?>
|