diff --git a/.gitattributes b/.gitattributes index ddd8631cb4864c860276c4bf2388d3f436a5c5e8..4f80a59141307e47f76a82e91cdc6590145f7735 100644 --- a/.gitattributes +++ b/.gitattributes @@ -139,6 +139,7 @@ prive/squelettes/inclure/document_infos.html -text prive/squelettes/inclure/mediatheque-choisir.html -text prive/squelettes/inclure/mediatheque-galerie.html -text prive/squelettes/inclure/mediatheque-navigation.html -text +prive/squelettes/inclure/mediatheque-navigation_fonctions.php -text prive/squelettes/inclure/portfolio-documents.html -text prive/squelettes/navigation/document_edit.html -text prive/squelettes/top/documents.html -text diff --git a/action/ajouter_documents.php b/action/ajouter_documents.php index 066d26665902e638080fa2e4a2c933a6f2447916..b3428c499f9ac12bf3553e9a67c0297c94efc4e9 100644 --- a/action/ajouter_documents.php +++ b/action/ajouter_documents.php @@ -161,6 +161,11 @@ function action_ajouter_un_document_dist($id_document, $file, $objet, $id_objet, unset($champs['inclus']); $champs['fichier'] = set_spip_doc($champs['fichier']); } + + // si le media est pas renseigne, le faire, en fonction de l'extension + if (!isset($champs['media'])){ + $champs['media'] = sql_getfetsel('media_defaut','spip_types_documents','extension='.sql_quote($champs['extension'])); + } // lier le parent si necessaire if ($id_objet=intval($id_objet) AND $objet) @@ -256,11 +261,11 @@ function verifier_upload_autorise($source, $mode=''){ AND $ext = $match[1]){ $ext = corriger_extension(strtolower($ext)); - if ($res = sql_fetsel("extension,inclus,media", "spip_types_documents", "extension=" . sql_quote($ext) . " AND upload='oui'")) + if ($res = sql_fetsel("extension,inclus,media_defaut as media", "spip_types_documents", "extension=" . sql_quote($ext) . " AND upload='oui'")) $infos = array_merge($infos,$res); } if (!$res){ - if ($res = sql_fetsel("extension,inclus,media", "spip_types_documents", "extension='zip' AND upload='oui'")){ + if ($res = sql_fetsel("extension,inclus,media_defaut as media", "spip_types_documents", "extension='zip' AND upload='oui'")){ $infos = array_merge($infos,$res); $res['autozip'] = true; } diff --git a/action/editer_document.php b/action/editer_document.php index 2ccb2e358ae46b10e36b144cf9cf24aa6e8a8ada..4df438698eed966b33f0b35922c4309d9a3fa751 100644 --- a/action/editer_document.php +++ b/action/editer_document.php @@ -90,7 +90,7 @@ function document_modifier($id_document, $set=false) { // white list array( 'titre', 'descriptif', 'date', 'taille', 'largeur','hauteur','mode','credits', - 'fichier','distant','extension', 'id_vignette', + 'fichier','distant','extension', 'id_vignette', 'media', ), // black list array('parents', 'ajout_parents'), diff --git a/action/supprimer_tous_orphelins.php b/action/supprimer_tous_orphelins.php index 6920654a9fc4e41c1e4a8295b8d207abd4874bae..6964bf1f604e2ed8aecd811fd4a7026759224f7c 100644 --- a/action/supprimer_tous_orphelins.php +++ b/action/supprimer_tous_orphelins.php @@ -23,10 +23,8 @@ function action_supprimer_tous_orphelins() { list($media,$distant,$statut,$sanstitre) = explode('/',$arg); //critere sur le media - if($media) { - $select = sql_get_select("extension","spip_types_documents as nnnn","media=".sql_quote($media)); - $where[] = "spip_documents.extension IN ($select)"; - } + if($media) + $select = "media=".sql_quote($media); //critere sur le distant if($distant) diff --git a/base/medias.php b/base/medias.php index 9fb2281672978a3a9f90334542202e8d187d9138..80eb8b6469572a9eb0ee4155b7f883a56129a9e2 100644 --- a/base/medias.php +++ b/base/medias.php @@ -25,7 +25,7 @@ function medias_declarer_tables_interfaces($interfaces) { $interfaces['exceptions_des_tables']['documents']['type_document']=array('types_documents', 'titre'); $interfaces['exceptions_des_tables']['documents']['extension_document']=array('types_documents', 'extension'); $interfaces['exceptions_des_tables']['documents']['mime_type']=array('types_documents', 'mime_type'); - $interfaces['exceptions_des_tables']['documents']['media']=array('types_documents', 'media'); + $interfaces['exceptions_des_tables']['documents']['media_document']=array('types_documents', 'media'); $interfaces['exceptions_des_jointures']['spip_documents']['id_forum']=array('spip_documents_liens','id_forum'); $interfaces['exceptions_des_jointures']['spip_documents']['vu']=array('spip_documents_liens', 'vu'); @@ -52,7 +52,7 @@ function medias_declarer_tables_principales($tables_principales) { "mime_type" => "varchar(100) DEFAULT '' NOT NULL", "inclus" => "ENUM('non', 'image', 'embed') DEFAULT 'non' NOT NULL", "upload" => "ENUM('oui', 'non') DEFAULT 'oui' NOT NULL", - "media" => "varchar(10) DEFAULT 'file' NOT NULL", + "media_defaut" => "varchar(10) DEFAULT 'file' NOT NULL", "maj" => "TIMESTAMP"); $spip_types_documents_key = array( @@ -131,6 +131,7 @@ function medias_declarer_tables_objets_sql($tables){ "taille" => "bigint", "largeur" => "integer", "hauteur" => "integer", + "media" => "varchar(10) DEFAULT 'file' NOT NULL", "mode" => "varchar(10) DEFAULT 'document' NOT NULL", "distant" => "VARCHAR(3) DEFAULT 'non'", "statut" => "varchar(10) DEFAULT '0' NOT NULL", @@ -221,7 +222,7 @@ function creer_base_types_doc($serveur='') { 'titre' => $titre, 'inclus' => $inclus, 'extension' => $extension, - 'media' => $media, + 'media_defaut' => $media, 'upload' => 'oui' ); } diff --git a/inc/renseigner_document.php b/inc/renseigner_document.php index 9b185f8ef1d55f40582180878b573a1497396fab..343afe91d8f8e9a9b89186d535e360cb98342967 100644 --- a/inc/renseigner_document.php +++ b/inc/renseigner_document.php @@ -82,7 +82,7 @@ function renseigner_taille_dimension_image($fichier,$ext){ $meta = $metadata($fichier); } else { - $media = sql_getfetsel('media','spip_types_documents','extension='.sql_quote($ext)); + $media = sql_getfetsel('media_defaut','spip_types_documents','extension='.sql_quote($ext)); if ($metadata = charger_fonction($media,"metadata",true)){ $meta = $metadata($fichier); } diff --git a/medias_administrations.php b/medias_administrations.php index 4e83216b9c80668d5859ac15ec7abe8224d319d7..36ef49fe40285ce3b988b0c31df4084244e99806 100644 --- a/medias_administrations.php +++ b/medias_administrations.php @@ -99,6 +99,19 @@ function medias_upgrade($nom_meta_base_version,$version_cible){ $maj['0.16.0'] = array( array('creer_base_types_doc'), ); + + $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'), + // puis on retablit le bon defaut + array('sql_alter',"TABLE spip_documents CHANGE media media varchar(10) DEFAULT 'file' NOT NULL"), + ); + $maj['1.0.1'] = array( + // puis on retablit le bon defaut + array('sql_alter',"TABLE spip_types_documents CHANGE media media_defaut varchar(10) DEFAULT 'file' NOT NULL"), + ); + include_spip('base/upgrade'); maj_plugin($nom_meta_base_version, $version_cible, $maj); @@ -117,6 +130,16 @@ function medias_maj_meta_documents(){ ecrire_meta('documents_objets',implode(',',$config)); } +function medias_peuple_media_document(){ + $res = sql_select("DISTINCT extension","spip_documents","media=".sql_quote('?')); + while($row = sql_fetch($res)){ + $media = sql_getfetsel('media_defaut','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; + } +} + /* function medias_install($action,$prefix,$version_cible){ $version_base = $GLOBALS[$prefix."_base_version"]; diff --git a/paquet.xml b/paquet.xml index 78d2adb2077525b7dc53bbfac7df9be910bdc014..3742036bb78da9f20e97282adecde7bbae98d4cc 100644 --- a/paquet.xml +++ b/paquet.xml @@ -1,11 +1,11 @@ <paquet prefix="medias" categorie="multimedia" - version="2.6.0" + version="2.7.0" etat="test" compatibilite="[3.0.0-alpha2;[" logo="prive/themes/spip/images/portfolio-32.png" - schema="0.16.0" + schema="1.0.1" > <nom>Medias</nom> diff --git a/prive/squelettes/inclure/mediatheque-navigation.html b/prive/squelettes/inclure/mediatheque-navigation.html index abcbc098065a39566d2a5e53414cef459b436265..7e174e4e36eac5b49c29839ffc57f4dc3faca6bd 100644 --- a/prive/squelettes/inclure/mediatheque-navigation.html +++ b/prive/squelettes/inclure/mediatheque-navigation.html @@ -45,11 +45,11 @@ <B_types> <ul class='choix-type'> -<BOUCLE_types(TYPES_DOCUMENTS){media=#ENV{media,''}}> -<BOUCLE_compte(DOCUMENTS){id_rubrique ?}{id_article ?}{id_breve ?}{id_document ?}{recherche ?}{statut==.*}{extension} /> -[(#TOTAL_BOUCLE|oui)[<li>(#GET{self}|parametre_url{extension,#EXTENSION}|lien_ou_expose{#TITRE|concat{' (',#TOTAL_BOUCLE,')'},#ENV{extension}|=={#EXTENSION},ajax})<span> | </span></li>]] -<//B_compte> -</BOUCLE_types> + <BOUCLE_types(TYPES_DOCUMENTS){par titre}{extension IN #ENV{media,''}|liste_extensions_utilisees}> + <BOUCLE_compte(DOCUMENTS){id_rubrique ?}{id_article ?}{id_breve ?}{id_document ?}{recherche ?}{statut==.*}{extension}{media=#ENV{media}} /> + [(#_compte:TOTAL_BOUCLE|oui)[<li>(#GET{self}|parametre_url{extension,#EXTENSION}|lien_ou_expose{#TITRE|concat{' (',#_compte:TOTAL_BOUCLE,')'},#ENV{extension}|=={#EXTENSION},ajax})<span> | </span></li>]] + <//B_compte> + </BOUCLE_types> </ul> </B_types> diff --git a/prive/squelettes/inclure/mediatheque-navigation_fonctions.php b/prive/squelettes/inclure/mediatheque-navigation_fonctions.php new file mode 100644 index 0000000000000000000000000000000000000000..3429dfff26bee87d42a4ab330155338233e4216b --- /dev/null +++ b/prive/squelettes/inclure/mediatheque-navigation_fonctions.php @@ -0,0 +1,19 @@ +<?php + +/***************************************************************************\ + * SPIP, Systeme de publication pour l'internet * + * * + * Copyright (c) 2001-2011 * + * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * + * * + * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * + * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * +\***************************************************************************/ + + +if (!defined('_ECRIRE_INC_VERSION')) return; + + +function liste_extensions_utilisees($media){ + return $media?array_map('reset',sql_allfetsel('extension','spip_documents','media='.sql_quote($media))):array(); +} \ No newline at end of file