AJaX sur emails, rajoute un ack
[platal.git] / bin / cron / emails.check.php
index fc9322c..afb3ed5 100755 (executable)
@@ -1,7 +1,7 @@
-#!/usr/bin/php4 -q
+#!/usr/bin/php5 -q
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2006 Polytechnique.org                              *
+ *  Copyright (C) 2003-2007 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
  *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
  ***************************************************************************/
 
+/* Number of consecutive month of bounce before deactivating a redirection
+ */
+$panne_level = 3;
+
 require('./connect.db.inc.php');
 
+/* 
+ * Check duplicated addresses
+ */
 $sql = "SELECT a1.alias, a2.alias, e1.email
           FROM emails        AS e1
     INNER JOIN emails        AS e2 ON (e1.email = e2.email AND e1.uid != e2.uid 
@@ -44,9 +51,9 @@ while (list($alias1, $alias2, $mail) = $it->next()) {
 }
 
 if (count($conflits) > 0) {
-    echo "Nouvelles adresses en doublon détectées :\n" . join("\n", $conflits)
-        . "\n\nVous pouvez entrer les informations collectées à ce sujet sur la page :\n"
-        . "http://www.polytechnique.org/admin/doublons";
+    echo "Nouvelles adresses en doublon detectees :\n" . join("\n", $conflits)
+        . "\n\nVous pouvez entrer les informations collectees a ce sujet sur la page :\n"
+        . "http://www.polytechnique.org/admin/emails/duplicated";
 
     echo "\n\n";
     $sql = "INSERT IGNORE INTO emails_watch (email, state, detection, last)
@@ -57,6 +64,34 @@ if (count($conflits) > 0) {
     }
 }
 
+/*
+ * Check dead emails
+ */
+if ($panne_level > 0) {
+    $sql = "SELECT  e.email, a.alias AS forlife
+              FROM  emails  AS e
+        INNER JOIN  aliases AS a ON a.id = e.uid AND a.type = 'a_vie'
+             WHERE  e.panne_level = $panne_level AND e.flags = 'active'
+          ORDER BY  a.alias";
+    $res = Xdb::query($sql);
+
+    if ($res->numRows()) {
+        $result = $res->fetchAllAssoc();
+        echo "Nouvelles adresses en panne detectees :\n";
+        foreach ($result as $assoc) {
+            echo '* ' . $assoc['email'] . ' pour ' . $assoc['forlife'] . "\n";
+        }
+        echo "\n\n";
 
+        Xdb::execute("UPDATE  emails
+                         SET  flags = 'panne'
+                       WHERE  panne_level = 3 AND flags = 'active'");
+    }
+
+    Xdb::execute("UPDATE  emails
+                     SET  panne_level = $panne_level
+                   WHERE  panne_level > $panne_level");
+}
 
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
 ?>