]> git.mxchange.org Git - friendica.git/blobdiff - mod/parse_url.php
Merge remote-tracking branch 'upstream/develop' into 1602-diaspora
[friendica.git] / mod / parse_url.php
index 71d767675f8c51a1b3cba44b3edae4e2bd0c7bf8..a1ca5a3db5e2e1c831d35bada4b52a3502b54183 100644 (file)
@@ -1,16 +1,20 @@
 <?php
-/* To-Do
-https://developers.google.com/+/plugins/snippet/
-
-<meta itemprop="name" content="Toller Titel">
-<meta itemprop="description" content="Eine tolle Beschreibung">
-<meta itemprop="image" content="http://maple.libertreeproject.org/images/tree-icon.png">
-
-<body itemscope itemtype="http://schema.org/Product">
-  <h1 itemprop="name">Shiny Trinket</h1>
-  <img itemprop="image" src="{image-url}" />
-  <p itemprop="description">Shiny trinkets are shiny.</p>
-</body>
+/** 
+ * @file mod/parse_url.php
+ * 
+ * @todo https://developers.google.com/+/plugins/snippet/
+ * 
+ * @verbatim
+ * <meta itemprop="name" content="Toller Titel">
+ * <meta itemprop="description" content="Eine tolle Beschreibung">
+ * <meta itemprop="image" content="http://maple.libertreeproject.org/images/tree-icon.png">
+ * 
+ * <body itemscope itemtype="http://schema.org/Product">
+ *   <h1 itemprop="name">Shiny Trinket</h1>
+ *   <img itemprop="image" src="{image-url}" />
+ *   <p itemprop="description">Shiny trinkets are shiny.</p>
+ * </body>
+ * @endverbatim
 */
 
 if(!function_exists('deletenode')) {
@@ -50,8 +54,33 @@ function completeurl($url, $scheme) {
        return($complete);
 }
 
+function parseurl_getsiteinfo_cached($url, $no_guessing = false, $do_oembed = true) {
+
+       if ($url == "")
+               return false;
+
+       $r = q("SELECT * FROM `parsed_url` WHERE `url` = '%s' AND `guessing` = %d AND `oembed` = %d",
+               dbesc(normalise_link($url)), intval(!$no_guessing), intval($do_oembed));
+
+       if ($r)
+               $data = $r[0]["content"];
+
+       if (!is_null($data)) {
+               $data = unserialize($data);
+               return $data;
+       }
+
+       $data = parseurl_getsiteinfo($url, $no_guessing, $do_oembed);
+
+       q("INSERT INTO `parsed_url` (`url`, `guessing`, `oembed`, `content`, `created`) VALUES ('%s', %d, %d, '%s', '%s')",
+               dbesc(normalise_link($url)), intval(!$no_guessing), intval($do_oembed), dbesc(serialize($data)), dbesc(datetime_convert()));
+
+       return $data;
+}
+
 function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true, $count = 1) {
        require_once("include/network.php");
+       require_once("include/Photo.php");
 
        $a = get_app();
 
@@ -265,7 +294,8 @@ function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true, $co
        if (isset($keywords)) {
                $siteinfo["keywords"] = array();
                foreach ($keywords as $keyword)
-                       $siteinfo["keywords"][] = trim($keyword);
+                       if (!in_array(trim($keyword), $siteinfo["keywords"]))
+                               $siteinfo["keywords"][] = trim($keyword);
        }
 
        //$list = $xpath->query("head/meta[@property]");
@@ -301,7 +331,7 @@ function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true, $co
                        $attr[$attribute->name] = $attribute->value;
 
                        $src = completeurl($attr["src"], $url);
-                       $photodata = @getimagesize($src);
+                       $photodata = get_photo_info($src);
 
                        if (($photodata) && ($photodata[0] > 150) and ($photodata[1] > 150)) {
                                if ($photodata[0] > 300) {
@@ -318,12 +348,12 @@ function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true, $co
                        }
 
                }
-    } else {
+    } elseif ($siteinfo["image"] != "") {
                $src = completeurl($siteinfo["image"], $url);
 
                unset($siteinfo["image"]);
 
-               $photodata = @getimagesize($src);
+               $photodata = get_photo_info($src);
 
                if (($photodata) && ($photodata[0] > 10) and ($photodata[1] > 10))
                        $siteinfo["images"][] = array("src"=>$src,