From: Vincent Zanotti Date: Fri, 22 Feb 2008 09:30:02 +0000 (+0100) Subject: Adds the user interface for per-user activation/deactivation of IMAP email backup. X-Git-Tag: xorg/0.9.16~151 X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=aab4661d8b58f90c7604024173e21c0fbb0d5383;p=platal.git Adds the user interface for per-user activation/deactivation of IMAP email backup. Signed-off-by: Vincent Zanotti --- diff --git a/include/emails.inc.php b/include/emails.inc.php index f03f801..35b76d3 100644 --- a/include/emails.inc.php +++ b/include/emails.inc.php @@ -409,5 +409,47 @@ class Redirect } } +// class MailStorage {{{1 +class MailStorage { + protected $uid; + protected $name; + + public function __construct($_uid, $_name) + { + $this->uid = $_uid; + $this->name = $_name; + } + + public function disable() + { + $res = XDB::query("SELECT mail_storage + FROM auth_user_md5 + WHERE user_id = {?}", $this->uid); + $storages = explode(',', $res->fetchOneCell()); + + if (in_array($this->name, $storages)) { + array_splice($storages, array_search($this->name, $storages), 1); + XDB::execute("UPDATE auth_user_md5 + SET mail_storage = {?} + WHERE user_id = {?}", implode(',', $storages), $this->uid); + } + } + + public function enable() + { + XDB::execute("UPDATE auth_user_md5 + SET mail_storage = CONCAT_WS(',', IF(mail_storage = '', NULL, mail_storage), {?}) + WHERE user_id = {?} AND + FIND_IN_SET({?}, mail_storage) = 0", $this->name, $this->uid, $this->name); + } +} + +class MailStorageIMAP extends MailStorage { + public function __construct($_uid) + { + parent::__construct($_uid, 'imap'); + } +} + // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: ?> diff --git a/modules/email.php b/modules/email.php index 708bd5b..e3f5e8e 100644 --- a/modules/email.php +++ b/modules/email.php @@ -68,11 +68,18 @@ class EmailModule extends PLModule $homonyme = XDB::query("SELECT alias FROM aliases INNER JOIN homonymes ON (id = homonyme_id) WHERE user_id = {?} AND type = 'homonyme'", $uid); $page->assign('homonyme', $homonyme->fetchOneCell()); + // Affichage des redirections de l'utilisateur. $sql = "SELECT email FROM emails WHERE uid = {?} AND FIND_IN_SET('active', flags)"; $page->assign('mails', XDB::iterator($sql, $uid)); + // Affichage des backends actifs de stockage des emails. + $sql = "SELECT mail_storage + FROM auth_user_md5 + WHERE user_id = {?}"; + $storages = XDB::query($sql, $uid)->fetchOneCell(); + $page->assign('storage', explode(',', $storages)); // on regarde si l'utilisateur a un alias et si oui on l'affiche ! $forlife = S::v('forlife'); @@ -224,6 +231,17 @@ class EmailModule extends PLModule $redirect->modify_one_email_redirect($email, $rewrite); } + if ($action == 'storage' && $email == 'imap') { + $storage = new MailStorageIMAP(S::v('uid')); + $subaction = @func_get_arg(3); + if ($subaction == 'active') { + $storage->enable(); + } + if ($subaction == 'inactive') { + $storage->disable(); + } + } + if (Env::has('emailop')) { $actifs = Env::v('emails_actifs', Array()); print_r(Env::v('emails_rewrite')); @@ -258,6 +276,12 @@ class EmailModule extends PLModule $page->assign('alias', $res->fetchAllAssoc()); $page->assign('emails',$redirect->emails); + + $res = XDB::query( + "SELECT mail_storage + FROM auth_user_md5 + WHERE user_id = {?}", $uid); + $page->assign('storage', explode(',', $res->fetchOneCell())); } function handler_antispam(&$page, $statut_filtre = null) diff --git a/templates/emails/index.tpl b/templates/emails/index.tpl index bdcb4b3..a5312c8 100644 --- a/templates/emails/index.tpl +++ b/templates/emails/index.tpl @@ -92,16 +92,32 @@ ton homonyme et toi-même ne disposeraient plus que des adresses de la forme pre

{else} Actuellement, tout courrier électronique qui t'y est adressé, est envoyé - {if $mails->total() eq 1} à l'adresse {else} aux adresses {/if} + {if $mails->total() eq 1} à l'adresse{else} aux adresses{/if} : {/if} + {if count($storage) neq 0} + Ton courrier est également stocké sur {if count($storage) eq 1}le compte suivant{else} les comptes suivants{/if} : + + {/if} {test_email} Si tu souhaites modifier ce reroutage de ton courrier, - il te suffit de te rendre ici ! + il te suffit de te rendre ici ! diff --git a/templates/emails/redirect.tpl b/templates/emails/redirect.tpl index df51b53..30b7e61 100644 --- a/templates/emails/redirect.tpl +++ b/templates/emails/redirect.tpl @@ -208,6 +208,36 @@ {/if} +

Tes comptes de stockage de courrier

+

+ Polytechnique.org te propose de conserver les mails que tu reçois, pendant une durée limitée (environ 30 jours). + Grâce à ce service, tu disposes d'une sauvegarde de tes mails en secours, au cas où, par exemple, tu effacerais + un mail par erreur.
+ Attention : il ne s'agit que d'un service de secours, dont la disponibilité n'est pas garantie. +

+ + + + + + + + + +
Compte de stockage
+ + Accès de secours aux emails (IMAP) +
Hébergé par Polytechnique.org +
+
+ {if in_array('imap', $storage)} + + {else} + + {/if} +
+
+ {if $eleve}

Pour les Élèves (non encore diplômés)

diff --git a/upgrade/0.9.16/03_mail_storage.sql b/upgrade/0.9.16/03_mail_storage.sql new file mode 100644 index 0000000..7739c95 --- /dev/null +++ b/upgrade/0.9.16/03_mail_storage.sql @@ -0,0 +1,4 @@ +ALTER TABLE auth_user_md5 ADD COLUMN mail_storage SET('imap', 'googleapps') DEFAULT '' NOT NULL AFTER smtppass; +UPDATE auth_user_md5 SET mail_storage = 'imap' WHERE mail_storage = ''; + +# vim:set syntax=mysql: