diff options
-rw-r--r-- | admin/user_list.php | 14 | ||||
-rw-r--r-- | include/functions_user.inc.php | 53 | ||||
-rw-r--r-- | include/user.inc.php | 3 | ||||
-rw-r--r-- | register.php | 11 |
4 files changed, 45 insertions, 36 deletions
diff --git a/admin/user_list.php b/admin/user_list.php index 2062fad4f..dd43b0d62 100644 --- a/admin/user_list.php +++ b/admin/user_list.php @@ -204,8 +204,11 @@ if ($conf['double_password_type_in_admin'] == true) } else { - $page['errors'] = register_user( - $_POST['login'], $_POST['password'], $_POST['email'], false); + register_user($_POST['login'], + $_POST['password'], + $_POST['email'], + false, + $page['errors']); if (count($page['errors']) == 0) { @@ -218,8 +221,11 @@ else if ($conf['double_password_type_in_admin'] == false) { if (isset($_POST['submit_add'])) { - $page['errors'] = register_user( - $_POST['login'], $_POST['password'], $_POST['email'], false); + register_user($_POST['login'], + $_POST['password'], + $_POST['email'], + false, + $page['errors']); if (count($page['errors']) == 0) { diff --git a/include/functions_user.inc.php b/include/functions_user.inc.php index 6dc04b7b6..d48f4362d 100644 --- a/include/functions_user.inc.php +++ b/include/functions_user.inc.php @@ -119,8 +119,18 @@ function search_case_username($username) else return $users_found[0]; } + +/** + * create a new user + * @param string $login + * @param string $password + * @param string $mail_adress + * @param bool $with_notifications + * @param &array $errors + * @return int|bool + */ function register_user($login, $password, $mail_address, - $with_notification = true, $errors = array()) + $with_notification = true, &$errors = array()) { global $conf; @@ -171,41 +181,32 @@ function register_user($login, $password, $mail_address, // if no error until here, registration of the user if (count($errors) == 0) { - // what will be the inserted id ? - $query = ' -SELECT MAX('.$conf['user_fields']['id'].') + 1 - FROM '.USERS_TABLE.' -;'; - list($next_id) = pwg_db_fetch_row(pwg_query($query)); - $insert = array( - $conf['user_fields']['id'] => $next_id, $conf['user_fields']['username'] => pwg_db_real_escape_string($login), $conf['user_fields']['password'] => $conf['password_hash']($password), $conf['user_fields']['email'] => $mail_address ); single_insert(USERS_TABLE, $insert); + $user_id = pwg_db_insert_id(); // Assign by default groups - { - $query = ' + $query = ' SELECT id FROM '.GROUPS_TABLE.' WHERE is_default = \''.boolean_to_string(true).'\' ORDER BY id ASC ;'; - $result = pwg_query($query); + $result = pwg_query($query); - $inserts = array(); - while ($row = pwg_db_fetch_assoc($result)) - { - $inserts[] = array( - 'user_id' => $next_id, - 'group_id' => $row['id'] - ); - } + $inserts = array(); + while ($row = pwg_db_fetch_assoc($result)) + { + $inserts[] = array( + 'user_id' => $user_id, + 'group_id' => $row['id'] + ); } if (count($inserts) != 0) @@ -219,7 +220,7 @@ SELECT id if ( !get_browser_language($override['language']) ) $override=null; } - create_user_infos($next_id, $override); + create_user_infos($user_id, $override); if ($with_notification and $conf['email_admin_on_new_user']) { @@ -244,14 +245,18 @@ SELECT id trigger_action('register_user', array( - 'id'=>$next_id, + 'id'=>$user_id, 'username'=>$login, 'email'=>$mail_address, ) ); + + return $user_id; + } + else + { + return false; } - - return $errors; } function build_user( $user_id, $use_cache ) diff --git a/include/user.inc.php b/include/user.inc.php index 60117e776..9c8fc9680 100644 --- a/include/user.inc.php +++ b/include/user.inc.php @@ -60,8 +60,7 @@ if ($conf['apache_authentication']) { if (!($user['id'] = get_userid($remote_user))) { - register_user($remote_user, '', '', false); - $user['id'] = get_userid($remote_user); + $user['id'] = register_user($remote_user, '', '', false); } } } diff --git a/register.php b/register.php index 02a1a1800..2fce11d52 100644 --- a/register.php +++ b/register.php @@ -52,12 +52,11 @@ if (isset($_POST['submit'])) $page['errors'][] = l10n('please enter your password again'); } - $page['errors'] = - register_user($_POST['login'], - $_POST['password'], - $_POST['mail_address'], - true, - $page['errors']); + register_user($_POST['login'], + $_POST['password'], + $_POST['mail_address'], + true, + $page['errors']); if (count($page['errors']) == 0) { |