From 84d952f141584c5788aba4d0119a66c8a043721c Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sat, 23 Feb 2013 16:01:51 +0400 Subject: [PATCH] implement article render hooks --- classes/feeds.php | 23 +++++++++++++---------- classes/pluginhost.php | 2 ++ include/functions.php | 31 ++++++++++++++++--------------- 3 files changed, 31 insertions(+), 25 deletions(-) diff --git a/classes/feeds.php b/classes/feeds.php index b257ca35..183edb40 100644 --- a/classes/feeds.php +++ b/classes/feeds.php @@ -494,6 +494,16 @@ class Feeds extends Handler_Protected { } else { + $line["tags"] = get_article_tags($this->link, $id, $_SESSION["uid"], $line["tag_cache"]); + unset($line["tag_cache"]); + + $line["content"] = sanitize($this->link, $line["content_preview"], + false, false, $feed_site_url); + + foreach ($pluginhost->get_hooks($pluginhost::HOOK_RENDER_ARTICLE_CDM) as $p) { + $line = $p->hook_render_article_cdm($line); + } + if (get_pref($this->link, 'VFEED_GROUP_BY_FEED') && $line["feed_title"]) { if ($feed_id != $vgroup_last_feed) { @@ -627,9 +637,6 @@ class Feeds extends Handler_Protected { $line["content_preview"] =& $line["cached_content"]; } - $article_content = sanitize($this->link, $line["content_preview"], - false, false, $feed_site_url); - $reply['content'] .= "
"; if ($line['note']) { $reply['content'] .= format_article_note($id, $line['note']); @@ -637,7 +644,7 @@ class Feeds extends Handler_Protected { $reply['content'] .= "
"; $reply['content'] .= ""; - $reply['content'] .= $article_content; + $reply['content'] .= $line["content"]; $reply['content'] .= ""; /* $tmp_result = db_query($this->link, "SELECT always_display_enclosures FROM @@ -651,17 +658,13 @@ class Feeds extends Handler_Protected { $always_display_enclosures = sql_bool_to_bool($line["always_display_enclosures"]); $reply['content'] .= format_article_enclosures($this->link, $id, $always_display_enclosures, - $article_content); + $line["content"]); $reply['content'] .= ""; $reply['content'] .= "
"; - $tag_cache = $line["tag_cache"]; - - $tags_str = format_tags_string( - get_article_tags($this->link, $id, $_SESSION["uid"], $tag_cache), - $id); + $tags_str = format_tags_string($tags, $id); $reply['content'] .= "Tags diff --git a/classes/pluginhost.php b/classes/pluginhost.php index a1ad7ef0..c6fcf6b5 100644 --- a/classes/pluginhost.php +++ b/classes/pluginhost.php @@ -17,6 +17,8 @@ class PluginHost { const HOOK_UPDATE_TASK = 7; const HOOK_AUTH_USER = 8; const HOOK_HOTKEY_MAP = 9; + const HOOK_RENDER_ARTICLE = 10; + const HOOK_RENDER_ARTICLE_CDM = 11; const KIND_ALL = 1; const KIND_SYSTEM = 2; diff --git a/include/functions.php b/include/functions.php index b0ccba31..a2b2c1c9 100644 --- a/include/functions.php +++ b/include/functions.php @@ -2871,7 +2871,18 @@ $line = db_fetch_assoc($result); - $feed_site_url = $line['site_url']; + $tag_cache = $line["tag_cache"]; + + $line["tags"] = get_article_tags($link, $id, $owner_uid, $line["tag_cache"]); + unset($line["tag_cache"]); + + $line["content"] = sanitize($link, $line["content"], false, $owner_uid, $line["site_url"]); + + global $pluginhost; + + foreach ($pluginhost->get_hooks($pluginhost::HOOK_RENDER_ARTICLE) as $p) { + $line = $p->hook_render_article($line); + } $num_comments = $line["num_comments"]; $entry_comments = ""; @@ -2929,15 +2940,8 @@ $rv['content'] .= "
" . $line["title"] . "$entry_author
"; } - $tag_cache = $line["tag_cache"]; - - if (!$tag_cache) - $tags = get_article_tags($link, $id, $owner_uid); - else - $tags = explode(",", $tag_cache); - - $tags_str = format_tags_string($tags, $id); - $tags_str_full = join(", ", $tags); + $tags_str = format_tags_string($line["tags"], $id); + $tags_str_full = join(", ", $line["tags"]); if (!$tags_str_full) $tags_str_full = __("no tags"); @@ -3036,13 +3040,10 @@ $line["content"] =& $line["cached_content"]; } - $article_content = sanitize($link, $line["content"], false, $owner_uid, - $feed_site_url); - - $rv['content'] .= $article_content; + $rv['content'] .= $line["content"]; $rv['content'] .= format_article_enclosures($link, $id, - $always_display_enclosures, $article_content); + $always_display_enclosures, $line["content"]); $rv['content'] .= "
"; -- 2.39.5