'admin/jobs' => $this->make_hook('jobs', AUTH_PASSWD, 'admin,edit_directory'),
'admin/profile' => $this->make_hook('profile', AUTH_PASSWD, 'admin,edit_directory'),
'admin/phd' => $this->make_hook('phd', AUTH_PASSWD, 'admin'),
+ 'admin/name' => $this->make_hook('admin_name', AUTH_PASSWD, 'admin'),
'admin/add_secondary_edu' => $this->make_hook('add_secondary_edu', AUTH_PASSWD, 'admin')
);
}
}
$to_update['full_name'] = build_full_name($firstname, $lastname);
$to_update['directory_name'] = build_directory_name($firstname, $lastname);
+ $to_update['sort_name'] = build_sort_name($firstname, $lastname);
}
if (Post::s('display_name') != $user->displayName()) {
$to_update['display_name'] = Post::s('display_name');
default:
$page->killError("La formation n'est pas reconnue : " . Env::t('edu_type') . '.');
}
- $best_domain = User::$sub_mail_domains[$type] . Platal::globals()->mail->domain;
+ $best_domain = XDB::fetchOneCell('SELECT id
+ FROM email_virtual_domains
+ WHERE name = {?}',
+ User::$sub_mail_domains[$type] . Platal::globals()->mail->domain);
XDB::startTransaction();
foreach ($lines as $line) {
if (!is_null($sex)) {
$fullName = build_full_name($firstname, $lastname);
$directoryName = build_directory_name($firstname, $lastname);
+ $sortName = build_sort_name($firstname, $lastname);
$birthDate = self::formatBirthDate($infos[2]);
if ($type == 'x') {
$xorgId = Profile::getXorgId($infos[4]);
XDB::execute('INSERT INTO profile_display (pid, yourself, public_name, private_name,
directory_name, short_name, sort_name, promo)
VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?})',
- $pid, $firstname, $fullName, $fullName, $directoryName, $fullName, $directoryName, $promo);
+ $pid, $firstname, $fullName, $fullName, $directoryName, $fullName, $sortName, $promo);
XDB::execute('INSERT INTO profile_education (id, pid, eduid, degreeid, entry_year, grad_year, promo_year, flags)
VALUES (100, {?}, {?}, {?}, {?}, {?}, {?}, \'primary\')',
$pid, $eduSchools[Profile::EDU_X], $degreeid, $entry_year, $grad_year, $promotion);
XDB::execute('INSERT INTO accounts (hruid, type, is_admin, state, full_name, directory_name,
- display_name, lastname, firstname, sex, best_domain)
- VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?})',
- $infos['hrid'], $type, 0, 'pending', $fullName, $directoryName,
+ display_name, sort_name, lastname, firstname, sex, best_domain)
+ VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?})',
+ $infos['hrid'], $type, 0, 'pending', $fullName, $directoryName, $sortName,
$firstname, $lastname, $firstname, $sex, $best_domain);
$uid = XDB::insertId();
XDB::execute('INSERT INTO account_profiles (uid, pid, perms)
$firstname = capitalize_name($infos[1]);
$fullName = build_full_name($firstname, $lastname);
$directoryName = build_directory_name($firstname, $lastname);
+ $sortName = build_sort_name($firstname, $lastname);
XDB::execute('INSERT INTO accounts (hruid, type, is_admin, state, email, full_name, directory_name,
- display_name, lastname, firstname, sex)
- VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?})',
+ sort_name, display_name, lastname, firstname, sex)
+ VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?})',
$infos['hrid'], $type, 0, 'pending', $infos[2], $fullName, $directoryName,
- $firstname, $lastname, $firstname, $sex);
+ $sortName ,$firstname, $lastname, $firstname, $sex);
$newAccounts[$infos['hrid']] = $fullName;
}
}
}
}
+
+ function handler_admin_name($page, $hruid = null)
+ {
+ $page->changeTpl('admin/admin_name.tpl');
+
+ if (Post::has('id')) {
+ $user = User::get(Post::t('id'));
+ if (is_null($user)) {
+ $page->trigError("L'identifiant donné ne correspond à personne ou est ambigu.");
+ exit();
+ }
+ pl_redirect('admin/name/' . $user->hruid);
+ }
+
+ $user = User::getSilent($hruid);
+ if (!is_null($user)) {
+ require_once 'name.func.inc.php';
+
+ if ($user->hasProfile()) {
+ $name_types = array(
+ 'lastname_main' => 'Nom patronymique',
+ 'lastname_marital' => 'Nom marital',
+ 'lastname_ordinary' => 'Nom usuel',
+ 'firstname_main' => 'Prénom',
+ 'firstname_ordinary' => 'Prénom usuel',
+ 'pseudonym' => 'Pseudonyme'
+ );
+ $names = XDB::fetchOneAssoc('SELECT lastname_main, lastname_marital, lastname_ordinary,
+ firstname_main, firstname_ordinary, pseudonym
+ FROM profile_public_names
+ WHERE pid = {?}',
+ $user->profile()->id());
+ } else {
+ $name_types = array(
+ 'lastname' => 'Nom',
+ 'firstname' => 'Prénom'
+ );
+ $names = XDB::fetchOneAssoc('SELECT lastname, firstname
+ FROM accounts
+ WHERE uid = {?}',
+ $user->id());
+ }
+
+ if (Post::has('correct')) {
+ $new_names = array();
+ $update = true;
+ foreach ($name_types as $key => $fullname) {
+ $new_names[$key] = Post::t($key);
+ if (mb_strtolower($new_names[$key]) != mb_strtolower($names[$key])) {
+ $update = false;
+ }
+ }
+
+ if ($update) {
+ if ($user->hasProfile()) {
+ update_public_names($user->profile()->id(), $new_names);
+ update_display_names($user->profile(), $new_names);
+ } else {
+ $new_names['full_name'] = build_full_name($new_names['firstname'], $new_names['lastname']);
+ $new_names['directory_name'] = build_directory_name($new_names['firstname'], $new_names['lastname']);
+ $new_names['sort_name'] = build_sort_name($new_names['firstname'], $new_names['lastname']);
+ XDB::execute('UPDATE accounts
+ SET lastname = {?}, firstname = {?}, full_name = {?},
+ directory_name = {?}, sort_name = {?}
+ WHERE uid = {?}',
+ $new_names['lastname'], $new_names['firstname'], $new_names['full_name'],
+ $new_names['directory_name'], $new_names['sort_name'], $user->id());
+ }
+ $page->trigSuccess('Mise à jour réussie.');
+ } else {
+ $page->trigError('Seuls des changements de casse sont autorisés ici.');
+ }
+ }
+
+ if ($user->hasProfile()) {
+ $names = XDB::fetchOneAssoc('SELECT lastname_main, lastname_marital, lastname_ordinary,
+ firstname_main, firstname_ordinary, pseudonym
+ FROM profile_public_names
+ WHERE pid = {?}',
+ $user->profile()->id());
+ } else {
+ $names = XDB::fetchOneAssoc('SELECT lastname, firstname
+ FROM accounts
+ WHERE uid = {?}',
+ $user->id());
+ }
+
+ foreach ($names as $key => $name) {
+ $names[$key] = array(
+ 'value' => $name,
+ 'standard' => capitalize_name($name)
+ );
+ $names[$key]['different'] = ($names[$key]['value'] != $names[$key]['standard']);
+ }
+
+ $page->assign('uid', $user->id());
+ $page->assign('hruid', $user->hruid);
+ $page->assign('names', $names);
+ $page->assign('name_types', $name_types);
+ }
+ }
}
// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: