From 7ca8e9f749f389632d10d9bec3b3b48e893e964a Mon Sep 17 00:00:00 2001
From: Fil <fil@rezo.net>
Date: Thu, 8 Aug 2002 10:34:35 +0000
Subject: [PATCH] Creation d'article sur le POST (articles.php3) et non sur le
 GET (articles_edit.php3)

---
 ecrire/articles.php3      |   7 +++
 ecrire/articles_edit.php3 | 115 ++++++++++++++++++--------------------
 2 files changed, 60 insertions(+), 62 deletions(-)

diff --git a/ecrire/articles.php3 b/ecrire/articles.php3
index 206ee0c298..e25b00bc71 100644
--- a/ecrire/articles.php3
+++ b/ecrire/articles.php3
@@ -15,6 +15,13 @@ $articles_ps = lire_meta("articles_ps");
 $articles_redac = lire_meta("articles_redac");
 $articles_mots = lire_meta("articles_mots");
 
+if ($id_article==0 AND $new=='oui') {
+	spip_query("INSERT INTO spip_articles (id_rubrique, statut, date) VALUES ($id_rubrique, 'prepa', NOW())");
+	$id_article = mysql_insert_id();
+	spip_query("DELETE FROM spip_auteurs_articles WHERE id_article = $id_article");
+	spip_query("INSERT INTO spip_auteurs_articles (id_auteur, id_article) VALUES ($connect_id_auteur, $id_article)");
+}
+
 $requete_fichier = "articles.php3?id_article=$id_article";
 // Initialiser doublons pour documents (completes par "propre($texte)")
 $id_doublons['documents'] = "0";
diff --git a/ecrire/articles_edit.php3 b/ecrire/articles_edit.php3
index 7ba349fd95..ce39171e84 100644
--- a/ecrire/articles_edit.php3
+++ b/ecrire/articles_edit.php3
@@ -11,73 +11,60 @@ $articles_ps = lire_meta("articles_ps");
 $articles_redac = lire_meta("articles_redac");
 $articles_mots = lire_meta("articles_mots");
 
+// securite
+$id_article = (int) $id_article;
+unset ($flag_editable);
 
 //
-// Gestion des modifications
+// Creation de l'objet article
 //
 
-if ($new == "oui") {
-	$id_rubrique = (int) $id_rubrique;
-
-	$mydate = date("YmdHis", time() - 24 * 3600);
-	$query = "DELETE FROM spip_articles WHERE (statut = 'poubelle') && (maj < $mydate)";
+if ($id_article) {
+	$query = "UPDATE spip_articles SET date_modif=NOW(), auteur_modif=$connect_id_auteur WHERE id_article=$id_article";
 	$result = spip_query($query);
+	$id_article_bloque = $id_article;	// message pour inc_presentation
 
-	$forums_publics = substr(lire_meta('forums_publics'),0,3);
-
-	$query = "INSERT INTO spip_articles (titre, id_rubrique, date, statut, accepter_forum) VALUES ('Nouvel article', '$id_rubrique', NOW(), 'poubelle', '$forums_publics')";
+	// Recuperer les donnees de l'article
+	$query = "SELECT * FROM spip_articles WHERE id_article=$id_article";
 	$result = spip_query($query);
-	$id_article = mysql_insert_id();
 
-	$query = "DELETE FROM spip_auteurs_articles WHERE id_article=$id_article";
-	$result = spip_query($query);
-	$query = "INSERT INTO spip_auteurs_articles (id_auteur, id_article) VALUES('$connect_id_auteur','$id_article')";
-	$result = spip_query($query);
-}
-
-// Indication de modif en cours
-$query = "UPDATE spip_articles SET date_modif=NOW(), auteur_modif='$connect_id_auteur'  WHERE id_article='$id_article'";
-$result = spip_query($query);
-$id_article_bloque = $id_article;	// message pour inc_presentation
-
-// Recuperer les donnees de l'article
-$query = "SELECT * FROM spip_articles WHERE id_article='$id_article'";
-$result = spip_query($query);
-
-while ($row = mysql_fetch_array($result)) {
-	$id_article = $row["id_article"];
-	$surtitre = $row["surtitre"];
-	$titre = $row["titre"];
-	$soustitre = $row["soustitre"];
-	$id_rubrique = $row["id_rubrique"];
-	$descriptif = $row["descriptif"];
-	$chapo = $row["chapo"];
-	$texte = $row["texte"];
-	$ps = $row["ps"];
-	$date = $row["date"];
-	$statut = $row['statut'];
-	$date_redac = $row['date_redac'];
-    	if (ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})",$date_redac,$regs)){
-	        $mois_redac = $regs[2];
-	        $jour_redac = $regs[3];
-	        $annee_redac = $regs[1];
-	        if ($annee_redac > 4000) $annee_redac -= 9000;
-	}
-	$pour_doublons = propre ("$titre.$surtitre.$soustitre.$descriptif.$chapo.$texte");
-
-	$query = "SELECT * FROM spip_auteurs_articles WHERE id_article=$id_article AND id_auteur=$connect_id_auteur";
-	$result_auteur = spip_query($query);
+	if ($row = mysql_fetch_array($result)) {
+		$id_article = $row["id_article"];
+		$surtitre = $row["surtitre"];
+		$titre = $row["titre"];
+		$soustitre = $row["soustitre"];
+		$id_rubrique = $row["id_rubrique"];
+		$descriptif = $row["descriptif"];
+		$chapo = $row["chapo"];
+		$texte = $row["texte"];
+		$ps = $row["ps"];
+		$date = $row["date"];
+		$statut = $row['statut'];
+		$date_redac = $row['date_redac'];
+	    	if (ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})",$date_redac,$regs)){
+		        $mois_redac = $regs[2];
+		        $jour_redac = $regs[3];
+		        $annee_redac = $regs[1];
+		        if ($annee_redac > 4000) $annee_redac -= 9000;
+		}
 
