From 8f56c240d5a36bcf94b32bd49cd1369410b3cf04 Mon Sep 17 00:00:00 2001
From: ARNO* <arno@rezo.net>
Date: Thu, 11 Jul 2002 15:04:17 +0000
Subject: [PATCH] Import/export complete

---
 ecrire/export_all.php3  | 10 ++++++++--
 ecrire/inc_base.php3    |  9 ++++++++-
 ecrire/inc_export.php3  | 22 ++++++++++++++++++++++
 ecrire/inc_import.php3  | 11 +++++++++++
 ecrire/inc_version.php3 |  2 +-
 5 files changed, 50 insertions(+), 4 deletions(-)

diff --git a/ecrire/export_all.php3 b/ecrire/export_all.php3
index 8ae5bd2165..d149bac219 100644
--- a/ecrire/export_all.php3
+++ b/ecrire/export_all.php3
@@ -23,7 +23,7 @@ if (!$debut_limit) $debut_limit = 0;
 
 install_debut_html("Sauvegarde");
 
-if (!$etape) echo "Si la sauvegarde a &eacute;chou&eacute; (&laquo;Maximum execution time exceeded&raquo;), <a href='export_all.php3?etape=1&gz=$gz'>proc&eacute;dez &eacute;tape par &eacute;tape</a><p>.";
+if (!$etape) echo "<p><font size=2>Si la sauvegarde a &eacute;chou&eacute; (&laquo;Maximum execution time exceeded&raquo;), <a href='export_all.php3?etape=1&gz=$gz'>proc&eacute;dez &eacute;tape par &eacute;tape</a>.</font><p>";
 
 
 if ($etape < 2){
@@ -78,13 +78,19 @@ export_objets($query, "syndic", $f, $gz, $etape, 13, "Sauvegarder les sites r&ea
 $query = "SELECT * FROM spip_syndic_articles".$debug_limit;
 export_objets($query, "syndic_article", $f, $gz, $etape, 14, "Sauvegarder les articles des sites r&eacute;f&eacute;renc&eacute;s");
 
+$query = "SELECT * FROM spip_visites".$debug_limit;
+export_objets($query, "spip_visite", $f, $gz, $etape, 15, "Sauvegarder les visites");
+
+$query = "SELECT * FROM spip_visites_referers".$debug_limit;
+export_objets($query, "spip_referers", $f, $gz, $etape, 16, "Sauvegarder les referers");
+
 
 if (!$etape OR $etape == 14){
 	$_fputs ($f, build_end_tag("SPIP")."\n");
 
 
 
-	echo "<p>La base a &eacute;t&eacute; sauvegard&eacute;e dans <b>ecrire/data/$archive</b>.\n";
+	echo "<p><b>Sauvegarde r&eacute;ussie.</b> La base a &eacute;t&eacute; sauvegard&eacute;e dans <b>ecrire/data/$archive</b>. Vous pouvez <a href='index.php3'>retourner &agrave; la gestion</a> de votre site.\n";
 }
 else {
 	$etape_suivante = $etape + 1;
diff --git a/ecrire/inc_base.php3 b/ecrire/inc_base.php3
index 45f80f166a..f649068a1b 100644
--- a/ecrire/inc_base.php3
+++ b/ecrire/inc_base.php3
@@ -268,7 +268,8 @@ function creer_base() {
 	$query = "CREATE TABLE spip_visites (
 		date datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
 		type varchar(16) NOT NULL,
-		visites bigint(21) DEFAULT '0' NOT NULL)";
+		visites bigint(21) DEFAULT '0' NOT NULL,
+		maj TIMESTAMP)";
 	$result = spip_query($query);
 
 	$query = "CREATE TABLE spip_visites_referers (
@@ -278,6 +279,7 @@ function creer_base() {
 		referer_md5 varchar(16) NOT NULL,
 		type varchar(16) NOT NULL,
 		visites bigint(21) DEFAULT '0' NOT NULL,
+		maj TIMESTAMP, 
 		PRIMARY KEY (id_referer),
 		KEY type (type),
 		KEY referer_md5 (referer_md5))";
@@ -857,6 +859,11 @@ function maj_base() {
 		spip_query($query);
 	}
 
+	if ($version_installee < 1.437) {
+		spip_query("ALTER TABLE spip_visites ADD maj TIMESTAMP");
+		spip_query("ALTER TABLE spip_visites_referers ADD maj TIMESTAMP");
+	}
+
 
 	//
 	// Mettre a jour le numero de version installee
diff --git a/ecrire/inc_export.php3 b/ecrire/inc_export.php3
index 586025ce99..7a487a2cfa 100644
--- a/ecrire/inc_export.php3
+++ b/ecrire/inc_export.php3
@@ -126,6 +126,28 @@ function export_objets($query, $type, $file = 0, $gz = false, $etape_en_cours=""
 				}
 				mysql_free_result($res2);
 			}
+			else if ($type == 'breve') {
+				$query = 'SELECT id_document FROM spip_documents_breves WHERE id_breve='.$row[0];
+				$res2 = spip_query($query);
+				while($row2 = mysql_fetch_array($res2)) {
+					$string .= '<lien:document>' . $row2['id_document'] . '</lien:document>' . "\n";
+				}
+				mysql_free_result($res2);
+			}
+			else if ($type == 'rubrique') {
+				$query = 'SELECT id_document FROM spip_documents_rubriques WHERE id_rubrique='.$row[0];
+				$res2 = spip_query($query);
+				while($row2 = mysql_fetch_array($res2)) {
+					$string .= '<lien:document>' . $row2['id_document'] . '</lien:document>' . "\n";
+				}
+				mysql_free_result($res2);
+				$query = 'SELECT id_auteur FROM spip_auteurs_rubriques WHERE id_rubrique='.$row[0];
+				$res2 = spip_query($query);
+				while($row2 = mysql_fetch_array($res2)) {
+					$string .= '<lien:auteur>' . $row2['id_auteur'] . '</lien:auteur>' . "\n";
+				}
+				mysql_free_result($res2);
+			}
 			else if ($type == 'auteur') {
 				$query = 'SELECT id_rubrique FROM spip_auteurs_rubriques WHERE id_auteur='.$row[0];
 				$res2 = spip_query($query);
diff --git a/ecrire/inc_import.php3 b/ecrire/inc_import.php3
index dc58039dbc..79bf534b54 100644
--- a/ecrire/inc_import.php3
+++ b/ecrire/inc_import.php3
@@ -202,6 +202,13 @@ function import_objet_1_2($f, $gz=false) {
 		spip_query("DELETE FROM spip_auteurs_articles WHERE id_article=$id_objet");
 		spip_query("DELETE FROM spip_documents_articles WHERE id_article=$id_objet");
 	}
+	else if ($type == 'rubrique') {
+		spip_query("DELETE FROM spip_auteurs_rubriques WHERE id_rubrique=$id_objet");
+		spip_query("DELETE FROM spip_documents_rubriques WHERE id_rubrique=$id_objet");
+	}
+	else if ($type == 'breve') {
+		spip_query("DELETE FROM spip_documents_breves WHERE id_breve=$id_objet");
+	}
 	else if ($type == 'mot') {
 		spip_query("DELETE FROM spip_mots_articles WHERE id_mot=$id_objet");
 		spip_query("DELETE FROM spip_mots_breves WHERE id_mot=$id_objet");
@@ -449,6 +456,10 @@ function import_all($f, $gz=false) {
 	spip_query($query);
 	$query = "DELETE FROM spip_signatures WHERE maj < $my_date";
 	spip_query($query);
+	$query = "DELETE FROM spip_visites WHERE maj < $my_date";
+	spip_query($query);
+	$query = "DELETE FROM spip_visites_referers WHERE maj < $my_date";
+	spip_query($query);
 
 	import_fin();
 
diff --git a/ecrire/inc_version.php3 b/ecrire/inc_version.php3
index b6625436c1..b158283cba 100644
--- a/ecrire/inc_version.php3
+++ b/ecrire/inc_version.php3
@@ -13,7 +13,7 @@ define("_ECRIRE_INC_VERSION", "1");
 //
 
 // version de la base
-$spip_version = 1.436;
+$spip_version = 1.437;
 
 // version de spip
 // (mettre a jour a la main et conserver la mention "CVS")
-- 
GitLab