Index: ldapprov.module =================================================================== --- ldapprov.module (revision 874) +++ ldapprov.module (working copy) @@ -1373,7 +1373,7 @@ // Check if the user with the same name already created in the system. if (!LDAPPROV_ALLOW_USERNAME) { - $name = _ldapprov_make_username($data['first_name'], $data['last_name']); + $name = _ldapprov_make_username($data['first_name'], $data['last_name'],$data['mail']); $result = db_query("SELECT mail FROM {users} WHERE name = '%s'", $name); if ($row = db_fetch_object($result)) { $errors++; @@ -1700,7 +1700,7 @@ // Prints a message if a user with this username already exists in the system when the form is rendered. if ($status != 3 && !LDAPPROV_ALLOW_USERNAME && isset($data['first_name']) && isset($data['last_name'])) { - $name = _ldapprov_make_username($data['first_name'], $data['last_name']); + $name = _ldapprov_make_username($data['first_name'], $data['last_name'],$data['mail']); $result = db_query("SELECT mail FROM {users} WHERE name = '%s'", $name); if ($row = db_fetch_object($result)) { drupal_set_message(t('An account with a username %name and e-mail %mail is already created in the system. If you proceed, a new account will be created with a number appended to the username.', array('%name' => $name, '%mail' => $row->mail)), 'error'); @@ -1823,7 +1823,7 @@ $name = $data['name']; } else { - $name = _ldapprov_make_username($first_name, $last_name); + $name = _ldapprov_make_username($first_name, $last_name,$data['mail']); } if (!$_ldapprov_ldap->connect(LDAPPROV_DN, LDAPPROV_PASS)) { @@ -2013,17 +2013,22 @@ * A first name. * @param $last * A last name. + * @param $email + * An Email Address * * @return * A constructed username. */ -function _ldapprov_make_username($first, $last) { +function _ldapprov_make_username($first, $last, $email) { $first = drupal_strtolower($first); $first = preg_replace('/\'/', '', $first); $first = preg_replace('/\s+/', '-', $first); $last = drupal_strtolower($last); $last = preg_replace('/\'/', '', $last); $last = preg_replace('/\s+/', '-', $last); + $email = drupal_strtolower($email); + $email = preg_replace('/\'/', '', $email); + $email = preg_replace('/\s+/', '-', $email); $name = LDAPPROV_USERNAME; @@ -2044,8 +2049,16 @@ elseif (preg_match('/%l/', $name)) { $name = preg_replace('/%l/', $last, $name); } - - return $name; + if (preg_match('/%q/',$name)){ //fully Qualified part of email + $name = preg_replace('/%q/',preg_replace('/^.*@/', '', $email),$name); + } + if (preg_match('/%u/',$name)) { //username part of email + $name = preg_replace('/%u/',preg_replace('/@.*$/', '', $email),$name); + } + if (preg_match('/%e/',$name)) { //full email + $name = preg_replace('/%e/',$email,$name); + } + return str_replace('@','AT',str_replace('.','DOT',$name)); } //////////////////////////////////////////////////////////////////////////////