X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=include%2Fwebservices%2Fmanageurs.server.inc.php;h=50a58540052cc414a9411721342267adc2ef204f;hb=08d7cc452e666835373023f2ca8416e75e2cb9c5;hp=25cb1864496b838fb7194966aefaa2391803d867;hpb=ff43561fda2eddc4f0b105250124b0f4fffc79df;p=platal.git diff --git a/include/webservices/manageurs.server.inc.php b/include/webservices/manageurs.server.inc.php index 25cb186..50a5854 100644 --- a/include/webservices/manageurs.server.inc.php +++ b/include/webservices/manageurs.server.inc.php @@ -19,26 +19,26 @@ function get_annuaire_infos($method, $params) { //verif du mdp if(!isset($params[0]) || ($params[0] != $globals->manageurs->manageurs_pass)){return false;} - //si on a adresse == -1 => on ne recupère aucune adresse + //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 //on ne recupere pas les adresses inutilement if(!isset($params[2])){ - $res = $globals->xdb->iterRow( + $res = XDB::iterRow( "SELECT q.profile_mobile AS cell, a.naissance AS age FROM auth_user_md5 AS a INNER JOIN auth_user_quick AS q USING (user_id) WHERE a.matricule = {?}", $params[1]); + $array = $res->next(); } else{ - $res = $globals->xdb->iterRow( + $res = XDB::iterRow( "SELECT q.profile_mobile AS cell, a.naissance AS age, adr.adr1, adr.adr2, adr.adr3, adr.postcode, adr.city, adr.country, - adr.tel, adr.fax + adr.uid, adr.adrid FROM auth_user_md5 AS a INNER JOIN auth_user_quick AS q USING (user_id) LEFT JOIN adresses AS adr ON(adr.uid = a.user_id) @@ -47,25 +47,22 @@ function get_annuaire_infos($method, $params) { 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]); - - } - - //traitement des adresss si necessaire - if (isset($params[2])) { + //traitement des adresses si necessaire if(list($cell, $age, $adr['adr1'], $adr['adr2'], $adr['adr3'], $adr['cp'], $adr['ville'], - $adr['pays'], $adr['tel'], $adr['fax']) = $res->next()) + $adr['pays'], $uid, $adr['adrid']) = $res->next()) { $array['cell'] = $cell; $array['age'] = $age; $array['adresse'][] = $adr; + //on clamp le numero au nombre d'adresses dispo $adresse = min((int) $params[2], $res->total()); 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()) + $adr['pays'], , $adr['adrid']) = $res->next()) { if($adresse == $i){//si on veut cette adresse en particulier $array['adresse'][0] = $adr; @@ -78,19 +75,41 @@ function get_annuaire_infos($method, $params) { $i++; } } + + // on rajoute les numéros de tél + $adrid_index = array(); + foreach ($array['adresse'] as $i => $a) $adrid_index[$a['adrid']] = $i; + // on rajoute les numéros de tels + $restel = XDB::iterator( + "SELECT t.tel, t.tel_type, t.adrid + FROM tels AS t + INNER JOIN adresses AS a ON (t.adrid = a.adrid AND t.uid = a.uid) + WHERE t.uid = {?} AND NOT FIND_IN_SET('pro', a.statut)", $uid); + while ($tel = $restel->next()) $array['adresse'][$adrid_index[$tel['adrid']]]['tels'][] = $tel; + foreach ($array['adresse'] as $i => $adr) { + unset($lasttel); + foreach($adr['tels'] as $j => $t){ + if (!isset($array['adresse'][$i]['tel']) && (strpos($t['tel_type'], 'Tél') === 0)) $array['adresse'][$i]['tel'] = $t['tel']; + elseif (!isset($array['adresse'][$i]['fax']) && (strpos($t['tel_type'], 'Fax') === 0)) $array['adresse'][$i]['fax'] = $t['tel']; + else $lasttel = $t['tel']; + if (isset($array['adresse'][$i]['tel']) && isset($array['adresse'][$i]['fax'])) break; + } + if (!isset($array['adresse'][$i]['tel']) && isset($lasttel)) + $array['adresse'][$i]['tel'] = $lasttel; + elseif (!isset($array['adresse'][$i]['fax']) && isset($lasttel)) + $array['adresse'][$i]['fax'] = $lasttel; + unset($array['adresse'][$i]['adrid']); + unset($array['adresse'][$i]['tels']); + } } else{ $array = false; } } - else { //cas où on ne veut pas d'adresse - $array = $res->next(); - } - - if ($array) { // on a bien eu un résultat : le matricule etait bon + 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 + //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); @@ -117,8 +136,43 @@ function get_annuaire_infos($method, $params) { } else {//le matricule n'etait pas en argument $args = array("erreur" => 1, "erreurstring" => $error_mat); $reply = xmlrpc_encode_request(NULL,$args); - } - return $reply; -} + } + + return $reply; +} + +function get_nouveau_infos($method, $params) { + global $error_mat, $error_key, $globals; + //verif du mdp + if(!isset($params[0]) || ($params[0] != $globals->manageurs->manageurs_pass)){return false;} + if( !empty($params[1]) ){ // on verifie qu'on a bien un matricule + + $res = XDB::query( + "SELECT a.nom, a.nom_usage,a.prenom, FIND_IN_SET('femme', a.flags) as femme ,a.deces!= 0 as decede , + a.naissance, a.promo, concat(al.alias, '@m4x.org') as mail + FROM auth_user_md5 AS a + INNER JOIN aliases as al ON a.user_id=al.id + WHERE al.flags='bestalias' and a.matricule = {?}",$params[1]); + $data=$res->fetchOneAssoc(); + //$data['mail'].='@polytechnique.org'; + + + //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($data); + manageurs_encrypt_close(); + } + + } + else{ + $reply=false; + } + return $reply; + +} +// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: ?>