source: spip-zone/_plugins_/oembed/oembed_pipelines.php @ 54447

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

permettre de configurer maxwidth et maxheight dans la config du plugin
inverser les 2 forms de config sur la page de config (les providers sont moins important car presumes pre-configures)
modifier la fonction oembed_recuperer_data :

  • si on ne lui fournit pas de maxheight/maxwidth : utiliser ceux par defaut (ou TODO du provider si precises)
  • si on fournit , ne pas demander maxheight/maxwidth
  • cacher la requete pour eviter de la faire 2 fois (principale et pour vignette)

version a 3 digits

File size: 3.9 KB
Line 
1<?php
2
3// ajouter le lien oembed dans le head des pages publiques
4function oembed_affichage_final($page) {
5        if (!$GLOBALS['html']) return $page;
6        if ($url_oembed = url_absolue(parametre_url($GLOBALS['meta']['adresse_site'] . '/services/oembed/','url',url_absolue(self())))) {
7                $page = preg_replace(',</head>,i',
8                        "\n".'<link rel="alternate" type="application/json+oembed" href="'.$url_oembed.'&amp;format=json" />'.
9                        "\n".'<link rel="alternate" type="text/xml+oembed" href="'.$url_oembed.'&amp;format=xml" />'."\n".'\0',
10                        $page, 1);
11        }
12        return $page;
13}
14
15// insertion des traitements oembed dans l'ajout des documents distants
16function oembed_renseigner_document_distant($flux) {
17        include_spip('inc/config');
18        include_spip('inc/oembed');
19        // on tente de récupérer les données oembed
20        if ($data = oembed_recuperer_data($flux['source'])){
21                if ($data['type']=='photo') {
22                        // on recupere les infos du document distant
23                        if ($doc = recuperer_infos_distantes($data['url'])) {
24                                unset($doc['body']);
25                                $doc['distant'] = 'oui';
26                                $doc['mode'] = 'document';
27                                $doc['fichier'] = set_spip_doc($data['url']);
28                                // et on complète par les infos oembed
29                                $doc['oembed'] = $flux['source'];
30                                $doc['titre'] = $data['title'];
31                                $doc['credits'] = $data['author_name'];
32                                return $doc;
33                        }
34                }
35                if (($data['type']=='video') OR ($data['type']=='rich') OR ($data['type']=='link')) {
36                        if ($data['type']=='link')
37                                $data['html'] = '<a href="' . $flux['source'] . '">' . sinon($data['title'],$flux['source']) . '</a>';
38                        // créer une copie locale du contenu html
39                        // cf recuperer_infos_distantes()
40                        $doc['fichier'] = _DIR_RACINE . nom_fichier_copie_locale($flux['source'], 'html');
41                        ecrire_fichier($doc['fichier'], $data['html']);
42                        // set_spip_doc() pour récupérer le chemin du fichier relatif a _DIR_IMG
43                        $doc['fichier'] = set_spip_doc($doc['fichier']);
44                        $doc['extension'] = 'html';
45                        $doc['taille'] = strlen($data['html']); # a peu pres
46                        $doc['distant'] = 'non';
47                        $doc['mode'] = 'document';
48                        $doc['oembed'] = $flux['source'];
49                        $doc['titre'] = $data['title'];
50                        $doc['credits'] = $data['author_name'];
51                        return $doc;
52                }
53        }
54        return $flux;
55}
56
57// attacher la vignette si disponible pour les documents oembed
58function oembed_post_edition($flux) {
59        if($flux['args']['action']=='ajouter_document' AND $flux['data']['oembed']){
60                $id_document = $flux['args']['id_objet'];
61                if ($data = oembed_recuperer_data($flux['data']['oembed'])){
62                        // vignette disponible ? la recupérer et l'associer au document
63                        if ($data['thumbnail_url']) {
64                                // cf formulaires_illustrer_document_traiter_dist()
65                                $ajouter_documents = charger_fonction('ajouter_documents', 'action');
66                                include_spip('inc/joindre_document');
67                                set_request('url',$data['thumbnail_url']);
68                                set_request('joindre_distant','oui');
69                                $files = joindre_trouver_fichier_envoye();
70                                $ajoute = action_ajouter_documents_dist('new',$files,'',0,'vignette');
71                                if (is_int(reset($ajoute))){
72                                        $id_vignette = reset($ajoute);
73                                        include_spip('action/editer_document');
74                                        document_set($id_document,array("id_vignette" => $id_vignette,'mode'=>'document'));
75                                        // pour ne pas se retrouver avec l'url de la vignette dans l'input du formulaire au retour
76                                        set_request('url','');
77                                }
78                        }
79                }
80        }
81        return $flux;
82}
83
84function oembed_pre_propre($texte) {
85        include_spip('inc/config');
86        if (lire_config('oembed/embed_auto','oui')!='non') {
87                include_spip('inc/oembed');
88                foreach (extraire_balises($texte, 'a') as $lien) {
89                        if ($url = extraire_attribut($lien, 'href')
90                        # seuls les autoliens beneficient de la detection oembed
91                        AND preg_match(',\bauto\b,', extraire_attribut($lien, 'class'))
92                        AND (oembed_verifier_provider($url) OR (lire_config('oembed/detecter_lien','non')=='oui'))) {
93                                $fond = recuperer_fond('modeles/oembed',array('url'=>$url));
94                                if ($fond = trim($fond))
95                                        $texte = str_replace($lien, $fond, $texte);
96                        }
97                }
98        }
99        return $texte;
100}
101
102?>
Note: See TracBrowser for help on using the repository browser.