diff --git a/.gitattributes b/.gitattributes index c7fe1fea6271d19ccc1740fb55e1fab654ebe7fa..0e2ac8d53d8c6b725975d8f0820108711ada338d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -319,6 +319,7 @@ ecrire/inc_sites_tous.php -text ecrire/inc_spip_action_autoriser.php -text ecrire/inc_spip_action_ical.php -text ecrire/inc_spip_action_iconifier.php -text +ecrire/inc_spip_action_instituer.php -text ecrire/inc_spip_action_joindre.php -text ecrire/inc_spip_action_purger.php -text ecrire/inc_spip_action_redirect.php -text diff --git a/ecrire/inc_articles.php b/ecrire/inc_articles.php index aa3de94da7061fd1968351b5af9444a4a21c2256..07b6961d767b67dd3a578077cf76a609cdc7d32c 100644 --- a/ecrire/inc_articles.php +++ b/ecrire/inc_articles.php @@ -506,28 +506,6 @@ function comparer_statut_articles($id_article, $statut_nouv, $statut_article, return $ok_nouveau_statut ; } -function changer_statut_articles($id_article, $statut) -{ - global $connect_toutes_rubriques; - - $id_article = intval($id_article); - $result = spip_query("SELECT statut,id_rubrique FROM spip_articles WHERE id_article=$id_article"); - - if ($row = spip_fetch_array($result)) { - $id_rubrique= $row['id_rubrique']; - $statut_ancien = $row['statut']; - } - - if (($statut != $statut_ancien) AND - ($connect_toutes_rubriques OR acces_rubrique($id_rubrique))) { - spip_query("UPDATE spip_articles SET statut='$statut', date=NOW() WHERE id_article=$id_article"); - include_ecrire("inc_rubriques"); - include_ecrire('inc_texte'); - calculer_rubriques(); - - cron_articles($id_article, $statut, $statut_ancien); - } -} function cron_articles($id_article, $statut, $statut_ancien) { diff --git a/ecrire/inc_breves.php b/ecrire/inc_breves.php index d10565946258b9f029ae04ec22f2db2ff04681ba..73cea0c1885c1a61ad90b83fb1fa2aeafcb212dd 100644 --- a/ecrire/inc_breves.php +++ b/ecrire/inc_breves.php @@ -49,25 +49,6 @@ function enfant_breves($leparent){ } } -function changer_statut_breves($id_breve, $statut) -{ - $id_breve = intval($id_breve); - $query = "SELECT statut FROM spip_breves WHERE id_breve=$id_breve"; - $result = spip_query($query); - if ($row = spip_fetch_array($result)) { - $id_rubrique= $row['id_rubrique']; - $statut_ancien = $row['statut']; - } - - if (($statut != $statut_ancien) AND - ($connect_toutes_rubriques OR acces_rubrique($id_rubrique))) { - spip_query("UPDATE spip_breves SET date_heure=NOW(), statut='$statut' WHERE id_breve=$id_breve"); - - include_ecrire("inc_rubriques"); - calculer_rubriques(); - } -} - function breves_dist() { global $connect_statut,$id_breve, $statut, $id_rubrique; diff --git a/ecrire/inc_forum.php3 b/ecrire/inc_forum.php3 index 1fc4e7b5a78abcbc5ba56f25adb98644c75c60a6..65e7ab7853a1bfe18b852025b866d5f9e6cf4dd5 100644 --- a/ecrire/inc_forum.php3 +++ b/ecrire/inc_forum.php3 @@ -85,25 +85,23 @@ function boutons_controle_forum($id_forum, $forum_stat, $forum_id_auteur=0, $ref } $link = new Link(); - $link = $link->geturl() . "#id$id_forum"; - $ulink = urlencode($link); + $link = _DIR_RESTREINT_ABS . $link->geturl() . "#id$id_forum"; if ($supprimer) - $controle .= icone(_T('icone_supprimer_message'), generer_url_ecrire('iframe_action', "action=forum_admin&id=$id_forum&statut=$supprimer&redirect=$ulink"), + $controle .= icone(_T('icone_supprimer_message'), generer_action_auteur('instituer', "forum $id_forum $supprimer", $link), $logo, "supprimer.gif", 'right', 'non'); if ($valider) - $controle .= icone(_T('icone_valider_message'), generer_url_ecrire('iframe_action', "action=forum_admin&id=$id_forum&statut=$valider&redirect=$ulink"), + $controle .= icone(_T('icone_valider_message'), generer_action_auteur('instituer', "forum $id_forum $valider", $link), $logo, "creer.gif", 'right', 'non'); if ($valider_repondre) { - $redirect = urlencode(generer_url_public('forum', "$ref&id_forum=$id_forum&retour=" . urlencode(_DIR_RESTREINT_ABS . $link), true)); - $controle .= icone(_T('icone_valider_message') . " & " . _T('lien_repondre_message'), generer_url_ecrire('iframe_action', "action=forum_admin&id=$id_forum&statut=$valider&redirect=$redirect"), - $logo, - "creer.gif", 'right', 'non'); + $controle .= icone(_T('icone_valider_message') . " & " . _T('lien_repondre_message'), generer_action_auteur('instituer', "forum $id_forum $valider", generer_url_public('forum', "$ref&id_forum=$id_forum&retour=" . urlencode($link), true)), + $logo, + "creer.gif", 'right', 'non'); } return $controle; diff --git a/ecrire/inc_forum_admin.php b/ecrire/inc_forum_admin.php index e40ca06b94c0d093a6a188532624c7a68a0a1fca..c2a7950aaa7918310abdd30b7e9e7b4e56549953 100644 --- a/ecrire/inc_forum_admin.php +++ b/ecrire/inc_forum_admin.php @@ -90,50 +90,4 @@ function forum_admin_dist() fin_page(); } - - -// -// Suppression de forums -// - -# fonction invoquee par calcul dans iframe_action -# Elle n'a rien a faire ici en fait, et devra migrer en inc_forum -# quand on abandonnera les .php 3 - -function changer_statut_forum_admin($id_forum, $statut) { - $id_forum = intval($id_forum); - $result = spip_query("SELECT * FROM spip_forum WHERE id_forum=$id_forum"); - if (!($row = spip_fetch_array($result))) - return; - - $id_parent = $row['id_parent']; - - // invalider les pages comportant ce forum - include_ecrire('inc_invalideur'); - include_ecrire('inc_forum'); - $index_forum = calcul_index_forum($row['id_article'], $row['id_breve'], $row['id_rubrique'], $row['id_syndic']); - suivre_invalideur("id='id_forum/$index_forum'"); - - // Signaler au moteur de recherche qu'il faut reindexer le thread - if ($id_parent) { - include_ecrire('inc_index'); - marquer_indexer ('forum', $id_parent); - } - - // changer le statut de toute l'arborescence dependant de ce message - $id_messages = array($id_forum); - while ($id_messages) { - $id_messages = join(',', $id_messages); - $query_forum = "UPDATE spip_forum SET statut='$statut' - WHERE id_forum IN ($id_messages)"; - $result_forum = spip_query($query_forum); - $query_forum = "SELECT id_forum FROM spip_forum - WHERE id_parent IN ($id_messages)"; - $result_forum = spip_query($query_forum); - unset($id_messages); - while ($row = spip_fetch_array($result_forum)) - $id_messages[] = $row['id_forum']; - } -} - ?> diff --git a/ecrire/inc_minipres.php b/ecrire/inc_minipres.php index a7736661ed06bf5c522c450ce426baaba78d8801..00e6bf8d5d91633ded59ef73c334a7ec7a88465a 100644 --- a/ecrire/inc_minipres.php +++ b/ecrire/inc_minipres.php @@ -110,32 +110,6 @@ function info_dist() { if ($connect_statut == '0minirezo') phpinfo(); } - -// normalement il faudrait definir inc_iframe_action.php, mais pour mettre juste ca: - -function iframe_action_dist() -{ - global $connect_statut, $id, $action, $statut, $redirect; - if ($id && ($connect_statut == "0minirezo")) { - - $var_f = find_in_path('inc_' . $action); - if ($var_f) - include($var_f); - else - include_ecrire('inc_' . $action); - - $var_nom = 'changer_statut_' . $action; - if (function_exists($var_nom)) - $var_nom($id, $statut); - else spip_log("fonction $var_nom indisponible dans $var_f"); - } - - if (!$redirect) - header("Cache-Control: no-store, no-cache, must-revalidate"); - else - header("Location: " . urldecode($redirect)); -} - // Afficher le bouton "preview" dans l'espace public function afficher_bouton_preview() { $x = _T('previsualisation'); diff --git a/ecrire/inc_presentation.php3 b/ecrire/inc_presentation.php3 index 71c88caf8747dca4d6165214587e9f97b061d874..d8fa1e72e6fcc3b47bacfdb245a228c0eb0beaac 100644 --- a/ecrire/inc_presentation.php3 +++ b/ecrire/inc_presentation.php3 @@ -672,7 +672,7 @@ function afficher_script_statut($id, $type, $n, $img, $statut, $title, $act) return http_href_img("javascript:selec_statut('$id', '$type', -1, '" . _DIR_IMG_PACK . $img . "', '" . - generer_url_ecrire('iframe_action', "action=$type"."s&id=$id&statut=$statut",false,true) . + generer_action_auteur('instituer', "$type $id $statut") . "');", $img, "title=\"".$title."\"", @@ -3259,8 +3259,8 @@ function debloquer_article($arg, $texte) { $lien = new Link; $lien->addVar('debloquer_article', $arg); - $lien = urlencode($lien->getUrl()); - return "<a href='" . generer_url_ecrire('iframe_action', "action=articles_page&id=$arg&redirect=$lien") . + $lien = (_DIR_RESTREINT_ABS . $lien->getUrl()); + return "<a href='" . generer_action_auteur('instituer', "collaboration $arg", $lien) . "' title='" . addslashes($texte) . "'>$texte " . diff --git a/ecrire/inc_session.php3 b/ecrire/inc_session.php3 index 265465a1d58c4e52984b6fd014ed21089aedaeaa..37d8bcf96e00d987d5731a04b0bc29d9ac597d6a 100644 --- a/ecrire/inc_session.php3 +++ b/ecrire/inc_session.php3 @@ -10,7 +10,7 @@ * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ -// + if (!defined("_ECRIRE_INC_VERSION")) return; include_ecrire ("inc_meta"); @@ -279,4 +279,11 @@ function verifier_action_auteur($action, $valeur, $id_auteur = 0) { return false; } +function generer_action_auteur($action, $arg, $redirect="", $no_entites=false) +{ + global $connect_id_auteur; + $hash = calculer_action_auteur("$action $arg"); + if ($redirect) $redirect = "&redirect=" . urlencode($redirect); + return generer_url_public("spip_action.php", "action=$action&arg=$arg&id_auteur=$connect_id_auteur&hash=$hash$redirect", $no_entites); +} ?> diff --git a/ecrire/inc_spip_action_instituer.php b/ecrire/inc_spip_action_instituer.php new file mode 100644 index 0000000000000000000000000000000000000000..60afeddcc26a08f4572d7ba6d3ffe2642f495f0b --- /dev/null +++ b/ecrire/inc_spip_action_instituer.php @@ -0,0 +1,118 @@ +<?php + +/***************************************************************************\ + * SPIP, Systeme de publication pour l'internet * + * * + * Copyright (c) 2001-2006 * + * 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; + +include_ecrire("inc_session"); + +function spip_action_instituer_dist() +{ + global $arg, $action, $hash, $id_auteur; + + if (!verifier_action_auteur("$action $arg", $hash, $id_auteur)) + spip_log("spip_action: $action $arg interdit a $id_auteur"); + else { + ereg("^([^ ]*) (.*)$", $arg, $r); + $var_nom = 'instituer_' . $r[1]; + if (function_exists($var_nom)) + $var_nom($r[2]); + else spip_log("spip_action_$action: $arg incompris"); + } +} + +function instituer_collaboration($debloquer_article) +{ + global $id_auteur; + if ($debloquer_article) { + if ($debloquer_article <> 'tous') + $where_id = "AND id_article=".intval($debloquer_article); + $query = "UPDATE spip_articles SET auteur_modif='0' WHERE auteur_modif=$id_auteur $where_id"; + spip_query ($query); + } +} + +function instituer_forum($arg) { + list($id_forum, $statut) = split(' ', $arg); + $id_forum = intval($id_forum); + $result = spip_query("SELECT * FROM spip_forum WHERE id_forum=$id_forum"); + if (!($row = spip_fetch_array($result))) + return; + + $id_parent = $row['id_parent']; + + // invalider les pages comportant ce forum + include_ecrire('inc_invalideur'); + include_ecrire('inc_forum'); + $index_forum = calcul_index_forum($row['id_article'], $row['id_breve'], $row['id_rubrique'], $row['id_syndic']); + suivre_invalideur("id='id_forum/$index_forum'"); + + // Signaler au moteur de recherche qu'il faut reindexer le thread + if ($id_parent) { + include_ecrire('inc_index'); + marquer_indexer ('forum', $id_parent); + } + + // changer le statut de toute l'arborescence dependant de ce message + $id_messages = array($id_forum); + while ($id_messages) { + $id_messages = join(',', $id_messages); + $query_forum = "UPDATE spip_forum SET statut='$statut' + WHERE id_forum IN ($id_messages)"; + $result_forum = spip_query($query_forum); + $query_forum = "SELECT id_forum FROM spip_forum + WHERE id_parent IN ($id_messages)"; + $result_forum = spip_query($query_forum); + unset($id_messages); + while ($row = spip_fetch_array($result_forum)) + $id_messages[] = $row['id_forum']; + } +} + +function instituer_article($arg) +{ list($id_article, $statut) = split(' ', $arg); + + $id_article = intval($id_article); + $result = spip_query("SELECT statut FROM spip_articles WHERE id_article=$id_article"); + + if ($row = spip_fetch_array($result)) { + $statut_ancien = $row['statut']; + } + + if ($statut != $statut_ancien) { + spip_query("UPDATE spip_articles SET statut='$statut', date=NOW() WHERE id_article=$id_article"); + include_ecrire("inc_rubriques"); + include_ecrire('inc_texte'); + calculer_rubriques(); + + cron_articles($id_article, $statut, $statut_ancien); + } +} + + +function instituer_breve($arg) +{ list($id_breve, $statut) = split(' ', $arg); + + $id_breve = intval($id_breve); + $query = "SELECT statut FROM spip_breves WHERE id_breve=$id_breve"; + $result = spip_query($query); + if ($row = spip_fetch_array($result)) { + $statut_ancien = $row['statut']; + } + + if ($statut != $statut_ancien) { + spip_query("UPDATE spip_breves SET date_heure=NOW(), statut='$statut' WHERE id_breve=$id_breve"); + + include_ecrire("inc_rubriques"); + calculer_rubriques(); + } +} +?> diff --git a/ecrire/inc_upgrade.php b/ecrire/inc_upgrade.php index c6cb583ce94c64d3770bdbe638dae1acab7a73e0..699cf2759257e43d432c2844ac6fa08d7e489cea 100644 --- a/ecrire/inc_upgrade.php +++ b/ecrire/inc_upgrade.php @@ -82,10 +82,7 @@ function upgrade_dist() fin_admin($upgrade_titre); if ($ok) { - $action = 'purger'; - $arg = 'cache'; - $hash = calculer_action_auteur("$action $arg"); - redirige_par_entete(generer_url_public("spip_action.php"), "?action=$action&id_auteur=$connect_id_auteur&hash=$hash&redirect=" . _DIR_RESTREINT_ABS); + redirige_par_entete(generer_action_auteur('purger', 'cache', _DIR_RESTREINT_ABS, true)); } else { echo _T('alerte_maj_impossible', array('version' => $spip_version));