$profile_user_id = $current_user->id;
}
if ($profile_user_id != $current_user->id) {
    $profile_user = new PCPIN_User($session);
    $profile_user->_db_loadObj($profile_user_id);
} else {
    $profile_user =& $current_user;
}
$activation_required = '';
if (!empty($profile_user_id)) {
    if (!isset($email) || !is_scalar($email)) {
        $email = '';
    } else {
        $email = _pcpin_substr(trim($email), 0, 255);
    }
    if (!PCPIN_Common::checkEmail($email, $session->_conf_all['email_validation_level'])) {
        // Email invalid
        $xmlwriter->setHeaderStatus(1);
        $xmlwriter->setHeaderMessage($l->g('email_invalid'));
    } else {
        if (!$current_user->checkEmailUnique($profile_user_id, $email)) {
            // Email address already taken
            $xmlwriter->setHeaderStatus(1);
            $xmlwriter->setHeaderMessage($l->g('email_already_taken'));
        } else {
            // Email address is free
            if ($current_user->is_admin !== 'y' && !empty($session->_conf_all['activate_new_emails'])) {
                // Email address needs to be activated
                $activation_required = 1;
                $email_new_activation_code = PCPIN_Common::randomString(18, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789');
                $profile_user->email_new = $email;
         $l->setLanguage($old_language_id);
     }
 }
 $errortext = array();
 $login = trim($login);
 $email = trim($email);
 if ($login == '') {
     $errortext[] = $l->g('username_empty');
 } elseif (_pcpin_strlen($login) < $session->_conf_all['login_length_min'] || _pcpin_strlen($login) > $session->_conf_all['login_length_max']) {
     $errortext[] = str_replace('[MIN]', $session->_conf_all['login_length_min'], str_replace('[MAX]', $session->_conf_all['login_length_max'], $l->g('username_length_error')));
 } elseif (!$current_user->checkUsernameUnique($login)) {
     $errortext[] = $l->g('username_already_taken');
 } elseif (true !== $badword->checkString($login) || true !== $disallowed_name->checkString($login)) {
     $errortext[] = $l->g('username_not_available');
 }
 if (!PCPIN_Common::checkEmail($email)) {
     $errortext[] = $l->g('email_invalid');
 } elseif (!$current_user->checkEmailUnique(0, $email)) {
     $errortext[] = $l->g('email_already_taken');
 }
 if (_pcpin_strlen($password) < 3) {
     $errortext[] = $l->g('password_too_short');
 }
 if (!empty($errortext)) {
     $xmlwriter->setHeaderStatus(1);
     $xmlwriter->setHeaderMessage('- ' . implode("\n- ", $errortext));
 } else {
     // Create user
     if (!empty($session->_conf_all['activate_new_accounts'])) {
         $activation_code_plain = PCPIN_Common::randomString(18, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789');
         $activation_code = md5($activation_code_plain);