Changeset 103884 in spip-zone
- Timestamp:
- Apr 10, 2017, 9:40:20 PM (23 months ago)
- Location:
- _plugins_/oembed
- Files:
-
- 4 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
_plugins_/oembed/css/oembed.css
r86715 r103884 85 85 .oembed_audio .oe-play-button:hover button{background-color: #DD2826;} 86 86 .oembed_audio .oe-play-button:hover button:before{border-color:#fff;} 87 88 /* Mastodon */ 89 .oembed_mastodon .oembed-source {display: none;} 90 .oembed_mastodon .spip_doc_titre {display: none;} 91 .oembed_mastodon .oe-rich {max-width:none !important;} -
_plugins_/oembed/inc/oembed.php
r103149 r103884 133 133 } 134 134 135 $data_url = parametre_url(url_absolue($provider['endpoint'], url_de_base()), 'url', $url, '&'); 135 $data_url = url_absolue($provider['endpoint'], url_de_base()); 136 137 // certains oembed fournissent un endpoint qui contient deja l'URL, parfois differente de celle de la page 138 if (!parametre_url($data_url, 'url')) { 139 $data_url = parametre_url($data_url, 'url', $url, '&'); 140 } 141 136 142 include_spip('inc/config'); 137 143 if (!$maxwidth) { … … 146 152 $data_url = parametre_url($data_url, 'format', $format, '&'); 147 153 148 // pre-traitement du provider si besoin 149 $endpoint = explode('//', $provider['endpoint']); 150 $endpoint = explode('/', $endpoint[1]); 151 $endpoint = reset($endpoint); 152 $endpoint = preg_replace(',\W+,', '_', $endpoint); 153 if ($oembed_endpoint_pretraite = charger_fonction("pretraite_$endpoint", 'oembed/input', true)) { 154 if (isset($provider['provider_name']) and $provider['provider_name']) { 155 $provider_name = $provider['provider_name']; 156 } 157 else { 158 // pre-traitement du provider si besoin 159 $provider_name = explode('//', $provider['endpoint']); 160 $provider_name = explode('/', $provider_name[1]); 161 $provider_name = reset($provider_name); 162 } 163 $provider_name = preg_replace(',\W+,', '_', strtolower($provider_name)); 164 165 if ($oembed_endpoint_pretraite = charger_fonction("pretraite_$provider_name", 'oembed/input', true)) { 154 166 $a = func_get_args(); 155 167 $args = array('url'=>array_shift($a)); … … 163 175 $args['format'] = array_shift($a); 164 176 } 177 $args['endpoint'] = $provider['endpoint']; 165 178 $data_url = $oembed_endpoint_pretraite($data_url, $args); 166 179 } … … 183 196 // si une fonction de post-traitement est fourni pour ce provider+type, l'utiliser 184 197 if ($cache[$data_url]) { 185 $provider_name = str_replace(' ', '_', strtolower($cache[$data_url]['provider_name']));198 $provider_name2= str_replace(' ', '_', strtolower($cache[$data_url]['provider_name'])); 186 199 $type = strtolower($cache[$data_url]['type']); 187 200 // securisons le nom de la fonction (provider peut contenir n'importe quoi) 188 $f1 = preg_replace(',\W,', '', "posttraite_{$provider_name}_$type"); 189 $f2 = preg_replace(',\W,', '', "posttraite_{$provider_name}"); 190 if ($oembed_provider_posttraite = charger_fonction($f1, 'oembed/input', true) 191 or $oembed_provider_posttraite = charger_fonction($f2, 'oembed/input', true)) { 201 $f1 = preg_replace(',\W,', '', "posttraite_{$provider_name2}_$type"); 202 $f2 = preg_replace(',\W,', '', "posttraite_{$provider_name2}"); 203 $f3 = preg_replace(',\W,', '', "posttraite_{$provider_name}_$type"); 204 $f4 = preg_replace(',\W,', '', "posttraite_{$provider_name}"); 205 if ( 206 $oembed_provider_posttraite = charger_fonction($f1, 'oembed/input', true) 207 or $oembed_provider_posttraite = charger_fonction($f2, 'oembed/input', true) 208 or $oembed_provider_posttraite = charger_fonction($f3, 'oembed/input', true) 209 or $oembed_provider_posttraite = charger_fonction($f4, 'oembed/input', true) ) { 192 210 $cache[$data_url] = $oembed_provider_posttraite($cache[$data_url], $url); 193 211 } … … 231 249 $providers = array(); 232 250 251 $oembed_recuperer_url = charger_fonction('oembed_recuperer_url', 'inc'); 233 252 // on recupere le contenu de la page 234 253 include_spip('inc/distant'); 254 235 255 if ($html = recuperer_page($url)) { 236 256 // types de liens oembed à détecter … … 269 289 } 270 290 291 $res = array(); 292 271 293 // on préfère le json au xml 272 294 if (!empty($providers['json'])) { 273 return array('endpoint'=>$providers['json']);295 $res['endpoint'] = $providers['json']; 274 296 } elseif (!empty($providers['xml'])) { 275 return array('endpoint' => $providers['xml']);297 $res['endpoint'] = $providers['xml']; 276 298 } else { 277 299 return false; 278 300 } 301 302 // detecter certains providers specifiques : ex mastodon, chaque instance a son nom et on peut pas l'identifier par son URL 303 if (strpos($html, '//github.com/tootsuite/mastodon') !== false) { 304 $res['provider_name'] = 'Mastodon'; 305 } 306 307 return $res; 279 308 } 280 309 -
_plugins_/oembed/inc/oembed_recuperer_url.php
r98148 r103884 30 30 curl_setopt($c, CURLOPT_URL, $oembed_url); 31 31 curl_setopt($c, CURLOPT_FOLLOWLOCATION, true); 32 curl_setopt($c, CURLOPT_SSL_VERIFYHOST, false); 33 curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false); 32 34 33 35 if (isset($GLOBALS['meta']['http_proxy']) and $GLOBALS['meta']['http_proxy']) { -
_plugins_/oembed/oembed/input/posttraite_mastodon.php
r103877 r103884 10 10 } 11 11 12 function oembed_input_posttraite_ twitter_dist($data) {12 function oembed_input_posttraite_mastodon_dist($data) { 13 13 14 $data['html'] = trim(preg_replace(',<script[^>]*></script>,i', '', $data['html'])); 14 if ($iframe = extraire_balise($data['html'], 'iframe')) { 15 $iframe_cor = vider_attribut($iframe, 'height'); 16 $iframe_cor = vider_attribut($iframe_cor, 'scrolling'); 17 $iframe_cor = vider_attribut($iframe_cor, 'style'); 18 19 $data['html'] = str_replace($data['html'], $iframe, $iframe_cor); 20 $src = extraire_attribut($iframe_cor, 'src'); 21 22 // si on sait mieux faire en faisant un extract du contenu de l'iframe on y go, car les iframe c'est moche 23 if ($html = recuperer_page($src)) { 24 $texte = $date_link = ""; 25 if ($p = strpos($html, 'status__content') 26 and $p1 = strpos($html, '<p', $p) 27 and $p2 = strpos($html, '</p>', $p1) 28 ) { 29 $texte = substr($html, $p1, $p2 - $p1 +4); 30 } 31 if ($p = strpos($html, 'dt-published') 32 and $p1 = strpos($html, '<a', $p) 33 and $p2 = strpos($html, '</a>', $p1) 34 ) { 35 $date_link = substr($html, $p1, $p2 - $p1 +4); 36 } 37 38 if ($texte and $date_link) { 39 $html = "<blockquote class=\"twitter-tweet\">".$texte."\n— ".$data['author_name']; 40 $author_account = explode('/users/', $data['author_url']); 41 $a = "@".end($author_account)."@".trim(protocole_implicite(reset($author_account)),'/'); 42 $html .= " ($a) $date_link\n</blockquote>"; 43 44 $data['html'] = $html; 45 $data['height'] = null; 46 } 47 } 48 49 50 } 51 $data['provider_name'] = 'Mastodon'; 15 52 16 53 return $data; -
_plugins_/oembed/paquet.xml
r103720 r103884 2 2 prefix="oembed" 3 3 categorie="multimedia" 4 version="1. 6.12"4 version="1.7.0" 5 5 etat="stable" 6 6 compatibilite="[3.0.0;3.2.*]"
Note: See TracChangeset
for help on using the changeset viewer.