Valider 34789b00 rédigé par esj's avatar esj
Parcourir les fichiers

Résolution de #1510, cette double redirection d'action conduisant à plusieurs changements:

 * réintégration dans le script {{{../public.php}}} de tous les cas ne suivant pas le déroulement complet d'utilisation d'un squelette (action, CVT) afin de migrer tous les appels à {{{exit}}} de {{{public/assembler}}} dans le script initial (il en reste un, dans la fonction repérant un violation de sécurité CVT ça peut se justifier).

 * abandon de la possibilité d'avoir et des actions et des formulaires CVT dont l'URL soit indifféremment au niveau de la racine ou au niveau de {{{ecrire}}}: il ne faut pas obscuricr et ralentir l'accès aux scripts de {{{ecrire/}}}.

 * le traitement de la variable {{{redirect}}} dans la requête HTTP est modifié pour tenir compte des incohérences de PHP signalé dans #1510:

  * si la requête est en GET, cette variable a dû être encodée par {{{rawurlencode}}}
  * si la requête est en POST, elle ne doit pas avoir été encodée.

Ce traitement est assuré par {{{generer_action_auteur}}} et ses fonctions annes, les extensions de SPIP utilisant cette fonction de manière standard ne seront pas affectées par ce changement interne.
	
 - vérification de tous les cas d'utilisation de cette variable de redirection, en particulier pour éliminer la production d'URL absolue dans le cas GET, le mod_security d'APACHE faisant de la parano là-dessus. En particulier, la solution de #1510 a imposé d'expliciter le script de retour des bouton de contrôle de forum, le double retour s'effectue à l'endroit attendu de {{{articles_forum}}}, ce qui est le cas aussi de {{{controle_forum}}} à présent, même en utilisation AJAX.
