Go Back   vb.org Archive > vBulletin Article Depository > Read An Article > vBulletin 3 Articles

Reply
 
Thread Tools
Add new Users (automatically)
Andreas's Avatar
Andreas
Join Date: Jan 2004
Posts: 6,863

 

Germany
Show Printable Version Email this Page Subscription
Andreas Andreas is offline 06-09-2005, 10:00 PM

As this is a common request for integration purposes, I thought I should write up another HowTo

If you want to add a new user to the vBulletin database, you can use Class vB_Datamanager_User.
This Calss does make sure that everything is OK, it will also take care of the default registration options.

Example
PHP Code:
$newuser =& datamanager_init('User'$vbulletinERRTYPE_ARRAY);
$newuser->set('username''phpNukeUser');
$newuser->set('email''foo@bar.com');
$newuser->set('password''verysecret');
$newuser->set('usergroupid'2); 
If there are errors (eMail not set, eMail banned, Username taken, etc.) you can check for errors using
PHP Code:
$newuser->errors 
This is an array containing the errors.

If everything is OK
PHP Code:
$newuserid $newuser->save(); 
This will create a new User called phpNukeNuser (UserID returned in $newuserid).

You can also set many other info too:
  • membergroupids = comma-separated string of all additional usergroups (Default=Empty)
  • displaygroupid = ID of the usergroup this user should show up as (Default=0)
    Note that this must be set after usergroupid and membergroupids!
  • styleid = ID of the Style to be used by this user (Default=Board Default)
  • languageid = ID of the language to be used by this user (Default=Board Default)
  • threadedmode = Whether to use Flat (0), Hybrid (1) or Threaded (2) Display Mode
  • maxposts = Integer, how many posts should be shown on one Page (Default=Board Default)
  • ipaddress = String, IP-Adress of the User registering (Default=Empty)
  • refererid = String, Username or UserID of the User this user was refered by
  • parentemail = String. eMail-Address of the users Parents
  • daysprune = Integer, show threads from the last X days
  • startofweek = Integer, When does the week start (1=Sunday, 2=;onday, ...) (Default=Board Default)
  • timezoneoffset = Integer, spexifying the Timezone (-12 .. +12)
  • autosubscribe = Integer, defining default mode for Thread subscription
    -1 = no Subscription, 1 = Instant, 2 = Daily Digest, 3 = Weekly Digest
    (Default=Board Default)
  • homepage = String, URL of the users Homepage (Default=Empty)
  • icq = String, the Users ICQ # (Default=Empty)
  • aim = String, the Users AIM ID (Default=Empty)
  • yahoo = String, the Users Yahoo ID (Default=Empty)
  • MSN = String, the Users MSN ID (Default=Empty)
  • usertitle = String, the Usertitle this user should have
  • customtitle = Integer, defining behaviour of Usertitle. 0=No Custom Title, 1=Custom, Title with HTML, 2=Custom Title without HTML (Default=
  • birthday = array(month, day, year). The users birthdate.
  • avatarid = Integer, ID of the Avatar being used for this user
  • signature = String. The Users Signature
  • subfolders = Array. The Users Subscription Folders
  • pmfolders = Array. The Users Subscription Folders
  • buddylist = String. Space separated List of UserIDs defining the Users buddylist
  • ignorelist = String. Space separated List of UserIDs defining the Users ignorelist

Besides that, you can also set the options Bitfield (Receive Admin PMs, etc.)
PHP Code:
$userdata->set_bitfield('options''optionname''value'); 
The available Options are
  • showsignatures = Show Signatures
  • showavatars = Show Avatars
  • showimages = Show Images, incl. attached Images and [img] BBCode
    If this is not set they will show up as links
  • coppauser = User is COPPA User
  • adminemail = Receive Admin eMails
  • showvcard = Allow vCard Download
  • dstauto = Automatically detect DST setting
  • dstonoff = DST turned On
  • showemail = Receive eMails from other Users
  • invisible = Be invisible
  • showreputation = Show Reputation
  • receivepm = PM turned on
  • emailonpm = eMail notification for new PMs

Value must be 0 or 1 (false or true), depending if you want to set the option or not.
If the Options are not set, the Default Registration Options/Board Default Options will be used.

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.

This How-To is (C) 2005 by KirbyDE and you are not allowed to redistribute it in any way without my explicit consent.
Reply With Quote
  #152  
Old 01-25-2011, 02:59 PM
adbox adbox is offline
 
Join Date: Dec 2010
Posts: 28
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Looking for an updated version of this script for 4.1.1

Am getting this error:

Code:
Fatal error: Call to undefined function fetch_phrase() in /home2/hatnohat/public_html/forum/includes/functions.php on line 3456
--------------- Added [DATE]1295975525[/DATE] at [TIME]1295975525[/TIME] ---------------

This works for me.

add_user.php (custom API)

PHP Code:
<?php

function register_in_vb($username$password$email)
{
    
define('VB_AREA''External');
    
define('SKIP_SESSIONCREATE'0);
    
define('SKIP_USERINFO'1);
    
define('CWD''./../../forum/' );
    require_once(
CWD '/includes/init.php');
    require_once(
CWD '/includes/functions_misc.php');

    
$registry $vbulletin
    unset(
$vbulletin); 
    
$vbDb $registry->db
    
//declare as global vbulletin's registry and db objects 
    
global $vbulletin,$db
    
$vbulletin $registry
    
//backup the original $db object (new!!) 
    
$backupdb $db
    
$db $vbDb

    
$newuser =& datamanager_init('User'$vbulletinERRTYPE_ARRAY);
    
$newuser->set('username'$username);
    
$newuser->set('email'$email);
    
$newuser->set('password'$password);
    
$newuser->set('usergroupid'9);
    
    
$newuser->pre_save();
    
    if(empty(
$newuser->errors)){
        
$db $backupdb;
        echo 
1;
        return 
$newuser->save();
        
    }else{
        
$db $backupdb;
        echo 
0;
        
print_r$newuser->errors);
    }
        
}

