[SPIP] ~2.1.12 -->2.1.25
[velocampus/web/www.git] / www / ecrire / action / editer_signatures.php
index fc0781b..bf60540 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2011                                                *
+ *  Copyright (c) 2001-2014                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -18,7 +18,7 @@ function action_editer_signatures_dist()
        $securiser_action = charger_fonction('securiser_action', 'inc');
        $arg = $securiser_action();
 
-       if (!preg_match(",^(-?\d+)$,", $arg, $r)) {
+       if (!preg_match(",^(-?\d+)(A?)$,", $arg, $r)) {
                 spip_log("action_editer_signature_dist $arg pas compris");
        } else action_editer_signatures_post($r);
 }
@@ -30,7 +30,10 @@ function action_editer_signatures_dist()
 // http://doc.spip.org/@action_editer_signatures_post
 function action_editer_signatures_post($r)
 {
-       $id = intval($r[1]);
+       $id = $id_article = intval($r[1]);
+       if ($r[2] == 'A')
+         $id = 0;
+       else $id_article = 0;
 
        if ($id < 0){
                $id = 0 - $id;
@@ -51,17 +54,40 @@ function action_editer_signatures_post($r)
                                sql_updateq("spip_signatures", array("date_time" => date('Y-m-d H:i:s')), "id_signature=$id");
                        $id = 0;
                }
-
+       } elseif ($id_article) {
+               action_editer_signatures_relance($id_article);
        }
 
        // Invalider les pages ayant trait aux petitions
-       if ($id) {
-               include_spip('inc/invalideur');
+       if (!$id_article AND $id) {
                $id_article = sql_getfetsel("id_article", "spip_signatures", "id_signature=$id");
-               suivre_invalideur("id='varia/pet$id_article'");
+               if ($id_article) {
+                       include_spip('inc/invalideur');
+                       suivre_invalideur("id='varia/pet$id_article'");
+               }
        }
 
        # cette requete devrait figurer dans l'optimisation
        sql_delete("spip_signatures", "NOT (statut='publie' OR statut='poubelle') AND date_time<DATE_SUB(NOW(),INTERVAL 10 DAY)");
 }
+
+// Relance toutes les signatures en attente
+
+function action_editer_signatures_relance($id_article)
+{
+       include_spip('formulaires/signature');
+       include_spip('inc/texte');
+       $url = generer_url_entite_absolue($id_article, 'article','','',true);
+       list($titre, $url) = signature_langue($id_article, $url);
+
+       $envoyer_mail = charger_fonction('envoyer_mail','inc');
+
+       $query = sql_select('*', 'spip_signatures', "id_article=$id_article AND NOT (statut='publie' OR statut='poubelle') AND date_time <  DATE_SUB(NOW(), INTERVAL 1 DAY)", 'ad_email');
+       $n = 0;
+       while ($r = sql_fetch($query)) {
+         list($sujet, $corps) = signature_demande_confirmation($id_article, $url, $r['nom_email'], $r['nom_site'], $r['url_site'], $r['message'], $titre, $r['statut']);
+         if ($envoyer_mail($mail, $sujet, $corps)) $n++;
+       }
+       spip_log("$n signatures relancees pour $titre");
+}
 ?>