Merge commit 'origin/platal-0.10.0'
[platal.git] / include / user.func.inc.php
index 05da262..7da7ada 100644 (file)
@@ -32,9 +32,9 @@ function user_clear_all_subs($user_id, $really_del=true)
     // + delete maillists
 
     global $globals;
-    $uid   = intval($user_id);
-    $res   = XDB::query("SELECT alias FROM aliases WHERE type='a_vie' AND id={?}", $uid);
-    $alias = $res->fetchOneCell();
+    $uid = intval($user_id);
+    $user = User::getSilent($uid);
+    list($alias) = explode('@', $user->forlifeEmail());
 
     $tables_to_clear = array('uid' => array('competences_ins', 'entreprises', 'langues_ins', 'mentor_pays',
                                             'mentor_secteurs', 'mentor', 'perte_pass', 'watch_sub'),
@@ -48,7 +48,7 @@ function user_clear_all_subs($user_id, $really_del=true)
         $tables_to_clear['contact'] = array('contacts');
         XDB::execute("UPDATE auth_user_md5
                          SET date_ins = 0, promo_sortie = 0, nom_usage = '',  password = '', perms = 'pending',
-                             nationalite = '', cv = '', section = 0, date = 0, smtppass = ''
+                             nationalite = '', cv = '', section = 0, date = 0, smtppass = '', mail_storage = ''
                        WHERE user_id = {?}", $uid);
         XDB::execute("DELETE virtual.* FROM virtual INNER JOIN virtual_redirect AS r USING(vid) WHERE redirect = {?}",
                      $alias.'@'.$globals->mail->domain);
@@ -74,142 +74,11 @@ function user_clear_all_subs($user_id, $really_del=true)
     // Deactivates, when available, the Google Apps account of the user.
     if ($globals->mailstorage->googleapps_domain) {
         require_once 'googleapps.inc.php';
-        $account = new GoogleAppsAccount($uid, $alias);
-        $account->suspend();
-    }
-}
-
-// }}}
-// {{{ function get_user_login()
-
-// Defaut callback to call when a login is not found
-function _default_user_callback($login)
-{
-    global $page;
-    $page->trig("Il n'y a pas d'utilisateur avec l'identifiant : $login");
-    return;
-}
-
-function _silent_user_callback($login)
-{
-    return;
-}
-
-function get_user_login($data, $get_forlife = false, $callback = '_default_user_callback')
-{
-    global $globals, $page;
-
-    if (is_numeric($data)) {
-        $res = XDB::query("SELECT alias FROM aliases WHERE type='a_vie' AND id={?}", $data);
-        if ($res->numRows()) {
-            return $res->fetchOneCell();
-        } else {
-            call_user_func($callback, $data);
-            return false;
-        }
-    }
-
-    $data = trim(strtolower($data));
-
-    if (strstr($data, '@')===false) {
-        $data = $data.'@'.$globals->mail->domain;
-    }
-
-    list($mbox, $fqdn) = explode('@', $data);
-    if ($fqdn == $globals->mail->domain || $fqdn == $globals->mail->domain2) {
-
-        $res = XDB::query("SELECT  a.alias
-                             FROM  aliases AS a
-                       INNER JOIN  aliases AS b ON (a.id = b.id AND b.type IN ('alias', 'a_vie') AND b.alias={?})
-                            WHERE  a.type = 'a_vie'", $mbox);
-        if ($res->numRows()) {
-            return $get_forlife ? $res->fetchOneCell() : $mbox;
-        }
-
-        if (preg_match('/^(.*)\.([0-9]{4})$/u', $mbox, $matches)) {
-            $res = XDB::query("SELECT  a.alias
-                                 FROM  aliases AS a
-                           INNER JOIN  aliases AS b ON (a.id = b.id AND b.type IN ('alias', 'a_vie') AND b.alias={?})
-                           INNER JOIN  auth_user_md5 AS u ON (a.id = u.user_id AND promo = {?})
-                                WHERE  a.type = 'a_vie'", $matches[1], $matches[2]);
-            if ($res->numRows() == 1) {
-                return $res->fetchOneCell();
-            }
-        }
-        call_user_func($callback, $data);
-        return false;
-
-    } elseif ($fqdn == $globals->mail->alias_dom || $fqdn == $globals->mail->alias_dom2) {
-
-        $res = XDB::query("SELECT  redirect
-                             FROM  virtual_redirect
-                       INNER JOIN  virtual USING(vid)
-                            WHERE  alias={?}", $mbox.'@'.$globals->mail->alias_dom);
-        if ($redir = $res->fetchOneCell()) {
-            list($alias) = explode('@', $redir);
-        } else {
-            call_user_func($callback, $data);
-            $alias = false;
-        }
-        return $alias;
-    } else {
-
-        $res = XDB::query("SELECT  alias
-                                       FROM  aliases AS a
-                                 INNER JOIN  emails  AS e ON e.uid=a.id
-                                      WHERE  e.email={?} AND a.type='a_vie'", $data);
-        switch ($i = $res->numRows()) {
-            case 0:
-                call_user_func($callback, $data);
-                return false;
-
-            case 1:
-                return $res->fetchOneCell();
-
-            default:
-                if (S::has_perms()) {
-                    $aliases = $res->fetchColumn();
-                    $page->trig("Il y a $i utilisateurs avec cette adresse mail : ".join(', ', $aliases));
-                } else {
-                    $res->free();
-                }
-        }
-    }
-
-    return false;
-}
-
-// }}}
-// {{{ function get_user_forlife()
-
-function get_user_forlife($data, $callback = '_default_user_callback')
-{
-    return get_user_login($data, true, $callback);
-}
-
-// }}}
-// {{{ function get_users_forlife_list()
-
-function get_users_forlife_list($members, $strict = false, $callback = '_default_user_callback')
-{
-    if (!is_array($members)) {
-        if (strlen(trim($members)) == 0) {
-            return null;
-        }
-        $members = explode(' ', $members);
-    }
-    if ($members) {
-        $list = array();
-        foreach ($members as $i => $alias) {
-            if (($login = get_user_forlife($alias, $callback)) !== false) {
-                $list[$i] = $login;
-            } else if(!$strict) {
-                $list[$i] = $alias;
-            }
+        if (GoogleAppsAccount::account_status($uid)) {
+            $account = new GoogleAppsAccount($user);
+            $account->suspend();
         }
-        return $list;
     }
-    return null;
 }
 
 // }}}
@@ -245,7 +114,7 @@ function get_not_registered_user($login, $iterator = false)
     }
     $sql = "SELECT  user_id, nom, prenom, promo
               FROM  auth_user_md5
-             WHERE  $where
+             WHERE  $where AND perms = 'pending'
           ORDER BY  promo, nom, prenom";
     if ($iterator) {
         return XDB::iterator($sql, $nom, $prenom, $promo);
@@ -345,6 +214,7 @@ function get_user_details_adr($uid, $view = 'private') {
                      gp.pays AS countrytxt,a.region, a.regiontxt,
                      FIND_IN_SET('active', a.statut) AS active, a.adrid,
                      FIND_IN_SET('res-secondaire', a.statut) AS secondaire,
+                     FIND_IN_SET('courrier', a.statut) AS courier,
                      a.pub, gp.display
                FROM  adresses AS a
           LEFT JOIN  geoloc_pays AS gp ON (gp.a2=a.country)
@@ -397,7 +267,7 @@ function &get_user_details($login, $from_uid = '', $view = 'private')
                        s.text AS section, p.x, p.y, p.pub AS photo_pub,
                        u.matricule_ax,
                        m.expertise != '' AS is_referent,
-                       COUNT(e.email) > 0 AS actif
+                       (COUNT(e.email) > 0 OR FIND_IN_SET('googleapps', u.mail_storage) > 0) AS actif
                  FROM  auth_user_md5   AS u
            INNER JOIN  auth_user_quick AS q  USING(user_id)
            INNER JOIN  aliases         AS a  ON (u.user_id=a.id AND a.type='a_vie')