[SPIP] ~2.1.12 -->2.1.25
[velocampus/web/www.git] / www / ecrire / action / editer_signatures.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2014 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
12
13 if (!defined('_ECRIRE_INC_VERSION')) return;
14
15 // http://doc.spip.org/@action_editer_signatures_dist
16 function action_editer_signatures_dist()
17 {
18 $securiser_action = charger_fonction('securiser_action', 'inc');
19 $arg = $securiser_action();
20
21 if (!preg_match(",^(-?\d+)(A?)$,", $arg, $r)) {
22 spip_log("action_editer_signature_dist $arg pas compris");
23 } else action_editer_signatures_post($r);
24 }
25
26 // mettre un signature a la poubelle
27 // ou l'en sortir
28 // ou relancer le signataire.
29
30 // http://doc.spip.org/@action_editer_signatures_post
31 function action_editer_signatures_post($r)
32 {
33 $id = $id_article = intval($r[1]);
34 if ($r[2] == 'A')
35 $id = 0;
36 else $id_article = 0;
37
38 if ($id < 0){
39 $id = 0 - $id;
40 sql_updateq("spip_signatures", array("statut" => 'poubelle'), "id_signature=$id");
41
42 } elseif ($id > 0){
43 $row = sql_fetsel('*', 'spip_signatures', "id_signature=$id");
44 if ($row['statut']=='poubelle')
45 sql_updateq("spip_signatures", array("statut" => 'publie'), "id_signature=$id");
46 else {
47 include_spip('formulaires/signature');
48 include_spip('inc/texte');
49
50 $id_article = $row['id_article'];
51
52 $url = generer_url_entite_absolue($id_article, 'article','','',true);
53 if (signature_a_confirmer($id_article, $url, $row['nom_email'], $row['ad_email'], $row['nom_site'], $row['url_site'], $row['message'], $row['lang'], $row['statut']))
54 sql_updateq("spip_signatures", array("date_time" => date('Y-m-d H:i:s')), "id_signature=$id");
55 $id = 0;
56 }
57 } elseif ($id_article) {
58 action_editer_signatures_relance($id_article);
59 }
60
61 // Invalider les pages ayant trait aux petitions
62 if (!$id_article AND $id) {
63 $id_article = sql_getfetsel("id_article", "spip_signatures", "id_signature=$id");
64 if ($id_article) {
65 include_spip('inc/invalideur');
66 suivre_invalideur("id='varia/pet$id_article'");
67 }
68 }
69
70 # cette requete devrait figurer dans l'optimisation
71 sql_delete("spip_signatures", "NOT (statut='publie' OR statut='poubelle') AND date_time<DATE_SUB(NOW(),INTERVAL 10 DAY)");
72 }
73
74 // Relance toutes les signatures en attente
75
76 function action_editer_signatures_relance($id_article)
77 {
78 include_spip('formulaires/signature');
79 include_spip('inc/texte');
80 $url = generer_url_entite_absolue($id_article, 'article','','',true);
81 list($titre, $url) = signature_langue($id_article, $url);
82
83 $envoyer_mail = charger_fonction('envoyer_mail','inc');
84
85 $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');
86 $n = 0;
87 while ($r = sql_fetch($query)) {
88 list($sujet, $corps) = signature_demande_confirmation($id_article, $url, $r['nom_email'], $r['nom_site'], $r['url_site'], $r['message'], $titre, $r['statut']);
89 if ($envoyer_mail($mail, $sujet, $corps)) $n++;
90 }
91 spip_log("$n signatures relancees pour $titre");
92 }
93 ?>