X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;ds=sidebyside;f=include%2Fwebservices%2Fmanageurs.server.inc.php;h=89b1b59bbbf258608eaf397e2fa28cffed961221;hb=1ebf2b93bef5ab13342293a34041b9a68ed31f03;hp=159268afb6d89c715053a81bb8e6f37c0cbfc7ec;hpb=436e5ff37712c84329b5bd7822712ea9574fee16;p=platal.git diff --git a/include/webservices/manageurs.server.inc.php b/include/webservices/manageurs.server.inc.php index 159268a..89b1b59 100644 --- a/include/webservices/manageurs.server.inc.php +++ b/include/webservices/manageurs.server.inc.php @@ -17,30 +17,29 @@ $error_key = "You didn't provide me with a valid cipher key..."; function get_annuaire_infos($method, $params) { global $error_mat, $error_key, $globals; - - //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( - "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]); + $res = XDB::iterRow( + "SELECT ph.display_tel AS cell, a.naissance AS age + FROM auth_user_md5 AS a + INNER JOIN auth_user_quick AS q USING (user_id) + LEFT JOIN profile_phones AS ph ON (ph.uid = a.user_id AND link_type='user' AND tel_type = 'mobile') + WHERE a.matricule = {?} LIMIT 1", $params[1]); + $array = $res->next(); } else{ - $res = $globals->xdb->iterRow( - "SELECT q.profile_mobile AS cell, a.naissance AS age, + $res = XDB::iterRow( + "SELECT 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) @@ -49,25 +48,30 @@ 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 adresses 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()) + //traitement des adresses si necessaire + if(list($age, $adr['adr1'], $adr['adr2'], $adr['adr3'], $adr['cp'], $adr['ville'], + $adr['pays'], $uid, $adr['adrid']) = $res->next()) { - $array['cell'] = $cell; + $sql = XDB::query("SELECT display_tel + FROM profile_phones + WHERE uid ={?} AND link_type = 'user' AND tel_type = 'mobile' + LIMIT 1", $uid); + if ($sql->numRows()>0) { + $array['cell'] = $sql->fetchOneCell(); + } else { + $array['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()) + while(list($age, $adr['adr1'], $adr['adr2'], $adr['adr3'], $adr['cp'], $adr['ville'], + $adr['pays'], , $adr['adrid']) = $res->next()) { if($adresse == $i){//si on veut cette adresse en particulier $array['adresse'][0] = $adr; @@ -80,19 +84,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.display_tel AS tel, t.tel_type, t.link_id as adrid + FROM profile_phones AS t + INNER JOIN adresses AS a ON (t.link_id = a.adrid AND t.uid = a.uid) + WHERE t.uid = {?} AND t.link_type = 'address' 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); @@ -120,9 +146,9 @@ function get_annuaire_infos($method, $params) { $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; @@ -130,15 +156,16 @@ function get_nouveau_infos($method, $params) { 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 = $globals->xdb->query( - "SELECT a.nom, a.nom_usage,a.prenom,a.flags='femme' as femme ,a.deces!= 0 as decede ,a.naissance,a.promo,al.alias 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]); + $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); @@ -156,4 +183,5 @@ function get_nouveau_infos($method, $params) { } +// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: ?>