grrrr
authorPierre Habouzit (MadCoder <pierre.habouzit@m4x.org>
Thu, 30 Dec 2004 08:33:23 +0000 (08:33 +0000)
committerFlorent Bruneau <florent.bruneau@polytechnique.org>
Thu, 26 Jun 2008 21:27:04 +0000 (23:27 +0200)
git-archimport-id: opensource@polytechnique.org--2005/platal--mainline--0.9--patch-189

include/webservices/manageurs.server.inc.php

index df276ad..f112b5c 100644 (file)
@@ -13,104 +13,107 @@ $error_key = "You didn't provide me with a valid cipher key...";
     n => on veut l'adresse numero n
 */
 function get_annuaire_infos($method, $params) {
-  global $error_mat, $error_key;
+    global $error_mat, $error_key, $globals;
 
-  //verif du mdp
-  if(!isset($params[0]) || ($params[0] != $GLOBALS['manageurs_pass'])){return false;}
+    //verif du mdp
+    if(!isset($params[0]) || ($params[0] != $GLOBALS['manageurs_pass'])){return false;}
 
-  //si on a adresse == -1 => on ne recupère aucune adresse
-  if(isset($params[2]) && ($params[2] == -1)) unset($params[2]);
-  
-  
-  if( !empty($params[1]) ){ // on verifie qu'on a bien un matricule
+    //si on a adresse == -1 => on ne recupère aucune adresse
+    if(isset($params[2]) && ($params[2] == -1)) unset($params[2]);
 
-     //on ne recupere pas les adresses inutilement
-     if(!isset($params[2])){
-        $res = mysql_query("SELECT a.mobile AS cell, a.naissance AS age
-                           FROM auth_user_md5 AS a
-                           WHERE a.matricule = '".addslashes($params[1])."'");
-     }
-     else{
-       $res = mysql_query("SELECT a.mobile AS cell, a.naissance AS age,
-                                  adr.adr1, adr.adr2, adr.adr3,
-                                 adr.cp, adr.ville, adr.pays,
-                                 adr.tel, adr.fax
-                          FROM auth_user_md5 AS a
-                          LEFT JOIN adresses AS adr ON(adr.uid = a.user_id)
-                          WHERE a.matricule = '".addslashes($params[1])."' AND
-                                NOT FIND_IN_SET('pro', adr.statut)
-                          ORDER BY NOT FIND_IN_SET('active', adr.statut),
-                                   FIND_IN_SET('res-secondaire', adr.statut),
-                                   NOT FIND_IN_SET('courrier', adr.statut)");
-     }
 
-     //traitement des adresss si necessaire
-     if(isset($params[2])){
-       if(list($cell, $age, $adr['adr1'], $adr['adr2'], $adr['adr3'],
-               $adr['cp'], $adr['ville'],
-               $adr['pays'], $adr['tel'], $adr['fax']) = mysql_fetch_row($res)){
-           $array['cell'] = $cell;
-          $array['age'] = $age;
-          $array['adresse'][] = $adr;
+    if( !empty($params[1]) ){ // on verifie qu'on a bien un matricule
 
-           //on clamp le numero au nombre d'adresses dispo
-           $adresse = (int) $params[2];
-          if($adresse > mysql_num_rows($res)) $adresse = mysql_num_rows($res);
+        //on ne recupere pas les adresses inutilement
+        if(!isset($params[2])){
+            $res = $globals->xdb->iterRow(
+                    "SELECT  a.mobile AS cell, a.naissance AS age
+                       FROM  auth_user_md5 AS a
+                      WHERE  a.matricule = {?}", $params[1]);
+        }
+        else{
+            $res = $globals->xdb->iterRow(
+                    "SELECT  a.mobile AS cell, a.naissance AS age,
+                             adr.adr1, adr.adr2, adr.adr3,
+                             adr.cp, adr.ville, adr.pays,
+                             adr.tel, adr.fax
+                       FROM  auth_user_md5 AS a
+                  LEFT JOIN  adresses AS adr ON(adr.uid = a.user_id)
+                      WHERE  a.matricule = {?} AND
+                             NOT FIND_IN_SET('pro', adr.statut)
+                   ORDER BY  NOT FIND_IN_SET('active', adr.statut),
+                             FIND_IN_SET('res-secondaire', adr.statut),
+                             NOT FIND_IN_SET('courrier', adr.statut)", $params[1]);
+        }
 
-          
-           if($adresse != 1){//on ne veut pas la premiere adresse
-            $i = 2;
-             while(list($cell, $age, $adr['adr1'], $adr['adr2'], $adr['adr3'],
-                        $adr['cp'], $adr['ville'],
-                        $adr['pays'], $adr['tel'], $adr['fax']) = mysql_fetch_row($res)){
-              if($adresse == $i){//si on veut cette adresse en particulier
-                 $array['adresse'][0] = $adr;
-                break;
-              }
-              elseif($adresse == 0){//si on veut toutes les adresses
-                 $array['adresse'][] = $adr;
-              }
-              $i++;
-            }
-          }
-       }
-       else{
-         $array = false;
-       }
-     }
-     else{ //cas où on ne veut pas d'adresse
-       $array = mysql_fetch_array($res);
-     }
-     
-     if ($array) { // on a bien eu un résultat : le matricule etait bon
+        //traitement des adresss si necessaire
+        if (isset($params[2])) {
+            if(list($cell, $age, $adr['adr1'], $adr['adr2'], $adr['adr3'], $adr['cp'], $adr['ville'],
+                        $adr['pays'], $adr['tel'], $adr['fax']) = $res->next())
+            {
+                $array['cell']      = $cell;
+                $array['age']       = $age;
+                $array['adresse'][] = $adr;
 
-       //on n'envoit que l'age à manageurs le format est YYYY-MM-DD 0123-56-89
-       $year = (int) substr($array['age'],0,4);
-       $month = (int) substr($array['age'],5,2);
-       $day = (int) substr($array['age'],8,2);
-       $age = (int) date('Y') - $year - 1;
-       if(( $month < (int)date('m')) ||
-          (($month == (int)date('m')) && ($day >= (int)date('d')))) $age += 1;
-       $array['age'] = $age;
+                //on clamp le numero au nombre d'adresses dispo
+                $adresse = min((int) $params[2], $res->total());
 
-       //on commence le cryptage des donnees
-       if(manageurs_encrypt_init($params[1]) == 1){//on a pas trouve la cle pour crypter
-          $args = array("erreur" => 3, "erreurstring" => $error_key);
-          $reply = xmlrpc_encode_request(NULL,$args);
-       }
-       else{
-         $reply = manageurs_encrypt_array($array);
-         manageurs_encrypt_close();
-       }
-     } else {//le matricule n'etait pas valide
-       $args = array("erreur" => 2, "erreurstring" => $erreur_mat);
-       $reply = xmlrpc_encode_request(NULL,$args);
-     }
-  } else {//le matricule n'etait pas en argument
-     $args = array("erreur" => 1, "erreurstring" => $error_mat);
-     $reply = xmlrpc_encode_request(NULL,$args);
-  } 
-  return $reply; 
+                if ($adresse != 1) { //on ne veut pas la premiere adresse
+                    $i = 2;
+                    while(list($cell, $age, $adr['adr1'], $adr['adr2'], $adr['adr3'], $adr['cp'], $adr['ville'],
+                                $adr['pays'], $adr['tel'], $adr['fax']) = $res->next())
+                    {
+                        if($adresse == $i){//si on veut cette adresse en particulier
+                            $array['adresse'][0] = $adr;
+                            $res->free();
+                            break;
+                        }
+                        elseif($adresse == 0){//si on veut toutes les adresses
+                            $array['adresse'][] = $adr;
+                        }
+                        $i++;
+                    }
+                }
+            }
+            else{
+                $array = false;
+            }
+        }
+        else { //cas où on ne veut pas d'adresse
+            $array = $res->fetchOneAssoc();
+        }
+
+        if ($array) { // on a bien eu un résultat : le matricule etait bon
+
+            //on n'envoit que l'age à manageurs le format est YYYY-MM-DD 0123-56-89
+            $year  = (int) substr($array['age'],0,4);
+            $month = (int) substr($array['age'],5,2);
+            $day   = (int) substr($array['age'],8,2);
+            $age   = (int) date('Y') - $year - 1;
+            if(( $month < (int)date('m')) ||
+                    (($month == (int)date('m')) && ($day >= (int)date('d'))))
+            {
+                $age += 1;
+            }
+            $array['age'] = $age;
+
+            //on commence le cryptage des donnees
+            if (manageurs_encrypt_init($params[1]) == 1) {//on a pas trouve la cle pour crypter
+                $args  = array("erreur" => 3, "erreurstring" => $error_key);
+                $reply = xmlrpc_encode_request(NULL,$args);
+            } else {
+                $reply = manageurs_encrypt_array($array);
+                manageurs_encrypt_close();
+            }
+        } else {//le matricule n'etait pas valide
+            $args  = array("erreur" => 2, "erreurstring" => $erreur_mat);
+            $reply = xmlrpc_encode_request(NULL,$args);
+        }
+    } else {//le matricule n'etait pas en argument
+        $args  = array("erreur" => 1, "erreurstring" => $error_mat);
+        $reply = xmlrpc_encode_request(NULL,$args);
+    } 
+    return $reply; 
 } 
 
 ?>