X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fprofile%2Fgeneral.inc.php;h=6fd592af437fff260bd82d75735e79600bfa11cb;hb=ee71865181e96e7b0754ef9e7da4b3cb26f4c1d7;hp=3de46fb6f49f2635b0eb00875bdc3d440ed88d9f;hpb=dced83b45e8da9e0c03077d0ecca37749bc05289;p=platal.git diff --git a/modules/profile/general.inc.php b/modules/profile/general.inc.php index 3de46fb..6fd592a 100644 --- a/modules/profile/general.inc.php +++ b/modules/profile/general.inc.php @@ -32,7 +32,7 @@ class ProfileSearchNames implements ProfileSetting private function prepareField($value) { - $value = strtoupper(replace_accent($value)); + $value = mb_strtoupper($value); return preg_replace('/[^A-Z]/', ' ', $value); } @@ -43,7 +43,7 @@ class ProfileSearchNames implements ProfileSetting $new = $this->prepareField($value); $newLen = strlen($new); $success = $this->matchWord($ini, $new, $newLen) - || ($field == 'Nom patronymique' && $new == 'DE ' . $ini); + || ($field == 'lastname' && $new == 'DE ' . $ini); if (!$success) { $field = strtolower($field); Platal::page()->trigError("Le " . $field . " que tu as choisi (" . $value . @@ -56,20 +56,22 @@ class ProfileSearchNames implements ProfileSetting { $success = true; $success_tmp = true; + if (is_null($value)) { $sn_all = XDB::iterator("SELECT CONCAT(sn.particle, sn.name) AS name, - sn.particle, sn.typeid, e.name AS type, + sn.particle, sn.typeid, e.type, e.name AS type_name, FIND_IN_SET('has_particle', e.flags) AS has_particle, FIND_IN_SET('always_displayed', e.flags) AS always_displayed, FIND_IN_SET('public', e.flags) AS pub - FROM profile_name_search AS sn - INNER JOIN profile_name_search_enum AS e ON (e.id = sn.typeid) + FROM profile_name AS sn + INNER JOIN profile_name_enum AS e ON (e.id = sn.typeid) WHERE sn.pid = {?} AND NOT FIND_IN_SET('not_displayed', e.flags) ORDER BY NOT FIND_IN_SET('always_displayed', e.flags), e.id, sn.name", S::v('uid')); - $sn_types = XDB::iterator("SELECT id, name, FIND_IN_SET('has_particle', flags) AS has_particle - FROM profile_name_search_enum + $sn_types = XDB::iterator("SELECT id, type, name, + FIND_IN_SET('has_particle', flags) AS has_particle + FROM profile_name_enum WHERE NOT FIND_IN_SET('not_displayed', flags) AND FIND_IN_SET('always_displayed', flags) ORDER BY id"); @@ -81,31 +83,39 @@ class ProfileSearchNames implements ProfileSetting $value[] = $sn; $sn = $sn_all->next(); } else { - $value[] = array('typeid' => $sn_type['id'], - 'type' => $sn_type['name'], - 'pub' => 1, + $value[] = array('name' => '', + 'particle' => '', + 'typeid' => $sn_type['id'], + 'type' => $sn_type['type'], + 'type_name' => $sn_type['name'], 'has_particle' => $sn_type['has_particle'], - 'always_displayed' => 1); + 'always_displayed' => 1, + 'pub' => 1); } } - do { - $value[] = $sn; - } while ($sn = $sn_all->next()); + if ($sn) { + do { + $value[] = $sn; + } while ($sn = $sn_all->next()); + } } else { + require_once 'name.func.inc.php'; + $res = XDB::query("SELECT s.particle, s.name - FROM profile_name_search AS s - INNER JOIN profile_name_search_enum AS e ON (e.id = s.typeid) - WHERE s.pid = {?} AND e.name LIKE '%initial' - ORDER BY e.name = 'Prénom initial'", + FROM profile_name AS s + INNER JOIN profile_name_enum AS e ON (e.id = s.typeid) + WHERE s.pid = {?} AND e.type LIKE '%ini' + ORDER BY e.type = 'firstname_ini'", S::i('uid')); $res = $res->fetchAllAssoc(); $initial = array(); - $initial['Nom patronymique'] = $res[0]['particle'] . $res[0]['name']; - $initial['Prénom'] = $res[1]['name']; + $initial['lastname'] = $res[0]['particle'] . $res[0]['name']; + $initial['firstname'] = $res[1]['name']; + $sn_types = build_types(); $this->search_names = array(); foreach ($value as &$sn) { $sn['name'] = trim($sn['name']); - if ($sn['type'] == 'Prénom' || $sn['type'] == 'Nom patronymique') { + if ($sn['type'] == 'firstname' || $sn['type'] == 'lastname') { $sn['name'] = $this->prepare($page, $sn['type'], $sn['name'], $initial[$sn['type']], $success_tmp); $success = $success && $success_tmp; @@ -135,6 +145,7 @@ class ProfileSearchNames implements ProfileSetting } else { $this->search_names[$sn['typeid']] = array('fullname' => $sn['name']); } + $sn['type_name'] = $sn_types[$sn['typeid']]; } } } @@ -144,7 +155,6 @@ class ProfileSearchNames implements ProfileSetting S::v('uid')); list($public_name, $private_name) = $res->fetchOneRow(); if ($success) { - require_once 'name.func.inc.php'; $sn_types_private = build_types('private'); $this->private_name_end = build_private_name($this->search_names, $sn_types_private); $private_name = $public_name . $this->private_name_end; @@ -152,6 +162,7 @@ class ProfileSearchNames implements ProfileSetting Platal::page()->assign('public_name', $public_name); Platal::page()->assign('private_name', $private_name); } + return $value; } @@ -160,8 +171,8 @@ class ProfileSearchNames implements ProfileSetting require_once 'name.func.inc.php'; $sn_old = build_sn_pub(); XDB::execute("DELETE FROM s - USING profile_name_search AS s - INNER JOIN profile_name_search_enum AS e ON (s.typeid = e.id) + USING profile_name AS s + INNER JOIN profile_name_enum AS e ON (s.typeid = e.id) WHERE s.pid = {?} AND NOT FIND_IN_SET('not_displayed', e.flags)", S::i('uid')); $has_new = set_alias_names($this->search_names, $sn_old); @@ -170,7 +181,7 @@ class ProfileSearchNames implements ProfileSetting if ($has_new) { $new_names = new NamesReq(S::user(), $this->search_names, $this->private_name_end); $new_names->submit(); - Platal::page()->trigWarning("La demande de modification de tes noms a bien été prises en compte." . + Platal::page()->trigWarning("La demande de modification de tes noms a bien été prise en compte." . " Tu recevras un email dès que ces changements auront été effectués."); } else { $display_names = array(); @@ -369,8 +380,6 @@ class ProfileGeneral extends ProfilePage = $this->settings['yourself'] = $this->settings['promo'] = null; - $this->settings['synchro_ax'] - = new ProfileBool(); $this->settings['email_directory'] = new ProfileEmail(); $this->settings['email_directory_new'] @@ -392,7 +401,7 @@ class ProfileGeneral extends ProfilePage t.display_tel as mobile, t.pub as mobile_pub, d.email_directory as email_directory, q.profile_freetext as freetext, q.profile_freetext_pub as freetext_pub, - q.profile_from_ax as synchro_ax, u.matricule_ax, p.yourself + u.matricule_ax, p.yourself FROM auth_user_md5 AS u INNER JOIN auth_user_quick AS q ON (u.user_id = q.user_id) INNER JOIN profile_display AS p ON (p.pid = u.user_id) @@ -446,12 +455,11 @@ class ProfileGeneral extends ProfilePage preg_replace('@(\d{2})/(\d{2})/(\d{4})@', '\3-\2-\1', $this->values['naissance']), S::v('uid')); } - if ($this->changed['freetext'] || $this->changed['freetext_pub'] || $this->changed['synchro_ax']) { + if ($this->changed['freetext'] || $this->changed['freetext_pub']) { XDB::execute("UPDATE auth_user_quick - SET profile_freetext={?}, profile_freetext_pub={?}, profile_from_ax = {?} + SET profile_freetext={?}, profile_freetext_pub={?} WHERE user_id = {?}", - $this->values['freetext'], $this->values['freetext_pub'], - $this->values['synchro_ax'], S::v('uid')); + $this->values['freetext'], $this->values['freetext_pub'], S::v('uid')); } if ($this->changed['email_directory']) { $new_email = ($this->values['email_directory'] == "new@example.org") ?