Same on pid.
[platal.git] / include / name.func.inc.php
CommitLineData
6e32823c
SJ
1<?php
2/***************************************************************************
9891bd15 3 * Copyright (C) 2003-2009 Polytechnique.org *
6e32823c
SJ
4 * http://opensource.polytechnique.org/ *
5 * *
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. *
10 * *
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. *
15 * *
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 *
18 * Foundation, Inc., *
19 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
20 ***************************************************************************/
21
22function build_names_display($data)
23{
24 $data_array = explode(';;', $data);
25 $n = count($data_array);
26 $n--;
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);
31 if (!$name) {
32 list($particle, $name) = explode('\'', $searchname[2], 2);
33 }
34 } else {
35 $particle = '';
36 $name = $searchname[2];
37 }
38 if (!isset($search_names[$searchname[0]])) {
39 $search_names[$searchname[0]] = array($searchname[2], $name);
40 } else {
41 $search_names[$searchname[0]] = array_merge($search_names[$searchname[0]], array($name));
42 }
43 }
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);
49}
50
51function build_types($pub)
52{
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)";
57 } else {
58 $sql_pub = "";
59 }
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);
64 $types = array();
65 while ($sn_type = $sn_types->next()) {
66 $types[$sn_type['name']] = $sn_type['id'];
67 }
68 return $types;
69}
70
71function build_full_name(&$search_names, &$sn_types)
72{
73 $name = "";
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] . ")";
77 } else {
78 $name .= $search_names[$sn_types['Nom patronymique']][0];
79 }
80 if (isset($search_names[$sn_types['Nom marital']])
81 || isset($search_names[$sn_types['Pseudonyme (nom de plume)']])) {
c4b45374 82 $name .= " (";
6e32823c
SJ
83 if (isset($search_names[$sn_types['Nom marital']])) {
84 $user = S::user();
85 if ($user->isFemale()) {
c4b45374 86 $name .= "Mme ";
6e32823c 87 } else {
c4b45374 88 $name .= "M ";
6e32823c
SJ
89 }
90 $name .= $search_names[$sn_types['Nom marital']][0];
91 if (isset($search_names[$sn_types['Pseudonyme (nom de plume)']])) {
92 $name .= ", ";
93 }
94 }
95 if (isset($search_names[$sn_types['Pseudonyme (nom de plume)']])) {
96 $name .= $search_names[$sn_types['Pseudonyme (nom de plume)']][0];
97 }
98 $name .= ")";
99 }
100 return $name;
101}
102
103function build_public_name(&$search_names, &$sn_types, $full_name)
104{
105 return $search_names[$sn_types['Prénom']][0] . " " . $full_name;
106}
107
108function build_private_name(&$search_names, &$sn_types)
109{
110 $name = "";
111 if (isset($search_names[$sn_types['Surnom']])
112 || (isset($search_names[$sn_types['Autre prénom']])
113 || isset($search_names[$sn_types['Autre nom']]))) {
114 $name .= " (";
115 if (isset($search_names[$sn_types['Surnom']])) {
116 $name .= "alias " . $search_names[$sn_types['Surnom']][0];
117 $i = 2;
118 while (isset($search_names[$sn_types['Surnom']][$i])) {
119 $name .= ", " . $search_names[$sn_types['Surnom']][$i];
120 $i++;
121 }
122 if (isset($search_names[$sn_types['Autre prénom']])
123 || isset($search_names[$sn_types['Autre nom']])) {
124 $name .= ", ";
125 }
126 }
127 if (isset($search_names[$sn_types['Autre prénom']])) {
128 $name .= "autres prénoms : " . $search_names[$sn_types['Autre prénom']][0];
129 $i = 2;
130 while (isset($search_names[$sn_types['Autre prénom']][$i])) {
131 $name .= ", " . $search_names[$sn_types['Autre prénom']][$i];
132 $i++;
133 }
134 if (isset($search_names[$sn_types['Autre nom']])) {
135 $name .= ", ";
136 }
137 }
138 if (isset($search_names[$sn_types['Autre nom']])) {
139 $name .= "autres noms : " . $search_names[$sn_types['Autre nom']][0];
140 $i = 2;
141 while (isset($search_names[$sn_types['Autre nom']][$i])) {
142 $name .= ", " . $search_names[$sn_types['Autre nom']][$i];
143 $i++;
144 }
145 }
146 $name .= ")";
147 }
148 return $name;
149}
150
151function build_directory_name(&$search_names, &$sn_types, $full_name)
152{
153 return $full_name . " " . $search_names[$sn_types['Prénom']][0];
154}
155
156function short_name(&$search_names, &$sn_types)
157{
158 $name = "";
159 if (isset($search_names[$sn_types['Nom usuel']])) {
160 $name .= $search_names[$sn_types['Nom usuel']][0];
161 } else {
162 $name .= $search_names[$sn_types['Nom patronymique']][0];
163 }
164 $name = " ";
165 if (isset($search_names[$sn_types['Prénom usuel']])) {
166 $name .= $search_names[$sn_types['Prénom usuel']][0];
167 } else {
168 $name .= $search_names[$sn_types['Prénom']][0];
169 }
170 return $name;
171}
172
173function sort_name(&$search_names, &$sn_types)
174{
175 $name = "";
176 if (isset($search_names[$sn_types['Nom usuel']])) {
177 $name .= $search_names[$sn_types['Nom usuel']][1];
178 } else {
179 $name .= $search_names[$sn_types['Nom patronymique']][1];
180 }
181 $name .= $search_names[$sn_types['Prénom']][0];
182 return $name;
183}
184
185// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
186?>