* 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)
{
+ 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;
- $page->assign('email_directory', $email_directory);
+ $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::fetchAllAssoc('SELECT email
- FROM profile_job
- WHERE pid = {?}', $profile->id());
- $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) {
- $res = XDB::fetchAllAssoc('SELECT CONCAT(s.email, \'@\', d.name) AS email
- 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());
- $page->assign('list_email_X', $res);
- foreach ($res as $res_it) {
- if ($email_directory == $res_it) {
- $email_type = 'X';
- }
+ 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());
}
- require_once 'emails.inc.php';
- $redirect = new Redirect($user);
- $redir = array();
- foreach ($redirect->emails as $redirect_it) {
- if ($redirect_it->is_redirection()) {
- $redir[] = $redirect_it->email;
- if ($email_directory == $redirect_it->email) {
- $email_type = 'redir';
+ 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::fecthOneCell('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);
+ }
}
}
}
- $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());
+
+ 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]);
+ }
+ }
+ }
+
+ $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:
{if $name eq "email"}<td></td>{/if}
<td>
{if $name neq "email"}<div style="float: left">{/if}
+ {if $emails_count neq 0}
<select name="{$name}" id="{$combobox}">
- {if $email_type eq "directory"}
- <optgroup label="Email annuaire AX">
- <option value="{$email_directory}" {if
- $val eq $email_directory}selected="selected"{/if}>{$email_directory}</option>
- </optgroup>
- {/if}
- {if $name eq "email_directory"}
- <optgroup label="Emails polytechniciens">
- {foreach from=$list_email_X item=email}
- <option value="{$email.email}" {if $val eq $email.email}selected="selected"{/if}>{$email.email}</option>
- {/foreach}
- </optgroup>
- {/if}
- {if (($name neq "email") && ($list_email_redir|@count neq 0))}
- <optgroup label="Redirections">
- {foreach from=$list_email_redir item=email}
+ {foreach from=$email_lists item=email_list key=key}
+ {if $email_list|@count}
+ <optgroup label="{$key}">
+ {foreach from=$email_list item=email}
<option value="{$email}" {if $val eq $email}selected="selected"{/if}>{$email}</option>
{/foreach}
</optgroup>
{/if}
- {if $list_email_pro|@count neq 0}
- <optgroup label="Emails professionels">
- {foreach from=$list_email_pro item=email}
- <option value="{$email}" {if
- $val eq $email}selected="selected"{/if}>{$email}</option>
- {/foreach}
- </optgroup>
- {/if}
+ {/foreach}
<optgroup label="Autres choix">
<option value="new@example.org" {if ($val eq '' && !$error && $name eq 'email') || $error}selected="selected"{/if}>Nouvelle adresse email</option>
- <option value="" {if $val eq '' && !$error && $name neq 'email'}selected="selected"{/if}>{if $name neq "email"}Ne pas mettre d'adresse email{else} {/if}</option>
+ {if $name neq "email"}<option value="" {if $val eq '' && !$error}selected="selected"{/if}>Ne pas mettre d'adresse email</option>{/if}
</optgroup>
</select>
+ {else}
+ <input type="text" maxlength="255" {if $error}class="error" value="{$val}"{/if} name="{$name}"/>
+ {/if}
{if $name neq "email"}
</div>
<div style="float: right" class="flags">