Changeset 74511 in spip-zone


Ignore:
Timestamp:
Jul 29, 2013, 11:27:44 PM (6 years ago)
Author:
kent1@…
Message:

Un début de truc qui affiche des choses

Location:
_plugins_/xmp_php/trunk
Files:
5 added
4 deleted
6 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/xmp_php/trunk/action/xmpphp_infos.php

    r74508 r74511  
    11<?php
    2 
     2/**
     3 * XMP php
     4 * Récupération des métadonnées XMP
     5 *
     6 * Auteur : kent1 (kent1@arscenic.info - http://www.kent1.info)
     7 * ©2011-2013 - Distribué sous licence GNU/GPL
     8 *
     9 */
     10 
    311if (!defined("_ECRIRE_INC_VERSION")) return;
    4 
    5 include_spip('inc/charsets');   # pour le nom de fichier
    6 include_spip('inc/actions');
    712
    813function action_xmpphp_infos_dist(){
     
    1116        $arg = $securiser_action();
    1217
    13         if (!preg_match(",^(-?)(\d+)\W(\w+)\W?(\d*)\W?(\d*)$,", $arg, $r)){
    14                 spip_log("action_infos_video_dist incompris: " . $arg);
    15                 $redirect = urldecode(_request('redirect'));
     18        if (!intval($arg)){
     19                spip_log("action_xmpphp_infos_dist incompris: " . $arg);
    1620                return;
    1721        }
    1822        else{
    19                 action_xmpphp_infos_post($r);
     23                spip_log($arg,'xmp');
     24                action_xmpphp_infos_post($arg);
     25                if(_request('redirect')){
     26                        $redirect = str_replace('&amp;','&',urldecode(_request('redirect')));
     27                        $GLOBALS['redirect'] = $redirect;
     28                }
    2029        }
    2130}
    2231
    23 function action_xmpphp_infos_post($r){
    24         list(, $sign, $id_objet, $objet, $id_document, $suite) = $r;
    25 
     32function action_xmpphp_infos_post($arg){
    2633        $recuperer_infos = charger_fonction('xmpphp_infos','inc');
    27         $infos = $recuperer_infos($id_document);
    28         if(_request("iframe") == 'iframe') {
    29                 $redirect = parametre_url(urldecode($iframe_redirect),"show_doc_infos",join(',',$documents_actifs),'&')."&iframe=iframe";
    30                 spip_log($redirect,'xmp');
    31         }else{
    32                 $redirect = urldecode(_request('redirect'));
    33                 spip_log($redirect,'xmp');
    34         }
    35         return $redirect;
     34        $infos = $recuperer_infos($arg);
     35        return $infos;
    3636}
    3737
  • _plugins_/xmp_php/trunk/base/xmpphp.php

    r74508 r74511  
    55 *
    66 * Auteur : kent1
    7  * ©2011 - Distribué sous licence GNU/GPL
     7 * ©2011-2013 - Distribué sous licence GNU/GPL
    88 *
    99 */
  • _plugins_/xmp_php/trunk/inc/xmpphp_infos.php

    r74508 r74511  
    44 * Récupération des métadonnées XMP
    55 *
    6  * Auteur : kent1
    7  * ©2011 - Distribué sous licence GNU/GPL
     6 * Auteur : kent1 (kent1@arscenic.info - www.kent1.info )
     7 * ©2011-2013 - Distribué sous licence GNU/GPL
    88 *
    99 */
     
    1111if (!defined("_ECRIRE_INC_VERSION")) return;
    1212
    13 function inc_xmpphp_infos_dist($id_document){
    14         if(!intval($id_document) OR !extension_loaded('xmpPHPToolkit'))
     13function inc_xmpphp_infos_dist($id_document=false,$fichier=null,$only_return=false){
     14        if((!intval($id_document) && !isset($fichier)) OR !extension_loaded('xmpPHPToolkit'))
    1515                return false;
    1616
    1717        include_spip('inc/documents');
    18         $document = sql_fetsel("docs.extension,docs.fichier,docs.taille,docs.mode", "spip_documents AS docs INNER JOIN spip_documents_liens AS L ON L.id_document=docs.id_document","L.id_document=".sql_quote($id_document));
    19         $chemin = $document['fichier'];
    20         $fichier = get_spip_doc($chemin);
    21        
    22         if(!file_exists($fichier)){
    23                 spip_log("Erreur : le fichier $fichier n'existe pas","xmp");
    24                 return;
     18        $fichier_tmp = false;
     19
     20        if($fichier && file_exists($fichier)){
     21                spip_log("XMP PHP : recuperation des infos du document $fichier","xmp");
     22        }elseif(is_numeric($id_document)){
     23                spip_log("XMP PHP : recuperation des infos du document $id_document","xmp");
     24                $chemin = sql_getfetsel("fichier", "spip_documents","id_document=".intval($id_document));
     25                $fichier = get_spip_doc($chemin);
     26                if(!file_exists($fichier)){
     27                        spip_log("Erreur : le fichier $fichier n'existe pas","xmp");
     28                        return false;
     29                }
    2530        }
     31
    2632        SXMPFiles::Initialize();
    2733        $xmpfiles = new SXMPFiles();
    2834        $xmpmeta = new SXMPMeta();
    29        
    3035        $xmpfiles->OpenFile($fichier);
    3136        $xmpfiles->GetXMP($xmpmeta);
     37        $xmpmeta->Sort();
    3238
    33         $xmpmeta->Sort();
    34        
    35         $a = $b = $c = $o = "";
     39        $a = $b = $c = $o = '';
    3640
    3741        $iterator = new SXMPIterator(&$xmpmeta);
    38         spip_log($xmpmeta,'xmp');
    3942        $content = array();
    4043        while($iterator->Next(&$a, &$b, &$c, &$o) == TRUE){
    4144                if(preg_match(',(.*):(.*)\[(.*)\](.*),',$b,$matches)){
    42                         spip_log($b,'xmp');
    4345                        if(!is_array($content[$matches[1]][$matches[2]])){
    44                                 if(is_null OR !$content[$matches[1]][$matches[2]]){
     46                                if(is_null OR !$content[$matches[1]][$matches[2]])
    4547                                        $content[$matches[1]][$matches[2]] = array();
    46                                 }else{
     48                                else
    4749                                        $content[$matches[1]][$matches[2]] = array($content[$matches[1]][$matches[2]]);
    48                                 }
    4950                        }
    5051                        if($matches[4]){
    5152                                if(!is_array($content[$matches[1]][$matches[2]][$matches[3]])){
    52                                         if(is_null($content[$matches[1]][$matches[2]][$matches[3]]) OR !$content[$matches[1]][$matches[2]][$matches[3]]){
    53                                                 spip_log($b.' est null','xmp');
     53                                        if(is_null($content[$matches[1]][$matches[2]][$matches[3]]) OR !$content[$matches[1]][$matches[2]][$matches[3]])
    5454                                                $content[$matches[1]][$matches[2]][$matches[3]] = array();
    55                                         }else{
     55                                        else
    5656                                                $content[$matches[1]][$matches[2]][$matches[3]] = array($content[$matches[1]][$matches[2]][$matches[3]]);
    57                                         }
    5857                                }
    59                                 $cle = str_replace('/?','',$matches[4]);
    60                                 $cle = str_replace('/','',$cle);
    61                                 spip_log($cle.' => '.$c,'xmp');
     58                                $cle = str_replace('/','',str_replace('/?','',$matches[4]));
    6259                                $content[$matches[1]][$matches[2]][$matches[3]][$cle] = $c;
    6360                        }
    64                         else{
     61                        else
    6562                                $content[$matches[1]][$matches[2]][$matches[3]] = $c;
    66                         }
    67                 }else if(preg_match(',(.*):(.*)\/(.*),',$b,$matches)){
    68                         spip_log($b,'xmp');
    69                         if(is_null($c) OR !$c){
    70                                 spip_log('c est null','xmp');
    71                         }else{
    72                                 $cle = str_replace('/?','',$matches[4]);
    73                                 $cle = str_replace('/','',$cle);
    74                                 $content[$matches[1]][$matches[2]][$matches[3]][$cle] = $c;
    75                         }
    76                 }else if(preg_match(',(.*):(.*),',$b,$matches)){
    77                         if(is_null($c) OR !$c){
    78                                
    79                         }else{
    80                                 $content[$matches[1]][$matches[2]] = $c;
    81                         }
    82                 }
     63                }else if(!is_null($c) && $c && preg_match(',(.*):(.*)\/(.*),',$b,$matches)){
     64                        $cle = str_replace('/','',str_replace('/?','',$matches[4]));
     65                        $content[$matches[1]][$matches[2]][$matches[3]][$cle] = $c;
     66                }else if(!is_null($c) && $c && preg_match(',(.*):(.*),',$b,$matches))
     67                        $content[$matches[1]][$matches[2]] = $c;
    8368        }
    8469
    8570        spip_log($content,'xmp');
    86        
     71
    8772        $xmpfiles->CloseFile();
    88        
    89         return $buffer;
     73
     74        /**
     75         * Si on a $only_return à true, on souhaite juste retourner les metas, sinon on les enregistre en base
     76         * Utile pour metadatas/video par exemple
     77         */
     78        if(!$only_return && (intval($id_document) && (count($content) > 0))){
     79                $infos = array('metas'=>serialize($content));
     80                include_spip('action/editer_document');
     81                spip_log('modification du document','xmp');
     82                spip_log($infos,'xmp');
     83                document_modifier($id_document, $infos);
     84                return true;
     85        }
     86        return array('metas'=>serialize($content));
    9087}
    9188?>
  • _plugins_/xmp_php/trunk/lang/xmpphp_fr.php

    r74508 r74511  
    88        // L
    99        'lien_recuperer_infos' => 'Récupérer les données XMP',
     10       
     11        // T
     12        'titre_infos_xmpphp' => 'Informations issues des XMP'
    1013
    1114);
  • _plugins_/xmp_php/trunk/paquet.xml

    r74510 r74511  
    1717
    1818        <licence lien="http://www.gnu.org/licenses/gpl-3.0.html">GPL 3</licence>
    19 
    20         <pipeline nom="editer_contenu_objet" inclure="xmp_php_pipelines.php" />
     19       
     20        <pipeline nom="recuperer_fond" inclure="xmp_php_pipelines.php" />
    2121        <pipeline nom="document_desc_actions" inclure="xmp_php_pipelines.php" />
    2222        <pipeline nom="declarer_tables_principales" inclure="base/xmpphp.php" />
     23       
     24        <utilise nom="doc2img" />
    2325</paquet>
  • _plugins_/xmp_php/trunk/xmp_php_pipelines.php

    r74508 r74511  
    44 * Récupération des métadonnées XMP
    55 *
    6  * Auteur : kent1
    7  * ©2011 - Distribué sous licence GNU/GPL
     6 * Auteur : kent1 (kent1@arscenic.info - http://www.kent1.info)
     7 * ©2011-2013 - Distribué sous licence GNU/GPL
    88 *
    99 */
    1010if (!defined("_ECRIRE_INC_VERSION")) return;
    1111
    12 function xmpphp_editer_contenu_objet($flux){
    13         $type_form = $flux['args']['type'];
    14         $id_document = $flux['args']['id'];
    15         if(is_array($flux['args']) && (in_array($type_form,array('illustrer_document','case_document','document')))){
    16                 $document = sql_fetsel("docs.id_document, docs.id_orig, docs.extension,docs.mode,docs.distant, L.vu,L.objet,L.id_objet", "spip_documents AS docs INNER JOIN spip_documents_liens AS L ON L.id_document=docs.id_document","L.id_document=".intval($id_document));
    17                 $extension = $document['extension'];
    18                 $type = $document['objet'];
    19                 $id = $document['id_objet'];
    20                 if(in_array($type_form,array('case_document','document'))){
    21                         if(($document['distant'] != 'oui') && in_array($extension,lire_config('xmpphp/extensions',array('ai','psd','pdf')))){
    22                                 $ajouts = '';
    23                                 if(extension_loaded('xmpPHPToolkit')){
    24                                         $infos_fichiers = charger_fonction('xmpphp_infos_fichiers', 'inc');
    25                                         $ajouts .= $infos_fichiers($id,$id_document,$type);
    26                                 }
    27                                 if($type_form == 'case_document'){
    28                                         $flux['data'] .= $ajouts;
    29                                 }else{
    30                                         if(preg_match(",<li [^>]*class=[\"']editer_infos.*>(.*)<\/li>,Uims",$flux['data'],$regs)){
    31                                                 $infos_doc = recuperer_fond('prive/prive_infos_fichier', $contexte=array('id_document'=>$id_document));
    32                                                 $flux['data'] = preg_replace(",($regs[1]),Uims","\\1".$infos_doc,$flux['data']);
    33                                         }
    34                                 }
    35                         }
     12/**
     13 * Insertion dans le pipeline recuperer_fond (SPIP)
     14 *
     15 * On affiche les informations du document
     16 *
     17 * @param array $flux
     18 *              Le contexte du pipeline
     19 * @return array $flux
     20 *              Le contexte du pipeline modifié
     21 */
     22function xmpphp_recuperer_fond($flux){
     23        if ($flux['args']['fond']=='modeles/document_desc'){
     24                if(isset($flux['args']['contexte']['id_document']) && ($flux['args']['contexte']['id_document'] > 0)){
     25                        $extension = sql_getfetsel("extension", "spip_documents","id_document=".intval($flux['args']['contexte']['id_document']));
     26                        if(in_array($extension,array('pdf','ai','psd')))
     27                                $flux['data']['texte'] .= recuperer_fond('prive/xmpphp_infos_fichier', $flux['args']['contexte']);
    3628                }
    3729        }
     
    4032
    4133/**
    42  * Insertion dans le pipeline document_desc_actions (Mediathèque)
    43  * On ajoute un lien pour récupérer le logo et relancer les encodages
     34 * Insertion dans le pipeline document_desc_actions (Medias)
     35 * On ajoute un lien pour récupérer les informations xmp des fichiers
    4436 *
    4537 * @param array $flux Le contexte du pipeline
     
    4739 */
    4840function xmpphp_document_desc_actions($flux){
    49         $id_document = $flux['args']['id_document'];
    50         $document = sql_fetsel('*','spip_documents','id_document='.intval($id_document));
    51         if(($document['distant'] != 'oui') && in_array($document['extension'],lire_config('xmpphp/extensions',array('ai','psd','pdf')))){
    52                 $texte = _T('xmpphp:lien_recuperer_infos');
    53                 $redirect = ancre_url(self(),"doc".$id_document);
    54                 $action = generer_action_auteur('xmpphp_infos', "0/article/$id_document", $redirect);
    55                 $flux['data'] .= " | <a href='$action'>$texte</a>";
    56         }
     41        $flux['data'] .= recuperer_fond('prive/squelettes/inclure/xmpphp_document_desc_action',$flux['args']);
    5742        return $flux;
    5843}
Note: See TracChangeset for help on using the changeset viewer.