From a953f7e7e1aab52355b2f0e64feab4c0141964ae Mon Sep 17 00:00:00 2001 From: =?utf8?q?St=C3=A9phane=20Jacob?= Date: Sun, 18 Oct 2009 01:20:21 +0200 Subject: [PATCH] Properly upper/lowercases accented letters when necessary (Closes #984). --- include/geoloc.inc.php | 6 +++--- include/profil.func.inc.php | 2 +- include/synchro_ax.inc.php | 8 ++++---- include/user.func.inc.php | 2 +- modules/lists/lists.inc.php | 2 +- modules/profile.php | 3 +-- modules/profile/general.inc.php | 2 +- modules/register/register.inc.php | 12 ++++++------ modules/search/classes.inc.php | 2 +- modules/xnet.php | 2 +- modules/xnetevents.php | 2 +- modules/xnetgrp.php | 2 +- templates/geoloc/city.tpl | 2 +- templates/payment/xnet.tpl | 2 +- templates/xnetgrp/annuaire.tpl | 2 +- templates/xnetlists/sync.tpl | 2 +- 16 files changed, 26 insertions(+), 27 deletions(-) diff --git a/include/geoloc.inc.php b/include/geoloc.inc.php index 00e8fa9..89abd27 100644 --- a/include/geoloc.inc.php +++ b/include/geoloc.inc.php @@ -226,7 +226,7 @@ function get_address_text($adr) if (isset($adr['city']) && $adr['city']) $l .= $adr['city']; } if ($l) $t .= "\n".trim($l); - if ($adr['country'] != '00' && (!$adr['countrytxt'] || $adr['countrytxt'] == strtoupper($adr['countrytxt']))) { + if ($adr['country'] != '00' && (!$adr['countrytxt'] || $adr['countrytxt'] == mb_strtoupper($adr['countrytxt']))) { $res = XDB::query("SELECT pays FROM geoloc_pays WHERE a2 = {?}", $adr['country']); $adr['countrytxt'] = $res->fetchOneCell(); } @@ -244,8 +244,8 @@ function get_address_text($adr) */ function compare_addresses_text($a, $b) { - $ta = strtoupper(preg_replace(array("/[0-9,\"'#~:;_\- ]/", "/\r\n/"), array("", "\n"), $a)); - $tb = strtoupper(preg_replace(array("/[0-9,\"'#~:;_\- ]/", "/\r\n/"), array("", "\n"), $b)); + $ta = mb_strtoupper(preg_replace(array("/[0-9,\"'#~:;_\- ]/", "/\r\n/"), array("", "\n"), $a)); + $tb = mb_strtoupper(preg_replace(array("/[0-9,\"'#~:;_\- ]/", "/\r\n/"), array("", "\n"), $b)); $la = explode("\n", $ta); $lb = explode("\n", $tb); diff --git a/include/profil.func.inc.php b/include/profil.func.inc.php index 7b418d7..9c9c782 100644 --- a/include/profil.func.inc.php +++ b/include/profil.func.inc.php @@ -108,7 +108,7 @@ function same_field(&$a, &$b) { if (!isset($b[$val]) || !same_field($avar, $b[$val])) return false; return true; } elseif (is_string($a)) - return (strtoupper($a) == strtoupper($b)); + return (mb_strtoupper($a) == mb_strtoupper($b)); } function diff_user_tel(&$a, &$b) { $c = $a; diff --git a/include/synchro_ax.inc.php b/include/synchro_ax.inc.php index 798b4dd..ed0bd61 100644 --- a/include/synchro_ax.inc.php +++ b/include/synchro_ax.inc.php @@ -35,8 +35,8 @@ function get_user_ax($matricule_ax, $raw=false) $userax = Array(); $userax['matricule_ax'] = $matricule_ax; - $userax['nom'] = strtoupper($ancien->Nom_patr()); - $userax['nom_usage'] = strtoupper($ancien->Nom_usuel()); + $userax['nom'] = mb_strtoupper($ancien->Nom_patr()); + $userax['nom_usage'] = mb_strtoupper($ancien->Nom_usuel()); if ($userax['nom_usage'] == $userax['nom']) $userax['nom_usage'] = ''; $userax['prenom'] = $ancien->Prenom(); $userax['sexe'] = ($ancien->Civilite() != 'M')?1:0; @@ -65,7 +65,7 @@ function get_user_ax($matricule_ax, $raw=false) $jobax['postcode'] = $ancien->Adresse_act_code_pst($i); $jobax['city'] = $ancien->Adresse_act_ville($i); $jobax['region'] = $ancien->Adresse_act_etat_region($i); - $jobax['countrytxt'] = ucwords(strtolower($ancien->Adresse_act_pays($i))); + $jobax['countrytxt'] = ucwords(mb_strtolower($ancien->Adresse_act_pays($i))); $jobax['tel'] = $ancien->Adresse_act_tel($i); $jobax['fax'] = $ancien->Adresse_act_fax($i); $jobax['mobile'] = $ancien->Adresse_act_mobile($i); @@ -85,7 +85,7 @@ function get_user_ax($matricule_ax, $raw=false) $adrax['postcode'] = $ancien->Code_pst($i); $adrax['city'] = $ancien->Ville($i); $adrax['region'] = $ancien->Etat_region($i); - $adrax['countrytxt'] = ucwords(strtolower($ancien->Pays($i))); + $adrax['countrytxt'] = ucwords(mb_strtolower($ancien->Pays($i))); $adrax['pub'] = 'ax'; if ($ancien->Tel($i) || $ancien->Fax($i)) { $adrax['tels'] = array(); diff --git a/include/user.func.inc.php b/include/user.func.inc.php index c37be8f..1a07456 100644 --- a/include/user.func.inc.php +++ b/include/user.func.inc.php @@ -572,7 +572,7 @@ function set_user_details_pro($uid, $pros) // {{{ function set_user_details() function set_user_details($uid, $details) { if (isset($details['nom_usage'])) { - XDB::execute("UPDATE auth_user_md5 SET nom_usage = {?} WHERE user_id = {?}", strtoupper($details['nom_usage']), $uid); + XDB::execute("UPDATE auth_user_md5 SET nom_usage = {?} WHERE user_id = {?}", mb_strtoupper($details['nom_usage']), $uid); } if (isset($details['mobile'])) { XDB::execute("UPDATE auth_user_quick SET profile_mobile = {?} WHERE user_id = {?}", $details['mobile'], $uid); diff --git a/modules/lists/lists.inc.php b/modules/lists/lists.inc.php index 2b2af8a..8c9e81c 100644 --- a/modules/lists/lists.inc.php +++ b/modules/lists/lists.inc.php @@ -37,7 +37,7 @@ function list_sort_owners(&$members, $tri_promo = true) { $prenom = $info['prenom']; $promo = $info['promo']; $broken = $info['lost']; - $key = $tri_promo ? ($promo != 'non-X' ? $promo : 0) : strtoupper(@$nom{0}); + $key = $tri_promo ? ($promo != 'non-X' ? $promo : 0) : mb_strtoupper(@$nom{0}); if ($tri_promo) { $promo = null; } diff --git a/modules/profile.php b/modules/profile.php index af93171..58a485f 100644 --- a/modules/profile.php +++ b/modules/profile.php @@ -675,8 +675,7 @@ class ProfileModule extends PLModule $page->assign('usage_old', $usage_old); $page->assign('alias_old', $alias_old); - $nom_usage = replace_accent(trim(Env::v('nom_usage'))); - $nom_usage = strtoupper($nom_usage); + $nom_usage = mb_strtoupper(trim(Env::v('nom_usage'))); $page->assign('usage_req', $nom_usage); if (Env::has('submit') && ($nom_usage != $usage_old)) { diff --git a/modules/profile/general.inc.php b/modules/profile/general.inc.php index 719f2a0..8afe3f8 100644 --- a/modules/profile/general.inc.php +++ b/modules/profile/general.inc.php @@ -29,7 +29,7 @@ class ProfileNom implements ProfileSetting private function prepareField($value) { - $value = strtoupper(replace_accent($value)); + $value = mb_strtoupper($value); return preg_replace('/[^A-Z]/', ' ', $value); } diff --git a/modules/register/register.inc.php b/modules/register/register.inc.php index 19cd7f2..7bf431a 100644 --- a/modules/register/register.inc.php +++ b/modules/register/register.inc.php @@ -23,12 +23,12 @@ function user_cmp($prenom, $nom, $_prenom, $_nom) { - $_nom = strtoupper(replace_accent($_nom)); - $_prenom = strtoupper(replace_accent($_prenom)); - $nom = strtoupper(replace_accent($nom)); - $prenom = strtoupper(replace_accent($prenom)); + $_nom = mb_strtoupper($_nom); + $_prenom = mb_strtoupper($_prenom); + $nom = mb_strtoupper($nom); + $prenom = mb_strtoupper($prenom); - $is_ok = strtoupper($_prenom) == strtoupper($prenom); + $is_ok = mb_strtoupper($_prenom) == mb_strtoupper($prenom); $tokens = preg_split("/[ \-']/", $nom, -1, PREG_SPLIT_NO_EMPTY); $maxlen = 0; @@ -126,7 +126,7 @@ function check_new_user(&$sub) $nom = preg_replace("/[ \t]+/", ' ', trim($nom)); $nom = preg_replace("/--+/", '-', $nom); $nom = preg_replace("/''+/", '\'', $nom); - $nom = strtoupper(replace_accent($nom)); + $nom = mb_strtoupper($nom); if ($promo >= 1996) { $res = check_mat($promo, $mat, $nom, $prenom, $ourmat, $ourid, $watch, $naiss); diff --git a/modules/search/classes.inc.php b/modules/search/classes.inc.php index a9ae124..9def2db 100644 --- a/modules/search/classes.inc.php +++ b/modules/search/classes.inc.php @@ -571,7 +571,7 @@ class StringSField extends SField * imposées par l'utilisateur) */ function length() { - $cleaned = replace_accent(strtolower($this->value)); + $cleaned = strtolower(replace_accent($this->value)); $length = strlen(ereg_replace('[a-z0-9]', '', $cleaned)); return strlen($this->value) - $length; } diff --git a/modules/xnet.php b/modules/xnet.php index 2c04835..5f0145e 100644 --- a/modules/xnet.php +++ b/modules/xnet.php @@ -187,7 +187,7 @@ class XnetModule extends PLModule $this->handler_index(&$page); } - $cat = strtolower($cat); + $cat = mb_strtolower($cat); $page->changeTpl('xnet/groupes.tpl'); $page->assign('cat', $cat); diff --git a/modules/xnetevents.php b/modules/xnetevents.php index f5cd0f4..9c064a8 100644 --- a/modules/xnetevents.php +++ b/modules/xnetevents.php @@ -615,7 +615,7 @@ class XnetEventsModule extends PLModule while (list($char, $nb) = $res->next()) { $alphabet[ord($char)] = $char; $nb_tot += $nb; - if (Env::has('initiale') && $char == strtoupper(Env::v('initiale'))) { + if (Env::has('initiale') && $char == mb_strtoupper(Env::v('initiale'))) { $tot = $nb; } } diff --git a/modules/xnetgrp.php b/modules/xnetgrp.php index e6ebd1e..609c8c0 100644 --- a/modules/xnetgrp.php +++ b/modules/xnetgrp.php @@ -406,7 +406,7 @@ class XnetGrpModule extends PLModule while (list($char, $nb) = $res->next()) { $alphabet[] = $char; $nb_tot += $nb; - if (Env::has($group) && $char == strtoupper(Env::v($group))) { + if (Env::has($group) && $char == mb_strtoupper(Env::v($group))) { $tot = $nb; } } diff --git a/templates/geoloc/city.tpl b/templates/geoloc/city.tpl index 3b1007b..27f619f 100644 --- a/templates/geoloc/city.tpl +++ b/templates/geoloc/city.tpl @@ -22,6 +22,6 @@ {assign var="beginning" value=true} {assign var="nb_displayed" value=0} - {foreach from=$users item="user"}{if !$beginning}
{/if}{if $nb_displayed < 10}{$user.prenom} {$user.nom|strtolower|ucwords} - {$user.promo}{else}{/if}{assign var="nb_displayed" value=$nb_displayed+1}{assign var="beginning" value=false}{/foreach} + {foreach from=$users item="user"}{if !$beginning}
{/if}{if $nb_displayed < 10}{$user.prenom} {$user.nom|mb_strtolower|ucwords} - {$user.promo}{else}{/if}{assign var="nb_displayed" value=$nb_displayed+1}{assign var="beginning" value=false}{/foreach}
{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/payment/xnet.tpl b/templates/payment/xnet.tpl index 2ff1af8..5c9d194 100644 --- a/templates/payment/xnet.tpl +++ b/templates/payment/xnet.tpl @@ -115,7 +115,7 @@ Voici la liste des paiements en ligne possible pour le groupe {$asso.nom} : {$p.date|date_format:"%d/%m/%y"} - {$p.nom|strtoupper} {$p.prenom} + {$p.nom|mb_strtoupper} {$p.prenom} diff --git a/templates/xnetgrp/annuaire.tpl b/templates/xnetgrp/annuaire.tpl index 94e8a22..ec51d81 100644 --- a/templates/xnetgrp/annuaire.tpl +++ b/templates/xnetgrp/annuaire.tpl @@ -108,7 +108,7 @@ Le groupe {$asso.nom} compte {$nb_tot} membres : {elseif $m.x} {/if} - {if $m.femme}•{/if}{if $m.prenom || $m.nom}{$m.prenom} {$m.nom|strtoupper}{else}{$m.email}{/if} + {if $m.femme}•{/if}{if $m.prenom || $m.nom}{$m.prenom} {$m.nom|mb_strtoupper}{else}{$m.email}{/if} {if $m.x}{/if} {if $m.admin}{/if} {if $m.inscrit && !$m.actif} diff --git a/templates/xnetlists/sync.tpl b/templates/xnetlists/sync.tpl index eb720dd..d0f562f 100644 --- a/templates/xnetlists/sync.tpl +++ b/templates/xnetlists/sync.tpl @@ -34,7 +34,7 @@ {foreach from=$not_in_list item=u} - {$u.nom|strtoupper} {$u.prenom} + {$u.nom|mb_strtoupper} {$u.prenom} {$u.promo} -- 2.1.4