- $sql = "INSERT IGNORE INTO emails_watch (email, state, detection, last)
- VALUES " . join(", ", $insert);
- Xdb::execute($sql);
- if (mysql_errno() != 0) {
- echo 'Error : ' . mysql_error() . "\n$sql";
+ $sql = "INSERT IGNORE INTO email_watch (email, state, detection, last)
+ VALUES " . join(", ", $insert);
+ XDB::execute($sql);
+ if (XDB::errno() != 0) {
+ echo 'Error : ' . XDB::error() . "\n$sql";
+ }
+}
+
+/*
+ * Check dead emails
+ */
+if ($panne_level > 0) {
+ $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 ($res as $assoc) {
+ echo '* ' . $assoc['redirect'] . ' pour ' . $assoc['hruid'] . "\n";
+ }
+ echo "\n\n";
+
+ Xdb::execute("UPDATE email_redirect_account
+ SET flags = 'broken'
+ WHERE broken_level = 3");
+ }
+
+ Xdb::execute('UPDATE email_redirect_account
+ SET broken_level = {?}
+ WHERE broken_level > {?}',
+ $panne_level, $panne_level);
+}
+
+/*
+ * Retrieve the users with no active redirection, but still one working
+ * inactive redirection.
+ */
+if ($opt_verbose) {
+ $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 ($res as $user) {
+ echo '* ' . $user['redirect'] . ' pour ' . $user['hruid'] . "\n";
+ }