X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Femail.php;h=1961dc572b3e99db6e81e2990e6fad462ba31084;hb=2ee43273acd74ef5a3041945f82cb2aadefae685;hp=e3f5e8e8fed789a04b1149e4878b023cbee6c008;hpb=aab4661d8b58f90c7604024173e21c0fbb0d5383;p=platal.git diff --git a/modules/email.php b/modules/email.php index e3f5e8e..1961dc5 100644 --- a/modules/email.php +++ b/modules/email.php @@ -33,6 +33,8 @@ class EmailModule extends PLModule 'emails/antispam/submit' => $this->make_hook('submit', AUTH_COOKIE), 'emails/test' => $this->make_hook('test', AUTH_COOKIE, 'user', NO_AUTH), + 'emails/imap/in' => $this->make_hook('imap_in', AUTH_PUBLIC), + 'admin/emails/duplicated' => $this->make_hook('duplicated', AUTH_MDP, 'admin'), 'admin/emails/watch' => $this->make_hook('duplicated', AUTH_MDP, 'admin'), 'admin/emails/lost' => $this->make_hook('lost', AUTH_MDP, 'admin'), @@ -42,6 +44,7 @@ class EmailModule extends PLModule function handler_emails(&$page, $action = null, $email = null) { global $globals; + require_once 'emails.inc.php'; $page->changeTpl('emails/index.tpl'); $page->assign('xorg_title','Polytechnique.org - Mes emails'); @@ -65,21 +68,12 @@ class EmailModule extends PLModule ORDER BY LENGTH(alias)"; $page->assign('aliases', XDB::iterator($sql, $uid)); - $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()); + $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)); + $redirect = new Redirect($uid); + $page->assign('mails', $redirect->active_emails()); // on regarde si l'utilisateur a un alias et si oui on l'affiche ! $forlife = S::v('forlife'); @@ -231,17 +225,6 @@ 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')); @@ -273,15 +256,12 @@ class EmailModule extends PLModule FROM aliases WHERE id={?} AND (type='a_vie' OR type='alias') ORDER BY !FIND_IN_SET('usage',flags), LENGTH(alias)", $uid); - + $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())); + require_once 'googleapps.inc.php'; + $page->assign('googleapps', GoogleAppsAccount::account_status($uid)); } function handler_antispam(&$page, $statut_filtre = null) @@ -294,7 +274,7 @@ class EmailModule extends PLModule $bogo = new Bogo(S::v('uid')); if (isset($statut_filtre)) { - $bogo->change(S::v('uid'), $statut_filtre + 0); + $bogo->change($statut_filtre + 0); } $page->assign('filtre',$bogo->level()); } @@ -443,28 +423,56 @@ class EmailModule extends PLModule function handler_test(&$page, $forlife = null) { global $globals; + require_once 'emails.inc.php'; + if (!S::has_perms() || !$forlife) { $forlife = S::v('bestalias'); } - $mailer = new PlMailer('emails/test.mail.tpl'); - $mailer->assign('email', $forlife . '@' . $globals->mail->domain); - $iterator = XDB::iterator("SELECT email - FROM emails AS e - INNER JOIN aliases AS a ON (e.uid = a.id) - WHERE FIND_IN_SET('active', e.flags) AND a.alias = {?}", - $forlife); - $mailer->assign('redirects', $iterator); - $res = XDB::query("SELECT FIND_IN_SET('femme', u.flags), prenom + + $res = XDB::query("SELECT FIND_IN_SET('femme', u.flags), prenom, user_id FROM auth_user_md5 AS u INNER JOIN aliases AS a ON (a.id = u.user_id) WHERE a.alias = {?}", $forlife); - list($sexe, $prenom) = $res->fetchOneRow(); + list($sexe, $prenom, $uid) = $res->fetchOneRow(); + $redirect = new Redirect($uid); + + $mailer = new PlMailer('emails/test.mail.tpl'); + $mailer->assign('email', $forlife . '@' . $globals->mail->domain); + $mailer->assign('redirects', $redirect->active_emails()); $mailer->assign('sexe', $sexe); $mailer->assign('prenom', $prenom); $mailer->send(); exit; } + function handler_imap_in(&$page, $hash = null, $login = null) + { + $page->changeTpl('emails/imap_register.tpl'); + $id = null; + if (!empty($hash) || !empty($login)) { + $req = XDB::query("SELECT u.prenom, id + FROM aliases AS a + INNER JOIN newsletter_ins AS ni ON (a.id = ni.user_id) + INNER JOIN auth_user_md5 AS u ON (u.user_id = a.id) + WHERE a.alias = {?} AND ni.hash = {?}", $login, $hash); + list($prenom, $id) = $req->fetchOneRow(); + } + + require_once('emails.inc.php'); + $page->assign('ok', false); + if (S::logged() && (is_null($id) || $id == S::i('uid'))) { + $storage = new EmailStorage(S::i('uid'), 'imap'); + $storage->activate(); + $page->assign('ok', true); + $page->assign('prenom', S::v('prenom')); + } else if (!S::logged() && $id) { + $storage = new EmailStorage($id, 'imap'); + $storage->activate(); + $page->assign('ok', true); + $page->assign('prenom', $prenom); + } + } + function handler_broken(&$page, $warn = null, $email = null) { require_once 'emails.inc.php'; @@ -651,12 +659,14 @@ L'équipe d'administration mail->domain . '>'; $page->changeTpl('emails/lost.tpl'); $page->assign('lost_emails', XDB::iterator(' - SELECT u.user_id, a.alias - FROM auth_user_md5 AS u - INNER JOIN aliases AS a ON (a.id = u.user_id AND a.type = "a_vie") - LEFT JOIN emails AS e ON (u.user_id=e.uid AND FIND_IN_SET("active",e.flags)) - WHERE e.uid IS NULL AND u.deces = 0 - ORDER BY u.promo DESC, u.nom, u.prenom')); + SELECT u.user_id, a.alias + FROM auth_user_md5 AS u + INNER JOIN aliases AS a ON (a.id = u.user_id AND a.type = "a_vie") + LEFT JOIN emails AS e ON (u.user_id=e.uid AND FIND_IN_SET("active",e.flags)) + WHERE e.uid IS NULL AND + FIND_IN_SET("googleapps", u.mail_storage) = 0 AND + u.deces = 0 + ORDER BY u.promo DESC, u.nom, u.prenom')); } }