closes #535, autorise le caractere / dans les numeros de tel
[platal.git] / include / profil / verif_adresses.inc.php
index 93ee5cb..5ad35c5 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2004 Polytechnique.org                              *
+ *  Copyright (C) 2003-2007 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
@@ -19,6 +19,7 @@
  *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
  ***************************************************************************/
 
+global $adresses;
 
 function generate_new_adrid(){
   global $adresses;
@@ -43,19 +44,43 @@ function generate_new_adrid(){
   return $new_adrid;
 }
 
+function generate_new_telid($adr){
+  $i = 0;
+  $telid_array = Array();
+  foreach($adr['tels'] as $tel){
+    $telid_array[$i] = $tel['telid'];
+    $i++;
+  }
+  sort($telid_array,SORT_NUMERIC); // classe les adrid dans l'ordre croissant
+  $new_telid = 0;
+  foreach($telid_array as $current_telid)
+    if ($current_telid == $new_telid)
+      $new_telid ++;
+    else 
+      return $new_telid;//s'ils sont differents, il y a un trou dans la liste des telid donc new_telid convient
+  //si aucun convient, on retourne le plus grand des telid actuel + 1
+  return $new_telid;
+}
+
 function replace_ifset_adr($varname, $i){
-  $tab = Env::getMixed($varname, Array());
+  $tab = Env::v($varname, Array());
   if (isset($tab[$i]))
        $GLOBALS['adresses'][$i][$varname] = $tab[$i];
 }
 
+function replace_ifset_tel($varname, $i, $t){
+  $tab = Env::v($varname.$t, Array());
+  if (isset($tab[$i]))
+       $GLOBALS['adresses'][$i]['tels'][$t][$varname] = $tab[$i];  
+}
+
 function get_adr_arg($varname, $i) {
-  $tab = Env::getMixed($varname, Array());
-  return $tab[$i];
+  $tab = Env::v($varname, Array());
+  return @$tab[$i];
 }
 
 function set_flag_adr($varname,$i){
-  $tab = Env::getMixed($varname, Array());
+  $tab = Env::v($varname, Array());
   if (isset($tab[$i])){
      $GLOBALS['adresses'][$i][$varname] = 1;
   }
@@ -63,9 +88,16 @@ function set_flag_adr($varname,$i){
      $GLOBALS['adresses'][$i][$varname] = '0';
 }
 
+function replace_tel($i, $t){
+  replace_ifset_tel('telid', $i, $t);
+  replace_ifset_tel('tel', $i, $t);
+  replace_ifset_tel('tel_pub', $i, $t);
+  replace_ifset_tel('tel_type', $i, $t);
+  replace_ifset_tel('new_tel', $i, $t);
+}
 
 function replace_address($i){
-  global $adresses;
+  global $adresses, $nb_tel_max;
   if(!isset($adresses[$i])){
     $adresses[$i]['nouvelle'] = 'ajout';
     $adresses[$i]['adrid'] = $i;
@@ -74,7 +106,7 @@ function replace_address($i){
   replace_ifset_adr('secondaire', $i);
   set_flag_adr('courrier', $i);
   replace_ifset_adr('temporaire', $i);
-  if(Env::getInt('adrid_active', $i+1) == $i)
+  if(Env::i('adrid_active', $i+1) == $i)
     $adresses[$i]['active'] = 1;
   else
     $adresses[$i]['active'] = 0;
@@ -86,12 +118,17 @@ function replace_address($i){
   replace_ifset_adr('cityid', $i);
   replace_ifset_adr('country', $i);
   replace_ifset_adr('region', $i);
-  replace_ifset_adr('tel', $i);
-  replace_ifset_adr('fax', $i);
   replace_ifset_adr('pub', $i);
-  replace_ifset_adr('tel_pub', $i);
+  
+  for ($telid = 0; $telid <= $nb_tel_max; $telid++) {
+    $tab = Env::v('telid'.$telid, Array());
+    if(isset($tab[$i])){ //ce telid etait donc present dans le formulaire
+      replace_tel($i, $telid);
+    }
+  }
   if (!get_adr_arg('parsevalid', $i)) replace_ifset_adr('txt', $i);
-  $tab = Env::getMixed('numero_formulaire', Array());
+  $tab = Env::v('numero_formulaire', Array());
   if($tab[$i])
     $adresses[$i]['numero_formulaire'] = $tab[$i];
   else
@@ -100,7 +137,7 @@ function replace_address($i){
 
 function geoloc_adresse($i) {
   global $adresses;
-  $change = Env::get('change'.$i);
+  $change = Env::v('change'.$i);
   if (get_adr_arg('parsevalid', $i) || ($adresses[$i]['txt'] && $change) || (!$adresses[$i]['cityid'])) {
        require_once('geoloc.inc.php');
        // erases the previous address (but not the phone or pub)
@@ -120,7 +157,7 @@ function geoloc_adresse($i) {
 
 //remplace par les eventuelles nouvelles valeurs :
 for ($adrid = 1; $adrid <= $nb_adr_max; $adrid++) {
-  $tab = Env::getMixed('adrid', Array());
+  $tab = Env::v('adrid', Array());
   if(isset($tab[$adrid])){ //cet adrid etait donc present dans le formulaire
     replace_address($adrid);
   }
@@ -128,7 +165,7 @@ for ($adrid = 1; $adrid <= $nb_adr_max; $adrid++) {
     geoloc_adresse($adrid);
 }
 
-if(Env::get('old_tab', '') == 'adresses' && Env::has('modifier')){ // on ne valide que qd on vient du formulaire
+if ($opened_tab == 'adresses' && Env::has('modifier')){ // on ne valide que qd on vient du formulaire
 $adresses_principales = 0;
 reset($adresses);
 foreach($adresses as $adrid => $adr) {
@@ -136,35 +173,29 @@ foreach($adresses as $adrid => $adr) {
   $description = (($adr['numero_formulaire'] > 0)?"Adresse n°{$adr['numero_formulaire']}":"Nouvelle adresse");
   if (strlen(strtok($adr['adr1'],"<>{}@~?!§*`|%$^=+")) < strlen($adr['adr1']))
     {
-      $str_error = $str_error."Le champ '$description - Ligne 1' contient un caractère interdit.<BR />";
+      $page->trig("Le champ '$description - Ligne 1' contient un caractère interdit.");
     }
   if (strlen(strtok($adr['adr2'],"<>{}@~?!§*`|%$^=+")) < strlen($adr['adr2']))
     {
-      $str_error = $str_error."Le champ '$description - Ligne 2' contient un caractère interdit.<BR />";
+      $page->trig("Le champ '$description - Ligne 2' contient un caractère interdit.");
     }
   if (strlen(strtok($adr['adr3'],"<>{}@~?!§*`|%$^=+")) < strlen($adr['adr3']))
     {
-      $str_error = $str_error."Le champ '$description - Ligne 3' contient un caractère interdit.<BR />";
+      $page->trig("Le champ '$description - Ligne 3' contient un caractère interdit.");
     }
   if (strlen(strtok($adr['postcode'],"<>{}@~?!§*`|%$^=+")) < strlen($adr['postcode']))
     {
-      $str_error = $str_error."Le champ '$description - Code Postal' contient un caractère interdit.<BR />";
-    }
-  if (strlen(strtok($adr['city'],"<>{}@~?!§*`|%$^=+")) < strlen($adr['postcode']))
-    {
-      $str_error = $str_error."Le champ '$description - Ville' contient un caractère interdit.<BR />";
+      $page->trig("Le champ '$description - Code Postal' contient un caractère interdit.");
     }
-  if (strlen(strtok($adr['tel'],"<>{}@&#~\/:;?,!§*_`[]|%$^=\"")) < strlen($adr['tel']))
-    {
-      $str_error = $str_error."Le champ '$description - Téléphone' contient un caractère interdit.<BR />";
-    }
-  if (strlen(strtok($adr['fax'],"<>{}@&#~\/:;?,!§*_`[]|%$^=\"")) < strlen($adr['fax']))
-    {
-      $str_error = $str_error."Le champ '$description - Fax' contient un caractère interdit.<BR />";
+  foreach ($adr['tels'] as $tel) {
+    if (strlen(strtok($tel['tel'],"<>{}@&#~:;?,!§*_`[]|%$^=\"")) < strlen($tel['tel']))
+      {
+        $page->trig("Le champ '$description - ".$tel['tel_type']."' contient un caractère interdit.");
+      }
     }
   if(!$adr['secondaire']){
     if($adresses_principales == 1){ //deja une adresse principale
-      $str_error = $str_error."Tu ne peux avoir qu'une résidence principale.<BR />";
+      $page->trig("Tu ne peux avoir qu'une résidence principale.");
       $adresses_principales++;//pour eviter de repeter le message plusieurs fois
     }
     else $adresses_principales = 1;
@@ -173,83 +204,4 @@ foreach($adresses as $adrid => $adr) {
 
 }
 
-//on vire les adresses vides :
-if(isset($adresses)){ // s'il y en a
-  reset($adresses);
-  foreach($adresses as $adrid => $adr){
-    if(is_adr_empty($adrid)){
-       delete_address($adrid);
-    }
-  }
-}
-//on génère une éventuelle nouvelle adresse
-if (!isset($adresses) || (count($adresses) < $nb_adr_max)){
-  $adrid = generate_new_adrid();
-  $adresses[$adrid]['adrid'] = $adrid;
-  $adr = &$adresses[$adrid];
-  $adr['adr1'] = '';
-  $adr['adr2'] = '';
-  $adr['adr3'] = '';
-  $adr['postcode'] = '';
-  $adr['city'] = '';
-  $adr['country'] = '00';
-  $adr['region'] = '';
-  $adr['tel'] = '';
-  $adr['fax'] = '';
-  $adr['secondaire'] = 1;
-  $adr['courrier'] = 0;
-  $adr['active'] = 0;
-  $adr['temporaire'] = 1;
-  $adr['pub'] = 'private';
-  $adr['tel_pub'] = 'private';
-  $adr['nouvelle'] = 'new'; //n'est pas issue d'un formulaire (sert dans update_adresses...)
-}
-
-unset($adr);
-unset($adrid);
-
-//tri des adresses :
-
-reset($adresses);
-$i = 1;
-foreach($adresses as $adrid_ => $adr_){
-  if(($adresses[$adrid_]['active']) && ($adr_['nouvelle'] != 'new')){
-    $ordre_des_adrid[$i] = $adrid_;
-    $i++;
-    $est_attribuee[$adrid_] = 1;
-  }
-  else
-    $est_attribuee[$adrid_] = 0;
-}
-
-reset($adresses);
-foreach($adresses as $adrid_ => $adr_){
-  if(($adresses[$adrid_]['secondaire'] == 0) && ($est_attribuee[$adrid_] == 0) && ($adr_['nouvelle'] != 'new')){ // principale et non attribuee
-    $ordre_des_adrid[$i] = $adrid_;
-    $i++;
-    $est_attribuee[$adrid_] = 1;
-  }
-}
-
-reset($adresses);
-foreach($adresses as $adrid_ => $adr_){
-  if(($adresses[$adrid_]['temporaire'] == 0) && ($est_attribuee[$adrid_] == 0) && ($adr_['nouvelle'] != 'new')){ // permanente et non attribuee
-    $ordre_des_adrid[$i] = $adrid_;
-    $i++;
-    $est_attribuee[$adrid_] = 1;
-  }
-}
-reset($adresses);
-foreach($adresses as $adrid_ => $adr_){
-  if($est_attribuee[$adrid_] == 0){ // non attribuee
-     $ordre_des_adrid[$i] = $adrid_;
-     $i++;
-     $est_attribuee[$adrid_] = 1;
-  }
-}
-
-$nb_adr = $i - 1;
-$page->assign_by_ref('ordre_adrid',$ordre_des_adrid);
-$page->assign('nb_adr',$nb_adr+1);
-
 ?>