$key $_GET['key'];
$username $_GET['username'];
$password $_GET['password'];
$email $_GET['email'];

if (
$key=='mysecretkey')
{
    
// Add the users to vBulletin
    
$newuserid register_in_vb($username$password$email);
}

?>
Reply With Quote
  #153  
Old 01-26-2011, 05:21 PM
Andreas's Avatar
Andreas Andreas is offline
 
Join Date: Jan 2004
Location: Germany
Posts: 6,863
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by adbox View Post
Looking for an updated version of this script for 4.1.1

Am getting this error:

Code:
Fatal error: Call to undefined function fetch_phrase() in /home2/hatnohat/public_html/forum/includes/functions.php on line 3456
This is caused by a Bug that should be fixed in one of the next releases.

In the meantime you can simply add
PHP Code:
define('VB_API'false); 
to your code.
Reply With Quote
  #154  
Old 08-05-2011, 02:19 PM
nack nack is offline
 
Join Date: Nov 2005
Posts: 29
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I used this code and everything was working fine. Users got added, but when they tried to login, they got this message:
Code:
You have been banned for the following reason:
 No reason was specified.

Date the ban will be lifted: Never
I looked in the banned list. They are not in there. What could have been wrong?
Reply With Quote
  #155  
Old 09-07-2011, 07:04 PM
ingwa ingwa is offline
 
Join Date: Aug 2011
Posts: 3
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Nack, make sure the user group that your user is being created under is being defined. If you aren't in the right group then they show as being banned. Hope this helps.
Reply With Quote
  #156  
Old 12-03-2011, 12:03 PM
dog199200's Avatar
dog199200 dog199200 is offline
 
Join Date: Sep 2010
Location: Missouri
Posts: 40
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I keep getting a fatal error:Fatal error:

Code:
Fatal error: Registry object is not an object in [path]/includes/class_dm.php on line 205
I slightly modified the code above:

Main Code
Code:
<?php 
mysql_connect($DBhost, $DBuser, $DBpass) or die(mysql_error()); 
mysql_select_db($DBname) or die(mysql_error()); 

$RegAllowArray = mysql_query("SELECT * FROM setting WHERE varname = 'allowregistration'") or die(mysql_error()); 
$RegAllow = mysql_fetch_array($RegAllowArray);

$CountUserArray = mysql_query("SELECT COUNT(*) FROM user") or die(mysql_error()); 
$CountUser = mysql_num_rows($CountUserArray); 

if($CountUser < 50)
{
	if($RegAllow['value'] != 0)
	{
		function register_in_vb($username, $password, $email, $day, $month, $year)
		{
			define('VB_AREA', 'External');
			define('SKIP_SESSIONCREATE', 0);
			define('SKIP_USERINFO', 1);
			require_once('/home/shininga/public_html/divineshadowsonline/forum/includes/init.php');
			require_once('/home/shininga/public_html/divineshadowsonline/forum/includes/functions_misc.php');

			$registry = $vbulletin; 
			unset($vbulletin); 
			$vbDb = $registry->db; 
			//declare as global vbulletin's registry and db objects 
			global $vbulletin,$db; 
			$vbulletin = $registry; 
			//backup the original $db object (new!!) 
			$backupdb = $db; 
			$db = $vbDb; 

			$newuser =& datamanager_init('User', $vbulletin, ERRTYPE_ARRAY);
			$newuser->set('username', $username);
			$newuser->set('email', $email);
			$newuser->set('password', $password);
			$newuser->set('usergroupid', 2);
			$newuser->set('displaygroupid', 2);
			$newuser->set('birthday', array($month, $day, $year));
			
			$newuser->pre_save();
			
			if(empty($newuser->errors)){
				$db = $backupdb;
				echo 1;	
				return $newuser->save();
				
			}else{
				$db = $backupdb;
				echo 0;
				print_r( $newuser->errors);
				include("/home/shininga/public_html/divineshadowsonline/includes/register-form.php");
			}
		}
			
		if(!$logged_in) {
			if(isset($_POST['username'])) 
			{
				$key = $_POST['key'];
				$username = $_POST['username'];
				$password = $_POST['password'];
				$confirmpass = $_POST['confirmpass'];
				$day = $_POST['day'];
				$month = $_POST['month'];
				$year = $_POST['year'];
				$email = $_POST['email'];
				$tos = $_POST['tos'];
				include("/home/shininga/public_html/divineshadowsonline/includes/register-functions.php");
				$newuserid = register_in_vb($username, $password, $email, $day, $month, $year);
				
			} else if(!isset($_POST['username'])) {
				include("/home/shininga/public_html/divineshadowsonline/includes/register-form.php");
			}
		} else {
			echo "<h4><center><b>You are already logged in!</b></center></h4>";
		}
	} else {
		echo "<center>Registration Are Currently Disabled</center>";
	}
} else {
	echo "<center>Registration Are Currently Disabled</center>";
}
mysql_close();
?>
I could really use some help please. :P
Reply With Quote
  #157  
