From ce3b905f03eb3f37e477a0a1dedc1a0fc7824a32 Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Sun, 15 Oct 2006 16:41:12 +0000
Subject: [PATCH] Couper en 2 fonctions les actions, afin de pouvoir partager
 le code figurant apres le controle d'acces par hash (a affiner au cas par cas
 ensuite).

---
 ecrire/action/dater.php                | 30 +++++++++++---------
 ecrire/action/documenter.php           | 17 ++++++-----
 ecrire/action/editer_mot.php           | 21 ++++++++------
 ecrire/action/editer_rubrique.php      | 28 ++++++++++--------
 ecrire/action/legender.php             | 39 ++++++++++++++------------
 ecrire/action/legender_auteur.php      | 29 ++++++++++---------
 ecrire/action/poster.php               | 19 +++++++------
 ecrire/action/supprimer_traduction.php | 21 ++++++++------
 ecrire/action/tourner.php              |  6 ++--
 ecrire/action/virtualiser.php          | 13 +++++----
 10 files changed, 127 insertions(+), 96 deletions(-)

diff --git a/ecrire/action/dater.php b/ecrire/action/dater.php
index a498447645..93b1acab1a 100644
--- a/ecrire/action/dater.php
+++ b/ecrire/action/dater.php
@@ -24,15 +24,20 @@ function action_dater_dist() {
 	if (!preg_match(",^\W*(\d+)$,", $arg, $r)) {
 		spip_log("action_dater_dist $arg pas compris");
 	}
+	else action_dater_post($r);
+}
+
+function action_dater_post($r)
+{
+	include_spip('inc/date');
+	if (!isset($_REQUEST['avec_redac']))
+
+		spip_query("UPDATE spip_articles SET date='" . format_mysql_date(_request('annee'), _request('mois'), _request('jour'), _request('heure'), _request('minute')) ."'	WHERE id_article=$r[1]");
+
 	else {
-		include_spip('inc/date');
-		if (!isset($_REQUEST['avec_redac']))
-			spip_query("UPDATE spip_articles SET date='" . format_mysql_date(_request('annee'), _request('mois'), _request('jour'), _request('heure'), _request('minute')) ."'	WHERE id_article=$r[1]");
-		else {
-
-		  if (_request('avec_redac') == 'non')
-				$annee_redac = $mois_redac = $jour_redac = $heure_redac = $minute_redac = 0;
-			else  {
+		if (_request('avec_redac') == 'non')
+			$annee_redac = $mois_redac = $jour_redac = $heure_redac = $minute_redac = 0;
+		else  {
 				$annee_redac = _request('annee_redac');
 				$mois_redac = _request('mois_redac');
 				$jour_redac = _request('jour_redac');
@@ -41,13 +46,12 @@ function action_dater_dist() {
 
 				if ($annee_redac<>'' AND $annee_redac < 1001) 
 					$annee_redac += 9000;
-			}
+		}
 
-			spip_query("UPDATE spip_articles SET date_redac='" . format_mysql_date($annee_redac, $mois_redac, $jour_redac, $heure_redac, $minute_redac) ."' WHERE id_article=$r[1]");
+		spip_query("UPDATE spip_articles SET date_redac='" . format_mysql_date($annee_redac, $mois_redac, $jour_redac, $heure_redac, $minute_redac) ."' WHERE id_article=$r[1]");
 
-		}
-		include_spip('inc/rubriques');
-		calculer_rubriques();
 	}
+	include_spip('inc/rubriques');
+	calculer_rubriques();
 }
 ?>
diff --git a/ecrire/action/documenter.php b/ecrire/action/documenter.php
index 4b538dc327..1082348693 100644
--- a/ecrire/action/documenter.php
+++ b/ecrire/action/documenter.php
@@ -24,22 +24,25 @@ function action_documenter_dist()
 
 	if (!preg_match(",^(-?)(\d+)\W(\w+)\W?(\d*)$,", $arg, $r))
 		spip_log("action_documenter $arg pas compris");
-	else {
-		list($x, $sign, $id, $type, $vignette) = $r;
-		if ($vignette)
+	else action_documenter_post($r);
+}
+
+function action_documenter_post($r)
+{
+	list($x, $sign, $id, $type, $vignette) = $r;
+	if ($vignette)
 			supprimer_document_et_vignette($vignette);
-		else {
+	else {
 			if ($sign)
 				$x = spip_query("SELECT docs.id_document FROM spip_documents AS docs, spip_documents_".$type."s AS l, spip_types_documents AS lestypes WHERE l.id_$type=$id AND l.id_document=docs.id_document AND docs.mode='document' AND docs.id_type=lestypes.id_type AND lestypes.extension IN ('gif', 'jpg', 'png')");
 			else $x = spip_query("SELECT docs.* FROM spip_documents AS docs, spip_documents_".$type."s AS l, spip_types_documents AS lestypes  WHERE l.id_$type=$id AND l.id_document=docs.id_document AND docs.mode='document'  AND docs.id_type=lestypes.id_type AND lestypes.extension NOT IN ('gif', 'jpg', 'png')");
 			while($r = spip_fetch_array($x)) {
 				supprimer_document_et_vignette($r['id_document']);
 			}
-		}
-		if ($type == 'rubrique') {
+	}
+	if ($type == 'rubrique') {
 			include_spip('inc/rubriques');
 			calculer_rubriques();
-		}
 	}
 }
 ?>
diff --git a/ecrire/action/editer_mot.php b/ecrire/action/editer_mot.php
index 8d821177c0..cccf22a91e 100644
--- a/ecrire/action/editer_mot.php
+++ b/ecrire/action/editer_mot.php
@@ -20,16 +20,20 @@ function action_editer_mot_dist() {
 	$var_f();
 
 	$arg = _request('arg');
+	// arg = l'eventuel mot a supprimer pour d'eventuelles Row SQL
+	if (!preg_match(',^(\d*)\D(-?\d*)\W(\w*)\W(\w*)\W(\w*)\W?(\d*)$,', $arg, $r)) 
+		spip_log("action editer_mot: $arg pas compris");
+	else action_editer_mot_post($r);
+}
+
+function action_editer_mot_post($r)
+{
 	$redirect = _request('redirect');
 	$cherche_mot = _request('cherche_mot');
 	$select_groupe = _request('select_groupe');
 
-	// arg = l'eventuel mot a supprimer pour d'eventuelles Row SQL
-	if (!preg_match(',^(\d*)\D(-?\d*)\W(\w*)\W(\w*)\W(\w*)\W?(\d*)$,', $arg, $r)) 
-		spip_log("action editer_mot: $arg pas compris");
-	else {
-		list($x, $id_objet, $id_mot, $table, $table_id, $objet, $nouv_mot) = $r;
-		if ($id_mot) {
+	list($x, $id_objet, $id_mot, $table, $table_id, $objet, $nouv_mot) = $r;
+	if ($id_mot) {
 			if ($objet)
 			  // desassocier un/des mot d'un objet precis
 				spip_query("DELETE FROM spip_mots_$table WHERE $table_id=$id_objet" . (($id_mot <= 0) ? "" : " AND id_mot=$id_mot"));
@@ -41,8 +45,8 @@ function action_editer_mot_dist() {
 			spip_query("DELETE FROM spip_mots_syndic WHERE id_mot=$id_mot");
 			spip_query("DELETE FROM spip_mots_forum WHERE id_mot=$id_mot");
 			}
-		}
-		if ($nouv_mot ? $nouv_mot : ($nouv_mot = _request('nouv_mot'))) {
+	}
+	if ($nouv_mot ? $nouv_mot : ($nouv_mot = _request('nouv_mot'))) {
 		  // recopie de:
 		  // inserer_mot("spip_mots_$table", $table_id, $id_objet, $nouv_mot);
 			$result = spip_num_rows(spip_query("SELECT id_mot FROM spip_mots_$table WHERE id_mot=$nouv_mot AND $table_id=$id_objet"));
@@ -54,7 +58,6 @@ function action_editer_mot_dist() {
 			include_spip("inc/indexation");
 			marquer_indexer("spip_$table", $id_objet);
 		}
-	}
 
 	$redirect = rawurldecode($redirect);
 
diff --git a/ecrire/action/editer_rubrique.php b/ecrire/action/editer_rubrique.php
index bea8125ec3..64d45d797c 100644
--- a/ecrire/action/editer_rubrique.php
+++ b/ecrire/action/editer_rubrique.php
@@ -25,27 +25,31 @@ function action_editer_rubrique_dist() {
 
 	if (!preg_match(";^(\d+),(\w*),(\d+)$;", $arg, $r)) {
 		 spip_log("action_editer_rubrique_dist $arg pas compris");
-	} else {
+	} else action_editer_rubrique_post($r);
+}
+
+function action_editer_rubrique_post($r)
+{
 
-		list($x, $old_parent, $new, $id_rubrique) = $r;
-		$id_parent = intval(_request('id_parent'));
-		if ($new == 'oui')
-			$id_rubrique = enregistre_creer_naviguer($id_parent);
+	list($x, $old_parent, $new, $id_rubrique) = $r;
+	$id_parent = intval(_request('id_parent'));
+	if ($new == 'oui')
+		$id_rubrique = enregistre_creer_naviguer($id_parent);
 
-		enregistre_modifier_naviguer($id_rubrique,
+	enregistre_modifier_naviguer($id_rubrique,
 				$id_parent,
 				_request('titre'),
 				_request('texte'),
 				_request('descriptif'),
 				$old_parent);
 
-		calculer_rubriques();
-		calculer_langues_rubriques();
+	calculer_rubriques();
+	calculer_langues_rubriques();
+
+	// invalider les caches marques de cette rubrique
+	include_spip('inc/invalideur');
+	suivre_invalideur("id='id_rubrique/$id_rubrique'");
 
-		// invalider les caches marques de cette rubrique
-		include_spip('inc/invalideur');
-		suivre_invalideur("id='id_rubrique/$id_rubrique'");
-	}
         $redirect = parametre_url(urldecode(_request('redirect')),
 				  'id_rubrique', $id_rubrique, '&');
         redirige_par_entete($redirect);
diff --git a/ecrire/action/legender.php b/ecrire/action/legender.php
index bf5b0c9d7a..1d6297e7a5 100644
--- a/ecrire/action/legender.php
+++ b/ecrire/action/legender.php
@@ -30,24 +30,28 @@ function action_legender_dist() {
 
 	if (!preg_match(",^\W*(\d+)$,", $arg, $r)) {
 		 spip_log("action_legender_dist $arg pas compris");
-	} else {
+	} else action_legender_post($r);
+}
+
+function action_legender_post($r)
+{
 
-		$id_document = $r[1];
+	$id_document = $r[1];
 
-		$titre_document = (corriger_caracteres(_request('titre_document')));
-		$descriptif_document = (corriger_caracteres(_request('descriptif_document')));
+	$titre_document = (corriger_caracteres(_request('titre_document')));
+	$descriptif_document = (corriger_caracteres(_request('descriptif_document')));
 
-			// taille du document (cas des embed)
-		if ($largeur_document = intval(_request('largeur_document'))
-		AND $hauteur_document = intval(_request('hauteur_document')))
+	// taille du document (cas des embed)
+	if ($largeur_document = intval(_request('largeur_document'))
+	AND $hauteur_document = intval(_request('hauteur_document')))
 				$wh = ", largeur='$largeur_document',
 					hauteur='$hauteur_document'";
-		else $wh = "";
+	else $wh = "";
 
 			// Date du document (uniquement dans les rubriques)
-		if (!_request('jour_doc'))
+	if (!_request('jour_doc'))
 		  $d = '';
-		else {
+	else {
 			$mois_doc = _request('mois_doc');
 			$jour_doc = _request('jour_doc');
 			if (_request('annee_doc') == "0000")
@@ -57,20 +61,19 @@ function action_legender_dist() {
 			$date = _request('annee_doc').'-'.$mois_doc.'-'.$jour_doc;
 
 			if (preg_match('/^[0-9-]+$/', $date)) $d=" date='$date',";
-		}
+	}
 				  
-		spip_query("UPDATE spip_documents SET$d titre=" . spip_abstract_quote($titre_document) . ", descriptif=" . spip_abstract_quote($descriptif_document) . " $wh WHERE id_document=".$id_document);
+	spip_query("UPDATE spip_documents SET$d titre=" . spip_abstract_quote($titre_document) . ", descriptif=" . spip_abstract_quote($descriptif_document) . " $wh WHERE id_document=".$id_document);
 
 
-		if ($date) {
+	if ($date) {
 			include_spip('inc/rubriques');
 			// Changement de date, ce qui nous oblige a :
 			calculer_rubriques();
-		}
-
-		// Demander l'indexation du document
-		include_spip('inc/indexation');
-		marquer_indexer('spip_documents', $id_document);
 	}
+
+	// Demander l'indexation du document
+	include_spip('inc/indexation');
+	marquer_indexer('spip_documents', $id_document);
 }
 ?>
diff --git a/ecrire/action/legender_auteur.php b/ecrire/action/legender_auteur.php
index 61955dbdde..53a625382a 100644
--- a/ecrire/action/legender_auteur.php
+++ b/ecrire/action/legender_auteur.php
@@ -19,6 +19,21 @@ include_spip('base/abstract_sql');
 
 // http://doc.spip.org/@action_legender_auteur
 function action_legender_auteur()
+{
+        $var_f = charger_fonction('controler_action_auteur', 'inc');
+        $var_f();
+
+        $arg = _request('arg');
+
+	$echec = array();
+
+        if (!preg_match(",^(\d+)\D(\d*)(\D?)(.*)$,", $arg, $r)) {
+		$r = "action_legender_auteur_dist $arg pas compris";
+		spip_log($r);
+        } else action_legender_post($r);
+}
+
+function action_legender_post($r)
 {
 	global $auteur_session, $bio,
 	  $champs_extra,
@@ -36,19 +51,6 @@ function action_legender_auteur()
 	  $statut,
 	  $url_site;
 
-        $var_f = charger_fonction('controler_action_auteur', 'inc');
-        $var_f();
-
-        $arg = _request('arg');
-
-	$echec = array();
-
-        if (!preg_match(",^(\d+)\D(\d*)(\D?)(.*)$,", $arg, $r)) {
-		$r = "action_legender_auteur_dist $arg pas compris";
-		spip_log($r);
-		$echec[]=$r;
-        } else {
-
 	  list($tout, $id_auteur, $ajouter_id_article,$s, $n) = $r;
 //
 // si id_auteur est hors table, c'est une creation sinon une modif
@@ -187,7 +189,6 @@ function action_legender_auteur()
 	// ..et mettre a jour les fichiers .htpasswd et .htpasswd-admin
 		ecrire_acces();
 	}
-	}
 
 	if ($echec) $echec = '&echec=' . join('@@@', $echec);
 
diff --git a/ecrire/action/poster.php b/ecrire/action/poster.php
index 71dfc40660..4f36f63845 100644
--- a/ecrire/action/poster.php
+++ b/ecrire/action/poster.php
@@ -25,16 +25,19 @@ function action_poster_dist()
 
 	if (!preg_match(",^\W*(\d+)$,", $arg, $r)) {
 		 spip_log("action_poster_dist $arg pas compris");
-	} else {
-		$id_article = $r[1];
-		$statut = _request('change_accepter_forum');
-		spip_query("UPDATE spip_articles SET accepter_forum='$statut' WHERE id_article=". $id_article);
-		if ($statut == 'abo') {
+	} else action_poster_post($r);
+}
+
+function action_poster_post($r)
+{
+	$id_article = $r[1];
+	$statut = _request('change_accepter_forum');
+	spip_query("UPDATE spip_articles SET accepter_forum='$statut' WHERE id_article=". $id_article);
+	if ($statut == 'abo') {
 			ecrire_meta('accepter_visiteurs', 'oui');
 			ecrire_metas();
-		}
-		include_spip('inc/invalideur');
-		suivre_invalideur("id='id_forum/a$id_article'");
 	}
+	include_spip('inc/invalideur');
+	suivre_invalideur("id='id_forum/a$id_article'");
 }
 ?>
diff --git a/ecrire/action/supprimer_traduction.php b/ecrire/action/supprimer_traduction.php
index 8f82b552d5..6b09f9699c 100644
--- a/ecrire/action/supprimer_traduction.php
+++ b/ecrire/action/supprimer_traduction.php
@@ -23,13 +23,18 @@ function action_supprimer_traduction_dist() {
 
 	if (!preg_match(",^(\d+)\D(\d+)$,", $arg, $r)) 
 		spip_log("action supprimer_traduction: $arg pas compris");
-	else {
-		spip_query("UPDATE spip_articles SET id_trad=0 WHERE id_article=" . $r[1]);
-		// Verifier si l'ancien groupe ne comporte plus qu'un seul article. Alors mettre a zero.
-		$cpt = spip_fetch_array(spip_query("SELECT COUNT(*) AS n FROM spip_articles WHERE id_trad=" . $r[2]));
-
-		if ($cpt['n'] == 1)
-			spip_query("UPDATE spip_articles SET id_trad = 0 WHERE id_trad=" . $r[2]);
-	}
+	else action_supprimer_traduction_post($r);
+}
+
+function action_supprimer_traduction_post($r)
+{
+	spip_query("UPDATE spip_articles SET id_trad=0 WHERE id_article=" . $r[1]);
+	// Si l'ancien groupe ne comporte plus qu'un seul article
+	// mettre a zero.
+
+	$cpt = spip_fetch_array(spip_query("SELECT COUNT(*) AS n FROM spip_articles WHERE id_trad=" . $r[2]));
+
+	if ($cpt['n'] == 1)
+		spip_query("UPDATE spip_articles SET id_trad = 0 WHERE id_trad=" . $r[2]);
 }
 ?>
diff --git a/ecrire/action/tourner.php b/ecrire/action/tourner.php
index 9f06119b89..d82856a901 100644
--- a/ecrire/action/tourner.php
+++ b/ecrire/action/tourner.php
@@ -29,9 +29,11 @@ function action_tourner_dist() {
 
 	if (!preg_match(",^\W*(\d+)\W?(-?\d+)$,", $arg, $r)) {
 		spip_log("action_tourner_dist $arg pas compris");
-		return;
-	}
+	} else  action_tourner_post($r);
+}
 
+function action_tourner_post($r)
+{
 	$arg = $r[1];
 	$result = spip_query("SELECT fichier FROM spip_documents WHERE id_document=$arg");
 
diff --git a/ecrire/action/virtualiser.php b/ecrire/action/virtualiser.php
index db13775646..ffcddec86a 100644
--- a/ecrire/action/virtualiser.php
+++ b/ecrire/action/virtualiser.php
@@ -28,10 +28,13 @@ function action_virtualiser_dist() {
 
 	if (!preg_match(",^\W*(\d+)$,", $arg, $r)) {
 		 spip_log("action_virtualiser_dist $arg $url pas compris");
-	} else {
-		$url = eregi_replace("^ *https?://$", "", rtrim($url));
-		if ($url) $url = corriger_caracteres("=$url");
-		spip_query("UPDATE spip_articles SET chapo=" . spip_abstract_quote($url) . ", date_modif=NOW() WHERE id_article=" . $r[1]);
-	}
+	} else action_virtualiser_post($r);
+}
+
+function action_virtualiser_post($r)
+{
+	$url = eregi_replace("^ *https?://$", "", rtrim($url));
+	if ($url) $url = corriger_caracteres("=$url");
+	spip_query("UPDATE spip_articles SET chapo=" . spip_abstract_quote($url) . ", date_modif=NOW() WHERE id_article=" . $r[1]);
 }
 ?>
-- 
GitLab