Browse Source

Changes to add a new hook: HOOK_QUERY_HEADLINES. An example is provided.

justauser 11 years ago
parent
commit
891e36f57e

+ 15 - 6
classes/api.php

@@ -636,8 +636,13 @@ class API extends Handler {
 			$feed_title = $qfh_ret[1];
 
 			$headlines = array();
-
+			
 			while ($line = db_fetch_assoc($result)) {
+				
+				foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_QUERY_HEADLINES) as $p) {
+					$line = $p->hook_query_headlines($line, 100, true);
+				}
+				
 				$is_updated = ($line["last_read"] == "" &&
 					($line["unread"] != "t" && $line["unread"] != "1"));
 
@@ -664,24 +669,27 @@ class API extends Handler {
 						$headline_row['attachments'] = get_article_enclosures(
 							$line['id']);
 
-				if ($show_excerpt) {
-					$excerpt = truncate_string(strip_tags($line["content_preview"]), 100);
+				if ($show_excerpt ){
+					if(isset($line["modified_preview"])) 
+						$excerpt = strip_tags($line["content_preview"]);
+					else
+						$excerpt = truncate_string(strip_tags($line["content_preview"]), 100);
 					$headline_row["excerpt"] = $excerpt;
 				}
 
 				if ($show_content) {
 
 					if ($line["cached_content"] != "") {
-						$line["content_preview"] =& $line["cached_content"];
+						$line["content"] =& $line["cached_content"];
 					}
 
 					if ($sanitize_content) {
 						$headline_row["content"] = sanitize(
-							$line["content_preview"],
+							$line["content"],
 							sql_bool_to_bool($line['hide_images']),
 							false, $line["site_url"]);
 					} else {
-						$headline_row["content"] = $line["content_preview"];
+						$headline_row["content"] = $line["content"];
 					}
 				}
 
@@ -699,6 +707,7 @@ class API extends Handler {
 				$headline_row["always_display_attachments"] = sql_bool_to_bool($line["always_display_enclosures"]);
 
 				$headline_row["author"] = $line["author"];
+				
 				$headline_row["score"] = (int)$line["score"];
 
 				foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_RENDER_ARTICLE_API) as $p) {

+ 11 - 5
classes/feeds.php

@@ -288,6 +288,9 @@ class Feeds extends Handler_Protected {
 			$expand_cdm = get_pref('CDM_EXPANDED');
 
 			while ($line = $this->dbh->fetch_assoc($result)) {
+				foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_QUERY_HEADLINES) as $p) {
+					$line = $p->hook_query_headlines($line, 250);
+				}
 				$id = $line["id"];
 				$feed_id = $line["feed_id"];
 				$label_cache = $line["label_cache"];
@@ -360,9 +363,12 @@ class Feeds extends Handler_Protected {
 				$date_entered_fmt = T_sprintf("Imported at %s",
 					make_local_datetime($line["date_entered"], false));
 
-				if (get_pref('SHOW_CONTENT_PREVIEW')) {
-					$content_preview = truncate_string(strip_tags($line["content_preview"]),
-						250);
+				if (get_pref('SHOW_CONTENT_PREVIEW') ) {
+					if(isset($line["modified_preview"]))
+						$content_preview = strip_tags($line["content_preview"]);
+					else
+						$content_preview = truncate_string(strip_tags($line["content_preview"]),
+							250);
 				}
 
 				$score = $line["score"];
@@ -502,7 +508,7 @@ class Feeds extends Handler_Protected {
 					else
 						$tags = false;
 
-					$line["content"] = sanitize($line["content_preview"],
+					$line["content"] = sanitize($line["content"],
 							sql_bool_to_bool($line['hide_images']), false, $entry_site_url);
 
 					foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_RENDER_ARTICLE_CDM) as $p) {
@@ -575,7 +581,7 @@ class Feeds extends Handler_Protected {
 						$excerpt_hidden = "style=\"display : none\"";
 
 					$reply['content'] .= "<span $excerpt_hidden
-						id=\"CEXC-$id\" class=\"cdmExcerpt\"> - $content_preview</span>";
+						id=\"CEXC-$id\" class=\"cdmExcerpt\"> -" . $content_preview . "</span>";
 					$reply['content'] .= "</span>";
 
 					if (!get_pref('VFEED_GROUP_BY_FEED')) {

+ 17 - 5
classes/handler/public.php

@@ -87,14 +87,20 @@ class Handler_Public extends Handler {
 			$tpl->setVariable('SELF_URL', htmlspecialchars(get_self_url_prefix()), true);
 
 			while ($line = $this->dbh->fetch_assoc($result)) {
+				foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_QUERY_HEADLINES) as $p) {
+					$line = $p->hook_query_headlines($line);
+				}
 
 				$tpl->setVariable('ARTICLE_ID', htmlspecialchars($line['link']), true);
 				$tpl->setVariable('ARTICLE_LINK', htmlspecialchars($line['link']), true);
 				$tpl->setVariable('ARTICLE_TITLE', htmlspecialchars($line['title']), true);
-				$tpl->setVariable('ARTICLE_EXCERPT',
-					truncate_string(strip_tags($line["content_preview"]), 100, '...'), true);
+				if(isset($line["modified_preview"]))
+					$tpl->setVariable('ARTICLE_EXCERPT', strip_tags($line["content_preview"]), true);
+				else
+					$tpl->setVariable('ARTICLE_EXCERPT',
+						truncate_string(strip_tags($line["content_preview"]), 100, '...'), true);
 
-				$content = sanitize($line["content_preview"], false, $owner_uid);
+				$content = sanitize($line["content"], false, $owner_uid);
 
 				if ($line['note']) {
 					$content = "<div style=\"$note_style\">Article note: " . $line['note'] . "</div>" .
@@ -164,13 +170,19 @@ class Handler_Public extends Handler {
 			$feed['articles'] = array();
 
 			while ($line = $this->dbh->fetch_assoc($result)) {
+				foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_QUERY_HEADLINES) as $p) {
+					$line = $p->hook_query_headlines($line, 100);
+				}
 				$article = array();
 
 				$article['id'] = $line['link'];
 				$article['link']	= $line['link'];
 				$article['title'] = $line['title'];
-				$article['excerpt'] = truncate_string(strip_tags($line["content_preview"]), 100, '...');
-				$article['content'] = sanitize($line["content_preview"], false, $owner_uid);
+				if(isset($line["modified_preview"]))
+					$article['excerpt'] = strip_tags($line["content_preview"]);
+				else
+					$article['excerpt'] = truncate_string(strip_tags($line["content_preview"]), 100, '...');
+				$article['content'] = sanitize($line["content"], false, $owner_uid);
 				$article['updated'] = date('c', strtotime($line["updated"]));
 
 				if ($line['note']) $article['note'] = $line['note'];

+ 1 - 0
classes/pluginhost.php

@@ -37,6 +37,7 @@ class PluginHost {
 	const HOOK_PREFS_EDIT_FEED = 20;
 	const HOOK_PREFS_SAVE_FEED = 21;
 	const HOOK_FETCH_FEED = 22;
+	const HOOK_QUERY_HEADLINES = 23;
 
 	const KIND_ALL = 1;
 	const KIND_SYSTEM = 2;

+ 7 - 2
classes/pref/filters.php

@@ -97,12 +97,17 @@ class Pref_Filters extends Handler_Protected {
 		print "<table width=\"100%\" cellspacing=\"0\" id=\"prefErrorFeedList\">";
 
 		while ($line = $this->dbh->fetch_assoc($result)) {
+			foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_QUERY_HEADLINES) as $p) {
+					$line = $p->hook_query_headlines($line, 100);
+				}
 
 			$entry_timestamp = strtotime($line["updated"]);
 			$entry_tags = get_article_tags($line["id"], $_SESSION["uid"]);
 
-			$content_preview = truncate_string(
-				strip_tags($line["content_preview"]), 100, '...');
+			if(isset($line["modified_preview"]))
+				$content_preview = strip_tags($line["content_preview"]);
+			else
+				$content_preview = truncate_string(strip_tags($line["content_preview"]), 100, '...');
 
 			if ($line["feed_title"])
 				$feed_title = $line["feed_title"];

+ 3 - 7
include/functions.php

@@ -71,7 +71,6 @@
 					"hu_HU" => "Magyar (Hungarian)",
 					"it_IT" => "Italiano",
 					"ja_JP" => "日本語 (Japanese)",
-					"ko_KR" => "한국어 (Korean)",
 					"lv_LV" => "Latviešu",
 					"nb_NO" => "Norwegian bokmål",
 					"nl_NL" => "Dutch",
@@ -1059,7 +1058,7 @@
 					$date_qpart = "date_entered < DATE_SUB(NOW(), INTERVAL 1 WEEK) ";
 				}
 				break;
-			case "2week":
+			case "2weeks":
 				if (DB_TYPE == "pgsql") {
 					$date_qpart = "date_entered < NOW() - INTERVAL '2 week' ";
 				} else {
@@ -2579,7 +2578,7 @@
 				}
 			}
 
-			$content_query_part = "content as content_preview, cached_content, ";
+			$content_query_part = "content, content AS content_preview, cached_content, ";
 
 			if (is_numeric($feed)) {
 
@@ -2750,13 +2749,10 @@
 
 			if ($site_url) {
 
-				if ($entry->hasAttribute('href')) {
+				if ($entry->hasAttribute('href'))
 					$entry->setAttribute('href',
 						rewrite_relative_url($site_url, $entry->getAttribute('href')));
 
-					$entry->setAttribute('rel', 'noreferrer');
-				}
-
 				if ($entry->hasAttribute('src')) {
 					$src = rewrite_relative_url($site_url, $entry->getAttribute('src'));
 

+ 0 - 0
plugins/query_headlines/init.js


+ 47 - 0
plugins/query_headlines/init.php

@@ -0,0 +1,47 @@
+<?php
+class Query_Headlines extends Plugin {
+	// example of the use of the HOOK_QUERY_HEADLINES
+	// this example will change the author and tags to be empty string so they don't display
+	// the arguements are:
+	//	-	 the array of elements that are returned by queryFeedHeadlines
+	// 	-	the length that the caller wants to truncate the content preview to
+	//	-	a boolean that indicates if the caller is from an API call
+	//NOTE:****  You have to make this a system plugin if you want it to also work
+	//		on API calls.  If you just make it a user plugin it will work on web page output
+	//		but not on API calls
+	private $host;
+
+	function about() {
+		return array(1.0,
+			"Example of use of HOOK_QUERY_HEADLINES",
+			"justauser" );
+	}
+
+	function init($host) {
+		$this->host = $host;
+		$host->add_hook($host::HOOK_QUERY_HEADLINES, $this);
+	}
+
+	// passes in the array for an item
+	// second argument is the length of the preview the caller is using
+	// create a key called "modified_preview" if you change the preview and don't want
+	//		caller to override with their default
+
+	function hook_query_headlines($line, $preview_length = 100,$api_call=false) {
+		//make the author field empty
+		$line["author"] = "";
+		
+		// and toss tags, since I don't use
+		$line["tag_cache"] = "";
+		return $line;
+		
+		
+	}
+	
+
+	function api_version() {
+		return 2;
+	}
+
+}
+?>