From 180f7d8218cb33553a4668d23f4ab13c29e7919d Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sun, 1 Apr 2018 02:23:26 -0400 Subject: [PATCH 01/12] Add disabled_cw user setting --- mod/settings.php | 4 +++- view/templates/settings/connectors.tpl | 1 + view/theme/frio/templates/settings/connectors.tpl | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/mod/settings.php b/mod/settings.php index f4ad58412c..3850c095b2 100644 --- a/mod/settings.php +++ b/mod/settings.php @@ -19,7 +19,6 @@ use Friendica\Model\GContact; use Friendica\Model\Group; use Friendica\Model\User; use Friendica\Protocol\Email; -use Friendica\Util\DateTimeFormat; use Friendica\Util\Network; use Friendica\Util\Temporal; @@ -213,6 +212,7 @@ function settings_post(App $a) check_form_security_token_redirectOnErr('/settings/connectors', 'settings_connectors'); if (x($_POST, 'general-submit')) { + PConfig::set(local_user(), 'social', 'disable_cw', intval($_POST['disable_cw'])); PConfig::set(local_user(), 'system', 'no_intelligent_shortening', intval($_POST['no_intelligent_shortening'])); PConfig::set(local_user(), 'system', 'ostatus_autofriend', intval($_POST['snautofollow'])); PConfig::set(local_user(), 'ostatus', 'default_group', $_POST['group-selection']); @@ -787,6 +787,7 @@ function settings_content(App $a) } if (($a->argc > 1) && ($a->argv[1] === 'connectors')) { + $disable_cw = intval(PConfig::get(local_user(), 'social', 'disable_cw')); $no_intelligent_shortening = intval(PConfig::get(local_user(), 'system', 'no_intelligent_shortening')); $ostatus_autofriend = intval(PConfig::get(local_user(), 'system', 'ostatus_autofriend')); $default_group = PConfig::get(local_user(), 'ostatus', 'default_group'); @@ -844,6 +845,7 @@ function settings_content(App $a) '$ostat_enabled' => $ostat_enabled, '$general_settings' => L10n::t('General Social Media Settings'), + '$disable_cw' => ['disable_cw', L10n::t('Disable Content Warning'), $disable_cw, L10n::t('Users on networks like Mastodon or Pleroma are able to set a content warning field which collapse their post by default. You can disable this default behavior to always show post with an author-set content warning. Doesn\'t affect any other content filtering you eventually set up.')], '$no_intelligent_shortening' => ['no_intelligent_shortening', L10n::t('Disable intelligent shortening'), $no_intelligent_shortening, L10n::t('Normally the system tries to find the best link to add to shortened posts. If this option is enabled then every shortened post will always point to the original friendica post.')], '$ostatus_autofriend' => ['snautofollow', L10n::t("Automatically follow any GNU Social \x28OStatus\x29 followers/mentioners"), $ostatus_autofriend, L10n::t('If you receive a message from an unknown OStatus user, this option decides what to do. If it is checked, a new contact will be created for every unknown user.')], '$default_group' => Group::displayGroupSelection(local_user(), $default_group, L10n::t("Default group for OStatus contacts")), diff --git a/view/templates/settings/connectors.tpl b/view/templates/settings/connectors.tpl index 83ebd74f5f..19b7306dd5 100644 --- a/view/templates/settings/connectors.tpl +++ b/view/templates/settings/connectors.tpl @@ -15,6 +15,7 @@

{{$general_settings}}

+ {{include file="field_checkbox.tpl" field=$disable_cw}} {{include file="field_checkbox.tpl" field=$no_intelligent_shortening}} {{include file="field_checkbox.tpl" field=$ostatus_autofriend}} {{$default_group}} diff --git a/view/theme/frio/templates/settings/connectors.tpl b/view/theme/frio/templates/settings/connectors.tpl index e5d21158c2..7a18c46f77 100644 --- a/view/theme/frio/templates/settings/connectors.tpl +++ b/view/theme/frio/templates/settings/connectors.tpl @@ -20,6 +20,7 @@
+ {{include file="field_checkbox.tpl" field=$disable_cw}} {{include file="field_checkbox.tpl" field=$no_intelligent_shortening}} {{include file="field_checkbox.tpl" field=$ostatus_autofriend}} {{$default_group}} From bec46d7b01729c5a393bc61465037041aab3f8a6 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sun, 1 Apr 2018 02:23:56 -0400 Subject: [PATCH 02/12] Remove content warning processing in put_item_in_cache --- include/text.php | 5 ----- 1 file changed, 5 deletions(-) diff --git a/include/text.php b/include/text.php index 311422c575..f08baaf63f 100644 --- a/include/text.php +++ b/include/text.php @@ -1183,11 +1183,6 @@ function put_item_in_cache(&$item, $update = false) { $body = $item["body"]; - // Add the content warning - if (!empty($item['content-warning'])) { - $item["body"] = $item['content-warning'] . '[spoiler]' . $item["body"] . '[/spoiler]'; - } - $rendered_hash = defaults($item, 'rendered-hash', ''); if ($rendered_hash == '' From b755e808dfbde79b256db5e2c00e86159e8aae82 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sun, 1 Apr 2018 02:26:37 -0400 Subject: [PATCH 03/12] Add new content_filter hook in prepare_body - Add content warning processing to prepare_body with use of disable_cw setting - Add filter_reasons params to prepare_body hook --- include/text.php | 73 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 63 insertions(+), 10 deletions(-) diff --git a/include/text.php b/include/text.php index f08baaf63f..7807dc08b4 100644 --- a/include/text.php +++ b/include/text.php @@ -1209,15 +1209,17 @@ function put_item_in_cache(&$item, $update = false) * @brief Given an item array, convert the body element from bbcode to html and add smilie icons. * If attach is true, also add icons for item attachments. * - * @param array $item + * @param array $item * @param boolean $attach + * @param boolean $is_preview * @return string item body html * @hook prepare_body_init item array before any work - * @hook prepare_body ('item'=>item array, 'html'=>body string) after first bbcode to html + * @hook content_filter ('item'=>item array, 'filter_reasons'=>string array) before first bbcode to html + * @hook prepare_body ('item'=>item array, 'html'=>body string, 'is_preview'=>boolean, 'filter_reasons'=>string array) after first bbcode to html * @hook prepare_body_final ('item'=>item array, 'html'=>body string) after attach icons and blockquote special case handling (spoiler, author) */ -function prepare_body(&$item, $attach = false, $preview = false) { - +function prepare_body(array &$item, $attach = false, $is_preview = false) +{ $a = get_app(); Addon::callHooks('prepare_body_init', $item); @@ -1266,6 +1268,20 @@ function prepare_body(&$item, $attach = false, $preview = false) { $item['hashtags'] = $hashtags; $item['mentions'] = $mentions; + // Compile eventual content filter reasons + $filter_reasons = []; + if (!empty($item['content-warning']) && !PConfig::get(local_user(), 'social', 'disable_cw')) { + $filter_reasons[] = L10n::t('Content warning: %s', $item['content-warning']); + } + + $hook_data = [ + 'item' => $item, + 'filter_reasons' => $filter_reasons + ]; + Addon::callHooks('content_filter', $hook_data); + $filter_reasons = $hook_data['filter_reasons']; + unset($hook_data); + // Update the cached values if there is no "zrl=..." on the links. $update = (!local_user() && !remote_user() && ($item["uid"] == 0)); @@ -1277,9 +1293,17 @@ function prepare_body(&$item, $attach = false, $preview = false) { put_item_in_cache($item, $update); $s = $item["rendered-html"]; - $prep_arr = ['item' => $item, 'html' => $s, 'preview' => $preview]; - Addon::callHooks('prepare_body', $prep_arr); - $s = $prep_arr['html']; + $hook_data = [ + 'item' => $item, + 'html' => $s, + 'preview' => $is_preview, + 'filter_reasons' => $filter_reasons + ]; + Addon::callHooks('prepare_body', $hook_data); + $s = $hook_data['html']; + unset($hook_data); + + $s = apply_content_filter($s, $filter_reasons); if (! $attach) { // Replace the blockquotes with quotes that are used in mails. @@ -1388,10 +1412,39 @@ function prepare_body(&$item, $attach = false, $preview = false) { $s = preg_replace('|(]+src="[^"]+/photo/[0-9a-f]+)-[0-9]|', "$1-" . $ps, $s); } - $prep_arr = ['item' => $item, 'html' => $s]; - Addon::callHooks('prepare_body_final', $prep_arr); + $hook_data = ['item' => $item, 'html' => $s]; + Addon::callHooks('prepare_body_final', $hook_data); - return $prep_arr['html']; + return $hook_data['html']; +} + +/** + * Given a HTML text and a set of filtering reasons, adds a content hiding header with the provided reasons + * + * Reasons are expected to have been translated already. + * + * @param string $html + * @param array $reasons + * @return string + */ +function apply_content_filter($html, array $reasons) +{ + if (count($reasons)) { + $rnd = random_string(8); + $content_filter_html = '
    '; + foreach ($reasons as $reason) { + $content_filter_html .= '
  • ' . htmlspecialchars($reason) . '
  • ' . PHP_EOL; + } + $content_filter_html .= '
+ + '; + } + + return $html; } /** From 2d1942a1faa4c966cbf57e22c6f1887888c8ced9 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sun, 1 Apr 2018 02:29:05 -0400 Subject: [PATCH 04/12] Update hook documentation --- doc/Addons.md | 337 +++++++++++++++++++++++++---------------------- doc/de/Addons.md | 262 ++++++++++++++++++------------------ 2 files changed, 318 insertions(+), 281 deletions(-) diff --git a/doc/Addons.md b/doc/Addons.md index de0d9e4963..756ded800a 100644 --- a/doc/Addons.md +++ b/doc/Addons.md @@ -284,192 +284,221 @@ $b is an array with: 'template' => filename of template 'vars' => array of vars passed to template -### ''acl_lookup_end' +### 'acl_lookup_end' is called after the other queries have passed. The registered function can add, change or remove the acl_lookup() variables. 'results' => array of the acl_lookup() vars +### 'prepare_body_init' +Called at the start of prepare_body +Hook data: + 'item' => item array (input/output) + +### 'content_filter' +Called before the HTML conversion in prepare_body. If the item matches a content filter rule set by an addon, it should +just add the reason to the filter_reasons element of the hook data. +Hook data: + 'item' => item array (input) + 'filter_reasons' => reasons array (input/output) + +### 'prepare_body' +Called after the HTML conversion in prepare_body. +Hook data: + 'item' => item array (input) + 'html' => converted item body (input/output) + 'is_preview' => post preview flag (input) + 'filter_reasons' => reasons array (input) + +### 'prepare_body_final' +Called at the end of prepare_body. +Hook data: + 'item' => item array (input) + 'html' => converted item body (input/output) Complete list of hook callbacks --- -Here is a complete list of all hook callbacks with file locations (as of 14-Feb-2012). Please see the source for details of any hooks not documented above. - -boot.php: Addon::callHooks('login_hook',$o); - -boot.php: Addon::callHooks('profile_sidebar_enter', $profile); - -boot.php: Addon::callHooks('profile_sidebar', $arr); - -boot.php: Addon::callHooks("proc_run", $arr); - -include/contact_selectors.php: Addon::callHooks('network_to_name', $nets); - -include/api.php: Addon::callHooks('logged_in', $a->user); - -include/api.php: Addon::callHooks('logged_in', $a->user); - -include/queue.php: Addon::callHooks('queue_predeliver', $a, $r); - -include/queue.php: Addon::callHooks('queue_deliver', $a, $params); - -include/text.php: Addon::callHooks('contact_block_end', $arr); - -include/text.php: Addon::callHooks('smilie', $s); - -include/text.php: Addon::callHooks('prepare_body_init', $item); - -include/text.php: Addon::callHooks('prepare_body', $prep_arr); - -include/text.php: Addon::callHooks('prepare_body_final', $prep_arr); - -include/nav.php: Addon::callHooks('page_header', $a->page['nav']); - -include/auth.php: Addon::callHooks('authenticate', $addon_auth); - -include/bbcode.php: Addon::callHooks('bbcode',$Text); - -include/oauth.php: Addon::callHooks('logged_in', $a->user); - -include/acl_selectors.php: Addon::callHooks($a->module . '_pre_' . $selname, $arr); - -include/acl_selectors.php: Addon::callHooks($a->module . '_post_' . $selname, $o); - -include/acl_selectors.php: Addon::callHooks('contact_select_options', $x); - -include/acl_selectors.php: Addon::callHooks($a->module . '_pre_' . $selname, $arr); - -include/acl_selectors.php: Addon::callHooks($a->module . '_post_' . $selname, $o); - -include/acl_selectors.php: Addon::callHooks($a->module . '_pre_' . $selname, $arr); - -include/acl_selectors.php: Addon::callHooks($a->module . '_post_' . $selname, $o); - -include/acl_selectors.php Addon::callHooks('acl_lookup_end', $results); - -include/notifier.php: Addon::callHooks('notifier_normal',$target_item); - -include/notifier.php: Addon::callHooks('notifier_end',$target_item); - -include/items.php: Addon::callHooks('atom_feed', $atom); - -include/items.php: Addon::callHooks('atom_feed_end', $atom); - -include/items.php: Addon::callHooks('atom_feed_end', $atom); - -include/items.php: Addon::callHooks('parse_atom', $arr); - -include/items.php: Addon::callHooks('post_remote',$arr); - -include/items.php: Addon::callHooks('atom_author', $o); - -include/items.php: Addon::callHooks('atom_entry', $o); - -include/bb2diaspora.php: Addon::callHooks('bb2diaspora',$Text); - -include/cronhooks.php: Addon::callHooks('cron', $d); - -include/security.php: Addon::callHooks('logged_in', $a->user); - -src/Content/Text/HTML.php: Addon::callHooks('html2bbcode', $text); - -include/Contact.php: Addon::callHooks('remove_user',$r[0]); - -include/Contact.php: Addon::callHooks('contact_photo_menu', $args); - -include/conversation.php: Addon::callHooks('conversation_start',$cb); - -include/conversation.php: Addon::callHooks('render_location',$locate); - -include/conversation.php: Addon::callHooks('display_item', $arr); - -include/conversation.php: Addon::callHooks('render_location',$locate); - -include/conversation.php: Addon::callHooks('display_item', $arr); - -include/conversation.php: Addon::callHooks('item_photo_menu', $args); - -include/conversation.php: Addon::callHooks('jot_tool', $jotplugins); - -include/conversation.php: Addon::callHooks('jot_networks', $jotnets); +Here is a complete list of all hook callbacks with file locations (as of 01-Apr-2018). Please see the source for details of any hooks not documented above. index.php: Addon::callHooks('init_1'); +index.php: Addon::callHooks('app_menu', $arr); +index.php: Addon::callHooks('page_content_top', $a->page['content']); +index.php: Addon::callHooks($a->module.'_mod_init', $placeholder); +index.php: Addon::callHooks($a->module.'_mod_init', $placeholder); +index.php: Addon::callHooks($a->module.'_mod_post', $_POST); +index.php: Addon::callHooks($a->module.'_mod_afterpost', $placeholder); +index.php: Addon::callHooks($a->module.'_mod_content', $arr); +index.php: Addon::callHooks($a->module.'_mod_aftercontent', $arr); +index.php: Addon::callHooks('page_end', $a->page['content']); -index.php:Addon::callHooks('app_menu', $arr); +include/api.php: Addon::callHooks('logged_in', $a->user); +include/api.php: Addon::callHooks('authenticate', $addon_auth); +include/api.php: Addon::callHooks('logged_in', $a->user); -index.php:Addon::callHooks('page_end', $a->page['content']); +include/enotify.php: Addon::callHooks('enotify', $h); +include/enotify.php: Addon::callHooks('enotify_store', $datarray); +include/enotify.php: Addon::callHooks('enotify_mail', $datarray); +include/enotify.php: Addon::callHooks('check_item_notification', $notification_data); -mod/photos.php: Addon::callHooks('photo_post_init', $_POST); +include/conversation.php: Addon::callHooks('conversation_start', $cb); +include/conversation.php: Addon::callHooks('render_location', $locate); +include/conversation.php: Addon::callHooks('display_item', $arr); +include/conversation.php: Addon::callHooks('display_item', $arr); +include/conversation.php: Addon::callHooks('item_photo_menu', $args); +include/conversation.php: Addon::callHooks('jot_tool', $jotplugins); -mod/photos.php: Addon::callHooks('photo_post_file',$ret); +include/security.php: Addon::callHooks('logged_in', $a->user); -mod/photos.php: Addon::callHooks('photo_post_end',$foo); +include/text.php: Addon::callHooks('contact_block_end', $arr); +include/text.php: Addon::callHooks('poke_verbs', $arr); +include/text.php: Addon::callHooks('prepare_body_init', $item); +include/text.php: Addon::callHooks('content_filter', $hook_data); +include/text.php: Addon::callHooks('prepare_body', $hook_data); +include/text.php: Addon::callHooks('prepare_body_final', $hook_data); -mod/photos.php: Addon::callHooks('photo_post_end',$foo); +include/items.php: Addon::callHooks('page_info_data', $data); -mod/photos.php: Addon::callHooks('photo_post_end',$foo); - -mod/photos.php: Addon::callHooks('photo_post_end',intval($item_id)); - -mod/photos.php: Addon::callHooks('photo_upload_form',$ret); - -mod/friendica.php: Addon::callHooks('about_hook', $o); - -mod/editpost.php: Addon::callHooks('jot_tool', $jotplugins); - -mod/editpost.php: Addon::callHooks('jot_networks', $jotnets); - -mod/parse_url.php: Addon::callHooks('parse_link', $arr); - -mod/home.php: Addon::callHooks('home_init',$ret); - -mod/home.php: Addon::callHooks("home_content",$o); - -mod/contacts.php: Addon::callHooks('contact_edit_post', $_POST); - -mod/contacts.php: Addon::callHooks('contact_edit', $arr); - -mod/settings.php: Addon::callHooks('addon_settings_post', $_POST); - -mod/settings.php: Addon::callHooks('connector_settings_post', $_POST); - -mod/settings.php: Addon::callHooks('settings_post', $_POST); - -mod/settings.php: Addon::callHooks('addon_settings', $settings_addons); - -mod/settings.php: Addon::callHooks('connector_settings', $settings_connectors); - -mod/settings.php: Addon::callHooks('settings_form',$o); - -mod/register.php: Addon::callHooks('register_account', $newuid); - -mod/like.php: Addon::callHooks('post_local_end', $arr); +mod/directory.php: Addon::callHooks('directory_item', $arr); mod/xrd.php: Addon::callHooks('personal_xrd', $arr); -mod/item.php: Addon::callHooks('post_local_start', $_REQUEST); +mod/ping.php: Addon::callHooks('network_ping', $arr); -mod/item.php: Addon::callHooks('post_local',$datarray); +mod/parse_url.php: Addon::callHooks("parse_link", $arr); -mod/item.php: Addon::callHooks('post_local_end', $datarray); +mod/manage.php: Addon::callHooks('home_init', $ret); -mod/profile.php: Addon::callHooks('profile_advanced',$o); +mod/acl.php: Addon::callHooks('acl_lookup_end', $results); + +mod/network.php: Addon::callHooks('network_content_init', $arr); +mod/network.php: Addon::callHooks('network_tabs', $arr); + +mod/friendica.php: Addon::callHooks('about_hook', $o); +mod/subthread.php: Addon::callHooks('post_local_end', $arr); mod/profiles.php: Addon::callHooks('profile_post', $_POST); +mod/profiles.php: Addon::callHooks('profile_edit', $arr); -mod/profiles.php: Addon::callHooks('profile_edit', $arr); +mod/settings.php: Addon::callHooks('addon_settings_post', $_POST); +mod/settings.php: Addon::callHooks('connector_settings_post', $_POST); +mod/settings.php: Addon::callHooks('display_settings_post', $_POST); +mod/settings.php: Addon::callHooks('settings_post', $_POST); +mod/settings.php: Addon::callHooks('addon_settings', $settings_addons); +mod/settings.php: Addon::callHooks('connector_settings', $settings_connectors); +mod/settings.php: Addon::callHooks('display_settings', $o); +mod/settings.php: Addon::callHooks('settings_form', $o); + +mod/photos.php: Addon::callHooks('photo_post_init', $_POST); +mod/photos.php: Addon::callHooks('photo_post_file', $ret); +mod/photos.php: Addon::callHooks('photo_post_end', $foo); +mod/photos.php: Addon::callHooks('photo_post_end', $foo); +mod/photos.php: Addon::callHooks('photo_post_end', $foo); +mod/photos.php: Addon::callHooks('photo_post_end', $foo); +mod/photos.php: Addon::callHooks('photo_post_end', intval($item_id)); +mod/photos.php: Addon::callHooks('photo_upload_form', $ret); + +mod/profile.php: Addon::callHooks('profile_advanced', $o); + +mod/home.php: Addon::callHooks('home_init', $ret); +mod/home.php: Addon::callHooks("home_content", $content); + +mod/poke.php: Addon::callHooks('post_local_end', $arr); + +mod/contacts.php: Addon::callHooks('contact_edit_post', $_POST); +mod/contacts.php: Addon::callHooks('contact_edit', $arr); mod/tagger.php: Addon::callHooks('post_local_end', $arr); -mod/cb.php: Addon::callHooks('cb_init'); +mod/lockview.php: Addon::callHooks('lockview_content', $item); -mod/cb.php: Addon::callHooks('cb_post', $_POST); +mod/uexport.php: Addon::callHooks('uexport_options', $options); -mod/cb.php: Addon::callHooks('cb_afterpost'); +mod/register.php: Addon::callHooks('register_post', $arr); +mod/register.php: Addon::callHooks('register_form', $arr); -mod/cb.php: Addon::callHooks('cb_content', $o); +mod/item.php: Addon::callHooks('post_local_start', $_REQUEST); +mod/item.php: Addon::callHooks('post_local', $datarray); +mod/item.php: Addon::callHooks('post_local_end', $datarray); -mod/directory.php: Addon::callHooks('directory_item', $arr); +mod/editpost.php: Addon::callHooks('jot_tool', $jotplugins); -src/Model/Item.php Addon::callHooks('tagged', $arr); +src/Network/FKOAuth1.php: Addon::callHooks('logged_in', $a->user); + +src/Render/FriendicaSmartyEngine.php: Addon::callHooks("template_vars", $arr); + +src/Model/Item.php: Addon::callHooks('post_local', $item); +src/Model/Item.php: Addon::callHooks('post_remote', $item); +src/Model/Item.php: Addon::callHooks('post_local_end', $posted_item); +src/Model/Item.php: Addon::callHooks('post_remote_end', $posted_item); +src/Model/Item.php: Addon::callHooks('tagged', $arr); +src/Model/Item.php: Addon::callHooks('post_local_end', $new_item); + +src/Model/Contact.php: Addon::callHooks('contact_photo_menu', $args); +src/Model/Contact.php: Addon::callHooks('follow', $arr); + +src/Model/Profile.php: Addon::callHooks('profile_sidebar_enter', $profile); +src/Model/Profile.php: Addon::callHooks('profile_sidebar', $arr); +src/Model/Profile.php: Addon::callHooks('profile_tabs', $arr); +src/Model/Profile.php: Addon::callHooks('zrl_init', $arr); + +src/Model/Event.php: Addon::callHooks('event_updated', $event['id']); +src/Model/Event.php: Addon::callHooks("event_created", $event['id']); + +src/Model/User.php: Addon::callHooks('register_account', $uid); +src/Model/User.php: Addon::callHooks('remove_user', $user); + +src/Content/Text/BBCode.php: Addon::callHooks('bbcode', $text); +src/Content/Text/BBCode.php: Addon::callHooks('bb2diaspora', $text); + +src/Content/Text/HTML.php: Addon::callHooks('html2bbcode', $message); + +src/Content/Smilies.php: Addon::callHooks('smilie', $params); + +src/Content/Feature.php: Addon::callHooks('isEnabled', $arr); +src/Content/Feature.php: Addon::callHooks('get', $arr); + +src/Content/ContactSelector.php: Addon::callHooks('network_to_name', $nets); +src/Content/ContactSelector.php: Addon::callHooks('gender_selector', $select); +src/Content/ContactSelector.php: Addon::callHooks('sexpref_selector', $select); +src/Content/ContactSelector.php: Addon::callHooks('marital_selector', $select); + +src/Content/OEmbed.php: Addon::callHooks('oembed_fetch_url', $embedurl, $j); + +src/Content/Nav.php: Addon::callHooks('page_header', $a->page['nav']); +src/Content/Nav.php: Addon::callHooks('nav_info', $nav); + +src/Worker/Directory.php: Addon::callHooks('globaldir_update', $arr); +src/Worker/Notifier.php: Addon::callHooks('notifier_end', $target_item); +src/Worker/Queue.php: Addon::callHooks('queue_predeliver', $r); +src/Worker/Queue.php: Addon::callHooks('queue_deliver', $params); + +src/Module/Login.php: Addon::callHooks('authenticate', $addon_auth); +src/Module/Login.php: Addon::callHooks('login_hook', $o); +src/Module/Logout.php: Addon::callHooks("logging_out"); + +src/Object/Post.php: Addon::callHooks('render_location', $locate); +src/Object/Post.php: Addon::callHooks('display_item', $arr); + +src/Core/ACL.php: Addon::callHooks('contact_select_options', $x); +src/Core/ACL.php: Addon::callHooks($a->module.'_pre_'.$selname, $arr); +src/Core/ACL.php: Addon::callHooks($a->module.'_post_'.$selname, $o); +src/Core/ACL.php: Addon::callHooks($a->module.'_pre_'.$selname, $arr); +src/Core/ACL.php: Addon::callHooks($a->module.'_post_'.$selname, $o); +src/Core/ACL.php: Addon::callHooks('jot_networks', $jotnets); + +src/Core/Worker.php: Addon::callHooks("proc_run", $arr); + +src/Util/Emailer.php: Addon::callHooks('emailer_send_prepare', $params); +src/Util/Emailer.php: Addon::callHooks("emailer_send", $hookdata); + +src/Util/Map.php: Addon::callHooks('generate_map', $arr); +src/Util/Map.php: Addon::callHooks('generate_named_map', $arr); +src/Util/Map.php: Addon::callHooks('Map::getCoordinates', $arr); + +src/Util/Network.php: Addon::callHooks('avatar_lookup', $avatar); + +src/Util/ParseUrl.php: Addon::callHooks("getsiteinfo", $siteinfo); + +src/Protocol/DFRN.php: Addon::callHooks('atom_feed_end', $atom); +src/Protocol/DFRN.php: Addon::callHooks('atom_feed_end', $atom); diff --git a/doc/de/Addons.md b/doc/de/Addons.md index 5bbfde2794..4e4beefade 100644 --- a/doc/de/Addons.md +++ b/doc/de/Addons.md @@ -189,178 +189,186 @@ Derzeitige Hooks Komplette Liste der Hook-Callbacks --- -Eine komplette Liste aller Hook-Callbacks mit den zugehörigen Dateien (am 14-Feb-2012 generiert): Bitte schau in die Quellcodes für Details zu Hooks, die oben nicht dokumentiert sind. +Eine komplette Liste aller Hook-Callbacks mit den zugehörigen Dateien (am 01-Apr-2018 generiert): Bitte schau in die Quellcodes für Details zu Hooks, die oben nicht dokumentiert sind. -boot.php: Addon::callHooks('login_hook',$o); +index.php: Addon::callHooks('init_1'); +index.php: Addon::callHooks('app_menu', $arr); +index.php: Addon::callHooks('page_content_top', $a->page['content']); +index.php: Addon::callHooks($a->module.'_mod_init', $placeholder); +index.php: Addon::callHooks($a->module.'_mod_init', $placeholder); +index.php: Addon::callHooks($a->module.'_mod_post', $_POST); +index.php: Addon::callHooks($a->module.'_mod_afterpost', $placeholder); +index.php: Addon::callHooks($a->module.'_mod_content', $arr); +index.php: Addon::callHooks($a->module.'_mod_aftercontent', $arr); +index.php: Addon::callHooks('page_end', $a->page['content']); -boot.php: Addon::callHooks('profile_sidebar_enter', $profile); +include/api.php: Addon::callHooks('logged_in', $a->user); +include/api.php: Addon::callHooks('authenticate', $addon_auth); +include/api.php: Addon::callHooks('logged_in', $a->user); -boot.php: Addon::callHooks('profile_sidebar', $arr); - -boot.php: Addon::callHooks("proc_run", $arr); - -include/contact_selectors.php: Addon::callHooks('network_to_name', $nets); - -include/api.php: Addon::callHooks('logged_in', $a->user); - -include/api.php: Addon::callHooks('logged_in', $a->user); - -include/queue.php: Addon::callHooks('queue_predeliver', $a, $r); - -include/queue.php: Addon::callHooks('queue_deliver', $a, $params); - -include/text.php: Addon::callHooks('contact_block_end', $arr); - -include/text.php: Addon::callHooks('smilie', $s); - -include/text.php: Addon::callHooks('prepare_body_init', $item); - -include/text.php: Addon::callHooks('prepare_body', $prep_arr); - -include/text.php: Addon::callHooks('prepare_body_final', $prep_arr); - -include/nav.php: Addon::callHooks('page_header', $a->page['nav']); - -include/auth.php: Addon::callHooks('authenticate', $addon_auth); - -include/bbcode.php: Addon::callHooks('bbcode',$Text); - -include/oauth.php: Addon::callHooks('logged_in', $a->user); - -include/acl_selectors.php: Addon::callHooks($a->module . '_pre_' . $selname, $arr); - -include/acl_selectors.php: Addon::callHooks($a->module . '_post_' . $selname, $o); - -include/acl_selectors.php: Addon::callHooks('contact_select_options', $x); - -include/acl_selectors.php: Addon::callHooks($a->module . '_pre_' . $selname, $arr); - -include/acl_selectors.php: Addon::callHooks($a->module . '_post_' . $selname, $o); - -include/acl_selectors.php: Addon::callHooks($a->module . '_pre_' . $selname, $arr); - -include/acl_selectors.php: Addon::callHooks($a->module . '_post_' . $selname, $o); - -include/notifier.php: Addon::callHooks('notifier_normal',$target_item); - -include/notifier.php: Addon::callHooks('notifier_end',$target_item); - -include/items.php: Addon::callHooks('atom_feed', $atom); - -include/items.php: Addon::callHooks('atom_feed_end', $atom); - -include/items.php: Addon::callHooks('atom_feed_end', $atom); - -include/items.php: Addon::callHooks('parse_atom', $arr); - -include/items.php: Addon::callHooks('post_remote',$arr); - -include/items.php: Addon::callHooks('atom_author', $o); - -include/items.php: Addon::callHooks('atom_entry', $o); - -include/bb2diaspora.php: Addon::callHooks('bb2diaspora',$Text); - -include/cronhooks.php: Addon::callHooks('cron', $d); - -include/security.php: Addon::callHooks('logged_in', $a->user); - -src/Content/Text/HTML.php: Addon::callHooks('html2bbcode', $text); - -include/Contact.php: Addon::callHooks('remove_user',$r[0]); - -include/Contact.php: Addon::callHooks('contact_photo_menu', $args); - -include/conversation.php: Addon::callHooks('conversation_start',$cb); - -include/conversation.php: Addon::callHooks('render_location',$locate); +include/enotify.php: Addon::callHooks('enotify', $h); +include/enotify.php: Addon::callHooks('enotify_store', $datarray); +include/enotify.php: Addon::callHooks('enotify_mail', $datarray); +include/enotify.php: Addon::callHooks('check_item_notification', $notification_data); +include/conversation.php: Addon::callHooks('conversation_start', $cb); +include/conversation.php: Addon::callHooks('render_location', $locate); include/conversation.php: Addon::callHooks('display_item', $arr); - -include/conversation.php: Addon::callHooks('render_location',$locate); - include/conversation.php: Addon::callHooks('display_item', $arr); - include/conversation.php: Addon::callHooks('item_photo_menu', $args); - include/conversation.php: Addon::callHooks('jot_tool', $jotplugins); -include/conversation.php: Addon::callHooks('jot_networks', $jotnets); +include/security.php: Addon::callHooks('logged_in', $a->user); -index.php: Addon::callHooks('init_1'); +include/text.php: Addon::callHooks('contact_block_end', $arr); +include/text.php: Addon::callHooks('poke_verbs', $arr); +include/text.php: Addon::callHooks('prepare_body_init', $item); +include/text.php: Addon::callHooks('content_filter', $hook_data); +include/text.php: Addon::callHooks('prepare_body', $hook_data); +include/text.php: Addon::callHooks('prepare_body_final', $hook_data); -index.php: Addon::callHooks('app_menu', $arr); +include/items.php: Addon::callHooks('page_info_data', $data); -index.php: Addon::callHooks('page_end', $a->page['content']); +mod/directory.php: Addon::callHooks('directory_item', $arr); -mod/photos.php: Addon::callHooks('photo_post_init', $_POST); +mod/xrd.php: Addon::callHooks('personal_xrd', $arr); -mod/photos.php: Addon::callHooks('photo_post_file',$ret); +mod/ping.php: Addon::callHooks('network_ping', $arr); -mod/photos.php: Addon::callHooks('photo_post_end',$foo); +mod/parse_url.php: Addon::callHooks("parse_link", $arr); -mod/photos.php: Addon::callHooks('photo_post_end',$foo); +mod/manage.php: Addon::callHooks('home_init', $ret); -mod/photos.php: Addon::callHooks('photo_post_end',$foo); +mod/acl.php: Addon::callHooks('acl_lookup_end', $results); -mod/photos.php: Addon::callHooks('photo_post_end',intval($item_id)); +mod/network.php: Addon::callHooks('network_content_init', $arr); +mod/network.php: Addon::callHooks('network_tabs', $arr); -mod/photos.php: Addon::callHooks('photo_upload_form',$ret); +mod/friendica.php: Addon::callHooks('about_hook', $o); +mod/subthread.php: Addon::callHooks('post_local_end', $arr); -mod/friendica.php: Addon::callHooks('about_hook', $o); +mod/profiles.php: Addon::callHooks('profile_post', $_POST); +mod/profiles.php: Addon::callHooks('profile_edit', $arr); -mod/editpost.php: Addon::callHooks('jot_tool', $jotplugins); +mod/settings.php: Addon::callHooks('addon_settings_post', $_POST); +mod/settings.php: Addon::callHooks('connector_settings_post', $_POST); +mod/settings.php: Addon::callHooks('display_settings_post', $_POST); +mod/settings.php: Addon::callHooks('settings_post', $_POST); +mod/settings.php: Addon::callHooks('addon_settings', $settings_addons); +mod/settings.php: Addon::callHooks('connector_settings', $settings_connectors); +mod/settings.php: Addon::callHooks('display_settings', $o); +mod/settings.php: Addon::callHooks('settings_form', $o); -mod/editpost.php: Addon::callHooks('jot_networks', $jotnets); +mod/photos.php: Addon::callHooks('photo_post_init', $_POST); +mod/photos.php: Addon::callHooks('photo_post_file', $ret); +mod/photos.php: Addon::callHooks('photo_post_end', $foo); +mod/photos.php: Addon::callHooks('photo_post_end', $foo); +mod/photos.php: Addon::callHooks('photo_post_end', $foo); +mod/photos.php: Addon::callHooks('photo_post_end', $foo); +mod/photos.php: Addon::callHooks('photo_post_end', intval($item_id)); +mod/photos.php: Addon::callHooks('photo_upload_form', $ret); -mod/parse_url.php: Addon::callHooks('parse_link', $arr); +mod/profile.php: Addon::callHooks('profile_advanced', $o); -mod/home.php: Addon::callHooks('home_init',$ret); +mod/home.php: Addon::callHooks('home_init', $ret); +mod/home.php: Addon::callHooks("home_content", $content); -mod/home.php: Addon::callHooks("home_content",$o); +mod/poke.php: Addon::callHooks('post_local_end', $arr); -mod/contacts.php: Addon::callHooks('contact_edit_post', $_POST); +mod/contacts.php: Addon::callHooks('contact_edit_post', $_POST); +mod/contacts.php: Addon::callHooks('contact_edit', $arr); -mod/contacts.php: Addon::callHooks('contact_edit', $arr); +mod/tagger.php: Addon::callHooks('post_local_end', $arr); -mod/settings.php: Addon::callHooks('addon_settings_post', $_POST); +mod/lockview.php: Addon::callHooks('lockview_content', $item); -mod/settings.php: Addon::callHooks('connector_settings_post', $_POST); +mod/uexport.php: Addon::callHooks('uexport_options', $options); -mod/settings.php: Addon::callHooks('settings_post', $_POST); +mod/register.php: Addon::callHooks('register_post', $arr); +mod/register.php: Addon::callHooks('register_form', $arr); -mod/settings.php: Addon::callHooks('addon_settings', $settings_addons); +mod/item.php: Addon::callHooks('post_local_start', $_REQUEST); +mod/item.php: Addon::callHooks('post_local', $datarray); +mod/item.php: Addon::callHooks('post_local_end', $datarray); -mod/settings.php: Addon::callHooks('connector_settings', $settings_connectors); +mod/editpost.php: Addon::callHooks('jot_tool', $jotplugins); -mod/settings.php: Addon::callHooks('settings_form',$o); +src/Network/FKOAuth1.php: Addon::callHooks('logged_in', $a->user); -mod/register.php: Addon::callHooks('register_account', $newuid); +src/Render/FriendicaSmartyEngine.php: Addon::callHooks("template_vars", $arr); -mod/like.php: Addon::callHooks('post_local_end', $arr); +src/Model/Item.php: Addon::callHooks('post_local', $item); +src/Model/Item.php: Addon::callHooks('post_remote', $item); +src/Model/Item.php: Addon::callHooks('post_local_end', $posted_item); +src/Model/Item.php: Addon::callHooks('post_remote_end', $posted_item); +src/Model/Item.php: Addon::callHooks('tagged', $arr); +src/Model/Item.php: Addon::callHooks('post_local_end', $new_item); -mod/xrd.php: Addon::callHooks('personal_xrd', $arr); +src/Model/Contact.php: Addon::callHooks('contact_photo_menu', $args); +src/Model/Contact.php: Addon::callHooks('follow', $arr); -mod/item.php: Addon::callHooks('post_local_start', $_REQUEST); +src/Model/Profile.php: Addon::callHooks('profile_sidebar_enter', $profile); +src/Model/Profile.php: Addon::callHooks('profile_sidebar', $arr); +src/Model/Profile.php: Addon::callHooks('profile_tabs', $arr); +src/Model/Profile.php: Addon::callHooks('zrl_init', $arr); -mod/item.php: Addon::callHooks('post_local',$datarray); +src/Model/Event.php: Addon::callHooks('event_updated', $event['id']); +src/Model/Event.php: Addon::callHooks("event_created", $event['id']); -mod/item.php: Addon::callHooks('post_local_end', $datarray); +src/Model/User.php: Addon::callHooks('register_account', $uid); +src/Model/User.php: Addon::callHooks('remove_user', $user); -mod/profile.php: Addon::callHooks('profile_advanced',$o); +src/Content/Text/BBCode.php: Addon::callHooks('bbcode', $text); +src/Content/Text/BBCode.php: Addon::callHooks('bb2diaspora', $text); -mod/profiles.php: Addon::callHooks('profile_post', $_POST); +src/Content/Text/HTML.php: Addon::callHooks('html2bbcode', $message); -mod/profiles.php: Addon::callHooks('profile_edit', $arr); +src/Content/Smilies.php: Addon::callHooks('smilie', $params); -mod/tagger.php: Addon::callHooks('post_local_end', $arr); +src/Content/Feature.php: Addon::callHooks('isEnabled', $arr); +src/Content/Feature.php: Addon::callHooks('get', $arr); -mod/cb.php: Addon::callHooks('cb_init'); +src/Content/ContactSelector.php: Addon::callHooks('network_to_name', $nets); +src/Content/ContactSelector.php: Addon::callHooks('gender_selector', $select); +src/Content/ContactSelector.php: Addon::callHooks('sexpref_selector', $select); +src/Content/ContactSelector.php: Addon::callHooks('marital_selector', $select); -mod/cb.php: Addon::callHooks('cb_post', $_POST); +src/Content/OEmbed.php: Addon::callHooks('oembed_fetch_url', $embedurl, $j); -mod/cb.php: Addon::callHooks('cb_afterpost'); +src/Content/Nav.php: Addon::callHooks('page_header', $a->page['nav']); +src/Content/Nav.php: Addon::callHooks('nav_info', $nav); -mod/cb.php: Addon::callHooks('cb_content', $o); +src/Worker/Directory.php: Addon::callHooks('globaldir_update', $arr); +src/Worker/Notifier.php: Addon::callHooks('notifier_end', $target_item); +src/Worker/Queue.php: Addon::callHooks('queue_predeliver', $r); +src/Worker/Queue.php: Addon::callHooks('queue_deliver', $params); -mod/directory.php: Addon::callHooks('directory_item', $arr); +src/Module/Login.php: Addon::callHooks('authenticate', $addon_auth); +src/Module/Login.php: Addon::callHooks('login_hook', $o); +src/Module/Logout.php: Addon::callHooks("logging_out"); + +src/Object/Post.php: Addon::callHooks('render_location', $locate); +src/Object/Post.php: Addon::callHooks('display_item', $arr); + +src/Core/ACL.php: Addon::callHooks('contact_select_options', $x); +src/Core/ACL.php: Addon::callHooks($a->module.'_pre_'.$selname, $arr); +src/Core/ACL.php: Addon::callHooks($a->module.'_post_'.$selname, $o); +src/Core/ACL.php: Addon::callHooks($a->module.'_pre_'.$selname, $arr); +src/Core/ACL.php: Addon::callHooks($a->module.'_post_'.$selname, $o); +src/Core/ACL.php: Addon::callHooks('jot_networks', $jotnets); + +src/Core/Worker.php: Addon::callHooks("proc_run", $arr); + +src/Util/Emailer.php: Addon::callHooks('emailer_send_prepare', $params); +src/Util/Emailer.php: Addon::callHooks("emailer_send", $hookdata); + +src/Util/Map.php: Addon::callHooks('generate_map', $arr); +src/Util/Map.php: Addon::callHooks('generate_named_map', $arr); +src/Util/Map.php: Addon::callHooks('Map::getCoordinates', $arr); + +src/Util/Network.php: Addon::callHooks('avatar_lookup', $avatar); + +src/Util/ParseUrl.php: Addon::callHooks("getsiteinfo", $siteinfo); + +src/Protocol/DFRN.php: Addon::callHooks('atom_feed_end', $atom); +src/Protocol/DFRN.php: Addon::callHooks('atom_feed_end', $atom); From d603bf062da148e8262906c67129dc78067bffa6 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sun, 1 Apr 2018 14:56:42 -0400 Subject: [PATCH 05/12] Add CSS classes to content-filter wrapper --- include/text.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/text.php b/include/text.php index 7807dc08b4..6e11c3a38a 100644 --- a/include/text.php +++ b/include/text.php @@ -1431,15 +1431,15 @@ function apply_content_filter($html, array $reasons) { if (count($reasons)) { $rnd = random_string(8); - $content_filter_html = '
    '; + $content_filter_html = '
      '; foreach ($reasons as $reason) { $content_filter_html .= '
    • ' . htmlspecialchars($reason) . '
    • ' . PHP_EOL; } $content_filter_html .= '
    - -