source: spip-zone/_core_/plugins/petitions/action/traiter_lot_signature.php @ 45469

Last change on this file since 45469 was 45469, checked in by cedric@…, 10 years ago

#1973 : permettre la suppression de toutes les signatures d'une petition (interface controler_petition)
et supprimer de la base les signature a la poubelle, ainsi que les signatures en attente depuis trop longtemps

File size: 1.9 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2011                                                *
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
13if (!defined("_ECRIRE_INC_VERSION")) return;
14
15function action_traiter_lot_signature_dist($arg=null) {
16
17        if (is_null($arg)){
18                $securiser_action = charger_fonction('securiser_action', 'inc');
19                $arg = $securiser_action();
20        }
21
22        /**
23         * $arg contient l'action relancer/supprimer/valider
24         * les id sont dans un tableau non signe ids[]
25         */
26        if (preg_match(",^(\w+)$,",$arg,$match)
27         AND in_array($statut=$match[1],array('relancer','supprimer','valider'))
28         AND autoriser('instituer','signature',0)){
29                $where = '';
30                if (intval($id_petition = _request('id_petition'))){
31                        $where="id_petition=".intval($id_petition);
32                        // pour relancer ou valider on ne prend que celles en attente
33                        if (in_array($statut,array('relancer','valider')))
34                                $where.=" AND statut!='publie' AND statut!='poubelle'";
35                }
36                else {
37                        $ids=_request('ids');
38                        if (is_array($ids)) {
39                                $ids = array_map('intval',$ids);
40                                $where = sql_in('id_signature',$ids);
41                        }
42                }
43
44                if ($where){
45                        $rows = sql_allfetsel("id_signature", "spip_signatures", $where);
46                        if (!count($rows)) return;
47                        $rows = array_map('reset',$rows);
48
49                        if ($action = charger_fonction($arg."_signature",'action',true))
50                                foreach ($rows as $id_signature) {
51                                        $action($id_signature);
52                                }
53                }
54        }
55}
56
57?>
Note: See TracBrowser for help on using the repository browser.