Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 General Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 05-28-2008, 07:33 PM
richever richever is offline
 
Join Date: Mar 2008
Posts: 5
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Updating an existing user

I am trying to figure out what I need to do in order to user the User datamanager to update an existing user.

Most of the examples that I could dig up had to do with creating and saving a new user, but I'd like to update a user. Here's what I'm presently doing:

Code:
      
$userdata =& datamanager_init('User', $vbulletin, ERRTYPE_ARRAY);
$userdata->condition = ('userid = ' . $userid);
$userdata->set('userid', $userid);    
$userdata->set('email', $email);
$userdata->set('password', $password);
$userdata->set('username', $username);
$userdata->save();
When I try this for a user that already exists I get the following error message: 'That username is already in use or does not meet the administrator's standards...'

I thought that setting $userdata->condition would signal that an update needs to be done. Looking at the code for the User datamanager it would seem that condition needs to be set to something anyway.

Any ideas on what I'm missing here?

Thanks!

Rich

--------------- Added [DATE]1212012154[/DATE] at [TIME]1212012154[/TIME] ---------------

OK, I think I figured it out. I got something working for me anyway but so I thought I'd share.

For some reason providing the username when an update is desired seems to have been causing the problem I described in my previous post. Here is my code now:

Code:
$userid = $this->getUserId($username);
$userdata =& datamanager_init('User', $vbulletin, ERRTYPE_ARRAY);

if ($userid > 0)
{
  $userdata->condition = ('userid = ' . $userid);
  $userdata->set('userid', $userid);
}
else
{
  $userdata->set('username', $username);
}
    
$userdata->set('email',    $email);
$userdata->set('password', $password);
$userdata->save();
If there is a better, perhaps more accepted, way of doing this then please let me know.

Rich

--------------- Added [DATE]1212012297[/DATE] at [TIME]1212012297[/TIME] ---------------

One more thing. getUserId() is my own convenience function. It looks like this:

Code:
  // Userid for username. 0 if the user is not found.
  public function getUserId($username)
  {
    global $vbulletin;

    if (empty($username))
    {
      return 0;    // or whatever error you deem appropriate
    }

    $user = $vbulletin->db->query_first("
      SELECT userid FROM " . TABLE_PREFIX . "user 
      WHERE username = '" . addslashes(utf8_decode($username)) . "'");

    return $user ? $user['userid'] : 0;

  }
Reply With Quote
  #2  
Old 05-28-2008, 09:57 PM
Opserty Opserty is offline
 
Join Date: Apr 2007
Posts: 4,103
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Well I haven't had time to read through all your thread but here is how I would do it:

PHP Code:
$username 'blabla'

// Optional... or you can use your function
$userid fetch_userid_from_username($username); // You will need to copy this function from usergroup.php in order to use it


$userinfo fetch_userinfo($userid);

$userdata =& datamanager_init('User'$vbulletinERRTYPE_ARRAY);
$userdata->set_existing($userinfo);
$userdata->set('email',    $email);
$userdata->set('password'$password);
$userdata->save(); 
Something along those lines.
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:31 AM.


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.03435 seconds
  • Memory Usage 2,177KB
  • Queries Executed 13 (?)
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_code
  • (1)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (2)post_thanks_box
  • (2)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (2)post_thanks_postbit_info
  • (2)postbit
  • (2)postbit_onlinestatus
  • (2)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