From: Florent Bruneau Date: Sun, 2 Sep 2007 22:33:10 +0000 (+0200) Subject: Errors in telnum are blocking X-Git-Tag: xorg/0.9.15~174^2~12 X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=a619333a5db46a8833599faf37177b2a99b03d59;p=platal.git Errors in telnum are blocking Signed-off-by: Florent Bruneau --- diff --git a/modules/profile/addresses.inc.php b/modules/profile/addresses.inc.php index e78a5a0..feb3692 100644 --- a/modules/profile/addresses.inc.php +++ b/modules/profile/addresses.inc.php @@ -23,11 +23,13 @@ class ProfileAddress { private $bool; private $pub; + private $tel; public function __construct() { $this->bool = new ProfileBool(); $this->pub = new ProfilePub(); + $this->tel = new ProfileTel(); } private function geolocAddress(array &$address, &$success) @@ -55,28 +57,33 @@ class ProfileAddress $address['text'] = get_address_text($address); } - private function cleanAddress(ProfilePage &$page, array &$address) + private function cleanAddress(ProfilePage &$page, array &$address, &$success) { if (@$address['changed']) { $address['datemaj'] = time(); } + $success = true; foreach ($address['tel'] as $t=>&$tel) { if (@$tel['removed'] || !trim($tel['tel'])) { unset($address['tel'][$t]); } else { - $tel['pub'] = $this->pub->value($page, 'pub', $tel['pub'], $success); + $tel['pub'] = $this->pub->value($page, 'pub', $tel['pub'], $s); + $tel['tel'] = $this->tel->value($page, 'tel', $tel['tel'], $s); + if (!$s) { + $tel['error'] = true; + $success = false; + } } unset($tel['removed']); } if (@$address['changed']) { $address['datemaj'] = time(); } - $success = true; - $address['secondaire'] = $this->bool->value($page, 'secondaire', $address['secondaire'], $success); - $address['mail'] = $this->bool->value($page, 'mail', $address['mail'], $success); - $address['temporary'] = $this->bool->value($page, 'temporary', $address['temporary'], $success); - $address['current'] = $this->bool->value($page, 'current', @$address['current'], $success); - $address['pub'] = $this->pub->value($page, 'pub', $address['pub'], $success); + $address['secondaire'] = $this->bool->value($page, 'secondaire', $address['secondaire'], $s); + $address['mail'] = $this->bool->value($page, 'mail', $address['mail'], $s); + $address['temporary'] = $this->bool->value($page, 'temporary', $address['temporary'], $s); + $address['current'] = $this->bool->value($page, 'current', @$address['current'], $s); + $address['pub'] = $this->pub->value($page, 'pub', $address['pub'], $s); unset($address['parsevalid']); unset($address['changed']); unset($address['removed']); @@ -107,13 +114,15 @@ class ProfileAddress $success = true; } foreach ($value as $key=>&$adr) { + $ls = true; $this->geolocAddress($adr, $s); - $this->cleanAddress($page, $adr); - if (!$init) { - $success = $success && $s; - } + $ls = ($ls && $s); + $this->cleanAddress($page, $adr, $s); + $ls = ($ls && $s); if (!trim($adr['text'])) { unset($value[$key]); + } else if (!$init) { + $success = ($success && $ls); } } return $value; diff --git a/modules/profile/page.inc.php b/modules/profile/page.inc.php index 2f454af..7d2dc0d 100644 --- a/modules/profile/page.inc.php +++ b/modules/profile/page.inc.php @@ -67,10 +67,10 @@ class ProfileTel extends ProfileNoSave if (is_null($value)) { return isset($page->values[$field]) ? $page->values[$field] : S::v($field); } - $success = strlen(strtok($value, '<>{}@&#~\/:;?,!§*_`[]|%$^=')) == strlen($value); + $success = !preg_match('/[<>{}@&#~\/:;?,!§*_`\[\]|%$^=]/', $value, $matches); if (!$success) { global $page; - $page->trig('Le numéro de téléphone contient un caractère interdit.'); + $page->trig('Le numéro de téléphone contient un caractère interdit : ' . pl_entities($matches[0][0])); } return $value; } diff --git a/templates/profile/adresses.tel.tpl b/templates/profile/adresses.tel.tpl index 87507ec..a641895 100644 --- a/templates/profile/adresses.tel.tpl +++ b/templates/profile/adresses.tel.tpl @@ -31,7 +31,7 @@ N°{$t+1} - + {icon name=cross title="Supprimer ce numéro de téléphone"} diff --git a/templates/profile/general.tpl b/templates/profile/general.tpl index 50d3653..42841aa 100644 --- a/templates/profile/general.tpl +++ b/templates/profile/general.tpl @@ -349,7 +349,7 @@ {javascript name=ajax} - +