[SPIP] +version 3.0.7
[ptitvelo/web/www.git] / www / plugins-dist / forum / action / instituer_lot_forum.php
diff --git a/www/plugins-dist/forum/action/instituer_lot_forum.php b/www/plugins-dist/forum/action/instituer_lot_forum.php
new file mode 100644 (file)
index 0000000..9e5842f
--- /dev/null
@@ -0,0 +1,85 @@
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2013                                                *
+ *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
+ *                                                                         *
+ *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
+ *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
+\***************************************************************************/
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+// http://doc.spip.org/@action_instituer_forum_dist
+function action_instituer_lot_forum_dist($arg=null) {
+
+       if (is_null($arg)){
+               $securiser_action = charger_fonction('securiser_action', 'inc');
+               $arg = $securiser_action();
+       }
+
+       // verifier les droits
+       if (autoriser('instituer','forum',0)){
+
+               /**
+                * Cas 1 : les arguments sont explicites
+                * statut-ip/email/id_auteur/auteur
+                *
+                */
+               if (preg_match(",^(\w+)-,",$arg,$match)
+                AND in_array($statut=$match[1],array('publie','off','spam'))){
+                       $arg = substr($arg,strlen($statut)+1);
+
+                       $arg = explode('/',$arg);
+                       $ip = array_shift($arg);
+                       $email_auteur = array_shift($arg);
+                       $id_auteur = intval(array_shift($arg));
+                       $auteur = implode('/',$arg);
+                       $where = array();
+                       // pas de moderation par lot sur les forum prives
+                       $where[] = sql_in('statut',array('privadm','prive','privrac'),'NOT');
+                       if ($ip) $where[] = "ip=".sql_quote($ip);
+                       if ($email_auteur) $where[] = "email_auteur=".sql_quote($email_auteur);
+                       if ($id_auteur) $where[] = "id_auteur=".intval($id_auteur);
+                       if ($auteur) $where[] = "auteur=".sql_quote($auteur);
+                       $rows = sql_allfetsel("*", "spip_forum", $where);
+                       if (!count($rows)) return;
+
+                       include_spip('action/instituer_forum');
+                       foreach ($rows as $row) {
+                               instituer_un_forum($statut,$row);
+                       }
+               }
+               /**
+                * Cas 2 : seul le statut est explicite et signe
+                * les id concernes sont passes en arg supplementaires
+                * dans un taleau ids[]
+                */
+               elseif (preg_match(",^(\w+)$,",$arg,$match)
+                AND in_array($statut=$match[1],array('publie','off','spam'))
+                AND $id=_request('ids')
+                AND is_array($id)){
+
+                       $ids = array_map('intval',$id);
+                       $where = array();
+                       // pas de moderation par lot sur les forum prives
+                       $where[] = sql_in('statut',array('privadm','prive','privrac'),'NOT');
+                       $where[] = sql_in('id_forum',$ids);
+                       $rows = sql_allfetsel("*", "spip_forum", $where);
+                       if (!count($rows)) return;
+
+                       include_spip('action/instituer_forum');
+                       foreach ($rows as $row) {
+                               instituer_un_forum($statut,$row);
+                       }
+               }
+       }
+       else {
+               spip_log("instituer_lot_forum interdit pour auteur ".$GLOBALS['visiteur_session']['id_auteur'],_LOG_ERREUR);
+       }
+
+}
+
+?>