試してないが、たぶんこれで合ってるはず……
/**
* @param string $uname
* @param string $email
* @param string $password
* @param float $timezoneOffset
* @param bool $userMailOk
* @throws RuntimeException
*/
function addUser($uname, $email, $password, $timezoneOffset, $userMailOk)
{
/** @var XoopsMemberHandler $memberHandler */
$memberHandler = xoops_gethandler('member');
/** @var XoopsUser $user */
$user = $memberHandler->createUser();
$user->set('uname', $uname);
$user->set('email', $email);
$user->set('user_viewemail', 0);
$user->set('user_avatar', 'blank.gif');
$user->set('timezone_offset', $timezoneOffset);
$user->set('pass', md5($password));
$user->set('user_mailok', $userMailOk);
$user->set('actkey', substr(md5(uniqid(mt_rand(), 1)), 0, 8));
$user->set('user_regdate', time());
$user->set('level', 1);
if ($memberHandler->insertUser($user) === false) {
throw new RuntimeException("Failed to add user");
}
if ($memberHandler->addUserToGroup(XOOPS_GROUP_USERS, $user->get('uid')) === false) {
throw new RuntimeException("Failed to add user to group");
}
}