adjust phpdoc tags for hook definitions/constants (make them reference each other)

This commit is contained in:
Andrew Dolgov 2021-11-16 16:31:40 +03:00
parent ad30d39e2a
commit 10d1a8c05a
2 changed files with 119 additions and 68 deletions

View File

@ -1,11 +1,4 @@
<?php <?php
/* TODO: I haven't yet decided if we're keeping hook prototypes which did grow (with additional params) over time and breaking all plugins
with legacy function definitions, or commenting base definitions out for the time being -fox
(It's a shame that PHP doesn't support argument overloading)
Stuff like hook_enclosure_entry() etc.
*/
abstract class Plugin { abstract class Plugin {
const API_VERSION_COMPAT = 1; const API_VERSION_COMPAT = 1;
@ -103,9 +96,12 @@ abstract class Plugin {
/* plugin hook methods */ /* plugin hook methods */
/* GLOBAL hooks are invoked in global context, only available to system plugins (loaded via .env for all users) */
/** /**
* @param array<string,mixed> $line * @param array<string,mixed> $line
* @return string * @return string
* @see PluginHost::HOOK_ARTICLE_BUTTON
*/ */
function hook_article_button($line) { function hook_article_button($line) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -116,6 +112,7 @@ abstract class Plugin {
/** /**
* @param array<string,mixed> $article * @param array<string,mixed> $article
* @return array<string,mixed> * @return array<string,mixed>
* @see PluginHost::HOOK_ARTICLE_FILTER
*/ */
function hook_article_filter($article) { function hook_article_filter($article) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -126,6 +123,7 @@ abstract class Plugin {
/** /**
* @param string $tab * @param string $tab
* @return void * @return void
* @see PluginHost::HOOK_PREFS_TAB
*/ */
function hook_prefs_tab($tab) { function hook_prefs_tab($tab) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -134,12 +132,15 @@ abstract class Plugin {
/** /**
* @param string $section * @param string $section
* @return void * @return void
* @see PluginHost::HOOK_PREFS_TAB_SECTION
*/ */
function hook_prefs_tab_section($section) { function hook_prefs_tab_section($section) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
} }
/** @return void */ /** @return void
* @see PluginHost::HOOK_PREFS_TABS
*/
function hook_prefs_tabs() { function hook_prefs_tabs() {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
} }
@ -148,14 +149,16 @@ abstract class Plugin {
* @param FeedParser $parser * @param FeedParser $parser
* @param int $feed_id * @param int $feed_id
* @return void * @return void
* @see PluginHost::HOOK_FEED_PARSED
*/ */
function hook_feed_parsed($parser, $feed_id) { function hook_feed_parsed($parser, $feed_id) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
} }
/** /** GLOBAL
* @param array<string,string> $cli_options * @param array<string,string> $cli_options
* @return void * @return void
* @see PluginHost::HOOK_UPDATE_TASK
*/ */
function hook_update_task($cli_options) { function hook_update_task($cli_options) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -166,6 +169,7 @@ abstract class Plugin {
* @param string $password * @param string $password
* @param string $service * @param string $service
* @return int|false user_id * @return int|false user_id
* @see PluginHost::HOOK_AUTH_USER
*/ */
function hook_auth_user($login, $password, $service = '') { function hook_auth_user($login, $password, $service = '') {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -186,6 +190,7 @@ abstract class Plugin {
/** /**
* @param array<string, string> $hotkeys * @param array<string, string> $hotkeys
* @return array<string, string> * @return array<string, string>
* @see PluginHost::HOOK_HOTKEY_MAP
*/ */
function hook_hotkey_map($hotkeys) { function hook_hotkey_map($hotkeys) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -196,6 +201,7 @@ abstract class Plugin {
/** /**
* @param array<string, mixed> $article * @param array<string, mixed> $article
* @return array<string, mixed> * @return array<string, mixed>
* @see PluginHost::HOOK_RENDER_ARTICLE
*/ */
function hook_render_article($article) { function hook_render_article($article) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -206,6 +212,7 @@ abstract class Plugin {
/** /**
* @param array<string, mixed> $article * @param array<string, mixed> $article
* @return array<string, mixed> * @return array<string, mixed>
* @see PluginHost::HOOK_RENDER_ARTICLE_CDM
*/ */
function hook_render_article_cdm($article) { function hook_render_article_cdm($article) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -219,6 +226,7 @@ abstract class Plugin {
* @param int $owner_uid * @param int $owner_uid
* @param int $feed * @param int $feed
* @return string * @return string
* @see PluginHost::HOOK_FEED_FETCHED
*/ */
function hook_feed_fetched($feed_data, $fetch_url, $owner_uid, $feed) { function hook_feed_fetched($feed_data, $fetch_url, $owner_uid, $feed) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -233,6 +241,7 @@ abstract class Plugin {
* @param array<string> $disallowed_attributes * @param array<string> $disallowed_attributes
* @param int $article_id * @param int $article_id
* @return DOMDocument|array<int,DOMDocument|array<string>> * @return DOMDocument|array<int,DOMDocument|array<string>>
* @see PluginHost::HOOK_SANITIZE
*/ */
function hook_sanitize($doc, $site_url, $allowed_elements, $disallowed_attributes, $article_id) { function hook_sanitize($doc, $site_url, $allowed_elements, $disallowed_attributes, $article_id) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -243,6 +252,7 @@ abstract class Plugin {
/** /**
* @param array{'article': array<string,mixed>|null, 'headline': array<string,mixed>|null} $params * @param array{'article': array<string,mixed>|null, 'headline': array<string,mixed>|null} $params
* @return array<string, string> * @return array<string, string>
* @see PluginHost::HOOK_RENDER_ARTICLE_API
*/ */
function hook_render_article_api($params) { function hook_render_article_api($params) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -250,14 +260,20 @@ abstract class Plugin {
return []; return [];
} }
/** @return string */ /**
* @return string
* @see PluginHost::HOOK_TOOLBAR_BUTTON
*/
function hook_toolbar_button() { function hook_toolbar_button() {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
return ""; return "";
} }
/** @return string */ /**
* @return string
* @see PluginHost::HOOK_ACTION_ITEM
*/
function hook_action_item() { function hook_action_item() {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -268,6 +284,7 @@ abstract class Plugin {
* @param int $feed_id * @param int $feed_id
* @param bool $is_cat * @param bool $is_cat
* @return string * @return string
* @see PluginHost::HOOK_HEADLINE_TOOLBAR_BUTTON
*/ */
function hook_headline_toolbar_button($feed_id, $is_cat) { function hook_headline_toolbar_button($feed_id, $is_cat) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -278,6 +295,7 @@ abstract class Plugin {
/** /**
* @param array<string, array<string, string>> $hotkeys * @param array<string, array<string, string>> $hotkeys
* @return array<string, array<string, string>> * @return array<string, array<string, string>>
* @see PluginHost::HOOK_HOTKEY_INFO
*/ */
function hook_hotkey_info($hotkeys) { function hook_hotkey_info($hotkeys) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -288,6 +306,7 @@ abstract class Plugin {
/** /**
* @param array<string,mixed> $row * @param array<string,mixed> $row
* @return string * @return string
* @see PluginHost::HOOK_ARTICLE_LEFT_BUTTON
*/ */
function hook_article_left_button($row) { function hook_article_left_button($row) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -298,6 +317,7 @@ abstract class Plugin {
/** /**
* @param int $feed_id * @param int $feed_id
* @return void * @return void
* @see PluginHost::HOOK_PREFS_EDIT_FEED
*/ */
function hook_prefs_edit_feed($feed_id) { function hook_prefs_edit_feed($feed_id) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -306,6 +326,7 @@ abstract class Plugin {
/** /**
* @param int $feed_id * @param int $feed_id
* @return void * @return void
* @see PluginHost::HOOK_PREFS_SAVE_FEED
*/ */
function hook_prefs_save_feed($feed_id) { function hook_prefs_save_feed($feed_id) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -320,6 +341,7 @@ abstract class Plugin {
* @param string $auth_login * @param string $auth_login
* @param string $auth_pass * @param string $auth_pass
* @return string (possibly mangled feed data) * @return string (possibly mangled feed data)
* @see PluginHost::HOOK_FETCH_FEED
*/ */
function hook_fetch_feed($feed_data, $fetch_url, $owner_uid, $feed, $last_article_timestamp, $auth_login, $auth_pass) { function hook_fetch_feed($feed_data, $fetch_url, $owner_uid, $feed, $last_article_timestamp, $auth_login, $auth_pass) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -331,6 +353,7 @@ abstract class Plugin {
* @param array<string,mixed> $row * @param array<string,mixed> $row
* @param int $excerpt_length * @param int $excerpt_length
* @return array<string,mixed> * @return array<string,mixed>
* @see PluginHost::HOOK_QUERY_HEADLINES
*/ */
function hook_query_headlines($row, $excerpt_length) { function hook_query_headlines($row, $excerpt_length) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -338,7 +361,9 @@ abstract class Plugin {
return []; return [];
} }
/** @return void */ /** GLOBAL
* @return void
* @see PluginHost::HOOK_HOUSE_KEEPING */
function hook_house_keeping() { function hook_house_keeping() {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
} }
@ -346,6 +371,7 @@ abstract class Plugin {
/** /**
* @param string $query * @param string $query
* @return array<int, string|array<string>> * @return array<int, string|array<string>>
* @see PluginHost::HOOK_SEARCH
*/ */
function hook_search($query) { function hook_search($query) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -361,6 +387,7 @@ abstract class Plugin {
* @param string $article_content * @param string $article_content
* @param bool $hide_images * @param bool $hide_images
* @return string|array<string,array<int, array<string, mixed>>> ($enclosures_formatted, $enclosures) * @return string|array<string,array<int, array<string, mixed>>> ($enclosures_formatted, $enclosures)
* @see PluginHost::HOOK_FORMAT_ENCLOSURES
*/ */
function hook_format_enclosures($enclosures_formatted, $enclosures, $article_id, $always_display_enclosures, $article_content, $hide_images) { function hook_format_enclosures($enclosures_formatted, $enclosures, $article_id, $always_display_enclosures, $article_content, $hide_images) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -374,6 +401,7 @@ abstract class Plugin {
* @param string $auth_login * @param string $auth_login
* @param string $auth_pass * @param string $auth_pass
* @return string (possibly mangled feed data) * @return string (possibly mangled feed data)
* @see PluginHost::HOOK_SUBSCRIBE_FEED
*/ */
function hook_subscribe_feed($contents, $url, $auth_login, $auth_pass) { function hook_subscribe_feed($contents, $url, $auth_login, $auth_pass) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -386,6 +414,7 @@ abstract class Plugin {
* @param bool $is_cat * @param bool $is_cat
* @param array<string,mixed> $qfh_ret (headlines object) * @param array<string,mixed> $qfh_ret (headlines object)
* @return string * @return string
* @see PluginHost::HOOK_HEADLINES_BEFORE
*/ */
function hook_headlines_before($feed, $is_cat, $qfh_ret) { function hook_headlines_before($feed, $is_cat, $qfh_ret) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -398,6 +427,7 @@ abstract class Plugin {
* @param int $article_id * @param int $article_id
* @param array<string,mixed> $rv * @param array<string,mixed> $rv
* @return string * @return string
* @see PluginHost::HOOK_RENDER_ENCLOSURE
*/ */
function hook_render_enclosure($entry, $article_id, $rv) { function hook_render_enclosure($entry, $article_id, $rv) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -409,6 +439,7 @@ abstract class Plugin {
* @param array<string,mixed> $article * @param array<string,mixed> $article
* @param string $action * @param string $action
* @return array<string,mixed> ($article) * @return array<string,mixed> ($article)
* @see PluginHost::HOOK_ARTICLE_FILTER_ACTION
*/ */
function hook_article_filter_action($article, $action) { function hook_article_filter_action($article, $action) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -422,6 +453,7 @@ abstract class Plugin {
* @param bool $is_cat * @param bool $is_cat
* @param int $owner_uid * @param int $owner_uid
* @return array<string,mixed> ($line) * @return array<string,mixed> ($line)
* @see PluginHost::HOOK_ARTICLE_EXPORT_FEED
*/ */
function hook_article_export_feed($line, $feed, $is_cat, $owner_uid) { function hook_article_export_feed($line, $feed, $is_cat, $owner_uid) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -429,7 +461,10 @@ abstract class Plugin {
return []; return [];
} }
/** @return void */ /**
* @return void
* @see PluginHost::HOOK_MAIN_TOOLBAR_BUTTON
*/
function hook_main_toolbar_button() { function hook_main_toolbar_button() {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
} }
@ -439,6 +474,7 @@ abstract class Plugin {
* @param int $id * @param int $id
* @param array{'formatted': string, 'entries': array<int, array<string, mixed>>} $rv * @param array{'formatted': string, 'entries': array<int, array<string, mixed>>} $rv
* @return array<string,string> ($entry) * @return array<string,string> ($entry)
* @see PluginHost::HOOK_ENCLOSURE_ENTRY
*/ */
function hook_enclosure_entry($entry, $id, $rv) { function hook_enclosure_entry($entry, $id, $rv) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -450,6 +486,7 @@ abstract class Plugin {
* @param string $html * @param string $html
* @param array<string,mixed> $row * @param array<string,mixed> $row
* @return string ($html) * @return string ($html)
* @see PluginHost::HOOK_FORMAT_ARTICLE
*/ */
function hook_format_article($html, $row) { function hook_format_article($html, $row) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -465,6 +502,7 @@ abstract class Plugin {
* @param string $auth_login * @param string $auth_login
* @param string $auth_pass * @param string $auth_pass
* @return array{"title": string, "site_url": string} * @return array{"title": string, "site_url": string}
* @see PluginHost::HOOK_FEED_BASIC_INFO
*/ */
function hook_feed_basic_info($basic_info, $fetch_url, $owner_uid, $feed_id, $auth_login, $auth_pass) { function hook_feed_basic_info($basic_info, $fetch_url, $owner_uid, $feed_id, $auth_login, $auth_pass) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -475,6 +513,7 @@ abstract class Plugin {
/** /**
* @param string $filename * @param string $filename
* @return bool * @return bool
* @see PluginHost::HOOK_SEND_LOCAL_FILE
*/ */
function hook_send_local_file($filename) { function hook_send_local_file($filename) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -486,6 +525,7 @@ abstract class Plugin {
* @param int $feed_id * @param int $feed_id
* @param int $owner_uid * @param int $owner_uid
* @return bool * @return bool
* @see PluginHost::HOOK_UNSUBSCRIBE_FEED
*/ */
function hook_unsubscribe_feed($feed_id, $owner_uid) { function hook_unsubscribe_feed($feed_id, $owner_uid) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -497,6 +537,7 @@ abstract class Plugin {
* @param Mailer $mailer * @param Mailer $mailer
* @param array<string,mixed> $params * @param array<string,mixed> $params
* @return int * @return int
* @see PluginHost::HOOK_SEND_MAIL
*/ */
function hook_send_mail($mailer, $params) { function hook_send_mail($mailer, $params) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -512,6 +553,7 @@ abstract class Plugin {
* @param array<string,string|bool|int> $matched_rules * @param array<string,string|bool|int> $matched_rules
* @param array<string,string> $article_filters * @param array<string,string> $article_filters
* @return void * @return void
* @see PluginHost::HOOK_FILTER_TRIGGERED
*/ */
function hook_filter_triggered($feed_id, $owner_uid, $article, $matched_filters, $matched_rules, $article_filters) { function hook_filter_triggered($feed_id, $owner_uid, $article, $matched_filters, $matched_rules, $article_filters) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -520,6 +562,7 @@ abstract class Plugin {
/** /**
* @param string $url * @param string $url
* @return string|false * @return string|false
* @see PluginHost::HOOK_GET_FULL_TEXT
*/ */
function hook_get_full_text($url) { function hook_get_full_text($url) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -533,6 +576,7 @@ abstract class Plugin {
* @param string $site_url * @param string $site_url
* @param array<string,mixed> $article * @param array<string,mixed> $article
* @return string|array<int,string> * @return string|array<int,string>
* @see PluginHost::HOOK_ARTICLE_IMAGE
*/ */
function hook_article_image($enclosures, $content, $site_url, $article) { function hook_article_image($enclosures, $content, $site_url, $article) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -540,7 +584,10 @@ abstract class Plugin {
return ""; return "";
} }
/** @return string */ /**
* @return string
* @see PluginHost::HOOK_FEED_TREE
* */
function hook_feed_tree() { function hook_feed_tree() {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -550,6 +597,7 @@ abstract class Plugin {
/** /**
* @param string $url * @param string $url
* @return bool * @return bool
* @see PluginHost::HOOK_IFRAME_WHITELISTED
*/ */
function hook_iframe_whitelisted($url) { function hook_iframe_whitelisted($url) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -561,6 +609,7 @@ abstract class Plugin {
* @param object $enclosure * @param object $enclosure
* @param int $feed * @param int $feed
* @return object ($enclosure) * @return object ($enclosure)
* @see PluginHost::HOOK_ENCLOSURE_IMPORTED
*/ */
function hook_enclosure_imported($enclosure, $feed) { function hook_enclosure_imported($enclosure, $feed) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -568,7 +617,10 @@ abstract class Plugin {
return $enclosure; return $enclosure;
} }
/** @return array<string,string> */ /**
* @return array<string,string>
* @see PluginHost::HOOK_HEADLINES_CUSTOM_SORT_MAP
*/
function hook_headlines_custom_sort_map() { function hook_headlines_custom_sort_map() {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -578,6 +630,7 @@ abstract class Plugin {
/** /**
* @param string $order * @param string $order
* @return array<int, string|bool> -- query, skip_first_id * @return array<int, string|bool> -- query, skip_first_id
* @see PluginHost::HOOK_HEADLINES_CUSTOM_SORT_OVERRIDE
*/ */
function hook_headlines_custom_sort_override($order) { function hook_headlines_custom_sort_override($order) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -589,6 +642,7 @@ abstract class Plugin {
* @param int $feed_id * @param int $feed_id
* @param int $is_cat * @param int $is_cat
* @return string * @return string
* @see PluginHost::HOOK_HEADLINE_TOOLBAR_SELECT_MENU_ITEM
*/ */
function hook_headline_toolbar_select_menu_item($feed_id, $is_cat) { function hook_headline_toolbar_select_menu_item($feed_id, $is_cat) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);
@ -601,6 +655,7 @@ abstract class Plugin {
* @param string $auth_login * @param string $auth_login
* @param string $auth_pass * @param string $auth_pass
* @return bool * @return bool
* @see PluginHost::HOOK_PRE_SUBSCRIBE
*/ */
function hook_pre_subscribe(&$url, $auth_login, $auth_pass) { function hook_pre_subscribe(&$url, $auth_login, $auth_pass) {
user_error("Dummy method invoked.", E_USER_ERROR); user_error("Dummy method invoked.", E_USER_ERROR);

View File

@ -48,155 +48,151 @@ class PluginHost {
const API_VERSION = 2; const API_VERSION = 2;
const PUBLIC_METHOD_DELIMITER = "--"; const PUBLIC_METHOD_DELIMITER = "--";
// Hooks marked with *1 are run in global context and available /** @see Plugin::hook_article_button() */
// to plugins loaded in config.php only
/** hook_article_button($line) */
const HOOK_ARTICLE_BUTTON = "hook_article_button"; const HOOK_ARTICLE_BUTTON = "hook_article_button";
/** hook_article_filter($article) */ /** @see Plugin::hook_article_filter() */
const HOOK_ARTICLE_FILTER = "hook_article_filter"; const HOOK_ARTICLE_FILTER = "hook_article_filter";
/** hook_prefs_tab($tab) */ /** @see Plugin::hook_prefs_tab() */
const HOOK_PREFS_TAB = "hook_prefs_tab"; const HOOK_PREFS_TAB = "hook_prefs_tab";
/** hook_prefs_tab_section($section) */ /** @see Plugin::hook_prefs_tab_section() */
const HOOK_PREFS_TAB_SECTION = "hook_prefs_tab_section"; const HOOK_PREFS_TAB_SECTION = "hook_prefs_tab_section";
/** hook_prefs_tabs() */ /** @see Plugin::hook_prefs_tabs() */
const HOOK_PREFS_TABS = "hook_prefs_tabs"; const HOOK_PREFS_TABS = "hook_prefs_tabs";
/** hook_feed_parsed($parser, $feed_id) */ /** @see Plugin::hook_feed_parsed() */
const HOOK_FEED_PARSED = "hook_feed_parsed"; const HOOK_FEED_PARSED = "hook_feed_parsed";
/** GLOBAL: hook_update_task($cli_options) */ /** @see Plugin::hook_update_task() */
const HOOK_UPDATE_TASK = "hook_update_task"; //*1 const HOOK_UPDATE_TASK = "hook_update_task"; //*1
/** hook_auth_user($login, $password, $service) (byref) */ /** @see Plugin::hook_auth_user() */
const HOOK_AUTH_USER = "hook_auth_user"; const HOOK_AUTH_USER = "hook_auth_user";
/** hook_hotkey_map($hotkeys) (byref) */ /** @see Plugin::hook_hotkey_map() */
const HOOK_HOTKEY_MAP = "hook_hotkey_map"; const HOOK_HOTKEY_MAP = "hook_hotkey_map";
/** hook_render_article($article) */ /** @see Plugin::hook_render_article() */
const HOOK_RENDER_ARTICLE = "hook_render_article"; const HOOK_RENDER_ARTICLE = "hook_render_article";
/** hook_render_article_cdm($article) */ /** @see Plugin::hook_render_article_cdm() */
const HOOK_RENDER_ARTICLE_CDM = "hook_render_article_cdm"; const HOOK_RENDER_ARTICLE_CDM = "hook_render_article_cdm";
/** hook_feed_fetched($feed_data, $fetch_url, $owner_uid, $feed) (byref) */ /** @see Plugin::hook_feed_fetched() */
const HOOK_FEED_FETCHED = "hook_feed_fetched"; const HOOK_FEED_FETCHED = "hook_feed_fetched";
/** hook_sanitize($doc, $site_url, $allowed_elements, $disallowed_attributes, $article_id) (byref) */ /** @see Plugin::hook_sanitize() */
const HOOK_SANITIZE = "hook_sanitize"; const HOOK_SANITIZE = "hook_sanitize";
/** hook_render_article_api($params) */ /** @see Plugin::hook_render_article_api() */
const HOOK_RENDER_ARTICLE_API = "hook_render_article_api"; const HOOK_RENDER_ARTICLE_API = "hook_render_article_api";
/** hook_toolbar_button() */ /** @see Plugin::hook_toolbar_button() */
const HOOK_TOOLBAR_BUTTON = "hook_toolbar_button"; const HOOK_TOOLBAR_BUTTON = "hook_toolbar_button";
/** hook_action_item() */ /** @see Plugin::hook_action_item() */
const HOOK_ACTION_ITEM = "hook_action_item"; const HOOK_ACTION_ITEM = "hook_action_item";
/** hook_headline_toolbar_button($feed_id, $is_cat) */ /** @see Plugin::hook_headline_toolbar_button() */
const HOOK_HEADLINE_TOOLBAR_BUTTON = "hook_headline_toolbar_button"; const HOOK_HEADLINE_TOOLBAR_BUTTON = "hook_headline_toolbar_button";
/** hook_hotkey_info($hotkeys) (byref) */ /** @see Plugin::hook_hotkey_info() */
const HOOK_HOTKEY_INFO = "hook_hotkey_info"; const HOOK_HOTKEY_INFO = "hook_hotkey_info";
/** hook_article_left_button($row) */ /** @see Plugin::hook_article_left_button() */
const HOOK_ARTICLE_LEFT_BUTTON = "hook_article_left_button"; const HOOK_ARTICLE_LEFT_BUTTON = "hook_article_left_button";
/** hook_prefs_edit_feed($feed_id) */ /** @see Plugin::hook_prefs_edit_feed() */
const HOOK_PREFS_EDIT_FEED = "hook_prefs_edit_feed"; const HOOK_PREFS_EDIT_FEED = "hook_prefs_edit_feed";
/** hook_prefs_save_feed($feed_id) */ /** @see Plugin::hook_prefs_save_feed() */
const HOOK_PREFS_SAVE_FEED = "hook_prefs_save_feed"; const HOOK_PREFS_SAVE_FEED = "hook_prefs_save_feed";
/** hook_fetch_feed($feed_data, $fetch_url, $owner_uid, $feed, $last_article_timestamp, $auth_login, $auth_pass) (byref) */ /** @see Plugin::hook_fetch_feed() */
const HOOK_FETCH_FEED = "hook_fetch_feed"; const HOOK_FETCH_FEED = "hook_fetch_feed";
/** hook_query_headlines($row) (byref) */ /** @see Plugin::hook_query_headlines() */
const HOOK_QUERY_HEADLINES = "hook_query_headlines"; const HOOK_QUERY_HEADLINES = "hook_query_headlines";
/** GLOBAL: hook_house_keeping() */ /** @see Plugin::hook_house_keeping() */
const HOOK_HOUSE_KEEPING = "hook_house_keeping"; //*1 const HOOK_HOUSE_KEEPING = "hook_house_keeping"; //*1
/** hook_search($query) */ /** @see Plugin::hook_search() */
const HOOK_SEARCH = "hook_search"; const HOOK_SEARCH = "hook_search";
/** hook_format_enclosures($rv, $result, $id, $always_display_enclosures, $article_content, $hide_images) (byref) */ /** @see Plugin::hook_format_enclosures() */
const HOOK_FORMAT_ENCLOSURES = "hook_format_enclosures"; const HOOK_FORMAT_ENCLOSURES = "hook_format_enclosures";
/** hook_subscribe_feed($contents, $url, $auth_login, $auth_pass) (byref) */ /** @see Plugin::hook_subscribe_feed() */
const HOOK_SUBSCRIBE_FEED = "hook_subscribe_feed"; const HOOK_SUBSCRIBE_FEED = "hook_subscribe_feed";
/** hook_headlines_before($feed, $is_cat, $qfh_ret) */ /** @see Plugin::hook_headlines_before() */
const HOOK_HEADLINES_BEFORE = "hook_headlines_before"; const HOOK_HEADLINES_BEFORE = "hook_headlines_before";
/** hook_render_enclosure($entry, $id, $rv) */ /** @see Plugin::hook_render_enclosure() */
const HOOK_RENDER_ENCLOSURE = "hook_render_enclosure"; const HOOK_RENDER_ENCLOSURE = "hook_render_enclosure";
/** hook_article_filter_action($article, $action) */ /** @see Plugin::hook_article_filter_action() */
const HOOK_ARTICLE_FILTER_ACTION = "hook_article_filter_action"; const HOOK_ARTICLE_FILTER_ACTION = "hook_article_filter_action";
/** hook_article_export_feed($line, $feed, $is_cat, $owner_uid) (byref) */ /** @see Plugin::hook_article_export_feed() */
const HOOK_ARTICLE_EXPORT_FEED = "hook_article_export_feed"; const HOOK_ARTICLE_EXPORT_FEED = "hook_article_export_feed";
/** hook_main_toolbar_button() */ /** @see Plugin::hook_main_toolbar_button() */
const HOOK_MAIN_TOOLBAR_BUTTON = "hook_main_toolbar_button"; const HOOK_MAIN_TOOLBAR_BUTTON = "hook_main_toolbar_button";
/** hook_enclosure_entry($entry, $id, $rv) (byref) */ /** @see Plugin::hook_enclosure_entry() */
const HOOK_ENCLOSURE_ENTRY = "hook_enclosure_entry"; const HOOK_ENCLOSURE_ENTRY = "hook_enclosure_entry";
/** hook_format_article($html, $row) */ /** @see Plugin::hook_format_article() */
const HOOK_FORMAT_ARTICLE = "hook_format_article"; const HOOK_FORMAT_ARTICLE = "hook_format_article";
/** @deprecated removed, do not use */ /** @see Plugin::hook_format_article_cdm() */
const HOOK_FORMAT_ARTICLE_CDM = "hook_format_article_cdm"; const HOOK_FORMAT_ARTICLE_CDM = "hook_format_article_cdm";
/** hook_feed_basic_info($basic_info, $fetch_url, $owner_uid, $feed_id, $auth_login, $auth_pass) (byref) */ /** @see Plugin::hook_feed_basic_info() */
const HOOK_FEED_BASIC_INFO = "hook_feed_basic_info"; const HOOK_FEED_BASIC_INFO = "hook_feed_basic_info";
/** hook_send_local_file($filename) */ /** @see Plugin::hook_send_local_file() */
const HOOK_SEND_LOCAL_FILE = "hook_send_local_file"; const HOOK_SEND_LOCAL_FILE = "hook_send_local_file";
/** hook_unsubscribe_feed($feed_id, $owner_uid) */ /** @see Plugin::hook_unsubscribe_feed() */
const HOOK_UNSUBSCRIBE_FEED = "hook_unsubscribe_feed"; const HOOK_UNSUBSCRIBE_FEED = "hook_unsubscribe_feed";
/** hook_send_mail(Mailer $mailer, $params) */ /** @see Plugin::hook_send_mail() */
const HOOK_SEND_MAIL = "hook_send_mail"; const HOOK_SEND_MAIL = "hook_send_mail";
/** hook_filter_triggered($feed_id, $owner_uid, $article, $matched_filters, $matched_rules, $article_filters) */ /** @see Plugin::hook_filter_triggered() */
const HOOK_FILTER_TRIGGERED = "hook_filter_triggered"; const HOOK_FILTER_TRIGGERED = "hook_filter_triggered";
/** hook_get_full_text($url) */ /** @see Plugin::hook_get_full_text() */
const HOOK_GET_FULL_TEXT = "hook_get_full_text"; const HOOK_GET_FULL_TEXT = "hook_get_full_text";
/** hook_article_image($enclosures, $content, $site_url) */ /** @see Plugin::hook_article_image() */
const HOOK_ARTICLE_IMAGE = "hook_article_image"; const HOOK_ARTICLE_IMAGE = "hook_article_image";
/** hook_feed_tree() */ /** @see Plugin::hook_feed_tree() */
const HOOK_FEED_TREE = "hook_feed_tree"; const HOOK_FEED_TREE = "hook_feed_tree";
/** hook_iframe_whitelisted($url) */ /** @see Plugin::hook_iframe_whitelisted() */
const HOOK_IFRAME_WHITELISTED = "hook_iframe_whitelisted"; const HOOK_IFRAME_WHITELISTED = "hook_iframe_whitelisted";
/** hook_enclosure_imported($enclosure, $feed) */ /** @see Plugin::hook_enclosure_imported() */
const HOOK_ENCLOSURE_IMPORTED = "hook_enclosure_imported"; const HOOK_ENCLOSURE_IMPORTED = "hook_enclosure_imported";
/** hook_headlines_custom_sort_map() */ /** @see Plugin::hook_headlines_custom_sort_map() */
const HOOK_HEADLINES_CUSTOM_SORT_MAP = "hook_headlines_custom_sort_map"; const HOOK_HEADLINES_CUSTOM_SORT_MAP = "hook_headlines_custom_sort_map";
/** hook_headlines_custom_sort_override($order) */ /** @see Plugin::hook_headlines_custom_sort_override() */
const HOOK_HEADLINES_CUSTOM_SORT_OVERRIDE = "hook_headlines_custom_sort_override"; const HOOK_HEADLINES_CUSTOM_SORT_OVERRIDE = "hook_headlines_custom_sort_override";
/** hook_headline_toolbar_select_menu_item($feed_id, $is_cat) */ /** @see Plugin::hook_headline_toolbar_select_menu_item() */
const HOOK_HEADLINE_TOOLBAR_SELECT_MENU_ITEM = "hook_headline_toolbar_select_menu_item"; const HOOK_HEADLINE_TOOLBAR_SELECT_MENU_ITEM = "hook_headline_toolbar_select_menu_item";
/** @see Plugin::hook_pre_subscribe() */
/** hook_pre_subscribe($url, $auth_login, $auth_pass) (byref) */
const HOOK_PRE_SUBSCRIBE = "hook_pre_subscribe"; const HOOK_PRE_SUBSCRIBE = "hook_pre_subscribe";
const KIND_ALL = 1; const KIND_ALL = 1;