parent 071a4554
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+1 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -41,7 +41,7 @@ function exec_articles_forum_args($id_article, $date, $debut, $pas, $enplus)
	if (!$pas) $pas = 5;
	$nav = affiche_navigation_forum($query, "articles_forum", "id_article=$id_article", $debut, $pas, $enplus, $date);

	$res = afficher_forum($query, '', '', $id_article);
	$res = afficher_forum($query, '', '', $id_article, 'articles_forum', "id_article=$id_article");
	$res =  "<br />$nav<br />$res<br />$nav";	

	if (_AJAX) {
+3 −3
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -105,7 +105,7 @@ function forum_parent($id_forum) {
}

// http://doc.spip.org/@controle_forum_boucle
function controle_forum_boucle($row) {
function controle_forum_boucle($row, $args) {

	$id_forum = $row['id_forum'];
	$forum_id_parent = $row['id_parent'];
@@ -176,7 +176,7 @@ function controle_forum_boucle($row) {
	}
	$controle .= safehtml("<span class='arial2'> / <b>$forum_auteur</b></span>");

	$controle .= boutons_controle_forum($id_forum, $forum_stat, $forum_id_auteur, "$type=$valeur", $forum_ip);
	$controle .= boutons_controle_forum($id_forum, $forum_stat, $forum_id_auteur, "$type=$valeur", $forum_ip, 'controle_forum', $args);

	$suite = "\n<br />$avant<b>$pref
	<a href='$url'>$titre</a></b>"  
@@ -258,7 +258,7 @@ function exec_controle_forum_args($id_rubrique, $type, $debut, $pas, $enplus, $r
	
	$res = '';
	while ($row = sql_fetch($select)) 
		$res .= controle_forum_boucle($row);
		$res .= controle_forum_boucle($row, "$args$type&debut=$debut");
	$res =  "<br />$nav<br />$res<br />$nav";	

	if (_AJAX) {
+5 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -55,7 +55,11 @@ function exec_upgrade_dist() {
	include_spip('inc/headers');
	$admin = charger_fonction('admin', 'inc');
	$res = $admin('upgrade', _T('info_mise_a_niveau_base'), $commentaire);
	if ($res) echo $res; else redirige_par_entete(generer_action_auteur('purger', 'cache', _DIR_RESTREINT_ABS, true));
	if ($res) echo $res;
	else {
		$res = redirige_action_auteur('purger', 'cache', 'accueil', '', true);
		redirige_par_entete($res);
	}
	}
}
?>
+2 −2
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -20,7 +20,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
function inc_auteur_infos_dist($auteur, $new, $echec, $edit, $id_article, $redirect, $quoi="") {

	if (!$new AND $quoi!="edit") {
		$infos = legender_auteur_voir($auteur, $redirect);
		$infos = legender_auteur_voir($auteur);
	} else
		$infos = '';

@@ -162,7 +162,7 @@ function legender_auteur_voir($auteur) {
		$res .= icone_inline($clic, $h, "redacteurs-24.gif", "edit.gif", $spip_lang_right);

		$res .= http_script("
		var intitule_bouton = ".sql_quote($retour).";
		var intitule_bouton = "._q($retour).";
		jQuery('#bouton_modifier_auteur a')
		.click(function() {
			jQuery('#auteur_infos_edit')
+9 −9
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -86,7 +86,7 @@ function navigation_trouve_date($date, $nom_date, $pas, $query)
// n'est pas effacable

// http://doc.spip.org/@boutons_controle_forum
function boutons_controle_forum($id_forum, $forum_stat, $forum_id_auteur=0, $ref, $forum_ip) {
function boutons_controle_forum($id_forum, $forum_stat, $forum_id_auteur=0, $ref, $forum_ip, $script, $args) {
	$controle = $original = $spam = '';


@@ -164,7 +164,7 @@ function boutons_controle_forum($id_forum, $forum_stat, $forum_id_auteur=0, $ref
			return;
	}

	$lien = self('&') . "#id$id_forum";
	$lien = _DIR_RESTREINT_ABS . generer_url_ecrire($script, $args, true, true) . "#id$id_forum";
	$boutons ='';
	if ($suppression)
	  $boutons .= icone_inline(_T('icone_supprimer_message'), generer_action_auteur('instituer_forum',"$id_forum-$suppression", $lien),
@@ -177,8 +177,8 @@ function boutons_controle_forum($id_forum, $forum_stat, $forum_id_auteur=0, $ref
			"creer.gif", 'right', 'non');

	if ($valider_repondre) {
	  $dblret = rawurlencode(url_absolue($lien));
	  $boutons .= icone_inline(_T('icone_valider_message') . " &amp; " .   _T('lien_repondre_message'), generer_action_auteur('instituer_forum',"$id_forum-$valider", generer_url_public('forum', "$ref&id_forum=$id_forum&retour=$dblret", true)),
	  $dblret = rawurlencode($lien);
	  $boutons .= icone_inline(_T('icone_valider_message') . " &amp; " .   _T('lien_repondre_message'), generer_action_auteur('instituer_forum',"$id_forum-$valider", generer_url_public('forum', "$ref&id_forum=$id_forum&retour=$dblret", true, true)),
			     $logo,
			     "creer.gif", 'right', 'non');
	}
@@ -400,7 +400,7 @@ function enregistre_et_modifie_forum($id_forum, $c=false) {
//

// http://doc.spip.org/@afficher_forum
function afficher_forum($query, $retour, $arg, $controle_id_article = false) {
function afficher_forum($query, $retour, $arg, $controle_id_article = false, $script='', $argscript='') {
	global $spip_display;
	static $compteur_forum = 0;
	static $nb_forum = array();
@@ -425,8 +425,8 @@ function afficher_forum($query, $retour, $arg, $controle_id_article = false) {
				'WHERE' => "id_parent='" . $row['id_forum'] . "'" . ($controle_id_article ? '':" AND statut<>'off'"),
				'ORDER BY' => "date_heure");

			$bloc = afficher_forum_thread($row, $controle_id_article, $compteur_forum, $nb_forum, $thread, $retour, $arg)
			. afficher_forum($query, $retour, $arg, $controle_id_article);
			$bloc = afficher_forum_thread($row, $controle_id_article, $compteur_forum, $nb_forum, $thread, $retour, $arg, $script, $argscript)
			  . afficher_forum($query, $retour, $arg, $controle_id_article, $script, $argscript);

			$res .= ajax_action_greffe('poster_forum_prive', $row['id_forum'], $bloc); 
		}
@@ -441,7 +441,7 @@ function afficher_forum($query, $retour, $arg, $controle_id_article = false) {
// plus les lignes verticales de conduite

// http://doc.spip.org/@afficher_forum_thread
function afficher_forum_thread($row, $controle_id_article, $compteur_forum, $nb_forum, $i, $retour, $arg) {
function afficher_forum_thread($row, $controle_id_article, $compteur_forum, $nb_forum, $i, $retour, $arg,  $script, $argscript) {
	global $spip_lang_right, $spip_display;
	static $voir_logo = array(); // pour ne calculer qu'une fois

@@ -509,7 +509,7 @@ function afficher_forum_thread($row, $controle_id_article, $compteur_forum, $nb_
	$res .= "<table$style width='100%' cellpadding='5' cellspacing='0'>\n<tr><td>"
	.  afficher_forum_auteur($row)
	. (!$controle_id_article ? '' :
	   boutons_controle_forum($id_forum, $statut, $id_auteur, "id_article=$id_article", $ip))
	   boutons_controle_forum($id_forum, $statut, $id_auteur, "id_article=$id_article", $ip,  $script, $argscript))
	. "<div style='font-weight: normal;'>"
	. safehtml(justifier(propre($texte)))
	. "</div>\n"
Chargement en cours