Go Back   vb.org Archive > vBulletin Article Depository > Read An Article > vBulletin 3 Articles
FAQ Community Calendar Today's Posts Search

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
  #132  
Old 09-14-2009, 11:15 AM
mikesharp mikesharp is offline
 
Join Date: Mar 2007
Posts: 11
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Is there an update on a working version of this for 3.8.x ???

thanks all

Mike
Reply With Quote
  #133  
Old 09-14-2009, 01:16 PM
ragtek ragtek is offline
 
Join Date: Mar 2006
Location: austria, croatia
Posts: 1,630
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by mikesharp View Post
Is there an update on a working version of this for 3.8.x ???

thanks all

Mike
No, the code is still working
Reply With Quote
  #134  
Old 09-24-2009, 01:30 PM
webtechuser webtechuser is offline
 
Join Date: Sep 2009
Posts: 1
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I cant login from the site page using the user wich i have created according the way described above...can somebody plz help me
Reply With Quote
  #135  
Old 09-27-2009, 01:56 PM
damianzaremba4 damianzaremba4 is offline
 
Join Date: Jun 2009
Posts: 3
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I get the error
Code:
Fatal error: Call to a member function query_read_slave() on a non-object in /var/www/test_forums/includes/functions_misc.php on line 789
Every time I try to run the code:
PHP Code:
function register($username$password$email){
        
define('VB_AREA''External');
        
define('SKIP_SESSIONCREATE'0);
        
define('SKIP_USERINFO'1);
        
define('CWD'$this->forum_path);
        require_once(
CWD '/includes/init.php');

        
$newuser =& datamanager_init('User'$vbulletinERRTYPE_ARRAY);
        
$newuser->set('username'$username);
        
$newuser->set('email'$email);
        
$newuser->set('password'$password);
        
$newuser->set('usergroupid'$this->forum_awaiting_confomation_group);

        if(empty(
$newuser->errors)){
            return 
$newuser->save();
        }else{
            return 
$newuser->errors;
        }

Any one got an idea why?

Thanks.
Reply With Quote
  #136  
Old 09-30-2009, 04:25 PM
Andreas's Avatar
Andreas Andreas is offline
 
Join Date: Jan 2004
Location: Germany
Posts: 6,863
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Any one got an idea why?
Yep - Variable Scope.

Booting vBulletin from non-global scope is a bit tricky.
Reply With Quote
  #137  
Old 11-11-2009, 06:37 PM
Crimm's Avatar
Crimm Crimm is offline
 
Join Date: Feb 2007
Posts: 170
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by php-resource.de View Post
I guess you are using the global $db within your CMS.
Try the following workaround:
PHP Code:
  $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;

  
/*
   * Your code here
   */

  // Restore your $db object (new!!)
  
$db $backupdb


I just wanted to say that I was implementing this article with Wordpress and kept getting errors about functions_databuild.php on line 1685. So I added "global $vbulletin" and started having the issue of class_dm.php on line 177 about Registry Object. The above code worked for me.

So here's my function (A combination of those in this article for wordpress)

Code:
// Function for vB registration //

function register_in_vb($username, $password, $email){
        define('VB_AREA', 'External');
        define('SKIP_SESSIONCREATE', 0);
        define('SKIP_USERINFO', 1);
        define('CWD', 'ABSOLUTE_VB_PATH' );
        require_once(CWD . '/includes/init.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', 3);

        if(empty($newuser->errors)){
			$db = $backupdb;
            return $newuser->save();
        }else{
		    $db = $backupdb;
            return $newuser->errors;
        }
		
}
and I called it on wp-login.php in the register_new_user function. I added it right after the User Password Generation so I could pass it to vB.

Code:
	// Add the users to vBulletin
	$newuserid = register_in_vb($user_login, $user_pass, $user_email);
That should help some people if you come across this :P
Reply With Quote
  #138  
Old 11-27-2009, 06:51 AM
yappa.be yappa.be is offline
 
Join Date: Oct 2009
Posts: 1
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hello,


A few weeks ago, we launched a website with a custom registration in stead of register.php to add new users. With the help of this forum, we succeeded without any problems.

Since last monday, the register was down. The php-code did not change so we have no clue what so ever what could be the problem.

Error code:
HTML Code:
<b>Fatal error</b>:  Call to a member function query_read() on a non-object in <b>/var/www/html/forum/includes/adminfunctions.php</b> on line <b>2403</b><br />
PHP Code:
//load the vbulletin framework
            
define('VB_AREA''External');
            
define('SKIP_SESSIONCREATE'1);
            
define('SKIP_USERINFO'1);
            
define('CWD'PATH);

            require_once(
CWD '/includes/init.php');
        
             
//work around to make global vbulletin stick
            
$registry $vbulletin;
            unset(
$vbulletin);
            
$vbDb $registry->db;
            
//declare as global vbulletin's registry and db objects
            
global $vbulletin,$db;
            
$vbulletin $registry;
            
//vbulletin db object which is needed for vbulletin's project tools addon
            
$db $vbDb;        
            
            
$newuser =& datamanager_init('User'$vbulletinERRTYPE_ARRAY);
            
$newuser->set('username'$this->data['User']['firstname'].' '.$this->data['User']['lastname']);
            
$newuser->set('email'$this->data['User']['email']);
            
$newuser->set('password'$this->data['User']['password']);
            
$newuser->set('birthday'$this->data['User']['birthday']);
            
            
$newuser->set('usergroupid'2);  
            
            
$userfields['field11'] = $this->data['User']['optin'];
            
$userfields['field5'] = $this->data['User']['abo_nr'];
            
$userfields['field6'] = $this->data['User']['firstname'];
            
$userfields['field7'] = $this->data['User']['lastname'];
            
            
            
//userfields
            
$newuser->set_userfields($userfields);
            if(
$this->data['User']['password']!=$this->data['User']['retype_password']){
                
$newuser->errors[] = 'password_error';
            }
            
            
            if(!
$newuser->errors){
                if(
$newuserid $newuser->save()){
                                      echo 
'success';exit;
                                }
                        } 
After doing some searching, we found that the error is generated in the function build_options in includes/adminfunctions.php. This function is called in includes/class_core.php in the function check_options.

Does anybody have an idea what could be the problem. It seems that because of some changes in the settings (or something like that), we lost our database-object but didn't change anything to the code itself.
Reply With Quote
  #139  
Old 11-27-2009, 07:56 PM
Crimm's Avatar
Crimm Crimm is offline
 
Join Date: Feb 2007
Posts: 170
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I just happen to pass by here looking for something else and I saw your response.

Did you add a profile field, maybe?

Just a thought. If you get it figured out, please post the solution
Reply With Quote
  #140  
Old 12-01-2009, 10:09 AM
bianca_roma bianca_roma is offline
 
Join Date: Nov 2009
Posts: 1
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by andha513 View Post
I am porting all my users from a social networking site (Drupal CMS) to our new vBulletin forum, but having a small issue.

Since all Drupal passwords are already MD5'ed, I am simply creating vBulletin users manually by connecting to the vBulletin database and inserting the appropriate data into the user-table, the userfield-table and the usertextfield-table. (Since this is what I gather from the vBulletin registration script)
The users are created fine and working well, except that all users created with my script get the "Guest" title in their forum posts. And I just can't figure out why.
There are no users in the unregistered/guest usergroup (where people are assigned the "Guest" title), so that's not it.
We have no "Guest" user title in the User Title Manager, so that's not it either.

I'm assuming I'm missing to add some data to some table for each user. Would someone here be able to offer some help?

Thanks in advance.
I have the same problem...Did you manage to resolve this issue? i'm desperate...
Reply With Quote
  #141  
Old 01-06-2010, 03:27 PM
Iron Star's Avatar
Iron Star Iron Star is offline
 
Join Date: Jul 2008
Location: France
Posts: 21
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Unfortunately, I obtain this:

Fatal error: Call to a member function do_db_fetch() on a non-object in vb_forum/includes/init.php on line 308

An idea?


Quote:
Originally Posted by Crimm View Post
I just wanted to say that I was implementing this article with Wordpress and kept getting errors about functions_databuild.php on line 1685. So I added "global $vbulletin" and started having the issue of class_dm.php on line 177 about Registry Object. The above code worked for me.

So here's my function (A combination of those in this article for wordpress)

Code:
// Function for vB registration //

function register_in_vb($username, $password, $email){
        define('VB_AREA', 'External');
        define('SKIP_SESSIONCREATE', 0);
        define('SKIP_USERINFO', 1);
        define('CWD', 'ABSOLUTE_VB_PATH' );
        require_once(CWD . '/includes/init.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', 3);

        if(empty($newuser->errors)){
			$db = $backupdb;
            return $newuser->save();
        }else{
		    $db = $backupdb;
            return $newuser->errors;
        }
		
}
and I called it on wp-login.php in the register_new_user function. I added it right after the User Password Generation so I could pass it to vB.

Code:
	// Add the users to vBulletin
	$newuserid = register_in_vb($user_login, $user_pass, $user_email);
That should help some people if you come across this :P
Reply With Quote
Reply


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:37 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.06390 seconds
  • Memory Usage 2,384KB
  • 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
  • (5)bbcode_code
  • (1)bbcode_html
  • (8)bbcode_php
  • (5)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
  • (4)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