Go Back   vb.org Archive > vBulletin 4 Discussion > vB4 Programming Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 07-30-2012, 10:59 AM
warmarks warmarks is offline
 
Join Date: Jul 2012
Posts: 6
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Automatic Account creation Error Handling & Usergroup Updating

Hi,

Thanks for the great support and codes.
I have this code from another thread which is working great adding new account
automatically.

PHP Code:
<?php
define
('VB_AREA''External'); 
define('SKIP_SESSIONCREATE'1); 
define('SKIP_USERINFO'1); 
define('CWD''/home--path'); 
require_once(
CWD '/includes/init.php'); 
// Data from Form Submision for VB

$username $_GET["username"];
$password $_GET["password"];
$email  $_GET["email"];
$usrgrp $_GET["usergroupid"];


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



    
$newuser->pre_save();
        if(empty(
$newuser->errors)){
$newuserid $newuser->save();
echo 
"congratulations you are added <br>
Please note: <br>your username: <b>"
.$username."</b>
<br>Your Passowrd: <b>"
.$password."</b>";


        
    }
//assuming errors[0] is email already exist
//and errors[1] is username already exist

elseif(!empty($newuser->errors[0])){

//update usergroup to $usrgrp
echo "email already in use.. please login here";}


elseif(empty(
$newuser->errors[0] && !empty($newuser->errors[1]))
{  
echo 
"username already taken by some other
user please try with new username"
;

}




I just stuck with error handling..
i.e. there could be two types of errors..

1. Email is already in use.. that means this user is already registered !

in that case i want to add him to additional usergroup

2. Username already exists... but Email does not in use,
that means user need to choose some other USERNAME,
in that take to form again to ask to choose different username..

I am stuck on #1 above.. as in errors
$newuser->errors

how can i make sure that if
$newuser->errors[0] is error case #1 or #2
$newuser->errors[1] is error case #1 or #2


Ideally it would be great if i could have

$newuser->errors['email'] that means email already exists but not username, error case #1 above.

$newuser->errors['username'] that means username already exists error case #2 above.


Maybe i am approaching it wrong, i am very new to VBulletin.. hope you can guide me



Thanks
Reply With Quote
  #2  
Old 07-31-2012, 03:05 AM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Unfortunately, the datamanager errors are designed to be displayed and not checked via a program, so the only thing you could really do is check each string in the error array against what you know the error message should be (or else just display all the error strings instead of trying to sort it out).

You could call $newuser->set('username', $username) then check $newuser->errors[] for an error, but there are actually a number of error sthat can happen from setting a name so you don't know for sure that it's "name already in use". (See includes/class_dm_user.php, function verify_username() around line 377).
Reply With Quote
  #3  
Old 07-31-2012, 05:29 AM
warmarks warmarks is offline
 
Join Date: Jul 2012
Posts: 6
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hi Kevin,

Thank you very much for your support. You really have given me good points to lead this towards a possible solution.

Your tip of checking each string in the error array for possible error types could be awesome.
Thank you!
Reply With Quote
  #4  
Old 08-03-2012, 05:21 AM
warmarks warmarks is offline
 
Join Date: Jul 2012
Posts: 6
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hi Kevin,

Hope you can help with this one step..

With your idea i was able to handle errors and determine which the cause maybe..

I just stuck at last step..that when i know that user account already exist, how can i
upgrade the user to add him to another usergroup..

PHP Code:
 $newuser->pre_save(); 
        if(empty(
$newuser->errors)){ 
$newuserid $newuser->save(); 
echo 
"congratulations you are added <br> 
Please note: <br>your username: <b>"
.$username."</b> 
<br>Your Passowrd: <b>"
.$password."</b>"


         
    } 

else(!empty(
$newuser->errors[0])){ 
//assumed that user already exist
update usergroup to $usrgrp //usrgrp is an id of the usergroup
echo "email already in use.. please login here";} 
Can anyone please point out what the code will be to add user to another usergroup.
i mean the 2nd last line in above code.. i am unsure of exact syntax of the VB/php code here.

Any help in this regard is appreciated.
Thanks!
Reply With Quote
  #5  
Old 08-07-2012, 03:16 AM
Gio~Logist's Avatar
Gio~Logist Gio~Logist is offline
 
Join Date: Jun 2004
Location: San Francisco
Posts: 2,575
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

The line you want to work use is:

PHP Code:
$newuser->set('usergroupid''your usergroup id here'); 
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 11:00 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.06781 seconds
  • Memory Usage 2,217KB
  • Queries Executed 11 (?)
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
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (3)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (5)post_thanks_box
  • (5)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (5)post_thanks_postbit_info
  • (5)postbit
  • (5)postbit_onlinestatus
  • (5)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
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete