|
|
@ -21,21 +21,21 @@ function oembed_fetch_url($embedurl){ |
|
|
|
|
|
|
|
$noexts = array("mp3","mp4","ogg","ogv","oga","ogm","webm"); |
|
|
|
$ext = pathinfo(strtolower($embedurl),PATHINFO_EXTENSION); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(is_null($txt)){ |
|
|
|
$txt = ""; |
|
|
|
|
|
|
|
|
|
|
|
if (!in_array($ext, $noexts)){ |
|
|
|
// try oembed autodiscovery
|
|
|
|
$redirects = 0; |
|
|
|
$html_text = fetch_url($embedurl, false, $redirects, 15, "text/*"); |
|
|
|
$html_text = fetch_url($embedurl, false, $redirects, 15, "text/*"); /**/ |
|
|
|
if($html_text){ |
|
|
|
$dom = @DOMDocument::loadHTML($html_text); |
|
|
|
if ($dom){ |
|
|
|
$xpath = new DOMXPath($dom); |
|
|
|
$attr = "oembed"; |
|
|
|
|
|
|
|
|
|
|
|
$xattr = oe_build_xpath("class","oembed"); |
|
|
|
$entries = $xpath->query("//link[@type='application/json+oembed']"); |
|
|
|
foreach($entries as $e){ |
|
|
@ -46,29 +46,29 @@ function oembed_fetch_url($embedurl){ |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if ($txt==false || $txt==""){ |
|
|
|
// try oohembed service
|
|
|
|
$ourl = "http://oohembed.com/oohembed/?url=".urlencode($embedurl).'&maxwidth=' . $a->videowidth; |
|
|
|
$txt = fetch_url($ourl); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$txt=trim($txt); |
|
|
|
if ($txt[0]!="{") $txt='{"type":"error"}'; |
|
|
|
|
|
|
|
|
|
|
|
//save in cache
|
|
|
|
Cache::set($a->videowidth . $embedurl,$txt); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$j = json_decode($txt); |
|
|
|
$j->embedurl = $embedurl; |
|
|
|
return $j; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function oembed_format_object($j){ |
|
|
|
$a = get_app(); |
|
|
|
$embedurl = $j->embedurl; |
|
|
|
$embedurl = $j->embedurl; |
|
|
|
$jhtml = oembed_iframe($j->embedurl,(isset($j->width) ? $j->width : null), (isset($j->height) ? $j->height : null) ); |
|
|
|
$ret="<span class='oembed ".$j->type."'>"; |
|
|
|
switch ($j->type) { |
|
|
@ -78,7 +78,7 @@ function oembed_format_object($j){ |
|
|
|
$th = (isset($j->thumbnail_height) && intval($j->thumbnail_height)) ? $j->thumbnail_height:180; |
|
|
|
// make sure we don't attempt divide by zero, fallback is a 1:1 ratio
|
|
|
|
$tr = (($th) ? $tw/$th : 1); |
|
|
|
|
|
|
|
|
|
|
|
$th=120; $tw = $th*$tr; |
|
|
|
$tpl=get_markup_template('oembed_video.tpl'); |
|
|
|
$ret.=replace_macros($tpl, array( |
|
|
@ -89,7 +89,7 @@ function oembed_format_object($j){ |
|
|
|
'$th'=>$th, |
|
|
|
'$turl'=>$j->thumbnail_url, |
|
|
|
)); |
|
|
|
|
|
|
|
|
|
|
|
} else { |
|
|
|
$ret=$jhtml; |
|
|
|
} |
|
|
@ -99,22 +99,24 @@ function oembed_format_object($j){ |
|
|
|
$ret.= "<img width='".$j->width."' src='".$j->url."'>"; |
|
|
|
//$ret.= "<img width='".$j->width."' height='".$j->height."' src='".$j->url."'>";
|
|
|
|
$ret.="<br>"; |
|
|
|
}; break; |
|
|
|
}; break; |
|
|
|
case "link": { |
|
|
|
//$ret = "<a href='".$embedurl."'>".$j->title."</a>";
|
|
|
|
}; break; |
|
|
|
}; break; |
|
|
|
case "rich": { |
|
|
|
// not so safe..
|
|
|
|
// not so safe..
|
|
|
|
$ret.= $jhtml; |
|
|
|
}; break; |
|
|
|
} |
|
|
|
|
|
|
|
// add link to source if not present in "rich" type
|
|
|
|
if ( $j->type!='rich' || !strpos($j->html,$embedurl) ){ |
|
|
|
if ($j->type!='rich' || !strpos($j->html,$embedurl) ){ |
|
|
|
if (isset($j->provider_name)) $ret .= $j->provider_name.": "; |
|
|
|
$embedlink = (isset($j->title))?$j->title:$embedurl; |
|
|
|
$ret .= "<a href='$embedurl' rel='oembed'>$embedlink</a>"; |
|
|
|
if (isset($j->author_name)) $ret.=" by ".$j->author_name; |
|
|
|
if (isset($j->provider_name)) $ret.=" on ".$j->provider_name; |
|
|
|
if (isset($j->author_name)) $ret.=" (".$j->author_name.")"; |
|
|
|
//if (isset($j->author_name)) $ret.=" by ".$j->author_name;
|
|
|
|
//if (isset($j->provider_name)) $ret.=" on ".$j->provider_name;
|
|
|
|
} else { |
|
|
|
// add <a> for html2bbcode conversion
|
|
|
|
$ret .= "<a href='$embedurl' rel='oembed'></a>"; |
|
|
@ -128,14 +130,14 @@ function oembed_iframe($src,$width,$height) { |
|
|
|
$width = '640'; |
|
|
|
if(! $height || strstr($height,'%')) |
|
|
|
$height = '300'; |
|
|
|
// try and leave some room for the description line.
|
|
|
|
// try and leave some room for the description line.
|
|
|
|
$height = intval($height) + 80; |
|
|
|
$width = intval($width) + 40; |
|
|
|
|
|
|
|
$a = get_app(); |
|
|
|
|
|
|
|
$s = $a->get_baseurl()."/oembed/".base64url_encode($src); |
|
|
|
return '<iframe height="' . $height . '" width="' . $width . '" src="' . $s . '" frameborder="no" >' . t('Embedded content') . '</iframe>'; |
|
|
|
return '<iframe height="' . $height . '" width="' . $width . '" src="' . $s . '" frameborder="no" >' . t('Embedded content') . '</iframe>'; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
@ -162,7 +164,7 @@ function oe_get_inner_html( $node ) { |
|
|
|
$innerHTML .= $child->ownerDocument->saveXML( $child ); |
|
|
|
} |
|
|
|
return $innerHTML; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Find <span class='oembed'>..<a href='url' rel='oembed'>..</a></span> |
|
|
@ -171,17 +173,17 @@ function oe_get_inner_html( $node ) { |
|
|
|
function oembed_html2bbcode($text) { |
|
|
|
// start parser only if 'oembed' is in text
|
|
|
|
if (strpos($text, "oembed")){ |
|
|
|
|
|
|
|
|
|
|
|
// convert non ascii chars to html entities
|
|
|
|
$html_text = mb_convert_encoding($text, 'HTML-ENTITIES', mb_detect_encoding($text)); |
|
|
|
|
|
|
|
|
|
|
|
// If it doesn't parse at all, just return the text.
|
|
|
|
$dom = @DOMDocument::loadHTML($html_text); |
|
|
|
if(! $dom) |
|
|
|
return $text; |
|
|
|
$xpath = new DOMXPath($dom); |
|
|
|
$attr = "oembed"; |
|
|
|
|
|
|
|
|
|
|
|
$xattr = oe_build_xpath("class","oembed"); |
|
|
|
$entries = $xpath->query("//span[$xattr]"); |
|
|
|
|
|
|
@ -193,8 +195,5 @@ function oembed_html2bbcode($text) { |
|
|
|
return oe_get_inner_html( $dom->getElementsByTagName("body")->item(0) ); |
|
|
|
} else { |
|
|
|
return $text; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|