X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=bin%2Fcron%2Femails.check.php;h=426a2d664b5f13c4231ec55c5d9aabd4d993a1af;hb=3424387cde6c635ff16c3b5459c4caa88bb76e2e;hp=846ef2d677b9d697e4d51ce08d9b7a671f8d1d3a;hpb=d645ceb701b0e8aa1de2e5271bed35e56ef169f1;p=platal.git diff --git a/bin/cron/emails.check.php b/bin/cron/emails.check.php index 846ef2d..426a2d6 100755 --- a/bin/cron/emails.check.php +++ b/bin/cron/emails.check.php @@ -1,7 +1,7 @@ #!/usr/bin/php5 -q 0) { * Check dead emails */ if ($panne_level > 0) { - $res = Xdb::query("SELECT e.email, a.hruid - FROM emails AS e - INNER JOIN accounts AS a ON (a.uid = e.uid) - WHERE e.panne_level = {?} AND e.flags = 'active' - ORDER BY a.hruid", - $panne_level); - - if ($res->numRows()) { - $result = $res->fetchAllAssoc(); + $res = XDB::fetchAllAssoc("SELECT r.redirect, a.hruid + FROM email_redirect_account AS r + INNER JOIN accounts AS a ON (a.uid = r.uid) + WHERE r.broken_level = {?} AND r.flags != 'broken' + ORDER BY a.hruid", + $panne_level); + + if ($res) { echo "Nouvelles adresses en panne detectees :\n"; - foreach ($result as $assoc) { - echo '* ' . $assoc['email'] . ' pour ' . $assoc['hruid'] . "\n"; + foreach ($res as $assoc) { + echo '* ' . $assoc['redirect'] . ' pour ' . $assoc['hruid'] . "\n"; } echo "\n\n"; - Xdb::execute("UPDATE emails - SET flags = 'panne' - WHERE panne_level = 3 AND flags = 'active'"); + Xdb::execute("UPDATE email_redirect_account + SET flags = 'broken' + WHERE broken_level = 3"); } - Xdb::execute('UPDATE emails - SET panne_level = {?} - WHERE panne_level > {?}', + Xdb::execute('UPDATE email_redirect_account + SET broken_level = {?} + WHERE broken_level > {?}', $panne_level, $panne_level); } @@ -115,23 +112,32 @@ if ($panne_level > 0) { * inactive redirection. */ if ($opt_verbose) { - $res = XDB::query("SELECT a.hruid, ei.email - FROM accounts AS a - LEFT JOIN emails AS ea ON (ea.uid = a.uid AND ea.flags = 'active') - INNER JOIN emails AS ei ON (ei.uid = a.uid AND ei.flags = '') - INNER JOIN email_options AS eo ON (eo.uid = a.uid) - WHERE NOT FIND_IN_SET('googleapps', eo.storage) AND ea.email IS NULL - GROUP BY a.uid"); - - if ($res->numRows()) { - $result = $res->fetchAllAssoc(); + $res = XDB::fetchAllAssoc("SELECT a.hruid, r2.redirect + FROM accounts AS a + LEFT JOIN email_redirect_account AS r1 ON (a.uid = r1.uid AND r1.flags = 'active') + INNER JOIN email_redirect_account AS r2 ON (a.uid = r2.uid AND r2.flags = 'inactive' + AND r2.type != 'imap' AND r2.type != 'homonym') + WHERE r1.uid IS NULL + GROUP BY a.uid"); + + if ($res) { echo "Camarades n'ayant plus d'adresses actives, mais ayant une adresse inactive :\n"; - foreach ($result as $user) { - echo '* ' . $user['email'] . ' pour ' . $user['hruid'] . "\n"; + foreach ($res as $user) { + echo '* ' . $user['redirect'] . ' pour ' . $user['hruid'] . "\n"; } } echo "\n"; } -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: +/* + * Updates imap settings for users with no active redirection. Their emails + * must go to imap and bounce. + */ +XDB::execute("UPDATE email_redirect_account AS r + LEFT JOIN email_redirect_account AS a ON (r.uid = a.uid AND a.flags = 'active' AND a.type != 'imap') + SET r.action = 'imap_and_bounce' + WHERE r.type = 'imap' AND a.redirect IS NULL"); + + +// vim:set et sw=4 sts=4 sws=4 foldmethod=marker fenc=utf-8: ?>