Old 12-06-2011, 03:50 PM
adbox adbox is offline
 
Join Date: Dec 2010
Posts: 28
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Maybe this resource is related?

https://vborg.vbsupport.ru/showthread.php?t=267099
Reply With Quote
  #158  
Old 12-06-2011, 06:19 PM
dog199200's Avatar
dog199200 dog199200 is offline
 
Join Date: Sep 2010
Location: Missouri
Posts: 40
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by adbox View Post
They seem to be, but it doesn't exactly answer the question. I noticed i only get the error because of my header which i need:

Code:
ob_start();
$curdir = getcwd ();
chdir('/home/shininga/public_html/divineshadowsonline/forum/'); 
require_once('./global.php');   

$phrasegroups = array(); 
$headinclude = str_replace('clientscript', $vbulletin->options['bburl'] . '/clientscript', $headinclude); 


chdir ($curdir);
I have that added to the top of every single page because i've build my own api system for my main website around it.
Reply With Quote
  #159  
Old 12-06-2011, 06:28 PM
adbox adbox is offline
 
Join Date: Dec 2010
Posts: 28
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

What if you change your header to this:

Code:
require_once('/home/shininga/public_html/divineshadowsonline/forum/');   

$phrasegroups = array(); 
$headinclude = str_replace('clientscript', $vbulletin->options['bburl'] . '/clientscript', $headinclude);
I'm not certain the change directory commands are necessary.
Reply With Quote
  #160  
Old 12-06-2011, 06:34 PM
dog199200's Avatar
dog199200 dog199200 is offline
 
Join Date: Sep 2010
Location: Missouri
Posts: 40
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Doesn't work. I had to change the directory before because I had to call a lot of the internal features within vB. I'm pulling user information and login checks of all types all over the site. If i just include the global instead of redefining the directory I get this error:

Code:
Warning: require_once(./includes/class_bootstrap.php) [function.require-once]: failed to open stream: No such file or directory in /home/shininga/public_html/divineshadowsonline/forum/global.php on line 15

Fatal error: require_once() [function.require]: Failed opening required './includes/class_bootstrap.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/shininga/public_html/divineshadowsonline/forum/global.php on line 15
Edit: Basically without the header being as how i had it, my whole site would break.
Reply With Quote
  #161  
Old 08-25-2014, 07:47 PM
dilios dilios is offline
 
Join Date: Jun 2010
Posts: 7
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Vbulletin 4.x user registration version:
Code:
define('THIS_SCRIPT', 'reguser.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);
$pass1 = $_REQUEST["pw1"];
$pass2 = $_REQUEST["pw2"];
if ($pass1 == $pass2)
	$passwd = $pass1;
else
	exit;
$userdm->set('username', $_REQUEST["user"]);
$userdm->set('email', $_REQUEST["email"]);
$userdm->set('password', $passwd);
$userdm->set('usergroupid',2);
 
#If there are errors (eMail not set, eMail banned, Username taken, etc.) you can check for errors using
if (count($userdm->errors))
{
	echo "<pre>";
	var_dump($userdm->errors);
	echo "</pre>";
} else {
	# If everything is OK
	$newuserid = $userdm->save();
	echo $newuserid."<br>Done.";
}
Reply With Quote
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 01:06 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.05107 seconds
  • Memory Usage 2,353KB
  • Queries Executed 25 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (9)bbcode_code
  • (7)bbcode_php
  • (2)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_article
  • (1)navbar
  • (4)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (3)pagenav_pagelink
  • (1)pagenav_pagelinkrel
  • (11)post_thanks_box
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (11)postbit_onlinestatus
  • (11)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete