From: Stéphane Jacob Date: Fri, 16 Jan 2009 13:12:04 +0000 (+0100) Subject: Adds types in profile_name_search and fixes a related few bugs. X-Git-Tag: xorg/1.0.0~332^2~344^2~31 X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=6cb58d39b7e723c8052eef28726eeca47d2f5d2e;p=platal.git Adds types in profile_name_search and fixes a related few bugs. --- diff --git a/include/name.func.inc.php b/include/name.func.inc.php index feb4536..900e411 100644 --- a/include/name.func.inc.php +++ b/include/name.func.inc.php @@ -60,16 +60,16 @@ function build_types($pub = null) } else { $sql_pub = ""; } - $sql = "SELECT id, name + $sql = "SELECT id, type, name FROM profile_name_enum WHERE NOT FIND_IN_SET('not_displayed', flags)" . $sql_pub; $sn_types = XDB::iterator($sql); $types = array(); while ($sn_type = $sn_types->next()) { if ($pub) { - $types[$sn_type['name']] = $sn_type['id']; + $types[$sn_type['type']] = $sn_type['id']; } else { - $types[$sn_type['id']] = $sn_type['name']; + $types[$sn_type['id']] = $sn_type['name']; } } return $types; @@ -78,29 +78,29 @@ function build_types($pub = null) function build_full_name(&$search_names, &$sn_types) { $name = ""; - if (isset($search_names[$sn_types['Nom usuel']])) { - $name .= $search_names[$sn_types['Nom usuel']]['fullname'] . " (" - . $search_names[$sn_types['Nom patronymique']]['fullname'] . ")"; + if (isset($search_names[$sn_types['lastname_ordinary']])) { + $name .= $search_names[$sn_types['lastname_ordinary']]['fullname'] . " (" + . $search_names[$sn_types['lastname']]['fullname'] . ")"; } else { - $name .= $search_names[$sn_types['Nom patronymique']]['fullname']; + $name .= $search_names[$sn_types['lastname']]['fullname']; } - if (isset($search_names[$sn_types['Nom marital']]) - || isset($search_names[$sn_types['Pseudonyme (nom de plume)']])) { + if (isset($search_names[$sn_types['lastname_marital']]) + || isset($search_names[$sn_types['pseudonym']])) { $name .= " ("; - if (isset($search_names[$sn_types['Nom marital']])) { + if (isset($search_names[$sn_types['lastname_marital']])) { $user = S::user(); if ($user->isFemale()) { $name .= "Mme "; } else { $name .= "M "; } - $name .= $search_names[$sn_types['Nom marital']]['fullname']; - if (isset($search_names[$sn_types['Pseudonyme (nom de plume)']])) { + $name .= $search_names[$sn_types['lastname_marital']]['fullname']; + if (isset($search_names[$sn_types['pseudonym']])) { $name .= ", "; } } - if (isset($search_names[$sn_types['Pseudonyme (nom de plume)']])) { - $name .= $search_names[$sn_types['Pseudonyme (nom de plume)']]['fullname']; + if (isset($search_names[$sn_types['pseudonym']])) { + $name .= $search_names[$sn_types['pseudonym']]['fullname']; } $name .= ")"; } @@ -109,44 +109,44 @@ function build_full_name(&$search_names, &$sn_types) function build_public_name(&$search_names, &$sn_types, $full_name) { - return $search_names[$sn_types['Prénom']]['fullname'] . " " . $full_name; + return $search_names[$sn_types['firstname']]['fullname'] . " " . $full_name; } function build_private_name(&$search_names, &$sn_types) { $name = ""; - if (isset($search_names[$sn_types['Surnom']]) - || (isset($search_names[$sn_types['Autre prénom']]) - || isset($search_names[$sn_types['Autre nom']]))) { + if (isset($search_names[$sn_types['nickname']]) + || (isset($search_names[$sn_types['name_other']]) + || isset($search_names[$sn_types['name_other']]))) { $name .= " ("; - if (isset($search_names[$sn_types['Surnom']])) { - $name .= "alias " . $search_names[$sn_types['Surnom']]['fullname']; + if (isset($search_names[$sn_types['nickname']])) { + $name .= "alias " . $search_names[$sn_types['nickname']]['fullname']; $i = 0; - while (isset($search_names[$sn_types['Surnom']][$i])) { - $name .= ", " . $search_names[$sn_types['Surnom']][$i]; + while (isset($search_names[$sn_types['nickname']][$i])) { + $name .= ", " . $search_names[$sn_types['nickname']][$i]; $i++; } - if (isset($search_names[$sn_types['Autre prénom']]) - || isset($search_names[$sn_types['Autre nom']])) { + if (isset($search_names[$sn_types['name_other']]) + || isset($search_names[$sn_types['name_other']])) { $name .= ", "; } } - if (isset($search_names[$sn_types['Autre prénom']])) { - $name .= "autres prénoms : " . $search_names[$sn_types['Autre prénom']]['fullname']; + if (isset($search_names[$sn_types['firstname_other']])) { + $name .= "autres prénoms : " . $search_names[$sn_types['firstname_other']]['fullname']; $i = 0; - while (isset($search_names[$sn_types['Autre prénom']][$i])) { - $name .= ", " . $search_names[$sn_types['Autre prénom']][$i]; + while (isset($search_names[$sn_types['firstname_other']][$i])) { + $name .= ", " . $search_names[$sn_types['firstname_other']][$i]; $i++; } - if (isset($search_names[$sn_types['Autre nom']])) { + if (isset($search_names[$sn_types['name_other']])) { $name .= ", "; } } - if (isset($search_names[$sn_types['Autre nom']])) { - $name .= "autres noms : " . $search_names[$sn_types['Autre nom']]['fullname']; + if (isset($search_names[$sn_types['name_other']])) { + $name .= "autres noms : " . $search_names[$sn_types['name_other']]['fullname']; $i = 0; - while (isset($search_names[$sn_types['Autre nom']][$i])) { - $name .= ", " . $search_names[$sn_types['Autre nom']][$i]; + while (isset($search_names[$sn_types['name_other']][$i])) { + $name .= ", " . $search_names[$sn_types['name_other']][$i]; $i++; } } @@ -157,20 +157,20 @@ function build_private_name(&$search_names, &$sn_types) function build_directory_name(&$search_names, &$sn_types, $full_name) { - return $full_name . " " . $search_names[$sn_types['Prénom']]['fullname']; + return $full_name . " " . $search_names[$sn_types['firstname']]['fullname']; } function build_short_name(&$search_names, &$sn_types, &$alias = null) { - if (isset($search_names[$sn_types['Nom usuel']])) { - $lastname = $search_names[$sn_types['Nom usuel']]['fullname']; + if (isset($search_names[$sn_types['lastname_ordinary']])) { + $lastname = $search_names[$sn_types['lastname_ordinary']]['fullname']; } else { - $lastname = $search_names[$sn_types['Nom patronymique']]['fullname']; + $lastname = $search_names[$sn_types['lastname']]['fullname']; } - if (isset($search_names[$sn_types['Prénom usuel']])) { - $firstname = $search_names[$sn_types['Prénom usuel']]['fullname']; + if (isset($search_names[$sn_types['firstname_ordinary']])) { + $firstname = $search_names[$sn_types['firstname_ordinary']]['fullname']; } else { - $firstname = $search_names[$sn_types['Prénom']]['fullname']; + $firstname = $search_names[$sn_types['firstname']]['fullname']; } if ($alias) { $alias = make_username($firstname, $lastname); @@ -181,12 +181,12 @@ function build_short_name(&$search_names, &$sn_types, &$alias = null) function build_sort_name(&$search_names, &$sn_types) { $name = ""; - if (isset($search_names[$sn_types['Nom usuel']])) { - $name .= $search_names[$sn_types['Nom usuel']]['name']; + if (isset($search_names[$sn_types['lastname_ordinary']])) { + $name .= $search_names[$sn_types['lastname_ordinary']]['name']; } else { - $name .= $search_names[$sn_types['Nom patronymique']]['name']; + $name .= $search_names[$sn_types['lastname']]['name']; } - $name .= " " . $search_names[$sn_types['Prénom']]['fullname']; + $name .= " " . $search_names[$sn_types['firstname']]['fullname']; return $name; } @@ -247,6 +247,13 @@ function set_alias_names(&$sn_new, $sn_old, $update_new = false, $new_alias = nu VALUES ('', {?}, {?}, {?})", $sn['fullname'], $typeid, S::i('uid')); } + $i = 0; + while (isset($sn[$i])) { + XDB::execute("INSERT INTO profile_name (particle, name, typeid, pid) + VALUES ('', {?}, {?}, {?})", + $sn[$i], $typeid, S::i('uid')); + $i++; + } } } if (count($sn_old) > 0) { diff --git a/include/validations/names.inc.php b/include/validations/names.inc.php index b5b62ff..2c3ff1a 100644 --- a/include/validations/names.inc.php +++ b/include/validations/names.inc.php @@ -123,7 +123,7 @@ class NamesReq extends Validate public function commit() { require_once 'notifs.inc.php'; - require_once('name.func.inc.php'); + require_once 'name.func.inc.php'; register_watch_op($this->user->id(), WATCH_FICHE, '', 'search_names'); set_profile_display($this->display_names); diff --git a/modules/profile/general.inc.php b/modules/profile/general.inc.php index b588836..33e9915 100644 --- a/modules/profile/general.inc.php +++ b/modules/profile/general.inc.php @@ -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 . @@ -58,7 +58,7 @@ class ProfileSearchNames implements ProfileSetting $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 @@ -68,7 +68,8 @@ class ProfileSearchNames implements ProfileSetting 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 + $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) @@ -81,31 +82,37 @@ 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('typeid' => $sn_type['id'], + 'type' => $sn_type['type'], + 'type_name' => $sn_type['name'], + 'pub' => 1, 'has_particle' => $sn_type['has_particle'], 'always_displayed' => 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 AS s INNER JOIN profile_name_enum AS e ON (e.id = s.typeid) - WHERE s.pid = {?} AND e.name LIKE '%initial' - ORDER BY e.name = 'Prénom initial'", + 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 +142,7 @@ class ProfileSearchNames implements ProfileSetting } else { $this->search_names[$sn['typeid']] = array('fullname' => $sn['name']); } + $sn['type_name'] = $sn_types[$sn['typeid']]; } } } @@ -144,7 +152,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; diff --git a/templates/profile/general.searchname.tpl b/templates/profile/general.searchname.tpl index ff873ee..89649b7 100644 --- a/templates/profile/general.searchname.tpl +++ b/templates/profile/general.searchname.tpl @@ -39,9 +39,10 @@ {/foreach} {else} - {$sn.type} + {$sn.type_name} + {/if} diff --git a/upgrade/newdirectory-0.0.1/00_names.sql b/upgrade/newdirectory-0.0.1/00_names.sql index 3a31193..22b2c51 100644 --- a/upgrade/newdirectory-0.0.1/00_names.sql +++ b/upgrade/newdirectory-0.0.1/00_names.sql @@ -30,26 +30,32 @@ CREATE TABLE IF NOT EXISTS profile_name_enum ( id TINYINT(2) UNSIGNED NOT NULL AUTO_INCREMENT, name VARCHAR(255) NOT NULL, explanations VARCHAR(255) NOT NULL, + type VARCHAR(255) NOT NULL, flags SET('has_particle', 'not_displayed', 'always_displayed', 'public') NOT NULL, PRIMARY KEY (id), UNIQUE (name) ) CHARSET=utf8; -INSERT INTO profile_name_enum (name, flags, explanations) - VALUES ('Nom patronymique', 'has_particle,always_displayed,public', 'Le nom de famille avec lequel tu es né'), +INSERT INTO profile_name_enum (name, flags, explanations, type) + VALUES ('Nom patronymique', 'has_particle,always_displayed,public', + 'Le nom de famille avec lequel tu es né', 'lastname'), ('Nom marital', 'has_particle,always_displayed,public', - 'Ton nom d\'épouse ou d\'époux'), + 'Ton nom d\'épouse ou d\'époux', 'lastname_marital'), ('Nom usuel', 'has_particle,always_displayed,public', - 'Le nom de famille que tu utilises usuellement s\'il est différent du nom patronymique, ce peut-être une version racourcie de celui-ci, ton nom marital, une combianaison de ces deux noms...'), - ('Prénom', 'always_displayed,public', 'Ton prénom'), + 'Le nom de famille que tu utilises usuellement s\'il est différent du nom patronymique, ce peut-être une version racourcie de celui-ci, ton nom marital, une combinaison de ces deux noms...', + 'lastname_ordinary'), + ('Prénom', 'always_displayed,public', 'Ton prénom', 'firstname'), ('Pseudonyme (nom de plume)', 'always_displayed,public', - 'Pseudonyme pour les artistes, gens de lettres'), - ('Surnom', '', 'Surnom à l\'École ou ailleurs'), - ('Prénom usuel', 'public', 'Si tu utilises une version raccourcie, francisée... de ton prénom'), - ('Autre prénom', '', 'Si tu as d\'autres prénoms et que tu souhaites les faire apparaître'), - ('Autre nom', '', 'Si tu as d\'autres noms et que tu souhaites les faire apparaître'), - ('Nom initial', 'has_particle,not_displayed,public', ''), - ('Prénom initial', 'has_particle,not_displayed,public', ''); + 'Pseudonyme pour les artistes, gens de lettres', 'pseudonym'), + ('Surnom', '', 'Surnom à l\'École ou ailleurs', 'nickname'), + ('Prénom usuel', 'public', 'Si tu utilises une version raccourcie, francisée... de ton prénom', + 'firstname_ordinary'), + ('Autre prénom', '', 'Si tu as d\'autres prénoms et que tu souhaites les faire apparaître', + 'firstname_other'), + ('Autre nom', '', 'Si tu as d\'autres noms et que tu souhaites les faire apparaître', + 'name_other'), + ('Nom initial', 'has_particle,not_displayed,public', '', 'name_ini'), + ('Prénom initial', 'has_particle,not_displayed,public', '', 'firstname_ini'); DROP TABLE IF EXISTS profile_name;