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

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

http://core.spip.org/issues/2130 :
une coquille dans editer_signature empechait les changements de statut.
Par ailleurs, supprimer l'affichage du chemin par defaut, erroné, et unifier les autorisations de traitement par lot

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('modererlot','petition')){
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                        if ($action = charger_fonction($statut."_signature",'action',true))
49                                foreach ($rows as $id_signature) {
50                                        $action($id_signature);
51                                }
52                }
53        }
54}
55
56?>
Note: See TracBrowser for help on using the repository browser.