-	$flag_auteur = (mysql_num_rows($result_auteur) > 0);
+		$query = "SELECT * FROM spip_auteurs_articles WHERE id_article=$id_article AND id_auteur=$connect_id_auteur";
+		$result_auteur = spip_query($query);
+		$flag_auteur = (mysql_num_rows($result_auteur) > 0);
 
-	$flag_editable = (acces_rubrique($id_rubrique) OR ($flag_auteur > 0 AND ($statut == 'prepa' OR $statut == 'prop' OR $new == 'oui')));
+		$flag_editable = (acces_rubrique($id_rubrique) OR ($flag_auteur > 0 AND ($statut == 'prepa' OR $statut == 'prop' OR $new == 'oui')));
+	}
+}
+else if ($new=='oui') {
+	$flag_editable = true;
+	$titre = 'Nouvel article';
 }
 
 if (!$flag_editable) {
-	die("<H3>Acc&egrave;s interdit</H3>");
+	die ("<H3>Acc&egrave;s interdit</H3>");
 }
 
-if ($id_document) {
+if ($id_article && $id_document) {
 	$query_doc = "SELECT * FROM spip_documents_articles WHERE id_document=$id_document AND id_article=$id_article";
 	$result_doc = spip_query($query_doc);
 	$flag_document_editable = (mysql_num_rows($result_doc) > 0);
@@ -85,7 +72,6 @@ if ($id_document) {
 	$flag_document_editable = false;
 }
 
-
 $modif_document = $GLOBALS['modif_document'];
 if ($modif_document == 'oui' AND $flag_document_editable) {
 	$titre = addslashes(corriger_caracteres($titre));
@@ -127,7 +113,6 @@ function coupe_trop_long($texte){	// utile pour les textes > 32ko
 debut_page("Modifier : $titre", "documents", "articles");
 
 
-
 debut_grand_cadre();
 
 afficher_parents($id_rubrique);
@@ -287,17 +272,22 @@ echo "<p>";
 echo "<P><HR><P>";
 
 	$titre = entites_html($titre);
-	$soustitre = htmlspecialchars($soustitre);
-	$surtitre = htmlspecialchars($surtitre);
+	$soustitre = entites_html($soustitre);
+	$surtitre = entites_html($surtitre);
 
-	$descriptif = htmlspecialchars($descriptif);
-	$chapo = htmlspecialchars($chapo);
+	$descriptif = entites_html($descriptif);
+	$chapo = entites_html($chapo);
 	$texte = entites_html($texte);
-	$ps = htmlspecialchars($ps);
+	$ps = entites_html($ps);
 
-	echo "<FORM ACTION='articles.php3?id_article=$id_article' METHOD='post'>";
+	$lien = 'articles.php3';
+	if ($id_article) $lien .= "?id_article=$id_article";
+	echo "<FORM ACTION='$lien' METHOD='post'>\n";
 
-	echo "<INPUT TYPE='Hidden' NAME='id_article' VALUE=\"$id_article\">";
+	if ($id_article)
+		echo "<INPUT TYPE='Hidden' NAME='id_article' VALUE='$id_article'>";
+	else if ($new == 'oui')
+		echo "<INPUT TYPE='Hidden' NAME='new' VALUE='oui'>";
 
 	if (($articles_surtitre != "non") OR strlen($surtitre) > 0) {
 		echo "<B>Sur-titre</B>";
@@ -443,7 +433,8 @@ echo "<P><HR><P>";
 		echo "<INPUT TYPE='hidden' NAME='ps' VALUE=\"$ps\">";
 	}
 
-	echo "<INPUT TYPE='Hidden' NAME='date' VALUE=\"$date\" SIZE='40'><P>";
+	if ($date)
+		echo "<INPUT TYPE='Hidden' NAME='date' VALUE=\"$date\" SIZE='40'><P>";
 
 	if ($new == "oui")
 		echo "<INPUT TYPE='Hidden' NAME='statut_nouv' VALUE=\"prepa\" SIZE='40'><P>";
-- 
GitLab