[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / plugins-dist / forum / action / editer_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")) {
14 return;
15 }
16 include_spip('inc/modifier');
17
18 // Nota: quand on edite un forum existant, il est de bon ton d'appeler
19 // au prealable conserver_original($id_forum)
20 // https://code.spip.net/@revision_forum
21 if (!function_exists('revision_forum')) {
22 function revision_forum($id_forum, $c = false) {
23
24 $t = sql_fetsel("*", "spip_forum", "id_forum=" . intval($id_forum));
25 if (!$t) {
26 spip_log("erreur forum $id_forum inexistant");
27
28 return;
29 }
30
31 // Calculer l'invalideur des caches lies a ce forum
32 if ($t['statut'] == 'publie') {
33 include_spip('inc/invalideur');
34 $invalideur = array("id='forum/$id_forum'", "id='" . $t['objet'] . "/" . $t['id_objet'] . "'");
35 } else {
36 $invalideur = '';
37 }
38
39 // Supprimer 'http://' tout seul
40 if (isset($c['url_site'])) {
41 include_spip('inc/filtres');
42 $c['url_site'] = vider_url($c['url_site'], false);
43 }
44
45 $err = objet_modifier_champs('forum', $id_forum,
46 array(
47 'nonvide' => array('titre' => _T('info_sans_titre')),
48 'invalideur' => $invalideur
49 ),
50 $c);
51
52 $id_thread = intval($t["id_thread"]);
53 $cles = array();
54 foreach (array('id_objet', 'objet') as $k) {
55 if (isset($c[$k]) and $c[$k]) {
56 $cles[$k] = $c[$k];
57 }
58 }
59
60 // Modification des id_article etc
61 // (non autorise en standard mais utile pour des crayons)
62 // on deplace tout le thread {sauf les originaux}.
63 if (count($cles) and $id_thread) {
64 spip_log("update thread id_thread=$id_thread avec " . var_export($cles, 1), 'forum.' . _LOG_INFO_IMPORTANTE);
65 sql_updateq("spip_forum", $cles, "id_thread=" . $id_thread . " AND statut!='original'");
66 // on n'affecte pas $r, car un deplacement ne change pas l'auteur
67 }
68
69 // s'il y a vraiment eu une modif et que le message est publié ou posté dans un forum du privé
70 // on enregistre la nouvelle date_thread
71 if ($err === '' and in_array($t['statut'], array('publie', 'prive', 'privrac', 'privadm'))) {
72 // on ne stocke ni le numero IP courant ni le nouvel id_auteur
73 // dans le message modifie (trop penible a l'usage) ; mais du
74 // coup attention a la responsabilite editoriale
75 /*
76 sql_updateq('spip_forum', array('ip'=>($GLOBALS['ip']), 'id_auteur'=>($GLOBALS['visiteur_session']['id_auteur'])),"id_forum=".intval($id_forum));
77 */
78
79 // & meme ca ca pourrait etre optionnel
80 sql_updateq("spip_forum", array("date_thread" => date('Y-m-d H:i:s')), "id_thread=" . $id_thread);
81 }
82 }
83 }