source: spip-zone/_plugins_/oembed/oembed_fonctions.php @ 79140

Last change on this file since 79140 was 79140, checked in by cedric@…, 7 years ago

Mise au carré du traitement des liens oembed :

  • tous les liens écrits sous forme de ressource <http://example.org> sont oembed (si le site cible fournit le service)
  • par défaut les autoliens sont oembed lorsqu'ils forment un paragraphe à eux seuls (ie précédés/suivis de 2 retour ligne), ce qui permet d'oembed simplement une URL.

Ce comportement est désactivable par la configuration "Transformer automatiquement les URLs insérées dans le texte : non"

On homogénéise ainsi avec ce que fait WordPress?.
On passe le plugin en v1.0.0 pour l'occasion

Ces modifications nécessitent la version 0.8.19 de textwheel pour le commit r79139

File size: 2.3 KB
Line 
1<?php
2/**
3 * Plugin oEmbed
4 * Licence GPL3
5 *
6 */
7
8if (!defined('_ECRIRE_INC_VERSION')) return;
9
10// renvoyer un mim_type text/oembed pour les videos oembed
11function mime_type_oembed($id_document) {
12    if(!($id_document = intval($id_document)))
13        return '';
14    $mime_type = sql_getfetsel('mime_type', 'spip_types_documents',
15        "extension IN (SELECT extension FROM spip_documents where id_document=$id_document)");
16    if ($mime_type == 'text/html' AND sql_getfetsel('oembed', 'spip_documents',"id_document=$id_document"))
17        $mime_type = 'text/oembed';
18    return $mime_type;
19}
20
21// balise #MIME_TYPE pour oembed
22function balise_MIME_TYPE_dist($p) {
23        $b = $p->nom_boucle ? $p->nom_boucle : $p->id_boucle;
24        $key = $p->boucles[$b]->primary;
25        /**
26         * Si la clé est extension, on est dans une boucle sur la table spip_documents
27         */
28        if($key == 'extension'){
29                $p->code = champ_sql('mime_type', $p);
30        }else{
31            /* explorer la pile memoire pour atteindre le 'vrai' champ */
32            $id_document = champ_sql('id_document', $p);
33            /* le code php qui sera execute */
34            $p->code = "mime_type_oembed(".$id_document.")";
35        }
36    return $p;
37}
38
39/**
40 * un filtre pour json_encode avec les bonnes options, pour l'export json des modeles
41 * @param $texte
42 * @return string
43 */
44function json_encode_html($texte){
45        #$texte = json_encode($texte,JSON_HEX_TAG);
46        $texte = json_encode($texte);
47        $texte = str_replace(array("<",">"),array("\u003C","\u003E"),$texte);
48        return $texte;
49}
50
51/**
52 * Filtre utilisable dans un squelette
53 * |oembed{550,300}
54 *
55 * @param string $url
56 * @param int $maxwidth
57 * @param int $maxheight
58 * @return string
59 */
60function oembed($url, $maxwidth=0, $maxheight=0){
61        include_spip('inc/oembed');
62        if (oembed_verifier_provider($url)) {
63                $fond = recuperer_fond(
64                        'modeles/oembed',
65                        array('url'=>$url,'lien'=>'','maxwidth'=>$maxwidth,'maxheight'=>$maxheight)
66                );
67                if ($fond = trim($fond))
68                        return $fond;
69        }
70
71        return $url;
72}
73
74
75function inc_ressource_dist($rac) {
76
77        include_spip('inc/lien');
78        $url = explode(' ', trim($rac, '<>'));
79        $url = $url[0];
80
81        $texte = null;
82        # <http://url/absolue>
83        if (preg_match(',^https?://,i', $url)){
84                include_spip('inc/oembed');
85                $lien = PtoBR(propre("[->".$url."]"));
86                // null si pas embedable
87                $texte = oembed_embarquer_lien($lien);
88                if ($texte){
89                        $texte = "<html>$texte</html>";
90                }
91        }
92
93        return $texte;
94}
95?>
Note: See TracBrowser for help on using the repository browser.