2 /***************************************************************************
3 * Copyright (C) 2003-2008 Polytechnique.org *
4 * http://opensource.polytechnique.org/ *
6 * This program is free software; you can redistribute it and/or modify *
7 * it under the terms of the GNU General Public License as published by *
8 * the Free Software Foundation; either version 2 of the License, or *
9 * (at your option) any later version. *
11 * This program is distributed in the hope that it will be useful, *
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
14 * GNU General Public License for more details. *
16 * You should have received a copy of the GNU General Public License *
17 * along with this program; if not, write to the Free Software *
19 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
20 ***************************************************************************/
22 function build_names_display($data)
24 $data_array = explode(';;', $data);
25 $n = count($data_array);
27 for ($i = 0; $i < $n; $i++
) {
28 $searchname = explode(';', $data_array[$i]);
29 if ($searchname[1] != 0) {
30 list($particle, $name) = explode(' ', $searchname[2], 2);
32 list($particle, $name) = explode('\'', $searchname[2], 2);
36 $name = $searchname[2];
38 if (!isset($search_names[$searchname[0]])) {
39 $search_names[$searchname[0]] = array($searchname[2], $name);
41 $search_names[$searchname[0]] = array_merge($search_names[$searchname[0]], array($name));
44 $sn_types_public = build_types('public');
45 $sn_types_private = build_types('private');
46 $full_name = build_full_name($search_names, $sn_types_public);
47 return build_public_name($search_names, $sn_types_public, $full_name) . ';' .
48 build_private_name($search_names, $sn_types_private);
51 function build_types($pub)
53 if ($pub == 'public') {
54 $sql_pub = "AND FIND_IN_SET('public', flags)";
55 } elseif ($pub == 'private') {
56 $sql_pub = "AND NOT FIND_IN_SET('public', flags)";
60 $sql = "SELECT id, name
61 FROM profile_name_search_enum
62 WHERE NOT FIND_IN_SET('not_displayed', flags)" . $sql_pub;
63 $sn_types = XDB
::iterator($sql);
65 while ($sn_type = $sn_types->next()) {
66 $types[$sn_type['name']] = $sn_type['id'];
71 function build_full_name(&$search_names, &$sn_types)
74 if (isset($search_names[$sn_types['Nom usuel']])) {
75 $name .= $search_names[$sn_types['Nom usuel']][0] . " ("
76 . $search_names[$sn_types['Nom patronymique']][0] . ")";
78 $name .= $search_names[$sn_types['Nom patronymique']][0];
80 if (isset($search_names[$sn_types['Nom marital']])
81 ||
isset($search_names[$sn_types['Pseudonyme (nom de plume)']])) {
82 if (isset($search_names[$sn_types['Nom marital']])) {
84 if ($user->isFemale()) {
89 $name .= $search_names[$sn_types['Nom marital']][0];
90 if (isset($search_names[$sn_types['Pseudonyme (nom de plume)']])) {
94 if (isset($search_names[$sn_types['Pseudonyme (nom de plume)']])) {
95 $name .= $search_names[$sn_types['Pseudonyme (nom de plume)']][0];
102 function build_public_name(&$search_names, &$sn_types, $full_name)
104 return $search_names[$sn_types['Prénom']][0] . " " . $full_name;
107 function build_private_name(&$search_names, &$sn_types)
110 if (isset($search_names[$sn_types['Surnom']])
111 ||
(isset($search_names[$sn_types['Autre prénom']])
112 ||
isset($search_names[$sn_types['Autre nom']]))) {
114 if (isset($search_names[$sn_types['Surnom']])) {
115 $name .= "alias " . $search_names[$sn_types['Surnom']][0];
117 while (isset($search_names[$sn_types['Surnom']][$i])) {
118 $name .= ", " . $search_names[$sn_types['Surnom']][$i];
121 if (isset($search_names[$sn_types['Autre prénom']])
122 ||
isset($search_names[$sn_types['Autre nom']])) {
126 if (isset($search_names[$sn_types['Autre prénom']])) {
127 $name .= "autres prénoms : " . $search_names[$sn_types['Autre prénom']][0];
129 while (isset($search_names[$sn_types['Autre prénom']][$i])) {
130 $name .= ", " . $search_names[$sn_types['Autre prénom']][$i];
133 if (isset($search_names[$sn_types['Autre nom']])) {
137 if (isset($search_names[$sn_types['Autre nom']])) {
138 $name .= "autres noms : " . $search_names[$sn_types['Autre nom']][0];
140 while (isset($search_names[$sn_types['Autre nom']][$i])) {
141 $name .= ", " . $search_names[$sn_types['Autre nom']][$i];
150 function build_directory_name(&$search_names, &$sn_types, $full_name)
152 return $full_name . " " . $search_names[$sn_types['Prénom']][0];
155 function short_name(&$search_names, &$sn_types)
158 if (isset($search_names[$sn_types['Nom usuel']])) {
159 $name .= $search_names[$sn_types['Nom usuel']][0];
161 $name .= $search_names[$sn_types['Nom patronymique']][0];
164 if (isset($search_names[$sn_types['Prénom usuel']])) {
165 $name .= $search_names[$sn_types['Prénom usuel']][0];
167 $name .= $search_names[$sn_types['Prénom']][0];
172 function sort_name(&$search_names, &$sn_types)
175 if (isset($search_names[$sn_types['Nom usuel']])) {
176 $name .= $search_names[$sn_types['Nom usuel']][1];
178 $name .= $search_names[$sn_types['Nom patronymique']][1];
180 $name .= $search_names[$sn_types['Prénom']][0];
184 // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: