Handles canceled payment transactions.
[platal.git] / bin / cron / cron_validations.php
index 81ed9ad..bbaf000 100755 (executable)
@@ -1,7 +1,7 @@
 #!/usr/bin/php5 -q
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2007 Polytechnique.org                              *
+ *  Copyright (C) 2003-2014 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
  *  Foundation, Inc.,                                                      *
  *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
  ***************************************************************************/
-/* vim: set sw=4 ts=4 sts=4 tw=100:
- * vérifie qu'il n'y a pas de validations en cours, et maile si c'est le cas
-*/ 
 
-$M_PERIOD = "INTERVAL 3 HOUR"; // période d'envoi des mails de 3h
-$R_PERIOD = "INTERVAL 6 HOUR"; // période de réponse moyenne de 6h
+/** Check if there is some pending validations,
+ *  and if so sends notification email.
+ */
 
-require('./connect.db.inc.php');
-require('../classes/plmailer.php');
+$M_PERIOD = "INTERVAL 3 HOUR"; // 3 hour lap (old validations)
+$R_PERIOD = "INTERVAL 6 HOUR"; // 6 hour lap (very old validations)
+
+require 'connect.db.inc.php';
+require 'plmailer.php';
+
+$res = XDB::query("SELECT  count(r.stamp), UNIX_TIMESTAMP(MIN(r.stamp)),
+                           sum(r.stamp < NOW() - $M_PERIOD), sum(r.stamp < NOW() - $R_PERIOD)
+                     FROM  requests AS r");
+list($nb, $age, $nbold, $nbveryold) = $res->fetchOneRow();
+
+$age = (time() - intval($age)) / 86400;
+$head = '';
+if ($age > 15) {
+    $head = "[Autodestruction du serveur] ";
+} elseif ($age > 7) {
+    $head = "[Armageddon imminent] ";
+} elseif ($age > 5) {
+    $head = "[Guerre nucléaire] ";
+} elseif ($age > 3) {
+    $head = "[ET Téléphone maison] ";
+} elseif ($age > 1) {
+    $head = "[Réveil !] ";
+} elseif (!empty($nbveryold)) {
+    $head = "[Urgent] ";
+}
 
-$res = XDB::query("SELECT count(stamp), sum(stamp < NOW() - $M_PERIOD), sum(stamp < NOW() - $R_PERIOD) FROM x4dat.requests");
-list($nb,$nbold,$nbveryold) = $res->fetchOneRow();
 
 if (empty($nb)) {
     exit;
 }
 
+$plural = $nb == 1 ? '' : 's';
+
 $mymail = new PlMailer();
-$mymail->setFrom('validation@polytechnique.org');
-$mymail->addTo("validation@polytechnique.org");
-$mymail->setSubject((empty($nbveryold)?"":"[urgent] ")."il y a $nb validations non effectuées");
+$mymail->setFrom('validation@' . $globals->mail->domain);
+$mymail->addTo('validation@' . $globals->mail->domain);
+$mymail->setSubject($head . "Il y a $nb validation$plural non effectuée$plural");
 
 $message =
-       "il y a $nb validation à effectuer \n"
-       .(empty($nbold)?"":"dont $nbold depuis le dernier mail !!!\n")
-       .(empty($nbveryold)?"":"et dont *$nbveryold* sont en retard de plus de 6h !!!")
-       ."\n"
-       ."https://www.polytechnique.org/admin/validate\n";
+       "Il y a $nb validation$plural à effectuer\n"
+       . (empty($nbold) ? '' : "dont $nbold depuis le dernier mail !!!\n")
+       . (empty($nbveryold) ? '' : "et dont *$nbveryold* " . ($nbveryold == 1 ? 'est' : 'sont') . ' en retard de plus de 6h !!!')
+       . "\n"
+       . "https://www.polytechnique.org/admin/validate\n\n"
+  . "Par catégorie :\n";
+$res = XDB::iterRow('SELECT  type, count(*)
+                       FROM  requests
+                   GROUP BY  type
+                   ORDER BY  type');
+while (list($type, $nb) = $res->next()) {
+    $message .= "- $type : $nb\n";
+}
 
-$message = wordwrap($message,78);  
+$message = wordwrap($message, 78);
 $mymail->setTxtBody($message);
 $mymail->send();
+
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker fenc=utf-8:
 ?>