Skip to content
Extraits de code Groupes Projets
Valider a1f6242c rédigé par cedric@yterium.com's avatar cedric@yterium.com
Parcourir les fichiers

Le media d'un document (image, video, audio, file) utilise par convenance dans...

Le media d'un document (image, video, audio, file) utilise par convenance dans l'interface ne peut dependre en dur de l'extension du fichier :
avec oEmbed, on peut se retrouver a integrer toute sorte de media au format html
Du coup on revoit la structure de la base :
spip_types_documents porte un champ media_defaut (renommage de l'ancien media) utilise comme valeur par defaut du media si non renseigne quand un document est ajoute
spip_documents porte son propre champ media, qui est peuple en fonction de media_defaut, sauf si renseigne lors de l'ajout du document
(ie via fonction de description ou pipeline)
Revision du code partout ou on referencait media, en dispatchant sur l'un ou l'autre selon les cas
upgrade de la base (en deux fois)
parent 6a3f385a
Aucune branche associée trouvée
Étiquettes v2.7.0
Aucune requête de fusion associée trouvée
......@@ -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
......
......@@ -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;
}
......
......@@ -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'),
......
......@@ -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)
......
......@@ -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'
);
}
......
......@@ -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);
}
......
......@@ -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"];
......
<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>
......
......@@ -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>
......
<?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
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter