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

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

Retablir un traitement par défaut du raccourci ressource <http://...> quand on utilise SPIP <3.0.14 (permet la compat 3.0.*) et on enleve la contrainte sur la version de TextWheel?

File size: 3.4 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        static $null_allowed = null;
77
78        include_spip('inc/lien');
79        $url = explode(' ', trim($rac, '<>'));
80        $url = $url[0];
81
82        $texte = null;
83        # <http://url/absolue>
84        if (preg_match(',^https?://,i', $url)){
85                include_spip('inc/oembed');
86                $lien = PtoBR(propre("[->".$url."]"));
87                // null si pas embedable
88                $texte = oembed_embarquer_lien($lien);
89                if ($texte){
90                        $texte = "<html>$texte</html>";
91                }
92        }
93        // compat SPIP < 3.0.14
94        // sans le patch http://zone.spip.org/trac/spip-zone/changeset/79139/_core_/branches/spip-3.0/plugins/textwheel
95        if (is_null($texte)) {
96                if (is_null($null_allowed)){
97                        if (version_compare($GLOBALS['spip_version_branche'],"3.0.14","<"))
98                                $null_allowed = false;
99                        else
100                                $null_allowed = true;
101                }
102
103                if(!$null_allowed){
104                        include_spip('inc/lien');
105                        $url = explode(' ', trim($rac, '<>'));
106                        $url = $url[0];
107                        # <http://url/absolue>
108                        if (preg_match(',^https?://,i', $url))
109                                $texte = PtoBR(propre("<span class='ressource spip_out'>&lt;[->".$url."]&gt;</span>"));
110                        # <url/relative>
111                        elseif (false !== strpos($url, '/'))
112                                $texte = PtoBR(propre("<span class='ressource spip_in'>&lt;[->".$url."]&gt;</span>"));
113                        # <fichier.rtf>
114                        else {
115                                preg_match(',\.([^.]+)$,', $url, $regs);
116                                if (file_exists($f = _DIR_IMG.$regs[1].'/'.$url)) {
117                                        $texte = PtoBR(propre("<span class='ressource spip_in'>&lt;[".$url."->".$f."]&gt;</span>"));
118                                } else {
119                                        $texte = PtoBR(propre("<span class='ressource'>&lt;".$url."&gt;</span>"));
120                                }
121                        }
122
123                }
124        }
125
126        return $texte;
127}
128
Note: See TracBrowser for help on using the repository browser.