From 1be5891b83e162606795a7f4e209545d573b1097 Mon Sep 17 00:00:00 2001
From: "cedric@yterium.com" <>
Date: Sat, 5 May 2012 15:55:55 +0000
Subject: [PATCH] Ferme http://core.spip.org/issues/2679 : reparer les
 documents et le processus d'upgrade depuis spip 2.1

---
 base/medias.php            | 18 +++++++++---------
 medias_administrations.php | 23 +++++++++++++++--------
 paquet.xml                 |  2 +-
 3 files changed, 25 insertions(+), 18 deletions(-)

diff --git a/base/medias.php b/base/medias.php
index 09475776..e8531bc6 100644
--- a/base/medias.php
+++ b/base/medias.php
@@ -187,13 +187,13 @@ function medias_declarer_tables_objets_sql($tables){
  * @param string $serveur
  * @return void
  */
-function creer_base_types_doc($serveur='') {
+function creer_base_types_doc($serveur='', $champ_media="media_defaut") {
 	global $tables_images, $tables_sequences, $tables_documents, $tables_mime;
 	include_spip('base/typedoc');
 	include_spip('base/abstract_sql');
 
 	// charger en memoire tous les types deja definis pour limiter les requettes
-	$rows = sql_allfetsel('mime_type,titre,inclus,extension,media_defaut,upload,descriptif','spip_types_documents','','','','','',$serveur);
+	$rows = sql_allfetsel('mime_type,titre,inclus,extension,'.$champ_media.',upload,descriptif','spip_types_documents','','','','','',$serveur);
 	$deja = array();
 	foreach ($rows as $k=>$row){
 		$deja[$row['extension']] = &$rows[$k];
@@ -229,13 +229,13 @@ function creer_base_types_doc($serveur='') {
 		  $media = "video";
 
 		$set = array(
-						'mime_type' => $type_mime,
-						'titre' => $titre,
-						'inclus' => $inclus,
-						'extension' => $extension,
-						'media_defaut' => $media,
-						'upload' => 'oui',
-						'descriptif' => '',
+		        'mime_type' => $type_mime,
+		        'titre' => $titre,
+		        'inclus' => $inclus,
+		        'extension' => $extension,
+		        $champ_media => $media,
+		        'upload' => 'oui',
+		        'descriptif' => '',
 					);
 		if (!isset($deja[$extension])){
 			$insertions[] = $set;
diff --git a/medias_administrations.php b/medias_administrations.php
index 55a0b2ee..53d0af19 100644
--- a/medias_administrations.php
+++ b/medias_administrations.php
@@ -53,7 +53,7 @@ function medias_upgrade($nom_meta_base_version,$version_cible){
 	$maj = array();
 	$maj['create'] = array(
 		array('maj_tables',array('spip_documents','spip_documents_liens','spip_types_documents')),
-		array('creer_base_types_doc')
+		array('creer_base_types_doc','','media')
 	);
 	$maj['0.2.0'] = array(
 		array('sql_alter',"TABLE spip_documents ADD statut varchar(10) DEFAULT '0' NOT NULL"),
@@ -70,7 +70,7 @@ function medias_upgrade($nom_meta_base_version,$version_cible){
 	);
 	$maj['0.6.0'] = array(
 		array('sql_alter',"TABLE spip_types_documents ADD media varchar(10) DEFAULT 'file' NOT NULL"),
-		array('creer_base_types_doc'),
+		array('creer_base_types_doc','','media'),
 	);
 	$maj['0.7.0'] = array(
 		array('sql_alter',"TABLE spip_documents ADD credits varchar(255) DEFAULT '' NOT NULL"),
@@ -88,22 +88,22 @@ function medias_upgrade($nom_meta_base_version,$version_cible){
 		array('medias_maj_meta_documents'),
 	);
 	$maj['0.14.0'] = array(
-		array('creer_base_types_doc'),
+		array('creer_base_types_doc','','media'),
 	);
 	$maj['0.15.0'] = array(
-		array('creer_base_types_doc'),
+		array('creer_base_types_doc','','media'),
 	);
 	$maj['0.15.1'] = array(
 		array('sql_alter',"TABLE spip_documents CHANGE taille taille bigint"),
 	);
 	$maj['0.16.0'] = array(
-		array('creer_base_types_doc'),
+		array('creer_base_types_doc','','media'),
 	);
 
 	$maj['1.0.0'] = array(
 		// on cree le champ en defaut '?' pour reperer les nouveaux a peupler
 		array('sql_alter',"TABLE spip_documents ADD media varchar(10) DEFAULT '?' NOT NULL"),
-		array('medias_peuple_media_document'),
+		array('medias_peuple_media_document', 'media'),
 		// puis on retablit le bon defaut
 		array('sql_alter',"TABLE spip_documents CHANGE media media varchar(10) DEFAULT 'file' NOT NULL"),
 	);
@@ -119,6 +119,13 @@ function medias_upgrade($nom_meta_base_version,$version_cible){
 	$maj['1.1.1'] = array(
 		array('creer_base_types_doc'),
 	);
+	// reparer les media sur les file suite a upgrade rate depuis SPIP 2.x
+	$maj['1.2.0'] = array(
+		// on remet en ? tous les media=file
+		array('sql_updateq',"spip_documents",array('media'=>'?'),"media='file'"),
+		// et on repeuple
+		array('medias_peuple_media_document'),
+	);
 
 
 	include_spip('base/upgrade');
@@ -140,11 +147,11 @@ function medias_maj_meta_documents(){
 	ecrire_meta('documents_objets',implode(',',$config));
 }
 
-function medias_peuple_media_document(){
+function medias_peuple_media_document($champ_media="media_defaut"){
 	$res = sql_select("DISTINCT extension","spip_documents","media=".sql_quote('?'));
 	while($row = sql_fetch($res)){
 		// attention ici c'est encore le champ media, car on le renomme juste apres
-		$media = sql_getfetsel('media','spip_types_documents','extension='.sql_quote($row['extension']));
+		$media = sql_getfetsel($champ_media,'spip_types_documents','extension='.sql_quote($row['extension']));
 		sql_updateq('spip_documents',array('media'=>$media),"media=".sql_quote('?').' AND extension='.sql_quote($row['extension']));
 		if (time() >= _TIME_OUT)
 			return;
diff --git a/paquet.xml b/paquet.xml
index a8b253ef..00a96f9c 100644
--- a/paquet.xml
+++ b/paquet.xml
@@ -5,7 +5,7 @@
 	etat="stable"
 	compatibilite="[3.0.0-alpha2;["
 	logo="prive/themes/spip/images/portfolio-32.png"
-	schema="1.1.1"
+	schema="1.2.0"
 >
 
 	<nom>Medias</nom>
-- 
GitLab