Errors in telnum are blocking
authorFlorent Bruneau <florent.bruneau@polytechnique.org>
Sun, 2 Sep 2007 22:33:10 +0000 (00:33 +0200)
committerFlorent Bruneau <florent.bruneau@polytechnique.org>
Sun, 2 Sep 2007 22:33:10 +0000 (00:33 +0200)
Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
modules/profile/addresses.inc.php
modules/profile/page.inc.php
templates/profile/adresses.tel.tpl
templates/profile/general.tpl

index e78a5a0..feb3692 100644 (file)
@@ -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;
index 2f454af..7d2dc0d 100644 (file)
@@ -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;
     }
index 87507ec..a641895 100644 (file)
@@ -31,7 +31,7 @@
 <span class="titre">N°{$t+1}</span>
 <input type="hidden" name="{$telpref}[removed]" value="0" />
 <input type="text" size="10" maxlength="30" name="{$telpref}[type]" value="{$tel.type|default:"Tél."}" />
-<input type="text" size="19" maxlength="28" name="{$telpref}[tel]" value="{$tel.tel}" />
+<input type="text" size="19" maxlength="28" name="{$telpref}[tel]" {if $tel.error}class="error"{/if} value="{$tel.tel}" />
 <a href="javascript:removeObject('{$telid}', '{$telpref}')">
   {icon name=cross title="Supprimer ce numéro de téléphone"}
 </a>
index 50d3653..42841aa 100644 (file)
       <td class="dcold">
         {javascript name=ajax}
         <div id="ft_preview" style="display: none"></div>
-        <textarea name="freetext" {if $errors.mobile}class="error"{/if} id="freetext" rows="3" cols="29" >{$freetext}</textarea>
+        <textarea name="freetext" {if $errors.freetext}class="error"{/if} id="freetext" rows="3" cols="29" >{$freetext}</textarea>
         <br/>
         <span class="smaller">
           <a href="wiki_help/notitle" class="popup3">