[SPIP] ~v3.0.20-->v3.0.25
[lhc/web/clavette_www.git] / www / plugins-dist / forum / action / instituer_lot_forum.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2016 *
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://code.spip.net/@action_instituer_forum_dist
16 function action_instituer_lot_forum_dist($arg=null) {
17
18 if (is_null($arg)){
19 $securiser_action = charger_fonction('securiser_action', 'inc');
20 $arg = $securiser_action();
21 }
22
23 // verifier les droits
24 if (autoriser('instituer','forum',0)){
25
26 /**
27 * Cas 1 : les arguments sont explicites
28 * statut-ip/email/id_auteur/auteur
29 *
30 */
31 if (preg_match(",^(\w+)-,",$arg,$match)
32 AND in_array($statut=$match[1],array('publie','off','spam'))){
33 $arg = substr($arg,strlen($statut)+1);
34
35 $arg = explode('/',$arg);
36 $ip = array_shift($arg);
37 $email_auteur = array_shift($arg);
38 $id_auteur = intval(array_shift($arg));
39 $auteur = implode('/',$arg);
40 $where = array();
41 // pas de moderation par lot sur les forum prives
42 $where[] = sql_in('statut',array('privadm','prive','privrac'),'NOT');
43 if ($ip) $where[] = "ip=".sql_quote($ip);
44 if ($email_auteur) $where[] = "email_auteur=".sql_quote($email_auteur);
45 if ($id_auteur) $where[] = "id_auteur=".intval($id_auteur);
46 if ($auteur) $where[] = "auteur=".sql_quote($auteur);
47 $rows = sql_allfetsel("*", "spip_forum", $where);
48 if (!count($rows)) return;
49
50 include_spip('action/instituer_forum');
51 foreach ($rows as $row) {
52 instituer_un_forum($statut,$row);
53 }
54 }
55 /**
56 * Cas 2 : seul le statut est explicite et signe
57 * les id concernes sont passes en arg supplementaires
58 * dans un taleau ids[]
59 */
60 elseif (preg_match(",^(\w+)$,",$arg,$match)
61 AND in_array($statut=$match[1],array('publie','off','spam'))
62 AND $id=_request('ids')
63 AND is_array($id)){
64
65 $ids = array_map('intval',$id);
66 $where = array();
67 // pas de moderation par lot sur les forum prives
68 $where[] = sql_in('statut',array('privadm','prive','privrac'),'NOT');
69 $where[] = sql_in('id_forum',$ids);
70 $rows = sql_allfetsel("*", "spip_forum", $where);
71 if (!count($rows)) return;
72
73 include_spip('action/instituer_forum');
74 foreach ($rows as $row) {
75 instituer_un_forum($statut,$row);
76 }
77 }
78 }
79 else {
80 spip_log("instituer_lot_forum interdit pour auteur ".$GLOBALS['visiteur_session']['id_auteur'],_LOG_ERREUR);
81 }
82
83 }
84
85 ?>