Moving to GitHub.
[platal.git] / include / emails.combobox.inc.php
index 288aa66..05525c5 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2010 Polytechnique.org                              *
+ *  Copyright (C) 2003-2014 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
  *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
  ***************************************************************************/
 
-function fill_email_combobox(PlPage& $page, $user = null, $profile = null)
+function fill_email_combobox(PlPage $page, array $retrieve, $user = null)
 {
-    global $globals;
-
+    require_once 'emails.inc.php';
     if (is_null($user)) {
         $user = S::user();
     }
-    if (is_null($profile)) {
-        /* Always refetch the profile. */
-        $profile = $user->profile(true);
-    }
-    $email_type = "directory";
+    /* Always refetch the profile. */
+    $profile = $user->profile(true);
 
-    if ($profile) {
-        $email_directory = $profile->email_directory;
-        if ($email_directory) {
-            $page->assign('email_directory', $email_directory);
-            list($alias, $domain) = explode('@', $email_directory);
-        } else {
-            $page->assign('email_directory', '');
-            $email_type = NULL;
-            $alias = $domain = '';
-        }
+    $emails = array();
+    if (in_array('source', $retrieve)) {
+        $emails['Emails polytechniciens'] = XDB::fetchColumn('SELECT  CONCAT(s.email, \'@\', d.name)
+                                                                FROM  email_source_account  AS s
+                                                          INNER JOIN  email_virtual_domains AS m ON (s.domain = m.id)
+                                                          INNER JOIN  email_virtual_domains AS d ON (d.aliasing = m.id)
+                                                               WHERE  s.uid = {?}
+                                                            ORDER BY  s.email, d.name',
+                                                             $user->id());
+    }
 
-        $res = XDB::query(
-                "SELECT  email
-                   FROM  profile_job
-                  WHERE  pid = {?}", $profile->id());
-        $res = $res->fetchAllAssoc();
-        $pro = array();
-        foreach ($res as $res_it) {
-            if ($res_it['email'] != '') {
-                $pro[] = $res_it['email'];
-                if ($email_directory == $res_it['email']) {
-                    $email_type = "pro";
-                }
+    if (in_array('redirect', $retrieve)) {
+        $redirect = new Redirect($user);
+        $emails['Redirections'] = array();
+        foreach ($redirect->emails as $redirect_it) {
+            if ($redirect_it->is_redirection()) {
+                $emails['Redirections'][] = $redirect_it->email;
             }
         }
-        $page->assign('list_email_pro', $pro);
     }
 
-    if ($user) {
-        $melix = $user->emailAlias();
-        if ($melix) {
-            list($melix) = explode('@', $melix);
-            $page->assign('melix', $melix);
-            if (($domain == $globals->mail->alias_dom) || ($domain == $globals->mail->alias_dom2)) {
-                $email_type = "melix";
-            }
+    if ($profile) {
+        if (in_array('job', $retrieve)) {
+            $emails['Emails professionels'] = XDB::fetchColumn('SELECT  email
+                                                                  FROM  profile_job
+                                                                 WHERE  pid = {?} AND email IS NOT NULL AND email != \'\'',
+                                                               $profile->id());
         }
 
-        $res = XDB::query(
-                "SELECT  alias
-                   FROM  aliases
-                  WHERE  uid={?} AND (type='a_vie' OR type='alias')", $user->id());
-        $res = $res->fetchAllAssoc();
-        $page->assign('list_email_X', $res);
-        if (($domain == $globals->mail->domain) || ($domain == $globals->mail->domain2)) {
-            foreach ($res as $res_it) {
-                if ($alias == $res_it['alias']) {
-                    $email_type = "X";
+        if ($profile->email_directory) {
+            if (in_array('directory', $retrieve)) {
+                foreach ($emails as &$email_list) {
+                    foreach ($email_list as $key => $email) {
+                        if ($profile->email_directory == $email) {
+                            unset($email_list[$key]);
+                        }
+                    }
+                }
+                $emails['Email annuaire AX'] = array($profile->email_directory);
+            } elseif (in_array('stripped_directory', $retrieve)) {
+                if (User::isForeignEmailAddress($profile->email_directory)) {
+                    $is_redirect = XDB::fetchOneCell('SELECT  COUNT(*)
+                                                        FROM  email_redirect_account
+                                                       WHERE  uid = {?} AND redirect = {?}',
+                                                     $user->id(), $profile->email_directory);
+                    if ($is_redirect == 0) {
+                        $emails['Email annuaire AX'] = array($profile->email_directory);
+                    }
                 }
             }
         }
 
-        require_once 'emails.inc.php';
-        $redirect = new Redirect($user);
-        $redir    = array();
-        foreach ($redirect->emails as $redirect_it) {
-            if ($redirect_it instanceof EmailRedirection) {
-                $redir[] = $redirect_it->email;
-                if ($email_directory == $redirect_it->email) {
-                    $email_type = "redir";
-                }
+        if (isset($emails['Emails professionels']) && isset($emails['Redirections'])) {
+            $intersect = array_intersect($emails['Emails professionels'], $emails['Redirections']);
+            foreach ($intersect as $key => $email) {
+                unset($emails['Emails professionels'][$key]);
             }
         }
-        $page->assign('list_email_redir', $redir);
-        $page->assign('email_type', $email_type);
-    } else {
-        $page->assign('list_email_X', array());
-        $page->assign('list_email_redir', array());
-        $page->assign('list_email_pro', array());
     }
+
+    $emails_count = 0;
+    foreach ($emails as $email_list) {
+        $emails_count += count($email_list);
+    }
+    $page->assign('emails_count', $emails_count);
+    $page->assign('email_lists', $emails);
 }
 
-// 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:
 ?>