From: Stéphane Jacob Date: Mon, 21 Nov 2011 10:52:01 +0000 (+0100) Subject: Properly generates sort_name. X-Git-Tag: xorg/1.1.5~85 X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=233a2a96039ad2d93284c60da2efddfa77cfd770;p=platal.git Properly generates sort_name. Signed-off-by: Stéphane Jacob --- diff --git a/include/name.func.inc.php b/include/name.func.inc.php index 7dd3687..39b2bfe 100644 --- a/include/name.func.inc.php +++ b/include/name.func.inc.php @@ -71,7 +71,7 @@ function build_display_names(array $public_names, array $private_names, $isFemal $display_names['private_name'] = $display_names['public_name'] . $private_last_name_end; $display_names['directory_name'] = build_directory_name($firstname, $full_last_name); $display_names['short_name'] = build_full_name($firstname, $short_last_name); - $display_names['sort_name'] = $short_last_name . ' ' . $firstname; + $display_names['sort_name'] = build_sort_name($firstname, $short_last_name); return $display_names; } @@ -143,6 +143,22 @@ function build_full_name($firstname, $lastname) return $firstname . ' ' . $lastname; } +// Returns the name on which the sort is performed, according to French +// typographic rules. +function build_sort_name($firstname, $lastname) +{ + // Remove uncapitalized particles. + $particles = "/^(d'|(" . implode($particles, '|') . ') )/'; + $name = preg_replace($particles, '', $lastname); + // Mac must also be uniformized. + $lastname = preg_replace("/^(Mac|Mc)(| )/", 'Mac', $name); + + if ($firstname == '') { + return $lastname; + } + return $lastname . ' ' . $firstname; +} + /** Splits a name into tokens, as used in search_name. * Used for search_name rebuilding and for queries. */