Change comletter from and replyto and add Return-Path header
[platal.git] / include / webservices / manageurs.server.inc.php
index 562f402..304c5a6 100644 (file)
@@ -15,7 +15,6 @@ $error_key = "You didn't provide me with a valid cipher key...";
 // IF YOU HAVE TO MAKE SOME MODIFICATION, FIRST CONTACT:
 // admin@manageurs.com
 function get_annuaire_infos($method, $params) {
-    require "geocoding.inc.php";
     global $error_mat, $error_key, $globals;
 
     // Password verification.
@@ -31,35 +30,38 @@ function get_annuaire_infos($method, $params) {
     if(!empty($params[1])) {
         // We only retrieve addresses when required.
         if(!isset($params[2])) {
-            $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]);
+            $res = XDB::iterRow("SELECT  pp.display_tel AS cell, p.birthdate AS age
+                                   FROM  profiles       AS p
+                              LEFT JOIN  profile_phones AS pp ON (pp.pid = p.pid AND pp.link_type = 'user'
+                                                                  AND pp.tel_type = 'mobile')
+                                  WHERE  p.xorg_id = {?} LIMIT 1",
+                                $params[1]);
             $array = $res->next();
         } else {
-            $res = XDB::iterRow(
-                    "SELECT  a.naissance, addr.text, addr.postalCode,
-                             l.name, addr.countryId, addr.pid, addr.id
-                       FROM  auth_user_md5     AS a
-                 INNER JOIN  auth_user_quick   AS q    USING (user_id)
-                  LEFT JOIN  profile_addresses AS addr ON(adr.pid = a.user_id)
-                  LEFT JOIN  geoloc_localities AS l    ON (l.id = addr.localityId)
-                      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]);
+            $res = XDB::iterRow("SELECT  p.birthdate, pa.text, GROUP_CONCAT(pace3.short_name), GROUP_CONCAT(pace2.short_name),
+                                         GROUP_CONCAT(pace1.short_name), p.pid, pa.id
+                                   FROM  profiles                          AS p
+                              LEFT JOIN  profile_addresses                 AS pa    ON (pa.pid = p.pid)
+                              LEFT JOIN  profile_addresses_components      AS pc    ON (pa.pid = pc.pid AND pa.jobid = pc.jobid AND pa.groupid = pc.groupid
+                                                                                        AND pa.type = pc.type AND pa.id = pc.id)
+                              LEFT JOIN  profile_addresses_components_enum AS pace1 ON (FIND_IN_SET(\'country\', pace1.types) AND pace1.id = pc.component_id)
+                              LEFT JOIN  profile_addresses_components_enum AS pace2 ON (FIND_IN_SET(\'locality\', pace2.types) AND pace2.id = pc.component_id)
+                              LEFT JOIN  profile_addresses_components_enum AS pace3 ON (FIND_IN_SET(\'postal_code\', pace3.types) AND pace3.id = pc.component_id)
+                                  WHERE  p.xorg_id = {?} AND NOT FIND_IN_SET('job', pa.flags)
+                               ORDER BY  NOT FIND_IN_SET('current', pa.flags),
+                                         FIND_IN_SET('secondary', pa.flags),
+                                         NOT FIND_IN_SET('mail', pa.flags)
+                               GROUP BY  pa.pid, pa.jobid, pa.groupid, pa.id, pa.type",
+                                $params[1]);
             // Process the addresses we got.
             if(list($age, $text, $adr['cp'], $adr['ville'],
-                    $adr['pays'], $uid, $adr['adrid']) = $res->next()) {
+                    $adr['pays'], $pid, $adr['adrid']) = $res->next()) {
                 list($adr['adr1'], $adr['adr2'], $adr['adr3']) =
                     explode("\n", Geocoder::getFirstLines($text, $adr['cp'], 3));
                 $sql = XDB::query("SELECT  display_tel
                                      FROM  profile_phones
-                                    WHERE  uid = {?} AND link_type = 'user' AND tel_type = 'mobile'
-                                    LIMIT  1", $uid);
+                                    WHERE  pid = {?} AND link_type = 'user' AND tel_type = 'mobile'
+                                    LIMIT  1", $pid);
                 if ($sql->numRows() > 0) {
                     $array['cell'] = $sql->fetchOneCell();
                 } else {
@@ -96,12 +98,12 @@ function get_annuaire_infos($method, $params) {
                 foreach ($array['adresse'] as $i => $a) {
                     $adrid_index[$a['adrid']] = $i;
                 }
-                $restel = XDB::iterator(
-                           "SELECT  t.display_tel AS tel, t.tel_type, t.link_id as adrid
-                              FROM  profile_phones    AS t
-                        INNER JOIN  profile_addresses AS a ON (t.link_id = a.id AND t.uid = a.pid)
-                             WHERE  t.uid = {?} AND t.link_type = 'address'
-                                    AND NOT FIND_IN_SET('pro', a.statut)", $uid);
+                $restel = XDB::iterator("SELECT  pp.display_tel AS tel, pp..tel_type, pp.link_id as adrid
+                                           FROM  profile_phones    AS pp
+                                     INNER JOIN  profile_addresses AS pa ON (pp.link_id = pa.id AND pp.pid = pa.pid)
+                                          WHERE  pp.pid = {?} AND pp.link_type = 'address'
+                                                 AND NOT FIND_IN_SET('pro', pa.statut)",
+                                        $pid);
                 while ($tel = $restel->next()) {
                     $array['adresse'][$adrid_index[$tel['adrid']]]['tels'][] = $tel;
                 }
@@ -177,14 +179,18 @@ function get_nouveau_infos($method, $params) {
     }
     // We check we actually have an identification number.
     if(!empty($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';
+        $res = XDB::query("SELECT  ppn.lastname_initial AS nom, ppn.lastname_ordinary AS nom_usage, ppn.firstname_initial AS prenom,
+                                   p.sex = 'female' AS femme, p.deathdate IS NOT NULL AS decede,
+                                   p.birthdate, pd.promo, CONCAT(e.email, '@', d.name) AS mail
+                             FROM  profiles         AS p
+                       INNER JOIN  account_profiles AS ap ON (p.pid = ap.pid AND FIND_IN_SET('owner', perms)
+                       INNER JOIN  email_source_account AS s ON (s.uid = ap.uid AND FIND_IN_SET('bestalias', s.flags))
+                       INNER JOIN  email_virtual_domains AS d ON (s.domain = s.id)
+                       INNER JOIN  profile_display  AS pd PN (p.pid = pd.pid)
+                       INNER JOIN  profile_public_names AS ppn ON (ppn.pid = p.pid)
+                            WHERE  a.flags = 'bestalias' AND p.xorg_id = {?}",
+                          $params[1]);
+        // $data['mail'] .= '@polytechnique.org';
 
 
         // We start the encryption of the data.
@@ -203,5 +209,5 @@ function get_nouveau_infos($method, $params) {
     return $reply;
 }
 
-// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker fenc=utf-8:
 ?>