$metadata = OpenGraphHelper::ogFromHtml($dom);
}
- // sometimes sites serve the path, not the full URL, for images
- // let's "be liberal in what you accept from others"!
- // add protocol and host if the thumbnail_url starts with /
- if(substr($metadata->thumbnail_url,0,1) == '/') {
- $thumbnail_url_parsed = parse_url($metadata->url);
- $metadata->thumbnail_url = $thumbnail_url_parsed['scheme']."://".$thumbnail_url_parsed['host'].$metadata->thumbnail_url;
- }
+ if (isset($metadata->thumbnail_url)) {
+ // sometimes sites serve the path, not the full URL, for images
+ // let's "be liberal in what you accept from others"!
+ // add protocol and host if the thumbnail_url starts with /
+ if(substr($metadata->thumbnail_url,0,1) == '/') {
+ $thumbnail_url_parsed = parse_url($metadata->url);
+ $metadata->thumbnail_url = $thumbnail_url_parsed['scheme']."://".$thumbnail_url_parsed['host'].$metadata->thumbnail_url;
+ }
- // some wordpress opengraph implementations sometimes return a white blank image
- // no need for us to save that!
- if($metadata->thumbnail_url == 'https://s0.wp.com/i/blank.jpg') {
- unset($metadata->thumbnail_url);
+ // some wordpress opengraph implementations sometimes return a white blank image
+ // no need for us to save that!
+ if($metadata->thumbnail_url == 'https://s0.wp.com/i/blank.jpg') {
+ unset($metadata->thumbnail_url);
+ }
}
}
// the 'photo' type is shown through ordinary means, using StartShowAttachmentRepresentation!
switch ($oembed->type) {
- case 'rich':
case 'video':
case 'link':
if (!empty($oembed->html)
&& (GNUsocial::isAjax() || common_config('attachments', 'show_html'))) {
- require_once INSTALLDIR.'/extlib/htmLawed/htmLawed.php';
- $config = array(
- 'safe'=>1,
- 'elements'=>'*+object+embed');
- $out->raw(htmLawed($oembed->html,$config));
+ require_once INSTALLDIR.'/extlib/HTMLPurifier/HTMLPurifier.auto.php';
+ $purifier = new HTMLPurifier();
+ // FIXME: do we allow <object> and <embed> here? we did that when we used htmLawed, but I'm not sure anymore...
+ $out->raw($purifier->purify($oembed->html));
}
return false;
break;
// and File_thumbnail tables respectively. If not, we're not going to do anything.
$file_oembed = File_oembed::getByFile($file);
$thumbnail = File_thumbnail::byFile($file);
- } catch (Exception $e) {
+ } catch (NoResultException $e) {
// Not Oembed data, or at least nothing we either can or want to use.
return true;
}