9e5842fb0083522a4dc46fcf5a058e4eceaf3441
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
6 * Copyright (c) 2001-2013 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
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 \***************************************************************************/
13 if (!defined("_ECRIRE_INC_VERSION")) return;
15 // http://doc.spip.org/@action_instituer_forum_dist
16 function action_instituer_lot_forum_dist($arg=null) {
19 $securiser_action = charger_fonction('securiser_action', 'inc');
20 $arg = $securiser_action();
23 // verifier les droits
24 if (autoriser('instituer','forum',0)){
27 * Cas 1 : les arguments sont explicites
28 * statut-ip/email/id_auteur/auteur
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);
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);
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;
50 include_spip('action/instituer_forum');
51 foreach ($rows as $row) {
52 instituer_un_forum($statut,$row);
56 * Cas 2 : seul le statut est explicite et signe
57 * les id concernes sont passes en arg supplementaires
58 * dans un taleau ids[]
60 elseif (preg_match(",^(\w+)$,",$arg,$match)
61 AND in_array($statut=$match[1],array('publie','off','spam'))
62 AND $id=_request('ids')
65 $ids = array_map('intval',$id);
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;
73 include_spip('action/instituer_forum');
74 foreach ($rows as $row) {
75 instituer_un_forum($statut,$row);
80 spip_log("instituer_lot_forum interdit pour auteur ".$GLOBALS['visiteur_session']['id_auteur'],_LOG_ERREUR
);