From 904f8ac422e4907ca8501186d74adb7a43e230a1 Mon Sep 17 00:00:00 2001
From: Michael Vogel <icarus@dabo.de>
Date: Fri, 3 Oct 2014 12:18:33 +0200
Subject: [PATCH] Creating hashtags from keywords of a feed, when additional
 data should be fetched.

---
 include/items.php | 11 ++++++++---
 mod/parse_url.php | 12 ++++++++++++
 2 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/include/items.php b/include/items.php
index 8cbcc3e6e..4d6d6dcb1 100644
--- a/include/items.php
+++ b/include/items.php
@@ -872,7 +872,7 @@ function get_atom_elements($feed, $item, $contact = array()) {
 	}
 
 	if (isset($contact["network"]) AND ($contact["network"] == NETWORK_FEED) AND $contact['fetch_further_information']) {
-		$res["body"] = $res["title"].add_page_info($res['plink']);
+		$res["body"] = $res["title"].add_page_info($res['plink'], false, "", true);
 		$res["title"] = "";
 		$res["object-type"] = ACTIVITY_OBJ_BOOKMARK;
 	} elseif (isset($contact["network"]) AND ($contact["network"] == NETWORK_OSTATUS))
@@ -888,7 +888,7 @@ function get_atom_elements($feed, $item, $contact = array()) {
 	return $res;
 }
 
-function add_page_info($url, $no_photos = false, $photo = "") {
+function add_page_info($url, $no_photos = false, $photo = "", $keywords = false) {
 	require_once("mod/parse_url.php");
 
 	$data = parseurl_getsiteinfo($url, true);
@@ -920,7 +920,12 @@ function add_page_info($url, $no_photos = false, $photo = "") {
 	if (($data["type"] != "photo") AND is_string($data["text"]))
 		$text .= "[quote]".$data["text"]."[/quote]";
 
-	return("\n[class=type-".$data["type"]."]".$text."[/class]");
+	$hashtags = "";
+	if ($keywords AND isset($data["keywords"]))
+		foreach ($data["keywords"] AS $keyword)
+			$hashtags .= "#".str_replace(" ", "", $keyword)." ";
+
+	return("\n[class=type-".$data["type"]."]".$text."[/class]".$hashtags);
 }
 
 function add_page_info_to_body($body, $texturl = false, $no_photos = false) {
diff --git a/mod/parse_url.php b/mod/parse_url.php
index c5f010ac1..d314c6c67 100644
--- a/mod/parse_url.php
+++ b/mod/parse_url.php
@@ -205,11 +205,23 @@ function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true, $co
 				case "dc.description":
 					$siteinfo["text"] = $attr["content"];
 					break;
+				case "keywords":
+					$keywords = explode(",", $attr["content"]);
+					break;
+				case "news_keywords":
+					$keywords = explode(",", $attr["content"]);
+					break;
 			}
 		if ($siteinfo["type"] == "summary")
 			$siteinfo["type"] = "link";
 	}
 
+	if (isset($keywords)) {
+		$siteinfo["keywords"] = array();
+		foreach ($keywords as $keyword)
+			$siteinfo["keywords"][] = trim($keyword);
+	}
+
 	//$list = $xpath->query("head/meta[@property]");
 	$list = $xpath->query("//meta[@property]");
 	foreach ($list as $node) {