]> git.mxchange.org Git - friendica.git/commitdiff
Added some functionality if oembed isn't working. (Should be extended in the future)
authorMichael Vogel <icarus@dabo.de>
Thu, 29 May 2014 09:45:32 +0000 (11:45 +0200)
committerMichael Vogel <icarus@dabo.de>
Thu, 29 May 2014 09:45:32 +0000 (11:45 +0200)
include/oembed.php
mod/parse_url.php

index 17fc873ccb304aa339cd4e24d5267a82a60e1015..29d462d8f7d2252629e1cd3fb75b6508b90c04f2 100755 (executable)
@@ -10,7 +10,7 @@ function oembed_replacecb($matches){
 }
 
 
-function oembed_fetch_url($embedurl){
+function oembed_fetch_url($embedurl, $no_rich_type = false){
 
        $embedurl = trim($embedurl, "'");
        $embedurl = trim($embedurl, '"');
@@ -79,6 +79,32 @@ function oembed_fetch_url($embedurl){
                return false;
 
        $j->embedurl = $embedurl;
+
+       // If fetching information doesn't work, then improve via internal functions
+       if (($j->type == "error") OR ($no_rich_type AND ($j->type == "rich"))) {
+               require_once("mod/parse_url.php");
+               $data = parseurl_getsiteinfo($embedurl, true, false);
+               $j->type = $data["type"];
+
+               if ($j->type == "photo") {
+                       $j->url = $data["url"];
+                       //$j->width = $data["images"][0]["width"];
+                       //$j->height = $data["images"][0]["height"];
+               }
+
+               if (isset($data["title"]))
+                       $j->title = $data["title"];
+
+               if (isset($data["text"]))
+                       $j->description = $data["text"];
+
+               if (is_array($data["images"])) {
+                       $j->thumbnail_url = $data["images"][0]["src"];
+                       $j->thumbnail_width = $data["images"][0]["width"];
+                       $j->thumbnail_height = $data["images"][0]["height"];
+               }
+       }
+
        return $j;
 }
 
index 135a4ccc6f15d7a6fae783f4179f1c1c485b9bed..481b26533d25da5586a8f9f135f90ea0e7b96ec6 100644 (file)
@@ -50,7 +50,7 @@ function completeurl($url, $scheme) {
         return($complete);
 }
 
-function parseurl_getsiteinfo($url, $no_guessing = false) {
+function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true) {
 
        $siteinfo = array();
 
@@ -82,12 +82,14 @@ function parseurl_getsiteinfo($url, $no_guessing = false) {
                return($siteinfo);
        }
 
-       require_once("include/oembed.php");
+       if ($do_oembed) {
+               require_once("include/oembed.php");
 
-       $oembed_data = oembed_fetch_url($url);
+               $oembed_data = oembed_fetch_url($url);
 
-       if ($oembed_data->type != "error")
-               $siteinfo["type"] = $oembed_data->type;
+               if ($oembed_data->type != "error")
+                       $siteinfo["type"] = $oembed_data->type;
+       }
 
        // Fetch the first mentioned charset. Can be in body or header
        $charset = "";
@@ -217,7 +219,7 @@ function parseurl_getsiteinfo($url, $no_guessing = false) {
                        }
        }
 
-       if ($oembed_data->type == "link") {
+       if (isset($oembed_data) AND ($oembed_data->type == "link")) {
                if (isset($oembed_data->title) AND (trim($oembed_data->title) != ""))
                        $siteinfo["title"] = $oembed_data->title;
                if (isset($oembed_data->description) AND (trim($oembed_data->description) != ""))