Changeset 54450 in spip-zone


Ignore:
Timestamp:
Nov 14, 2011, 6:39:14 PM (8 years ago)
Author:
cedric@…
Message:

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)

Location:
_core_/plugins/medias
Files:
1 added
8 edited

Legend:

Unmodified
Added
Removed
  • _core_/plugins/medias/action/ajouter_documents.php

    r51182 r54450  
    162162                $champs['fichier'] = set_spip_doc($champs['fichier']);
    163163        }
     164
     165        // si le media est pas renseigne, le faire, en fonction de l'extension
     166        if (!isset($champs['media'])){
     167                $champs['media'] = sql_getfetsel('media_defaut','spip_types_documents','extension='.sql_quote($champs['extension']));
     168        }
    164169       
    165170        // lier le parent si necessaire
     
    257262               
    258263          $ext = corriger_extension(strtolower($ext));
    259                 if ($res = sql_fetsel("extension,inclus,media", "spip_types_documents", "extension=" . sql_quote($ext) . " AND upload='oui'"))
     264                if ($res = sql_fetsel("extension,inclus,media_defaut as media", "spip_types_documents", "extension=" . sql_quote($ext) . " AND upload='oui'"))
    260265                        $infos = array_merge($infos,$res);
    261266        }
    262267        if (!$res){
    263                 if ($res = sql_fetsel("extension,inclus,media", "spip_types_documents", "extension='zip' AND upload='oui'")){
     268                if ($res = sql_fetsel("extension,inclus,media_defaut as media", "spip_types_documents", "extension='zip' AND upload='oui'")){
    264269                        $infos = array_merge($infos,$res);
    265270                        $res['autozip'] = true;
  • _core_/plugins/medias/action/editer_document.php

    r53576 r54450  
    9191                array(
    9292                 'titre', 'descriptif', 'date', 'taille', 'largeur','hauteur','mode','credits',
    93                  'fichier','distant','extension', 'id_vignette',
     93                 'fichier','distant','extension', 'id_vignette', 'media',
    9494                ),
    9595                // black list
  • _core_/plugins/medias/action/supprimer_tous_orphelins.php

    r44157 r54450  
    2424       
    2525        //critere sur le media
    26         if($media) {
    27                 $select = sql_get_select("extension","spip_types_documents as nnnn","media=".sql_quote($media));
    28                 $where[] = "spip_documents.extension IN ($select)";
    29         }
     26        if($media)
     27                $select = "media=".sql_quote($media);
    3028
    3129        //critere sur le distant
  • _core_/plugins/medias/base/medias.php

    r53158 r54450  
    2626        $interfaces['exceptions_des_tables']['documents']['extension_document']=array('types_documents', 'extension');
    2727        $interfaces['exceptions_des_tables']['documents']['mime_type']=array('types_documents', 'mime_type');
    28         $interfaces['exceptions_des_tables']['documents']['media']=array('types_documents', 'media');
     28        $interfaces['exceptions_des_tables']['documents']['media_document']=array('types_documents', 'media');
    2929
    3030        $interfaces['exceptions_des_jointures']['spip_documents']['id_forum']=array('spip_documents_liens','id_forum');
     
    5353                        "inclus"        => "ENUM('non', 'image', 'embed') DEFAULT 'non'  NOT NULL",
    5454                        "upload"        => "ENUM('oui', 'non') DEFAULT 'oui'  NOT NULL",
    55                         "media" => "varchar(10) DEFAULT 'file' NOT NULL",
     55                        "media_defaut" => "varchar(10) DEFAULT 'file' NOT NULL",
    5656                        "maj"   => "TIMESTAMP");
    5757
     
    132132                        "largeur"       => "integer",
    133133                        "hauteur"       => "integer",
     134                        "media" => "varchar(10) DEFAULT 'file' NOT NULL",
    134135                        "mode"  => "varchar(10) DEFAULT 'document' NOT NULL",
    135136                        "distant"       => "VARCHAR(3) DEFAULT 'non'",
     
    222223                'inclus' => $inclus,
    223224                'extension' => $extension,
    224                 'media' => $media,
     225                'media_defaut' => $media,
    225226                'upload' => 'oui'
    226227                );
  • _core_/plugins/medias/inc/renseigner_document.php

    r52471 r54450  
    8383        }
    8484  else {
    85           $media = sql_getfetsel('media','spip_types_documents','extension='.sql_quote($ext));
     85          $media = sql_getfetsel('media_defaut','spip_types_documents','extension='.sql_quote($ext));
    8686          if ($metadata = charger_fonction($media,"metadata",true)){
    8787                  $meta = $metadata($fichier);
  • _core_/plugins/medias/medias_administrations.php

    r53857 r54450  
    100100                array('creer_base_types_doc'),
    101101        );
     102
     103        $maj['1.0.0'] = array(
     104                // on cree le champ en defaut '?' pour reperer les nouveaux a peupler
     105                array('sql_alter',"TABLE spip_documents ADD media varchar(10) DEFAULT '?' NOT NULL"),
     106                array('medias_peuple_media_document'),
     107                // puis on retablit le bon defaut
     108                array('sql_alter',"TABLE spip_documents CHANGE media media varchar(10) DEFAULT 'file' NOT NULL"),
     109        );
     110        $maj['1.0.1'] = array(
     111                // puis on retablit le bon defaut
     112                array('sql_alter',"TABLE spip_types_documents CHANGE media media_defaut varchar(10) DEFAULT 'file' NOT NULL"),
     113        );
     114
    102115        include_spip('base/upgrade');
    103116        maj_plugin($nom_meta_base_version, $version_cible, $maj);
     
    116129                $config[] = 'spip_rubriques';
    117130        ecrire_meta('documents_objets',implode(',',$config));
     131}
     132
     133function medias_peuple_media_document(){
     134        $res = sql_select("DISTINCT extension","spip_documents","media=".sql_quote('?'));
     135        while($row = sql_fetch($res)){
     136                $media = sql_getfetsel('media_defaut','spip_types_documents','extension='.sql_quote($row['extension']));
     137                sql_updateq('spip_documents',array('media'=>$media),"media=".sql_quote('?').' AND extension='.sql_quote($row['extension']));
     138                if (time() >= _TIME_OUT)
     139                        return;
     140        }
    118141}
    119142
  • _core_/plugins/medias/paquet.xml

    r54418 r54450  
    22        prefix="medias"
    33        categorie="multimedia"
    4         version="2.6.0"
     4        version="2.7.0"
    55        etat="test"
    66        compatibilite="[3.0.0-alpha2;["
    77        logo="prive/themes/spip/images/portfolio-32.png"
    8         schema="0.16.0"
     8        schema="1.0.1"
    99>       
    1010
  • _core_/plugins/medias/prive/squelettes/inclure/mediatheque-navigation.html

    r46328 r54450  
    4646<B_types>
    4747<ul class='choix-type'>
    48 <BOUCLE_types(TYPES_DOCUMENTS){media=#ENV{media,''}}>
    49 <BOUCLE_compte(DOCUMENTS){id_rubrique ?}{id_article ?}{id_breve ?}{id_document ?}{recherche ?}{statut==.*}{extension} />
    50 [(#TOTAL_BOUCLE|oui)[<li>(#GET{self}|parametre_url{extension,#EXTENSION}|lien_ou_expose{#TITRE|concat{' (',#TOTAL_BOUCLE,')'},#ENV{extension}|=={#EXTENSION},ajax})<span> | </span></li>]]
    51 <//B_compte>
    52 </BOUCLE_types>
     48        <BOUCLE_types(TYPES_DOCUMENTS){par titre}{extension IN #ENV{media,''}|liste_extensions_utilisees}>
     49        <BOUCLE_compte(DOCUMENTS){id_rubrique ?}{id_article ?}{id_breve ?}{id_document ?}{recherche ?}{statut==.*}{extension}{media=#ENV{media}} />
     50        [(#_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>]]
     51        <//B_compte>
     52        </BOUCLE_types>
    5353</ul>
    5454</B_types>
Note: See TracChangeset for help on using the changeset viewer.