Joomla 2.5 在 php 脚本中创建没有电子邮件地址的用户

Joomla 2.5 create user in php script without email address

我有一个 php 函数,用于在 Joomla 2.5 中创建新用户。此函数用于将外部客户数据库与 Joomla 同步。

新要求是电子邮件地址必须是可选字段。如果没有电子邮件地址,我似乎无法使用 JFactory 函数。是否有另一种创建用户的方法?

function add_joomla_user($username, $email, $name, $password, $group) {
    // Creates a new user in Joomla database with passed in information
    $return_message = '';

    $mainframe =& JFactory::getApplication("site");
    $mainframe->initialise();

    $user = JFactory::getUser(0); // it's important to set the "0" otherwise your admin user information will be loaded
    jimport('joomla.application.component.helper');     // include libraries/application/component/helper.php
    $usersParams = &JComponentHelper::getParams( 'com_users' );     // load the Params
    $userdata = array(); // place user data in an array for storing.
    $userdata['username'] = $username;
    $userdata['email'] = $email;
    $userdata['name'] = $name;
    $userdata['password'] = $password;
    $userdata['password2'] = $password;
    $defaultUserGroup = $usersParams->get('new_usertype', $group);
    $userdata['groups']=array($defaultUserGroup);   
    $userdata['block'] = 0; // set this to 0 so the user will be added immediately.

    if (!$user->bind($userdata)) { // bind the data and if it fails raise an error
        JError::raiseWarning('', JText::_( $user->getError())); // something went wrong!!
        $return_message = 'Error binding data: ' . $user->getError();
    }

    if (!$user->save()) { 
        JError::raiseWarning('', JText::_( $user->getError())); 
        $return_message = 'Error creating user: ' . $user->getError();
    } else {
        $return_message = 'Created user';
    }
    return $return_message;
}

Joomla 用户处理肯定需要每个用户一个唯一的电子邮件地址。这很棘手,我有点犹豫要不要提出这个建议,但是如果它丢失了,你可以做的是用一个随机字符串或一个根据你数据库中的信息生成的字符串(比如 $userdata['email'] = $username . '@noemail';)来代替。这样他们就很容易稍后查找。当然,这意味着密码重置和其他功能将永远无法使用,但如果用户没有电子邮件,无论如何都是如此。