Log in

View Full Version : How to update a usergroup?


reteep
12-01-2007, 06:12 PM
Hi there,

I'd like to manually update a usergroup based on a querystring value:


define('THIS_SCRIPT', 'addvb.php');

require_once('./global.php');
require_once('./includes/class_dm.php');
require_once('./includes/class_dm_user.php');

$uid = $_GET['uid'];

// init data manager
global $vbulletin;
$vbulletin->userinfo = $vbulletin->db->query_first("SELECT userid, usergroupid, membergroupids, infractiongroupids, username FROM vb3user WHERE userid = '" . $userid . "'");
$userdata =& datamanager_init('User', $vbulletin, ERRTYPE_ARRAY);
$userdata->set('userid', $uid); //
$userdata->set('usergroupid', 2); // Move into Regged UserGroup
$userid = $userdata->save();


However, this is trying to create a new user. In fact I just want to update the usergroup of a given userid. Unfortunately there's no $userdata->update(); :o

I'd appreciate a little help, thanks!

lolzers
12-01-2007, 06:19 PM
Why would you want to do this via phpMyAdmin?

reteep
12-01-2007, 06:25 PM
Why would you want to do this via phpMyAdmin?

The php file is being called from another application which delivers the userid. So I need it to look like that, I call the file (example name):

updateuseridgroup.php?userid=1

And the scripts updates the usergroup of the given userid. I just need a function or possible way to manually update the usergroup of a vB user. I don't want to fire a raw SQL Update Query as I don't know what other fields vB is updating when changing the usergroup..

Opserty
12-01-2007, 09:01 PM
You want to do something like this:


// $vbulletin->userinfo is the BROWSING user's userinfo
// You shouldn't overwrite otherwise you will get problems

// Don't include the file extension here
define('THIS_SCRIPT', 'addvb');

require_once('./global.php');
require_once('./includes/class_dm.php');
require_once('./includes/class_dm_user.php');

$uid = intval($_GET['uid']);
if(!$uid)
{
exit('Error: Invalid UserID');
}
else
{
// Fetch $uid's info
$userinfo = fetch_userinfo($uid);
$userdata =& datamanager_init('User', $vbulletin, ERRTYPE_ARRAY);
// The important bit:
$userdata->set_existing($userinfo);
// Overwrite whatever you need to:
$userdata->set('usergroupid', 2);
$userdata->save();
}

King Kovifor
12-01-2007, 11:51 PM
You always have to use $dmclassvariable->set_existing() when using a data manager (or ones that manipulate data). That way it will know what to edit...

reteep
12-02-2007, 11:03 AM
Thanks Opserty, that way it's working!

Ok, thanks Kovifor!