Changes to add a new hook: HOOK_QUERY_HEADLINES. An example is provided.
This commit is contained in:
parent
b584460302
commit
891e36f57e
|
@ -638,6 +638,11 @@ class API extends Handler {
|
||||||
$headlines = array();
|
$headlines = array();
|
||||||
|
|
||||||
while ($line = db_fetch_assoc($result)) {
|
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"] == "" &&
|
$is_updated = ($line["last_read"] == "" &&
|
||||||
($line["unread"] != "t" && $line["unread"] != "1"));
|
($line["unread"] != "t" && $line["unread"] != "1"));
|
||||||
|
|
||||||
|
@ -665,6 +670,9 @@ class API extends Handler {
|
||||||
$line['id']);
|
$line['id']);
|
||||||
|
|
||||||
if ($show_excerpt ){
|
if ($show_excerpt ){
|
||||||
|
if(isset($line["modified_preview"]))
|
||||||
|
$excerpt = strip_tags($line["content_preview"]);
|
||||||
|
else
|
||||||
$excerpt = truncate_string(strip_tags($line["content_preview"]), 100);
|
$excerpt = truncate_string(strip_tags($line["content_preview"]), 100);
|
||||||
$headline_row["excerpt"] = $excerpt;
|
$headline_row["excerpt"] = $excerpt;
|
||||||
}
|
}
|
||||||
|
@ -672,16 +680,16 @@ class API extends Handler {
|
||||||
if ($show_content) {
|
if ($show_content) {
|
||||||
|
|
||||||
if ($line["cached_content"] != "") {
|
if ($line["cached_content"] != "") {
|
||||||
$line["content_preview"] =& $line["cached_content"];
|
$line["content"] =& $line["cached_content"];
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($sanitize_content) {
|
if ($sanitize_content) {
|
||||||
$headline_row["content"] = sanitize(
|
$headline_row["content"] = sanitize(
|
||||||
$line["content_preview"],
|
$line["content"],
|
||||||
sql_bool_to_bool($line['hide_images']),
|
sql_bool_to_bool($line['hide_images']),
|
||||||
false, $line["site_url"]);
|
false, $line["site_url"]);
|
||||||
} else {
|
} 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["always_display_attachments"] = sql_bool_to_bool($line["always_display_enclosures"]);
|
||||||
|
|
||||||
$headline_row["author"] = $line["author"];
|
$headline_row["author"] = $line["author"];
|
||||||
|
|
||||||
$headline_row["score"] = (int)$line["score"];
|
$headline_row["score"] = (int)$line["score"];
|
||||||
|
|
||||||
foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_RENDER_ARTICLE_API) as $p) {
|
foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_RENDER_ARTICLE_API) as $p) {
|
||||||
|
|
|
@ -288,6 +288,9 @@ class Feeds extends Handler_Protected {
|
||||||
$expand_cdm = get_pref('CDM_EXPANDED');
|
$expand_cdm = get_pref('CDM_EXPANDED');
|
||||||
|
|
||||||
while ($line = $this->dbh->fetch_assoc($result)) {
|
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"];
|
$id = $line["id"];
|
||||||
$feed_id = $line["feed_id"];
|
$feed_id = $line["feed_id"];
|
||||||
$label_cache = $line["label_cache"];
|
$label_cache = $line["label_cache"];
|
||||||
|
@ -361,6 +364,9 @@ class Feeds extends Handler_Protected {
|
||||||
make_local_datetime($line["date_entered"], false));
|
make_local_datetime($line["date_entered"], false));
|
||||||
|
|
||||||
if (get_pref('SHOW_CONTENT_PREVIEW') ) {
|
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"]),
|
$content_preview = truncate_string(strip_tags($line["content_preview"]),
|
||||||
250);
|
250);
|
||||||
}
|
}
|
||||||
|
@ -502,7 +508,7 @@ class Feeds extends Handler_Protected {
|
||||||
else
|
else
|
||||||
$tags = false;
|
$tags = false;
|
||||||
|
|
||||||
$line["content"] = sanitize($line["content_preview"],
|
$line["content"] = sanitize($line["content"],
|
||||||
sql_bool_to_bool($line['hide_images']), false, $entry_site_url);
|
sql_bool_to_bool($line['hide_images']), false, $entry_site_url);
|
||||||
|
|
||||||
foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_RENDER_ARTICLE_CDM) as $p) {
|
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\"";
|
$excerpt_hidden = "style=\"display : none\"";
|
||||||
|
|
||||||
$reply['content'] .= "<span $excerpt_hidden
|
$reply['content'] .= "<span $excerpt_hidden
|
||||||
id=\"CEXC-$id\" class=\"cdmExcerpt\"> - $content_preview</span>";
|
id=\"CEXC-$id\" class=\"cdmExcerpt\"> -" . $content_preview . "</span>";
|
||||||
$reply['content'] .= "</span>";
|
$reply['content'] .= "</span>";
|
||||||
|
|
||||||
if (!get_pref('VFEED_GROUP_BY_FEED')) {
|
if (!get_pref('VFEED_GROUP_BY_FEED')) {
|
||||||
|
|
|
@ -87,14 +87,20 @@ class Handler_Public extends Handler {
|
||||||
$tpl->setVariable('SELF_URL', htmlspecialchars(get_self_url_prefix()), true);
|
$tpl->setVariable('SELF_URL', htmlspecialchars(get_self_url_prefix()), true);
|
||||||
|
|
||||||
while ($line = $this->dbh->fetch_assoc($result)) {
|
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_ID', htmlspecialchars($line['link']), true);
|
||||||
$tpl->setVariable('ARTICLE_LINK', htmlspecialchars($line['link']), true);
|
$tpl->setVariable('ARTICLE_LINK', htmlspecialchars($line['link']), true);
|
||||||
$tpl->setVariable('ARTICLE_TITLE', htmlspecialchars($line['title']), true);
|
$tpl->setVariable('ARTICLE_TITLE', htmlspecialchars($line['title']), true);
|
||||||
|
if(isset($line["modified_preview"]))
|
||||||
|
$tpl->setVariable('ARTICLE_EXCERPT', strip_tags($line["content_preview"]), true);
|
||||||
|
else
|
||||||
$tpl->setVariable('ARTICLE_EXCERPT',
|
$tpl->setVariable('ARTICLE_EXCERPT',
|
||||||
truncate_string(strip_tags($line["content_preview"]), 100, '...'), true);
|
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']) {
|
if ($line['note']) {
|
||||||
$content = "<div style=\"$note_style\">Article note: " . $line['note'] . "</div>" .
|
$content = "<div style=\"$note_style\">Article note: " . $line['note'] . "</div>" .
|
||||||
|
@ -164,13 +170,19 @@ class Handler_Public extends Handler {
|
||||||
$feed['articles'] = array();
|
$feed['articles'] = array();
|
||||||
|
|
||||||
while ($line = $this->dbh->fetch_assoc($result)) {
|
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 = array();
|
||||||
|
|
||||||
$article['id'] = $line['link'];
|
$article['id'] = $line['link'];
|
||||||
$article['link'] = $line['link'];
|
$article['link'] = $line['link'];
|
||||||
$article['title'] = $line['title'];
|
$article['title'] = $line['title'];
|
||||||
|
if(isset($line["modified_preview"]))
|
||||||
|
$article['excerpt'] = strip_tags($line["content_preview"]);
|
||||||
|
else
|
||||||
$article['excerpt'] = truncate_string(strip_tags($line["content_preview"]), 100, '...');
|
$article['excerpt'] = truncate_string(strip_tags($line["content_preview"]), 100, '...');
|
||||||
$article['content'] = sanitize($line["content_preview"], false, $owner_uid);
|
$article['content'] = sanitize($line["content"], false, $owner_uid);
|
||||||
$article['updated'] = date('c', strtotime($line["updated"]));
|
$article['updated'] = date('c', strtotime($line["updated"]));
|
||||||
|
|
||||||
if ($line['note']) $article['note'] = $line['note'];
|
if ($line['note']) $article['note'] = $line['note'];
|
||||||
|
|
|
@ -37,6 +37,7 @@ class PluginHost {
|
||||||
const HOOK_PREFS_EDIT_FEED = 20;
|
const HOOK_PREFS_EDIT_FEED = 20;
|
||||||
const HOOK_PREFS_SAVE_FEED = 21;
|
const HOOK_PREFS_SAVE_FEED = 21;
|
||||||
const HOOK_FETCH_FEED = 22;
|
const HOOK_FETCH_FEED = 22;
|
||||||
|
const HOOK_QUERY_HEADLINES = 23;
|
||||||
|
|
||||||
const KIND_ALL = 1;
|
const KIND_ALL = 1;
|
||||||
const KIND_SYSTEM = 2;
|
const KIND_SYSTEM = 2;
|
||||||
|
|
|
@ -97,12 +97,17 @@ class Pref_Filters extends Handler_Protected {
|
||||||
print "<table width=\"100%\" cellspacing=\"0\" id=\"prefErrorFeedList\">";
|
print "<table width=\"100%\" cellspacing=\"0\" id=\"prefErrorFeedList\">";
|
||||||
|
|
||||||
while ($line = $this->dbh->fetch_assoc($result)) {
|
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_timestamp = strtotime($line["updated"]);
|
||||||
$entry_tags = get_article_tags($line["id"], $_SESSION["uid"]);
|
$entry_tags = get_article_tags($line["id"], $_SESSION["uid"]);
|
||||||
|
|
||||||
$content_preview = truncate_string(
|
if(isset($line["modified_preview"]))
|
||||||
strip_tags($line["content_preview"]), 100, '...');
|
$content_preview = strip_tags($line["content_preview"]);
|
||||||
|
else
|
||||||
|
$content_preview = truncate_string(strip_tags($line["content_preview"]), 100, '...');
|
||||||
|
|
||||||
if ($line["feed_title"])
|
if ($line["feed_title"])
|
||||||
$feed_title = $line["feed_title"];
|
$feed_title = $line["feed_title"];
|
||||||
|
|
|
@ -71,7 +71,6 @@
|
||||||
"hu_HU" => "Magyar (Hungarian)",
|
"hu_HU" => "Magyar (Hungarian)",
|
||||||
"it_IT" => "Italiano",
|
"it_IT" => "Italiano",
|
||||||
"ja_JP" => "日本語 (Japanese)",
|
"ja_JP" => "日本語 (Japanese)",
|
||||||
"ko_KR" => "한국어 (Korean)",
|
|
||||||
"lv_LV" => "Latviešu",
|
"lv_LV" => "Latviešu",
|
||||||
"nb_NO" => "Norwegian bokmål",
|
"nb_NO" => "Norwegian bokmål",
|
||||||
"nl_NL" => "Dutch",
|
"nl_NL" => "Dutch",
|
||||||
|
@ -1059,7 +1058,7 @@
|
||||||
$date_qpart = "date_entered < DATE_SUB(NOW(), INTERVAL 1 WEEK) ";
|
$date_qpart = "date_entered < DATE_SUB(NOW(), INTERVAL 1 WEEK) ";
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "2week":
|
case "2weeks":
|
||||||
if (DB_TYPE == "pgsql") {
|
if (DB_TYPE == "pgsql") {
|
||||||
$date_qpart = "date_entered < NOW() - INTERVAL '2 week' ";
|
$date_qpart = "date_entered < NOW() - INTERVAL '2 week' ";
|
||||||
} else {
|
} 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)) {
|
if (is_numeric($feed)) {
|
||||||
|
|
||||||
|
@ -2750,13 +2749,10 @@
|
||||||
|
|
||||||
if ($site_url) {
|
if ($site_url) {
|
||||||
|
|
||||||
if ($entry->hasAttribute('href')) {
|
if ($entry->hasAttribute('href'))
|
||||||
$entry->setAttribute('href',
|
$entry->setAttribute('href',
|
||||||
rewrite_relative_url($site_url, $entry->getAttribute('href')));
|
rewrite_relative_url($site_url, $entry->getAttribute('href')));
|
||||||
|
|
||||||
$entry->setAttribute('rel', 'noreferrer');
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($entry->hasAttribute('src')) {
|
if ($entry->hasAttribute('src')) {
|
||||||
$src = rewrite_relative_url($site_url, $entry->getAttribute('src'));
|
$src = rewrite_relative_url($site_url, $entry->getAttribute('src'));
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
?>
|
Loading…
Reference in New Issue