Changeset 54448 in spip-zone


Ignore:
Timestamp:
Nov 14, 2011, 5:11:31 PM (8 years ago)
Author:
cedric@…
Message:

modification de la signature de oembed_verifier_provider et oembed_detecter_lien qui renvoient un tableau associatif decrivant le provider et plus seulement le endpoint
ajout d'un appel a post-traitement sur le retour du provider :
si une fonction oembed_posttraite_{$provider_name}_$type[_dist] existe elle est appelee pour post-traiter les donnees
ajout d'une telle fonction pour youtube_video qui extrait l'url du html pour peupler la valeur url des donnees
modification de l'insertion du document : si url est connu, on insere en document distant, avec recuperation de donnees distantes (taille, format etc)
sinon insertion en html statique comme auparavant, ce qui est un pis aller
Cette modification permet d'inserer par exemple les video youtube au format swf dans la base, et elles sont bien identifiees comme sequences
l'insertion de fait par <emb>

Location:
_plugins_/oembed
Files:
2 added
10 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/oembed/action/supprimer_provider.php

    r46225 r54448  
    11<?php
     2/**
     3 * Plugin oEmbed
     4 * Licence GPL3
     5 *
     6 */
    27
    38if (!defined('_ECRIRE_INC_VERSION')) return;
    4 
    59
    610function action_supprimer_provider_dist(){
  • _plugins_/oembed/base/oembed.php

    r46225 r54448  
    11<?php
    2        
     2/**
     3 * Plugin oEmbed
     4 * Licence GPL3
     5 *
     6 */
     7
     8if (!defined('_ECRIRE_INC_VERSION')) return;
     9
    310function oembed_declarer_tables_interfaces($interface){
    411       
  • _plugins_/oembed/formulaires/configurer_providers.php

    r47797 r54448  
    11<?php
     2/**
     3 * Plugin oEmbed
     4 * Licence GPL3
     5 *
     6 */
     7
     8if (!defined('_ECRIRE_INC_VERSION')) return;
    29
    310function formulaires_configurer_providers_charger_dist(){
  • _plugins_/oembed/inc/oembed.php

    r54447 r54448  
    11<?php
     2/**
     3 * Plugin oEmbed
     4 * Licence GPL3
     5 *
     6 */
     7
     8if (!defined('_ECRIRE_INC_VERSION')) return;
    29
    310// Merci WordPress :)
     
    2330       
    2431        $provider = oembed_verifier_provider($url);
    25         $data_url = parametre_url($provider,'url',$url,'&');
    2632
     33        if ((!$provider)
     34          AND (($detecter_lien != 'non') OR lire_config('oembed/detecter_lien','non')=='oui')) {
     35                $provider = oembed_detecter_lien($url);
     36        }
     37
     38        if (!$provider)
     39                return false;
     40       
     41        $data_url = parametre_url($provider['endpoint'],'url',$url,'&');
    2742        include_spip('inc/config');
    2843        if (is_null($maxwidth)){
     
    3348        }
    3449
    35         if ((!$provider) AND (($detecter_lien != 'non') OR lire_config('oembed/detecter_lien','non')=='oui')) {
    36                 $provider = oembed_detecter_lien($url);
    37                 $data_url = $provider;
    38         }
    39        
    4050        $data_url = parametre_url($data_url,'maxwidth',$maxwidth,'&');
    4151        $data_url = parametre_url($data_url,'maxheight',$maxheight,'&');
     
    4555                return $cache[$data_url];
    4656       
     57        $cache[$data_url] = false;
    4758        // on recupere le contenu de la page
    4859        include_spip('inc/distant');
    4960        if ($data = recuperer_page($data_url)) {
    5061                if ($format == 'json')
    51                         return $cache[$data_url] = json_decode($data,true);
     62                        $cache[$data_url] = json_decode($data,true);
    5263                // TODO : format xml
    53                 if ($format == 'xml')
    54                         return $cache[$data_url] = false;
     64                //if ($format == 'xml')
     65                //      $cache[$data_url] = false;
    5566        }
    5667
    57         return $cache[$data_url] = false;
     68        // si une fonction de post-traitement est fourni pour ce provider+type, l'utiliser
     69        if ($cache[$data_url]){
     70                $provider_name= strtolower($cache[$data_url]['provider_name']);
     71                $type = strtolower($cache[$data_url]['type']);
     72                if ($oembed_provider_posttraite = charger_fonction("posttraite_{$provider_name}_$type",'oembed',true))
     73                        $cache[$data_url] = $oembed_provider_posttraite($cache[$data_url]);
     74        }
     75
     76        return $cache[$data_url];
    5877}
    5978
     
    6281 *
    6382 * @param string $url l'url à tester
    64  * @return bool|string false si non ; endpoint du provider si oui
     83 * @return bool|array
     84 *   false si non ; details du provider dans un tabeau associatif si oui
    6585 */
    6686function oembed_verifier_provider($url) {
     
    6989                $regex = '/' . str_replace('\*', '(.+)', preg_quote($p['scheme'], '/')) . '/';
    7090                if (preg_match($regex, $url)) {
    71                         return $p['endpoint'];
     91                        return $p;
    7292                }
    7393        }
     
    123143        // on préfère le json au xml
    124144        if (!empty($providers['json']))
    125                 return $providers['json'];
     145                return array('endpoint'=>$providers['json']);
    126146        elseif (!empty($providers['xml']))
    127                 return $providers['xml'];
     147                return array('endpoint'=>$providers['xml']);
    128148        else
    129149                return false;
  • _plugins_/oembed/modeles/oembed_fonctions.php

    r47709 r54448  
    11<?php
     2/**
     3 * Plugin oEmbed
     4 * Licence GPL3
     5 *
     6 */
     7
     8if (!defined('_ECRIRE_INC_VERSION')) return;
    29
    310include_spip('inc/oembed');
  • _plugins_/oembed/oembed_administrations.php

    r54441 r54448  
    11<?php
     2/**
     3 * Plugin oEmbed
     4 * Licence GPL3
     5 *
     6 */
     7
    28if (!defined('_ECRIRE_INC_VERSION')) return;
    39
  • _plugins_/oembed/oembed_fonctions.php

    r46552 r54448  
    11<?php
     2/**
     3 * Plugin oEmbed
     4 * Licence GPL3
     5 *
     6 */
     7
     8if (!defined('_ECRIRE_INC_VERSION')) return;
    29
    310// renvoyer un mim_type text/oembed pour les videos oembed
  • _plugins_/oembed/oembed_options.php

    r47632 r54448  
    11<?php
     2/**
     3 * Plugin oEmbed
     4 * Licence GPL3
     5 *
     6 */
     7
     8if (!defined('_ECRIRE_INC_VERSION')) return;
    29
    310define('_DEFINIR_CONTEXTE_TYPE',true);
  • _plugins_/oembed/oembed_pipelines.php

    r54447 r54448  
    11<?php
     2/**
     3 * Plugin oEmbed
     4 * Licence GPL3
     5 *
     6 */
     7
     8if (!defined('_ECRIRE_INC_VERSION')) return;
    29
    310// ajouter le lien oembed dans le head des pages publiques
     
    1926        // on tente de récupérer les données oembed
    2027        if ($data = oembed_recuperer_data($flux['source'])){
    21                 if ($data['type']=='photo') {
     28                // si on a recupere une URL c'est direct un doc distant
     29                if (isset($data['url'])) {
    2230                        // on recupere les infos du document distant
    2331                        if ($doc = recuperer_infos_distantes($data['url'])) {
     
    3341                        }
    3442                }
    35                 if (($data['type']=='video') OR ($data['type']=='rich') OR ($data['type']=='link')) {
     43                elseif(isset($data['html']) OR $data['type']=='link'){
    3644                        if ($data['type']=='link')
    3745                                $data['html'] = '<a href="' . $flux['source'] . '">' . sinon($data['title'],$flux['source']) . '</a>';
  • _plugins_/oembed/paquet.xml

    r54447 r54448  
    22        prefix="oembed"
    33        categorie="multimedia"
    4         version="0.2.0"
     4        version="0.3.0"
    55        etat="dev"
    66        compatibilite="[3.0.0-dev;["
Note: See TracChangeset for help on using the changeset viewer.