]> git.mxchange.org Git - friendica.git/commitdiff
Suppoorting Open Graph and Dublin Core when displaying single item
authorMichael Vogel <icarus@dabo.de>
Sat, 2 Mar 2013 13:46:06 +0000 (14:46 +0100)
committerMichael Vogel <icarus@dabo.de>
Sat, 2 Mar 2013 13:46:06 +0000 (14:46 +0100)
Following link shorteners in parse_url

mod/display.php
mod/parse_url.php
view/theme/vier/smarty3/wall_thread.tpl
view/theme/vier/wall_thread.tpl

index 57a329f305da6c8fd50aa0af358fc79572057294..e272674354506bec4c20c2c0af12b007ab23b03b 100644 (file)
@@ -166,6 +166,32 @@ function display_content(&$a, $update = 0) {
                        $o .= "<script> var netargs = '?f=&nick=" . $nick . "&item_id=" . $item_id . "'; </script>";
                $o .= conversation($a,$items,'display', $update);
 
+               // Preparing the meta header
+               require_once('include/bbcode.php');
+               require_once("include/html2plain.php");
+               $description = trim(html2plain(bbcode($r[0]["body"], false, false), 0, true));
+               $title = trim(html2plain(bbcode($r[0]["title"], false, false), 0, true));
+
+               if ($title == "")
+                       $title = $r[0]["author-name"];
+
+               //<meta name="keywords" content="">
+               $a->page['htmlhead'] .= '<meta name="author" content="'.$r[0]["author-name"].'" />'."\n";
+               $a->page['htmlhead'] .= '<meta name="title" content="'.$title.'" />'."\n";
+               $a->page['htmlhead'] .= '<meta name="fulltitle" content="'.$title.'" />'."\n";
+               $a->page['htmlhead'] .= '<meta name="description" content="'.$description.'" />'."\n";
+
+               $a->page['htmlhead'] .= '<meta name="DC.title" content="'.$title.'" />'."\n";
+               $a->page['htmlhead'] .= '<meta name="DC.description" content="'.$description.'" />'."\n";
+
+               $a->page['htmlhead'] .= '<meta property="og:type" content="website" />'."\n";
+               $a->page['htmlhead'] .= '<meta property="og:title" content="'.$title.'" />'."\n";
+               //<meta property="og:image" content="" />
+               $a->page['htmlhead'] .= '<meta property="og:url" content="'.$r[0]["plink"].'" />'."\n";
+               $a->page['htmlhead'] .= '<meta property="og:description" content="'.$description.'" />'."\n";
+               $a->page['htmlhead'] .= '<meta name="og:article:author" content="'.$r[0]["author-name"].'" />'."\n";
+               // article:tag
+
        }
        else {
                $r = q("SELECT `id`,`deleted` FROM `item` WHERE `id` = '%s' OR `uri` = '%s' LIMIT 1",
index 1393a15d36b95bd94a9ab69ebd6fa6a38cddacb7..c8670d4d967fc67b69f66da129a71b60398d6bc0 100644 (file)
@@ -33,7 +33,7 @@ function completeurl($url, $scheme) {
 
         $complete = $schemearr["scheme"]."://".$schemearr["host"];
 
-        if ($schemearr["port"] != "")
+        if (@$schemearr["port"] != "")
                 $complete .= ":".$schemearr["port"];
 
                if(strpos($urlarr['path'],'/') !== 0)
@@ -41,10 +41,10 @@ function completeurl($url, $scheme) {
 
         $complete .= $urlarr["path"];
 
-        if ($urlarr["query"] != "")
+        if (@$urlarr["query"] != "")
                 $complete .= "?".$urlarr["query"];
 
-        if ($urlarr["fragment"] != "")
+        if (@$urlarr["fragment"] != "")
                 $complete .= "#".$urlarr["fragment"];
 
         return($complete);
@@ -52,18 +52,29 @@ function completeurl($url, $scheme) {
 
 function parseurl_getsiteinfo($url) {
        $siteinfo = array();
-
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HEADER, 1);
        curl_setopt($ch, CURLOPT_NOBODY, 0);
        curl_setopt($ch, CURLOPT_TIMEOUT, 3);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+       //curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch,CURLOPT_USERAGENT,'Opera/9.64(Windows NT 5.1; U; de) Presto/2.1.1');
 
        $header = curl_exec($ch);
+       $curl_info = @curl_getinfo($ch);
+        $http_code = $curl_info['http_code'];
        curl_close($ch);
 
+       if ((($curl_info['http_code'] == "301") OR ($curl_info['http_code'] == "302"))
+               AND (($curl_info['redirect_url'] != "") OR ($curl_info['location'] != ""))) {
+               if ($curl_info['redirect_url'] != "")
+                       $siteinfo = parseurl_getsiteinfo($curl_info['redirect_url']);
+               else
+                       $siteinfo = parseurl_getsiteinfo($curl_info['location']);
+               return($siteinfo);
+       }
+
        // Fetch the first mentioned charset. Can be in body or header
        if (preg_match('/charset=(.*?)['."'".'"\s\n]/', $header, $matches))
                $charset = trim(array_pop($matches));
@@ -173,7 +184,7 @@ function parseurl_getsiteinfo($url) {
                }
        }
 
-       if ($siteinfo["image"] == "") {
+       if (@$siteinfo["image"] == "") {
             $list = $xpath->query("//img[@src]");
             foreach ($list as $node) {
                 $attr = array();
@@ -212,7 +223,7 @@ function parseurl_getsiteinfo($url) {
                                                        "height"=>$photodata[1]);
        }
 
-       if ($siteinfo["text"] == "") {
+       if (@$siteinfo["text"] == "") {
                $text = "";
 
                $list = $xpath->query("//div[@class='article']");
index 5559a2065974d7881882fdc946d6a543cecb1808..adaf0b639fa6cb33bb71eab20344f84aea9e717a 100644 (file)
@@ -64,7 +64,7 @@
                        </span>
                </div>
 
-               <div class="wall-item-content">
+               <div itemprop="description" class="wall-item-content">
                        {{if $item.title}}<h2><a href="{{$item.plink.href}}" class="{{$item.sparkle}}">{{$item.title}}</a></h2>{{/if}}
                        {{$item.body}}
                </div>
index 366493a686c277eacf2a9b903f5f70c0f18a692e..7ca07d8591fa90550c54e4f5ebe4f50268d2cd8a 100644 (file)
@@ -59,7 +59,7 @@
                        </span>
                </div>
 
-               <div class="wall-item-content">
+               <div itemprop="description" class="wall-item-content">
                        {{ if $item.title }}<h2><a href="$item.plink.href" class="$item.sparkle">$item.title</a></h2>{{ endif }}
                        $item.body
                </div>