From cdc0d0c4b1f497f2ecd514dbc56678aeee8bf5a3 Mon Sep 17 00:00:00 2001
From: "cedric@yterium.com" <>
Date: Sat, 26 Feb 2011 19:02:16 +0000
Subject: [PATCH] declarations des tables_objets : generaliser les jointures
 forum, documents et mots qui peuvent s'appliquer a n'importe quel objet de
 SPIP

---
 base/medias.php | 70 +++++++++++++++++++++++--------------------------
 1 file changed, 33 insertions(+), 37 deletions(-)

diff --git a/base/medias.php b/base/medias.php
index 5fe8dbc0..21fd3bfd 100644
--- a/base/medias.php
+++ b/base/medias.php
@@ -29,13 +29,6 @@ function medias_declarer_tables_interfaces($interfaces) {
 	
 	$interfaces['table_date']['types_documents']='date';
 
-	// TODO : dynamiser en fonction de la configuration
-	$interfaces['tables_jointures']['spip_articles'][]= 'documents_liens';
-	$interfaces['tables_jointures']['spip_documents'][]= 'documents_liens';
-	$interfaces['tables_jointures']['spip_documents'][]= 'types_documents';
-
-	$interfaces['tables_jointures']['spip_rubriques'][]= 'documents_liens';
-
 	$interfaces['table_des_traitements']['FICHIER']['documents']= 'get_spip_doc(%s)';
 
 	return $interfaces;
@@ -50,34 +43,6 @@ function medias_declarer_tables_interfaces($interfaces) {
  */
 function medias_declarer_tables_principales($tables_principales) {
 
-	$spip_documents = array(
-			"id_document"	=> "bigint(21) NOT NULL",
-			"id_vignette"	=> "bigint(21) DEFAULT '0' NOT NULL",
-			"extension"	=> "VARCHAR(10) DEFAULT '' NOT NULL",
-			"titre"	=> "text DEFAULT '' NOT NULL",
-			"date"	=> "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
-			"descriptif"	=> "text DEFAULT '' NOT NULL",
-			"fichier"	=> "text NOT NULL DEFAULT ''",
-			"taille"	=> "integer",
-			"largeur"	=> "integer",
-			"hauteur"	=> "integer",
-			"mode"	=> "varchar(10) DEFAULT 'document' NOT NULL",
-			"distant"	=> "VARCHAR(3) DEFAULT 'non'",
-			"statut" => "varchar(10) DEFAULT '0' NOT NULL",
-			"credits" => "varchar(255) DEFAULT '' NOT NULL",
-			"date_publication" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
-			"brise" => "tinyint DEFAULT 0",
-			"maj"	=> "TIMESTAMP");
-
-	$spip_documents_key = array(
-			"PRIMARY KEY"	=> "id_document",
-			"KEY id_vignette"	=> "id_vignette",
-			"KEY mode"	=> "mode",
-			"KEY extension"	=> "extension");
-	$spip_documents_join = array(
-			"id_document"=>"id_document",
-			"extension"=>"extension");
-
 	$spip_types_documents = array(
 			"extension"	=> "varchar(10) DEFAULT '' NOT NULL",
 			"titre"	=> "text DEFAULT '' NOT NULL",
@@ -92,8 +57,6 @@ function medias_declarer_tables_principales($tables_principales) {
 			"PRIMARY KEY"	=> "extension",
 			"KEY inclus"	=> "inclus");
 
-	$tables_principales['spip_documents'] =
-		array('field' => &$spip_documents,  'key' => &$spip_documents_key, 'join' => &$spip_documents_join);
 	$tables_principales['spip_types_documents']	=
 		array('field' => &$spip_types_documents, 'key' => &$spip_types_documents_key);
 
@@ -153,12 +116,45 @@ function medias_declarer_tables_objets_sql($tables){
 		'info_nb_objets' => 'medias:des_documents',
 		'titre' => "CASE WHEN length(titre)>0 THEN titre ELSE fichier END as titre, '' AS lang",
 		'date' => 'date',
+		'field' => array(
+			"id_document"	=> "bigint(21) NOT NULL",
+			"id_vignette"	=> "bigint(21) DEFAULT '0' NOT NULL",
+			"extension"	=> "VARCHAR(10) DEFAULT '' NOT NULL",
+			"titre"	=> "text DEFAULT '' NOT NULL",
+			"date"	=> "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
+			"descriptif"	=> "text DEFAULT '' NOT NULL",
+			"fichier"	=> "text NOT NULL DEFAULT ''",
+			"taille"	=> "integer",
+			"largeur"	=> "integer",
+			"hauteur"	=> "integer",
+			"mode"	=> "varchar(10) DEFAULT 'document' NOT NULL",
+			"distant"	=> "VARCHAR(3) DEFAULT 'non'",
+			"statut" => "varchar(10) DEFAULT '0' NOT NULL",
+			"credits" => "varchar(255) DEFAULT '' NOT NULL",
+			"date_publication" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
+			"brise" => "tinyint DEFAULT 0",
+			"maj"	=> "TIMESTAMP"
+		),
+		'key' => array(
+			"PRIMARY KEY"	=> "id_document",
+			"KEY id_vignette"	=> "id_vignette",
+			"KEY mode"	=> "mode",
+			"KEY extension"	=> "extension"
+		),
+		'join' => array(
+			"id_document"=>"id_document",
+			"extension"=>"extension"
+		),
+		'tables_jointures' => array('types_documents'),
 		'rechercher_champs' => array(
 			'titre' => 3, 'descriptif' => 1, 'fichier' => 1
 		),
 		'champs_versionnes' => array('id_vignette', 'titre', 'descriptif', 'hauteur', 'largeur', 'mode','distant'),
 	);
 
+	// jointures sur les forum pour tous les objets
+	$tables[]['tables_jointures'][]= 'documents_liens';
+
 	// recherche jointe sur les documents pour les articles et rubriques
 	$tables['spip_articles']['rechercher_jointures']['document'] = array('titre' => 2, 'descriptif' => 1);
 	$tables['spip_rubriques']['rechercher_jointures']['document'] = array('titre' => 2, 'descriptif' => 1);
-- 
GitLab