aboutsummaryrefslogtreecommitdiffstats
path: root/doc/en/hook
diff options
context:
space:
mode:
authorMario <mario@mariovavti.com>2024-04-30 06:59:20 +0000
committerMario <mario@mariovavti.com>2024-04-30 06:59:20 +0000
commitce15852b9a57a6c77531186ed24a389ebce8524e (patch)
treead04cef0d545c5e5e24e76060b6c32d65363d48e /doc/en/hook
parent48cec945051d259a06871d937ad998a1bd3e22ec (diff)
parent7c34a3676d294c9a1acc69f71ab3061074509160 (diff)
downloadvolse-hubzilla-ce15852b9a57a6c77531186ed24a389ebce8524e.tar.gz
volse-hubzilla-ce15852b9a57a6c77531186ed24a389ebce8524e.tar.bz2
volse-hubzilla-ce15852b9a57a6c77531186ed24a389ebce8524e.zip
Merge branch 'rework-help-module' into 'dev'
Rework Help module + begin tests for Setup module See merge request hubzilla/core!2120
Diffstat (limited to 'doc/en/hook')
-rw-r--r--doc/en/hook/about_hook.bb1
-rw-r--r--doc/en/hook/accept_follow.bb1
-rw-r--r--doc/en/hook/account_downgrade.bb1
-rw-r--r--doc/en/hook/account_settings.bb1
-rw-r--r--doc/en/hook/account_settings_post.bb1
-rw-r--r--doc/en/hook/activity_decode_mapper.bb1
-rw-r--r--doc/en/hook/activity_filter.bb1
-rw-r--r--doc/en/hook/activity_mapper.bb1
-rw-r--r--doc/en/hook/activity_obj_decode_mapper.bb1
-rw-r--r--doc/en/hook/activity_obj_mapper.bb1
-rw-r--r--doc/en/hook/activity_order.bb1
-rw-r--r--doc/en/hook/activity_received.bb1
-rw-r--r--doc/en/hook/addon_app_installed_filter.bb18
-rw-r--r--doc/en/hook/affinity_labels.bb1
-rw-r--r--doc/en/hook/api_perm_is_allowed.bb1
-rw-r--r--doc/en/hook/app_destroy.bb4
-rw-r--r--doc/en/hook/app_installed_filter.bb17
-rw-r--r--doc/en/hook/atom_author.bb1
-rw-r--r--doc/en/hook/atom_entry.bb1
-rw-r--r--doc/en/hook/atom_feed.bb1
-rw-r--r--doc/en/hook/atom_feed_end.bb1
-rw-r--r--doc/en/hook/attach_delete.bb11
-rw-r--r--doc/en/hook/attach_upload_file.bb1
-rw-r--r--doc/en/hook/authenticate.bb29
-rw-r--r--doc/en/hook/author_is_pmable.bb14
-rw-r--r--doc/en/hook/bb2diaspora.bb1
-rw-r--r--doc/en/hook/bbcode.bb6
-rw-r--r--doc/en/hook/bbcode_filter.bb7
-rw-r--r--doc/en/hook/build_pagehead.bb2
-rw-r--r--doc/en/hook/can_comment_on_post.bb13
-rw-r--r--doc/en/hook/change_channel.bb11
-rw-r--r--doc/en/hook/channel_links.bb12
-rw-r--r--doc/en/hook/channel_remove.bb1
-rw-r--r--doc/en/hook/chat_message.bb1
-rw-r--r--doc/en/hook/chat_post.bb1
-rw-r--r--doc/en/hook/check_account_email.bb1
-rw-r--r--doc/en/hook/check_account_invite.bb1
-rw-r--r--doc/en/hook/check_account_password.bb17
-rw-r--r--doc/en/hook/check_channelallowed.bb11
-rw-r--r--doc/en/hook/check_siteallowed.bb10
-rw-r--r--doc/en/hook/collect_public_recipients.bb42
-rw-r--r--doc/en/hook/comments_are_now_closed.bb11
-rw-r--r--doc/en/hook/connect_premium.bb1
-rw-r--r--doc/en/hook/connection_remove.bb9
-rw-r--r--doc/en/hook/connector_settings.bb1
-rw-r--r--doc/en/hook/construct_page.bb1
-rw-r--r--doc/en/hook/contact_block_end.bb1
-rw-r--r--doc/en/hook/contact_edit.bb1
-rw-r--r--doc/en/hook/contact_edit_post.bb1
-rw-r--r--doc/en/hook/contact_select_options.bb1
-rw-r--r--doc/en/hook/content_security_policy.bb39
-rw-r--r--doc/en/hook/conversation_start.bb1
-rw-r--r--doc/en/hook/create_identity.bb1
-rw-r--r--doc/en/hook/cron.bb5
-rw-r--r--doc/en/hook/cron_daily.bb3
-rw-r--r--doc/en/hook/cron_weekly.bb3
-rw-r--r--doc/en/hook/crypto_methods.bb5
-rw-r--r--doc/en/hook/daemon_addon.bb15
-rw-r--r--doc/en/hook/daemon_master_release.bb5
-rw-r--r--doc/en/hook/directory_item.bb1
-rw-r--r--doc/en/hook/discover_channel_webfinger.bb14
-rw-r--r--doc/en/hook/display_item.bb1
-rw-r--r--doc/en/hook/display_settings.bb1
-rw-r--r--doc/en/hook/display_settings_post.bb1
-rw-r--r--doc/en/hook/donate_contributors.bb1
-rw-r--r--doc/en/hook/donate_plugin.bb1
-rw-r--r--doc/en/hook/donate_sponsors.bb1
-rw-r--r--doc/en/hook/dreport_is_storable.bb1
-rw-r--r--doc/en/hook/dreport_process.bb7
-rw-r--r--doc/en/hook/drop_item.bb1
-rw-r--r--doc/en/hook/dropdown_extras.bb17
-rw-r--r--doc/en/hook/encode_object.bb1
-rw-r--r--doc/en/hook/enotify.bb1
-rw-r--r--doc/en/hook/enotify_mail.bb1
-rw-r--r--doc/en/hook/enotify_store.bb1
-rw-r--r--doc/en/hook/event_created.bb1
-rw-r--r--doc/en/hook/event_store_event.bb11
-rw-r--r--doc/en/hook/event_updated.bb1
-rw-r--r--doc/en/hook/externals_url_select.bb1
-rw-r--r--doc/en/hook/feature_enabled.bb1
-rw-r--r--doc/en/hook/feature_settings.bb1
-rw-r--r--doc/en/hook/feature_settings_post.bb1
-rw-r--r--doc/en/hook/fetch_and_store.bb1
-rw-r--r--doc/en/hook/follow.bb1
-rw-r--r--doc/en/hook/follow_allow.bb1
-rw-r--r--doc/en/hook/gender_selector.bb1
-rw-r--r--doc/en/hook/gender_selector_min.bb1
-rw-r--r--doc/en/hook/generate_map.bb1
-rw-r--r--doc/en/hook/generate_named_map.bb1
-rw-r--r--doc/en/hook/get_all_api_perms.bb1
-rw-r--r--doc/en/hook/get_all_perms.bb1
-rw-r--r--doc/en/hook/get_default_export_sections10
-rw-r--r--doc/en/hook/get_features.bb1
-rw-r--r--doc/en/hook/get_photo.bb14
-rw-r--r--doc/en/hook/get_profile_photo.bb18
-rw-r--r--doc/en/hook/get_role_perms.bb1
-rw-r--r--doc/en/hook/global_permissions.bb1
-rw-r--r--doc/en/hook/home_content.bb1
-rw-r--r--doc/en/hook/home_init.bb1
-rw-r--r--doc/en/hook/hostxrd.bb1
-rw-r--r--doc/en/hook/html2bbcode.bb1
-rw-r--r--doc/en/hook/identity_basic_export.bb10
-rw-r--r--doc/en/hook/import_author_xchan.bb1
-rw-r--r--doc/en/hook/import_channel.bb1
-rw-r--r--doc/en/hook/import_directory_profile.bb1
-rw-r--r--doc/en/hook/import_xchan.bb1
-rw-r--r--doc/en/hook/item_custom.bb24
-rw-r--r--doc/en/hook/item_photo_menu.bb1
-rw-r--r--doc/en/hook/item_store.bb1
-rw-r--r--doc/en/hook/item_store_update.bb1
-rw-r--r--doc/en/hook/item_stored.bb18
-rw-r--r--doc/en/hook/item_stored_update.bb15
-rw-r--r--doc/en/hook/item_translate.bb1
-rw-r--r--doc/en/hook/jot_header_tpl_filter.bb5
-rw-r--r--doc/en/hook/jot_networks.bb1
-rw-r--r--doc/en/hook/jot_tool.bb1
-rw-r--r--doc/en/hook/jot_tpl_filter.bb5
-rw-r--r--doc/en/hook/legal_webbie.bb10
-rw-r--r--doc/en/hook/legal_webbie_text.bb7
-rw-r--r--doc/en/hook/load_pdl.bb1
-rw-r--r--doc/en/hook/local_dir_update.bb1
-rw-r--r--doc/en/hook/logged_in.bb1
-rw-r--r--doc/en/hook/logger.bb16
-rw-r--r--doc/en/hook/logging_out.bb1
-rw-r--r--doc/en/hook/login_hook.bb1
-rw-r--r--doc/en/hook/magic_auth.bb1
-rw-r--r--doc/en/hook/magic_auth_openid_success.bb1
-rw-r--r--doc/en/hook/magic_auth_success.bb1
-rw-r--r--doc/en/hook/main_slider.bb1
-rw-r--r--doc/en/hook/marital_selector.bb1
-rw-r--r--doc/en/hook/marital_selector_min.bb1
-rw-r--r--doc/en/hook/markdown_to_bb.bb5
-rw-r--r--doc/en/hook/module_loaded.bb1
-rw-r--r--doc/en/hook/module_mod_aftercontent.bb12
-rw-r--r--doc/en/hook/module_mod_content.bb10
-rw-r--r--doc/en/hook/module_mod_init.bb1
-rw-r--r--doc/en/hook/module_mod_post.bb1
-rw-r--r--doc/en/hook/mood_verbs.bb1
-rw-r--r--doc/en/hook/nav.bb28
-rw-r--r--doc/en/hook/network_content_init.bb1
-rw-r--r--doc/en/hook/network_ping.bb1
-rw-r--r--doc/en/hook/network_to_name.bb1
-rw-r--r--doc/en/hook/notifier_end.bb1
-rw-r--r--doc/en/hook/notifier_hub.bb1
-rw-r--r--doc/en/hook/notifier_normal.bb1
-rw-r--r--doc/en/hook/obj_verbs.bb1
-rw-r--r--doc/en/hook/oembed_probe.bb1
-rw-r--r--doc/en/hook/other_encapsulate.bb7
-rw-r--r--doc/en/hook/other_unencapsulate.bb5
-rw-r--r--doc/en/hook/page_content_top.bb1
-rw-r--r--doc/en/hook/page_end.bb1
-rw-r--r--doc/en/hook/page_header.bb1
-rw-r--r--doc/en/hook/page_meta.bb13
-rw-r--r--doc/en/hook/parse_atom.bb1
-rw-r--r--doc/en/hook/parse_link.bb1
-rw-r--r--doc/en/hook/pdl_selector.bb1
-rw-r--r--doc/en/hook/perm_is_allowed.bb1
-rw-r--r--doc/en/hook/permissions_create.bb1
-rw-r--r--doc/en/hook/permissions_update.bb1
-rw-r--r--doc/en/hook/permit_hook.bb0
-rw-r--r--doc/en/hook/personal_xrd.bb1
-rw-r--r--doc/en/hook/photo_post_end.bb1
-rw-r--r--doc/en/hook/photo_upload_begin.bb1
-rw-r--r--doc/en/hook/photo_upload_end.bb1
-rw-r--r--doc/en/hook/photo_upload_file.bb1
-rw-r--r--doc/en/hook/photo_upload_form.bb1
-rw-r--r--doc/en/hook/photo_view_filter.bb1
-rw-r--r--doc/en/hook/poke_verbs.bb1
-rw-r--r--doc/en/hook/post_local.bb1
-rw-r--r--doc/en/hook/post_local_end.bb1
-rw-r--r--doc/en/hook/post_local_start.bb1
-rw-r--r--doc/en/hook/post_mail.bb1
-rw-r--r--doc/en/hook/post_mail_end.bb1
-rw-r--r--doc/en/hook/post_remote.bb1
-rw-r--r--doc/en/hook/post_remote_end.bb1
-rw-r--r--doc/en/hook/post_remote_update.bb1
-rw-r--r--doc/en/hook/post_remote_update_end.bb1
-rw-r--r--doc/en/hook/prepare_body.bb1
-rw-r--r--doc/en/hook/prepare_body_final.bb1
-rw-r--r--doc/en/hook/prepare_body_init.bb1
-rw-r--r--doc/en/hook/privacygroup_extras.bb12
-rw-r--r--doc/en/hook/privacygroup_extras_drop.bb11
-rw-r--r--doc/en/hook/privacygroup_extras_post.bb11
-rw-r--r--doc/en/hook/proc_run.bb1
-rw-r--r--doc/en/hook/process_channel_sync_delivery.bb1
-rw-r--r--doc/en/hook/profile_advanced.bb1
-rw-r--r--doc/en/hook/profile_edit.bb1
-rw-r--r--doc/en/hook/profile_photo_content_end.bb1
-rw-r--r--doc/en/hook/profile_post.bb1
-rw-r--r--doc/en/hook/profile_sidebar.bb1
-rw-r--r--doc/en/hook/profile_sidebar_enter.bb1
-rw-r--r--doc/en/hook/register_account.bb1
-rw-r--r--doc/en/hook/render_location.bb1
-rw-r--r--doc/en/hook/replace_macros.bb1
-rw-r--r--doc/en/hook/reverse_magic_auth.bb1
-rw-r--r--doc/en/hook/settings_form.bb1
-rw-r--r--doc/en/hook/settings_post.bb1
-rw-r--r--doc/en/hook/sexpref_selector.bb1
-rw-r--r--doc/en/hook/sexpref_selector_min.bb1
-rw-r--r--doc/en/hook/smilie.bb19
-rw-r--r--doc/en/hook/status_editor.bb31
-rw-r--r--doc/en/hook/stream_item.bb13
-rw-r--r--doc/en/hook/system_app_installed_filter.bb18
-rw-r--r--doc/en/hook/tagged.bb16
-rw-r--r--doc/en/hook/update_unseen.bb9
-rw-r--r--doc/en/hook/validate_channelname.bb23
-rw-r--r--doc/en/hook/webfinger.bb1
-rw-r--r--doc/en/hook/well_known.bb1
-rw-r--r--doc/en/hook/wiki_preprocess.bb11
-rw-r--r--doc/en/hook/zid.bb1
-rw-r--r--doc/en/hook/zid_init.bb1
-rw-r--r--doc/en/hook/zot_best_algorithm.bb3
-rw-r--r--doc/en/hook/zot_finger.bb1
213 files changed, 929 insertions, 0 deletions
diff --git a/doc/en/hook/about_hook.bb b/doc/en/hook/about_hook.bb
new file mode 100644
index 000000000..22b60d786
--- /dev/null
+++ b/doc/en/hook/about_hook.bb
@@ -0,0 +1 @@
+[h2]about_hook[/h2]
diff --git a/doc/en/hook/accept_follow.bb b/doc/en/hook/accept_follow.bb
new file mode 100644
index 000000000..e8b1ed0c4
--- /dev/null
+++ b/doc/en/hook/accept_follow.bb
@@ -0,0 +1 @@
+[h2]accept_follow[/h2]
diff --git a/doc/en/hook/account_downgrade.bb b/doc/en/hook/account_downgrade.bb
new file mode 100644
index 000000000..63bae0a58
--- /dev/null
+++ b/doc/en/hook/account_downgrade.bb
@@ -0,0 +1 @@
+[h2]account_downgrade[/h2]
diff --git a/doc/en/hook/account_settings.bb b/doc/en/hook/account_settings.bb
new file mode 100644
index 000000000..91b3a8385
--- /dev/null
+++ b/doc/en/hook/account_settings.bb
@@ -0,0 +1 @@
+[h2]account_settings[/h2]
diff --git a/doc/en/hook/account_settings_post.bb b/doc/en/hook/account_settings_post.bb
new file mode 100644
index 000000000..bbd7a57a8
--- /dev/null
+++ b/doc/en/hook/account_settings_post.bb
@@ -0,0 +1 @@
+[h2]account_settings_post[/h2]
diff --git a/doc/en/hook/activity_decode_mapper.bb b/doc/en/hook/activity_decode_mapper.bb
new file mode 100644
index 000000000..43d08a136
--- /dev/null
+++ b/doc/en/hook/activity_decode_mapper.bb
@@ -0,0 +1 @@
+[h2]activity_decode_mapper[/h2]
diff --git a/doc/en/hook/activity_filter.bb b/doc/en/hook/activity_filter.bb
new file mode 100644
index 000000000..9d0768577
--- /dev/null
+++ b/doc/en/hook/activity_filter.bb
@@ -0,0 +1 @@
+[h2]activity_filter[/h2]
diff --git a/doc/en/hook/activity_mapper.bb b/doc/en/hook/activity_mapper.bb
new file mode 100644
index 000000000..db65fadc4
--- /dev/null
+++ b/doc/en/hook/activity_mapper.bb
@@ -0,0 +1 @@
+[h2]activity_mapper[/h2]
diff --git a/doc/en/hook/activity_obj_decode_mapper.bb b/doc/en/hook/activity_obj_decode_mapper.bb
new file mode 100644
index 000000000..a96b32eee
--- /dev/null
+++ b/doc/en/hook/activity_obj_decode_mapper.bb
@@ -0,0 +1 @@
+[h2]activity_obj_decode_mapper[/h2]
diff --git a/doc/en/hook/activity_obj_mapper.bb b/doc/en/hook/activity_obj_mapper.bb
new file mode 100644
index 000000000..7c14a1b81
--- /dev/null
+++ b/doc/en/hook/activity_obj_mapper.bb
@@ -0,0 +1 @@
+[h2]activity_obj_mapper[/h2]
diff --git a/doc/en/hook/activity_order.bb b/doc/en/hook/activity_order.bb
new file mode 100644
index 000000000..4a4670d03
--- /dev/null
+++ b/doc/en/hook/activity_order.bb
@@ -0,0 +1 @@
+[h2]activity_order[/h2]
diff --git a/doc/en/hook/activity_received.bb b/doc/en/hook/activity_received.bb
new file mode 100644
index 000000000..2e9d68bf3
--- /dev/null
+++ b/doc/en/hook/activity_received.bb
@@ -0,0 +1 @@
+[h2]activity_received[/h2]
diff --git a/doc/en/hook/addon_app_installed_filter.bb b/doc/en/hook/addon_app_installed_filter.bb
new file mode 100644
index 000000000..e610b3205
--- /dev/null
+++ b/doc/en/hook/addon_app_installed_filter.bb
@@ -0,0 +1,18 @@
+[h2]addon_app_installed_filter[/h2]
+
+Allow plugins to filter the result of addon_app_installed.
+
+Code excerpt:
+
+[code]
+ $filter_arr = [
+ 'uid'=>$uid,
+ 'app'=>$app,
+ 'installed'=>$r
+ ];
+ call_hooks('addon_app_installed_filter',$filter_arr);
+ $r = $filter_arr['installed'];
+[/code]
+
+cxref: Zotlabs/Lib/Apps.php
+
diff --git a/doc/en/hook/affinity_labels.bb b/doc/en/hook/affinity_labels.bb
new file mode 100644
index 000000000..7234b7632
--- /dev/null
+++ b/doc/en/hook/affinity_labels.bb
@@ -0,0 +1 @@
+[h2]affinity_labels[/h2]
diff --git a/doc/en/hook/api_perm_is_allowed.bb b/doc/en/hook/api_perm_is_allowed.bb
new file mode 100644
index 000000000..862cbd653
--- /dev/null
+++ b/doc/en/hook/api_perm_is_allowed.bb
@@ -0,0 +1 @@
+[h2]api_perm_is_allowed[/h2]
diff --git a/doc/en/hook/app_destroy.bb b/doc/en/hook/app_destroy.bb
new file mode 100644
index 000000000..386d7af16
--- /dev/null
+++ b/doc/en/hook/app_destroy.bb
@@ -0,0 +1,4 @@
+[h2]app_destroy[/h2]
+
+Allows addons to perform some post delete actions.
+
diff --git a/doc/en/hook/app_installed_filter.bb b/doc/en/hook/app_installed_filter.bb
new file mode 100644
index 000000000..f0d91d6f0
--- /dev/null
+++ b/doc/en/hook/app_installed_filter.bb
@@ -0,0 +1,17 @@
+[h2]app_installed_filter[/h2]
+
+Allow plugins to filter the result of app_installed.
+
+Code excerpt:
+
+[code]
+ $filter_arr = [
+ 'uid'=>$uid,
+ 'app'=>$app,
+ 'installed'=>$r
+ ];
+ call_hooks('app_installed_filter',$filter_arr);
+ $r = $filter_arr['installed'];
+[/code]
+
+cxref: Zotlabs/Lib/Apps.php
diff --git a/doc/en/hook/atom_author.bb b/doc/en/hook/atom_author.bb
new file mode 100644
index 000000000..c9d05a593
--- /dev/null
+++ b/doc/en/hook/atom_author.bb
@@ -0,0 +1 @@
+[h2]atom_author[/h2]
diff --git a/doc/en/hook/atom_entry.bb b/doc/en/hook/atom_entry.bb
new file mode 100644
index 000000000..0aec89f16
--- /dev/null
+++ b/doc/en/hook/atom_entry.bb
@@ -0,0 +1 @@
+[h2]atom_entry[/h2]
diff --git a/doc/en/hook/atom_feed.bb b/doc/en/hook/atom_feed.bb
new file mode 100644
index 000000000..69775ca5e
--- /dev/null
+++ b/doc/en/hook/atom_feed.bb
@@ -0,0 +1 @@
+[h2]atom_feed[/h2]
diff --git a/doc/en/hook/atom_feed_end.bb b/doc/en/hook/atom_feed_end.bb
new file mode 100644
index 000000000..4f019fc8f
--- /dev/null
+++ b/doc/en/hook/atom_feed_end.bb
@@ -0,0 +1 @@
+[h2]atom_feed_end[/h2]
diff --git a/doc/en/hook/attach_delete.bb b/doc/en/hook/attach_delete.bb
new file mode 100644
index 000000000..3b63f28d3
--- /dev/null
+++ b/doc/en/hook/attach_delete.bb
@@ -0,0 +1,11 @@
+[h2]attach_delete[/h2]
+
+Invoked when an attachment is deleted using attach_delete().
+
+[code]
+$arr = ['channel_id' => $channel_id, 'resource' => $resource, 'is_photo'=>$is_photo];
+call_hooks("attach_delete",$arr);
+[/code]
+
+
+See include/attach.php
diff --git a/doc/en/hook/attach_upload_file.bb b/doc/en/hook/attach_upload_file.bb
new file mode 100644
index 000000000..1f8056caa
--- /dev/null
+++ b/doc/en/hook/attach_upload_file.bb
@@ -0,0 +1 @@
+[h2]attach_upload_file[/h2]
diff --git a/doc/en/hook/authenticate.bb b/doc/en/hook/authenticate.bb
new file mode 100644
index 000000000..eb8071e73
--- /dev/null
+++ b/doc/en/hook/authenticate.bb
@@ -0,0 +1,29 @@
+[h2]authenticate[/h2]
+
+Invoked when a POST request is made with non-null $_POST['auth-params'] such as from the login form.
+If the hook handler does not set the 'authenticated' parameter of the passed array, normal login functions continue;
+
+The 'user_record' is in fact an account DB record. To provide automatic provisioning of accounts from other authentication realms, this record should be generated and stored during the verification phase.
+
+
+[code]
+ $addon_auth = array(
+ 'username' => trim($_POST['username']),
+ 'password' => trim($_POST['password']),
+ 'authenticated' => 0,
+ 'user_record' => null
+ );
+
+ /**
+ *
+ * A plugin indicates successful login by setting 'authenticated' to non-zero value and returning a user record
+ * Plugins should never set 'authenticated' except to indicate success - as hooks may be chained
+ * and later plugins should not interfere with an earlier one that succeeded.
+ *
+ */
+
+ call_hooks('authenticate', $addon_auth);
+[/code]
+
+
+See include/auth.php
diff --git a/doc/en/hook/author_is_pmable.bb b/doc/en/hook/author_is_pmable.bb
new file mode 100644
index 000000000..11d1185f3
--- /dev/null
+++ b/doc/en/hook/author_is_pmable.bb
@@ -0,0 +1,14 @@
+[h2]author_is_pmable[/h2]
+
+Called from thread action menu before returning a 'send mail' link for the post author. Not all authors will be able to receive private mail, for instance those on other networks with incompatible mail systems.
+
+By default author_is_pmable() returns true for 'zot' xchans, and false for all others.
+
+The plugin is passed an array
+
+ [ 'xchan' => $author_xchan, 'abook' => abook record, 'result' => 'unset' ]
+
+A plugin which sets the 'result' to something besides 'unset' will over-ride the default behaviour. A value of true will enable the 'send mail' link and the private mail recipient will be set to the author's xchan_hash. A value of false will disable the 'send mail' link.
+
+
+
diff --git a/doc/en/hook/bb2diaspora.bb b/doc/en/hook/bb2diaspora.bb
new file mode 100644
index 000000000..c28f1883e
--- /dev/null
+++ b/doc/en/hook/bb2diaspora.bb
@@ -0,0 +1 @@
+[h2]bb2diaspora[/h2]
diff --git a/doc/en/hook/bbcode.bb b/doc/en/hook/bbcode.bb
new file mode 100644
index 000000000..f6b8711b0
--- /dev/null
+++ b/doc/en/hook/bbcode.bb
@@ -0,0 +1,6 @@
+[h2]bbcode[/h2]
+
+
+Called at end of bbcode to html conversion.
+
+Hook argument contains the converted text string.
diff --git a/doc/en/hook/bbcode_filter.bb b/doc/en/hook/bbcode_filter.bb
new file mode 100644
index 000000000..efeb2e1b0
--- /dev/null
+++ b/doc/en/hook/bbcode_filter.bb
@@ -0,0 +1,7 @@
+[h2]bbcode_filter[/h2]
+
+
+Called at beginning of bbcode to html conversion.
+
+Hook argument contains the text string to be converted.
+
diff --git a/doc/en/hook/build_pagehead.bb b/doc/en/hook/build_pagehead.bb
new file mode 100644
index 000000000..8fc3486c7
--- /dev/null
+++ b/doc/en/hook/build_pagehead.bb
@@ -0,0 +1,2 @@
+[b]build_pagehead[/b]
+
diff --git a/doc/en/hook/can_comment_on_post.bb b/doc/en/hook/can_comment_on_post.bb
new file mode 100644
index 000000000..2cfd3b2da
--- /dev/null
+++ b/doc/en/hook/can_comment_on_post.bb
@@ -0,0 +1,13 @@
+[h3]can_comment_on_post[/h3]
+
+Called when deciding whether or not to display a comment box for a post.
+
+
+Hook data (array):
+ observer_hash => xchan_hash of current observer
+ item => posted item
+ allowed => 'unset'
+
+
+To over-ride the default behaviour, change allowed to true or false
+
diff --git a/doc/en/hook/change_channel.bb b/doc/en/hook/change_channel.bb
new file mode 100644
index 000000000..4514b9265
--- /dev/null
+++ b/doc/en/hook/change_channel.bb
@@ -0,0 +1,11 @@
+[h2]change_channel[/h2]
+
+Called when entering a logged in state in a channel context (as opposed to an account context).
+The hook array provides two arguments, 'channel_id' and 'chanx'. 'chanx' is a union of the channel
+and xchan records for the now active channel.
+
+Use this to capture what would traditionally be known as 'login events'. In this platform, login is
+a separate authentication activity and doesn't necessarily require "connecting to an identity", which
+is what the change_channel activity represents.
+
+
diff --git a/doc/en/hook/channel_links.bb b/doc/en/hook/channel_links.bb
new file mode 100644
index 000000000..c0243dac6
--- /dev/null
+++ b/doc/en/hook/channel_links.bb
@@ -0,0 +1,12 @@
+[h2]channel_links[/h2]
+
+Called when generating the Link HTTP header for the channel page. Different protocol stacks can add links to this header.
+
+Hook data = array
+ 'channel_address' => channel nickname, no checking is done to see if it is valid
+ 'channel_links' => array of channel links in the format
+ 'url' => url of resource
+ 'rel' => link relation
+ 'type' => MIME type
+
+All fields are required \ No newline at end of file
diff --git a/doc/en/hook/channel_remove.bb b/doc/en/hook/channel_remove.bb
new file mode 100644
index 000000000..db9e9dd82
--- /dev/null
+++ b/doc/en/hook/channel_remove.bb
@@ -0,0 +1 @@
+[h2]channel_remove[/h2]
diff --git a/doc/en/hook/chat_message.bb b/doc/en/hook/chat_message.bb
new file mode 100644
index 000000000..ccc93bb2c
--- /dev/null
+++ b/doc/en/hook/chat_message.bb
@@ -0,0 +1 @@
+[h2]chat_message[/h2]
diff --git a/doc/en/hook/chat_post.bb b/doc/en/hook/chat_post.bb
new file mode 100644
index 000000000..7cb3c9fa1
--- /dev/null
+++ b/doc/en/hook/chat_post.bb
@@ -0,0 +1 @@
+[h2]chat_post[/h2]
diff --git a/doc/en/hook/check_account_email.bb b/doc/en/hook/check_account_email.bb
new file mode 100644
index 000000000..b309706a0
--- /dev/null
+++ b/doc/en/hook/check_account_email.bb
@@ -0,0 +1 @@
+[h2]check_account_email[/h2]
diff --git a/doc/en/hook/check_account_invite.bb b/doc/en/hook/check_account_invite.bb
new file mode 100644
index 000000000..8d4a40522
--- /dev/null
+++ b/doc/en/hook/check_account_invite.bb
@@ -0,0 +1 @@
+[h2]check_account_invite[/h2]
diff --git a/doc/en/hook/check_account_password.bb b/doc/en/hook/check_account_password.bb
new file mode 100644
index 000000000..ce5202f48
--- /dev/null
+++ b/doc/en/hook/check_account_password.bb
@@ -0,0 +1,17 @@
+[h2]check_account_password[/h2]
+Use this hook to provide additional checks or validations of the password given when
+registering and account.
+[h3]Arguments:[/h3]
+[code=php]array(
+ 'password' => $password, // The password to check
+ 'result' => array(
+ 'error' => false,
+ 'message' => ''
+ )
+)[/code]
+[h3]Results:[/h3]
+For a failed check set the [code]error[/code] member of the [code]result[/code]
+array to [code]true[/code] and the [code]message[/code] to a short message
+explaining why it failed.
+
+Otherwise, leave it alone.
diff --git a/doc/en/hook/check_channelallowed.bb b/doc/en/hook/check_channelallowed.bb
new file mode 100644
index 000000000..e7559c92f
--- /dev/null
+++ b/doc/en/hook/check_channelallowed.bb
@@ -0,0 +1,11 @@
+[h2]check_channelallowed[/h2]
+
+Called when checking the channel (xchan) black and white lists to see if a channel is blocked.
+
+Hook data
+
+ array('hash' => xchan_hash of xchan to check);
+
+ create and set array element 'allowed' to true or false to override the system checks
+
+
diff --git a/doc/en/hook/check_siteallowed.bb b/doc/en/hook/check_siteallowed.bb
new file mode 100644
index 000000000..28134cbd2
--- /dev/null
+++ b/doc/en/hook/check_siteallowed.bb
@@ -0,0 +1,10 @@
+[h2]check_siteallowed[/h2]
+
+Called when checking the site black and white lists to see if a site is blocked.
+
+Hook data
+
+ array('url' => URL of site to check);
+
+ create and set array element 'allowed' to true or false to override the system checks
+
diff --git a/doc/en/hook/collect_public_recipients.bb b/doc/en/hook/collect_public_recipients.bb
new file mode 100644
index 000000000..de3f4049e
--- /dev/null
+++ b/doc/en/hook/collect_public_recipients.bb
@@ -0,0 +1,42 @@
+[h2]collect_public_recipients[/h2]
+
+Replace the default list of public recipients (i.e., all contacts).
+
+Allow plugins to create a list of recipients for public messages instead of the default
+of all channel connections.
+
+Called with the following array:
+ [
+ 'recipients' => [],
+ 'item' => $item,
+ 'private_envelope' => $private_envelope,
+ 'include_groups' => $include_groups
+ ];
+
+[code]
+ if(array_key_exists('public_policy',$item) && $item['public_policy'] !== 'self') {
+
+ $hookinfo = [
+ 'recipients' => [],
+ 'item' => $item,
+ 'private_envelope' => $private_envelope,
+ 'include_groups' => $include_groups
+ ];
+
+ call_hooks('collect_public_recipients',$hookinfo);
+
+ if ($hookinfo['recipients']) {
+ $r = $hookinfo['recipients'];
+ } else {
+ $r = q("select abook_xchan, xchan_network from abook left join xchan on abook_xchan = xchan_hash where abook_channel = %d and abook_self = 0 and abook_pending = 0 and abook_archived = 0 ",
+ intval($item['uid'])
+ );
+ }
+
+ if($r) {
+
+ . . .
+
+[/code]
+
+see: include/item.php
diff --git a/doc/en/hook/comments_are_now_closed.bb b/doc/en/hook/comments_are_now_closed.bb
new file mode 100644
index 000000000..4d3baa95a
--- /dev/null
+++ b/doc/en/hook/comments_are_now_closed.bb
@@ -0,0 +1,11 @@
+[h3]comments_are_now_closed[/h3]
+
+Called when deciding whether or not commenting is closed for an item.
+
+
+Hook data (array):
+ item => posted item
+ closed => 'unset'
+
+
+To over-ride the default behaviour, change closed to true or false
diff --git a/doc/en/hook/connect_premium.bb b/doc/en/hook/connect_premium.bb
new file mode 100644
index 000000000..ae3aafc66
--- /dev/null
+++ b/doc/en/hook/connect_premium.bb
@@ -0,0 +1 @@
+[h2]connect_premium[/h2]
diff --git a/doc/en/hook/connection_remove.bb b/doc/en/hook/connection_remove.bb
new file mode 100644
index 000000000..bd13ae5f2
--- /dev/null
+++ b/doc/en/hook/connection_remove.bb
@@ -0,0 +1,9 @@
+[h3]connection_remove[/h3]
+
+Called when deleting a connection.
+
+
+Passed parameter array:
+
+ 'channel_id' => channel_id of the channel removing the connection
+ 'abook_id' => abook_id of the connection being removed
diff --git a/doc/en/hook/connector_settings.bb b/doc/en/hook/connector_settings.bb
new file mode 100644
index 000000000..9b59c49da
--- /dev/null
+++ b/doc/en/hook/connector_settings.bb
@@ -0,0 +1 @@
+[h2]connector_settings[/h2]
diff --git a/doc/en/hook/construct_page.bb b/doc/en/hook/construct_page.bb
new file mode 100644
index 000000000..700d9256f
--- /dev/null
+++ b/doc/en/hook/construct_page.bb
@@ -0,0 +1 @@
+[h2]construct_page[/h2]
diff --git a/doc/en/hook/contact_block_end.bb b/doc/en/hook/contact_block_end.bb
new file mode 100644
index 000000000..30a7d2d76
--- /dev/null
+++ b/doc/en/hook/contact_block_end.bb
@@ -0,0 +1 @@
+[h2]contact_block_end[/h2]
diff --git a/doc/en/hook/contact_edit.bb b/doc/en/hook/contact_edit.bb
new file mode 100644
index 000000000..5fd31fb1d
--- /dev/null
+++ b/doc/en/hook/contact_edit.bb
@@ -0,0 +1 @@
+[h2]contact_edit[/h2]
diff --git a/doc/en/hook/contact_edit_post.bb b/doc/en/hook/contact_edit_post.bb
new file mode 100644
index 000000000..bc736f8b8
--- /dev/null
+++ b/doc/en/hook/contact_edit_post.bb
@@ -0,0 +1 @@
+[h2]contact_edit_post[/h2]
diff --git a/doc/en/hook/contact_select_options.bb b/doc/en/hook/contact_select_options.bb
new file mode 100644
index 000000000..65f9154ff
--- /dev/null
+++ b/doc/en/hook/contact_select_options.bb
@@ -0,0 +1 @@
+[h2]contact_select_options[/h2]
diff --git a/doc/en/hook/content_security_policy.bb b/doc/en/hook/content_security_policy.bb
new file mode 100644
index 000000000..96b8095ae
--- /dev/null
+++ b/doc/en/hook/content_security_policy.bb
@@ -0,0 +1,39 @@
+[h2]content_security_policy[/h2]
+
+Called to modify CSP settings prior to the output of the Content-Security-Policy header.
+
+This hook permits addons to modify the content-security-policy if necessary to allow loading of foreign js libraries or css styles.
+
+[code]
+if(App::$config['system']['content_security_policy']) {
+ $cspsettings = Array (
+ 'script-src' => Array ("'self'","'unsafe-inline'","'unsafe-eval'"),
+ 'style-src' => Array ("'self'","'unsafe-inline'")
+ );
+ call_hooks('content_security_policy',$cspsettings);
+
+ // Legitimate CSP directives (cxref: https://content-security-policy.com/)
+ $validcspdirectives=Array(
+ "default-src", "script-src", "style-src",
+ "img-src", "connect-src", "font-src",
+ "object-src", "media-src", 'frame-src',
+ 'sandbox', 'report-uri', 'child-src',
+ 'form-action', 'frame-ancestors', 'plugin-types'
+ );
+ $cspheader = "Content-Security-Policy:";
+ foreach ($cspsettings as $cspdirective => $csp) {
+ if (!in_array($cspdirective,$validcspdirectives)) {
+ logger("INVALID CSP DIRECTIVE: ".$cspdirective,LOGGER_DEBUG);
+ continue;
+ }
+ $cspsettingsarray=array_unique($cspsettings[$cspdirective]);
+ $cspsetpolicy = implode(' ',$cspsettingsarray);
+ if ($cspsetpolicy) {
+ $cspheader .= " ".$cspdirective." ".$cspsetpolicy.";";
+ }
+ }
+ header($cspheader);
+}
+[/code]
+
+see: boot.php
diff --git a/doc/en/hook/conversation_start.bb b/doc/en/hook/conversation_start.bb
new file mode 100644
index 000000000..7208c8d8f
--- /dev/null
+++ b/doc/en/hook/conversation_start.bb
@@ -0,0 +1 @@
+[h2]conversation_start[/h2]
diff --git a/doc/en/hook/create_identity.bb b/doc/en/hook/create_identity.bb
new file mode 100644
index 000000000..5c1da2d43
--- /dev/null
+++ b/doc/en/hook/create_identity.bb
@@ -0,0 +1 @@
+[h2]create_identity[/h2]
diff --git a/doc/en/hook/cron.bb b/doc/en/hook/cron.bb
new file mode 100644
index 000000000..55120b6c2
--- /dev/null
+++ b/doc/en/hook/cron.bb
@@ -0,0 +1,5 @@
+[h2]cron[/h2]
+
+Called when cron task (include/poller.php) is executed. The hook data is a string representing the current time (UTC).
+
+
diff --git a/doc/en/hook/cron_daily.bb b/doc/en/hook/cron_daily.bb
new file mode 100644
index 000000000..802bea5e4
--- /dev/null
+++ b/doc/en/hook/cron_daily.bb
@@ -0,0 +1,3 @@
+[h2]cron_daily[/h2]
+
+Called when cron task (include/poller.php) performs a cron_daily operation. The hook data is a string representing the current time (UTC).
diff --git a/doc/en/hook/cron_weekly.bb b/doc/en/hook/cron_weekly.bb
new file mode 100644
index 000000000..c01bf9611
--- /dev/null
+++ b/doc/en/hook/cron_weekly.bb
@@ -0,0 +1,3 @@
+[h2]cron_weekly[/h2]
+
+Called when cron task (include/poller.php) performs a cron_weekly operation. The hook data is a string representing the current time (UTC).
diff --git a/doc/en/hook/crypto_methods.bb b/doc/en/hook/crypto_methods.bb
new file mode 100644
index 000000000..1b16f567d
--- /dev/null
+++ b/doc/en/hook/crypto_methods.bb
@@ -0,0 +1,5 @@
+[h2]crypto_mthods[/h2]
+
+Passed an array of crypto methods in local priority order.
+
+You may change the order and add new methods or disable existing methods. 'aes256cbc' is always supported as a fallback and currently removing this has no effect. \ No newline at end of file
diff --git a/doc/en/hook/daemon_addon.bb b/doc/en/hook/daemon_addon.bb
new file mode 100644
index 000000000..b60b25748
--- /dev/null
+++ b/doc/en/hook/daemon_addon.bb
@@ -0,0 +1,15 @@
+[h2]daemon_addon[/h2]
+
+
+A foreground plugin can create a background process by invoking:
+
+[code]
+\Zotlabs\Daemon\Master::Summon([ 'Addon', 'myplugin', 'something' ]);
+[/code]
+
+This starts up a background process (called 'Addon') specifically for addons to use.
+
+Then if your plugin is also catching the daemon_addon hook that handler will be called with the
+argv array of the background process. In this case [ 'myplugin', 'something' ];
+
+We recommend using this convention so that plugins can share this hook without causing conflicts; that is check to see if your plugin is the first array argument and if not, return from the hook. Otherwise you can initiate background processing. Something to remember is that during background processes there is no session. You are detached from the web page which created the background process. \ No newline at end of file
diff --git a/doc/en/hook/daemon_master_release.bb b/doc/en/hook/daemon_master_release.bb
new file mode 100644
index 000000000..a17216d48
--- /dev/null
+++ b/doc/en/hook/daemon_master_release.bb
@@ -0,0 +1,5 @@
+[h2]daemon_master_release[/h2]
+
+Permit filtering or alternate methods of processing of background processes when [code] \Zotlabs\Daemon\Master::Release() [/code] is called.
+
+Default behavior is for a new PHP process to fire immediately upon a call to Master::Summon(). This hook permits pre-emption and the ability to provide queuing or other alternatives to this procedure.
diff --git a/doc/en/hook/directory_item.bb b/doc/en/hook/directory_item.bb
new file mode 100644
index 000000000..cb710e0b4
--- /dev/null
+++ b/doc/en/hook/directory_item.bb
@@ -0,0 +1 @@
+[h2]directory_item[/h2]
diff --git a/doc/en/hook/discover_channel_webfinger.bb b/doc/en/hook/discover_channel_webfinger.bb
new file mode 100644
index 000000000..b0eb5f2c4
--- /dev/null
+++ b/doc/en/hook/discover_channel_webfinger.bb
@@ -0,0 +1,14 @@
+[h2]discover_channel_webfinger[/h2]
+
+Called after performing channel discovery using RFC7033 webfinger and where the channel is not recognised as zot.
+
+Passed an array:
+
+ address: URL or address that is being discovered
+ success: set to true if the plugin discovers something
+ webfinger: array of webfinger links (output of webfinger_rfc7033())
+
+
+ if your plugin indicates success you are expected to generate and populate an xchan (and hubloc) record prior to returning.
+
+ \ No newline at end of file
diff --git a/doc/en/hook/display_item.bb b/doc/en/hook/display_item.bb
new file mode 100644
index 000000000..a6bfd621d
--- /dev/null
+++ b/doc/en/hook/display_item.bb
@@ -0,0 +1 @@
+[h2]display_item[/h2]
diff --git a/doc/en/hook/display_settings.bb b/doc/en/hook/display_settings.bb
new file mode 100644
index 000000000..1f1e0b491
--- /dev/null
+++ b/doc/en/hook/display_settings.bb
@@ -0,0 +1 @@
+[h2]display_settings[/h2]
diff --git a/doc/en/hook/display_settings_post.bb b/doc/en/hook/display_settings_post.bb
new file mode 100644
index 000000000..d3bb39359
--- /dev/null
+++ b/doc/en/hook/display_settings_post.bb
@@ -0,0 +1 @@
+[h2]display_settings_post[/h2]
diff --git a/doc/en/hook/donate_contributors.bb b/doc/en/hook/donate_contributors.bb
new file mode 100644
index 000000000..f97c77efa
--- /dev/null
+++ b/doc/en/hook/donate_contributors.bb
@@ -0,0 +1 @@
+[h2]donate_contributors[/h2]
diff --git a/doc/en/hook/donate_plugin.bb b/doc/en/hook/donate_plugin.bb
new file mode 100644
index 000000000..db4a6f113
--- /dev/null
+++ b/doc/en/hook/donate_plugin.bb
@@ -0,0 +1 @@
+[h2]donate_plugin[/h2]
diff --git a/doc/en/hook/donate_sponsors.bb b/doc/en/hook/donate_sponsors.bb
new file mode 100644
index 000000000..3abd46d42
--- /dev/null
+++ b/doc/en/hook/donate_sponsors.bb
@@ -0,0 +1 @@
+[h2]donate_sponsors[/h2]
diff --git a/doc/en/hook/dreport_is_storable.bb b/doc/en/hook/dreport_is_storable.bb
new file mode 100644
index 000000000..9ca99b896
--- /dev/null
+++ b/doc/en/hook/dreport_is_storable.bb
@@ -0,0 +1 @@
+[h2]dreport_is_storable[/h2]
diff --git a/doc/en/hook/dreport_process.bb b/doc/en/hook/dreport_process.bb
new file mode 100644
index 000000000..3ad331f41
--- /dev/null
+++ b/doc/en/hook/dreport_process.bb
@@ -0,0 +1,7 @@
+[h2]dreport_process[/h2]
+
+Called for each delivery report received
+
+Passed a delivery_report array.
+
+see: include/zot.php
diff --git a/doc/en/hook/drop_item.bb b/doc/en/hook/drop_item.bb
new file mode 100644
index 000000000..35bb80f82
--- /dev/null
+++ b/doc/en/hook/drop_item.bb
@@ -0,0 +1 @@
+[h2]drop_item[/h2]
diff --git a/doc/en/hook/dropdown_extras.bb b/doc/en/hook/dropdown_extras.bb
new file mode 100644
index 000000000..6d7110a76
--- /dev/null
+++ b/doc/en/hook/dropdown_extras.bb
@@ -0,0 +1,17 @@
+[h2]dropdown_extras[/h2]
+
+Modify the dropdown menu available through the cog of items as displayed by conv_item.tpl
+
+This hook allows plugins to add arbitrary html to the cog dropdown of thread items displayed with the conv_item.tpl template.
+
+It is fed an array of ['item' => $item, 'dropdown_extras' => '']. Any additions to the cog menu should be prepended/appended to
+the ['dropdown_extras'] element.
+
+[code]
+$dropdown_extras_arr = [ 'item' => $item , 'dropdown_extras' => '' ];
+call_hooks('dropdown_extras',$dropdown_extras_arr);
+$dropdown_extras = $dropdown_extras_arr['dropdown_extras'];
+[/code]
+
+see: Zotlabs/Lib/ThreadItem.php
+see: view/tpl/conv_item.tpl
diff --git a/doc/en/hook/encode_object.bb b/doc/en/hook/encode_object.bb
new file mode 100644
index 000000000..0c8e86458
--- /dev/null
+++ b/doc/en/hook/encode_object.bb
@@ -0,0 +1 @@
+[h2]encode_object[/h2]
diff --git a/doc/en/hook/enotify.bb b/doc/en/hook/enotify.bb
new file mode 100644
index 000000000..703a3ffa0
--- /dev/null
+++ b/doc/en/hook/enotify.bb
@@ -0,0 +1 @@
+[h2]enotify[/h2]
diff --git a/doc/en/hook/enotify_mail.bb b/doc/en/hook/enotify_mail.bb
new file mode 100644
index 000000000..adeb8bd30
--- /dev/null
+++ b/doc/en/hook/enotify_mail.bb
@@ -0,0 +1 @@
+[h2]enotify_mail[/h2]
diff --git a/doc/en/hook/enotify_store.bb b/doc/en/hook/enotify_store.bb
new file mode 100644
index 000000000..dc44cc320
--- /dev/null
+++ b/doc/en/hook/enotify_store.bb
@@ -0,0 +1 @@
+[h2]enotify_store[/h2]
diff --git a/doc/en/hook/event_created.bb b/doc/en/hook/event_created.bb
new file mode 100644
index 000000000..222602e77
--- /dev/null
+++ b/doc/en/hook/event_created.bb
@@ -0,0 +1 @@
+[h2]event_created[/h2]
diff --git a/doc/en/hook/event_store_event.bb b/doc/en/hook/event_store_event.bb
new file mode 100644
index 000000000..7015a8322
--- /dev/null
+++ b/doc/en/hook/event_store_event.bb
@@ -0,0 +1,11 @@
+[h2]event_store_event[/h2]
+
+Called from event_store_event() when an event record is being stored.
+
+Hook info is an array
+
+'event' => the passed event details, ready for storage
+'existing_event' => If the event already exists, a copy of the original event record from the database
+'cancel' => false - set to true to cancel the operation.
+
+
diff --git a/doc/en/hook/event_updated.bb b/doc/en/hook/event_updated.bb
new file mode 100644
index 000000000..69e3c72c1
--- /dev/null
+++ b/doc/en/hook/event_updated.bb
@@ -0,0 +1 @@
+[h2]event_updated[/h2]
diff --git a/doc/en/hook/externals_url_select.bb b/doc/en/hook/externals_url_select.bb
new file mode 100644
index 000000000..a542dcb29
--- /dev/null
+++ b/doc/en/hook/externals_url_select.bb
@@ -0,0 +1 @@
+[h2]externals_url_select[/h2]
diff --git a/doc/en/hook/feature_enabled.bb b/doc/en/hook/feature_enabled.bb
new file mode 100644
index 000000000..5630cc768
--- /dev/null
+++ b/doc/en/hook/feature_enabled.bb
@@ -0,0 +1 @@
+[h2]feature_enabled[/h2]
diff --git a/doc/en/hook/feature_settings.bb b/doc/en/hook/feature_settings.bb
new file mode 100644
index 000000000..d1691eb38
--- /dev/null
+++ b/doc/en/hook/feature_settings.bb
@@ -0,0 +1 @@
+[h2]feature_settings[/h2]
diff --git a/doc/en/hook/feature_settings_post.bb b/doc/en/hook/feature_settings_post.bb
new file mode 100644
index 000000000..eecf941ff
--- /dev/null
+++ b/doc/en/hook/feature_settings_post.bb
@@ -0,0 +1 @@
+[h2]feature_settings_post[/h2]
diff --git a/doc/en/hook/fetch_and_store.bb b/doc/en/hook/fetch_and_store.bb
new file mode 100644
index 000000000..afece11a6
--- /dev/null
+++ b/doc/en/hook/fetch_and_store.bb
@@ -0,0 +1 @@
+[h2]fetch_and_store[/h2]
diff --git a/doc/en/hook/follow.bb b/doc/en/hook/follow.bb
new file mode 100644
index 000000000..a97632b06
--- /dev/null
+++ b/doc/en/hook/follow.bb
@@ -0,0 +1 @@
+[h2]follow[/h2]
diff --git a/doc/en/hook/follow_allow.bb b/doc/en/hook/follow_allow.bb
new file mode 100644
index 000000000..fdab1865c
--- /dev/null
+++ b/doc/en/hook/follow_allow.bb
@@ -0,0 +1 @@
+[h2]follow_allow[/h2]
diff --git a/doc/en/hook/gender_selector.bb b/doc/en/hook/gender_selector.bb
new file mode 100644
index 000000000..0b56b5c9b
--- /dev/null
+++ b/doc/en/hook/gender_selector.bb
@@ -0,0 +1 @@
+[h2]gender_selector[/h2]
diff --git a/doc/en/hook/gender_selector_min.bb b/doc/en/hook/gender_selector_min.bb
new file mode 100644
index 000000000..9d143855a
--- /dev/null
+++ b/doc/en/hook/gender_selector_min.bb
@@ -0,0 +1 @@
+[h2]gender_selector_min[/h2]
diff --git a/doc/en/hook/generate_map.bb b/doc/en/hook/generate_map.bb
new file mode 100644
index 000000000..33672d552
--- /dev/null
+++ b/doc/en/hook/generate_map.bb
@@ -0,0 +1 @@
+[h2]generate_map[/h2]
diff --git a/doc/en/hook/generate_named_map.bb b/doc/en/hook/generate_named_map.bb
new file mode 100644
index 000000000..5bacb846d
--- /dev/null
+++ b/doc/en/hook/generate_named_map.bb
@@ -0,0 +1 @@
+[h2]generate_named_map[/h2]
diff --git a/doc/en/hook/get_all_api_perms.bb b/doc/en/hook/get_all_api_perms.bb
new file mode 100644
index 000000000..eb41f8a02
--- /dev/null
+++ b/doc/en/hook/get_all_api_perms.bb
@@ -0,0 +1 @@
+[h2]get_all_api_perms[/h2]
diff --git a/doc/en/hook/get_all_perms.bb b/doc/en/hook/get_all_perms.bb
new file mode 100644
index 000000000..149f8c78c
--- /dev/null
+++ b/doc/en/hook/get_all_perms.bb
@@ -0,0 +1 @@
+[h2]get_all_perms[/h2]
diff --git a/doc/en/hook/get_default_export_sections b/doc/en/hook/get_default_export_sections
new file mode 100644
index 000000000..09b146643
--- /dev/null
+++ b/doc/en/hook/get_default_export_sections
@@ -0,0 +1,10 @@
+[h3]get_default_export_sections[/h3]
+
+The get_default_export_sections call returns the basic functional groups of data to export using channel_export_basic().
+
+The hook is passed an array
+ [
+ 'sections' => [ 'channel', 'connections', 'config', 'apps', 'chatrooms', 'events', 'webpages', 'mail', 'wikis' ]
+ ]
+
+If you desire the export to contain three months of items, add 'items' to the 'sections' array
diff --git a/doc/en/hook/get_features.bb b/doc/en/hook/get_features.bb
new file mode 100644
index 000000000..66e81f13c
--- /dev/null
+++ b/doc/en/hook/get_features.bb
@@ -0,0 +1 @@
+[h2]get_features[/h2]
diff --git a/doc/en/hook/get_photo.bb b/doc/en/hook/get_photo.bb
new file mode 100644
index 000000000..eaf3beffb
--- /dev/null
+++ b/doc/en/hook/get_photo.bb
@@ -0,0 +1,14 @@
+[h2]get_photo[/h2]
+
+Called when fetching the content of photos (except for profile photos) in mod_photo.
+
+
+Hook arguments:
+
+'imgscale' => integer resolution requested
+'resource_id' => resource_id of requested photo
+'photo' => array of matching photo table rows after querying for the photo
+'allowed' => whether or not access to this resource is allowed
+
+
+
diff --git a/doc/en/hook/get_profile_photo.bb b/doc/en/hook/get_profile_photo.bb
new file mode 100644
index 000000000..ab07179ae
--- /dev/null
+++ b/doc/en/hook/get_profile_photo.bb
@@ -0,0 +1,18 @@
+[h2]get_profile_photo[/h2]
+
+Called when fetching the content of the default profile photo for a local channel in mod_photo.
+
+
+Hook arguments:
+
+'imgscale' => integer resolution requested (4, 5, or 6)
+'channel_id' => channel_id of requested profile photo
+'default' => filename of default profile photo of this imgscale
+'data' => empty string
+'mimetype' => empty string
+
+
+If 'data' is set, this data will be used instead of the data obtained from the database search for the profile photo.
+If 'mimetype' is set, this mimetype will be used instead of the mimetype obtained from the database or the default profile photo mimetype.
+
+
diff --git a/doc/en/hook/get_role_perms.bb b/doc/en/hook/get_role_perms.bb
new file mode 100644
index 000000000..87830f8e3
--- /dev/null
+++ b/doc/en/hook/get_role_perms.bb
@@ -0,0 +1 @@
+[h2]get_role_perms[/h2]
diff --git a/doc/en/hook/global_permissions.bb b/doc/en/hook/global_permissions.bb
new file mode 100644
index 000000000..fe998ee9c
--- /dev/null
+++ b/doc/en/hook/global_permissions.bb
@@ -0,0 +1 @@
+[h2]global_permissions[/h2]
diff --git a/doc/en/hook/home_content.bb b/doc/en/hook/home_content.bb
new file mode 100644
index 000000000..7f32b3547
--- /dev/null
+++ b/doc/en/hook/home_content.bb
@@ -0,0 +1 @@
+[h2]home_content[/h2]
diff --git a/doc/en/hook/home_init.bb b/doc/en/hook/home_init.bb
new file mode 100644
index 000000000..25dd72792
--- /dev/null
+++ b/doc/en/hook/home_init.bb
@@ -0,0 +1 @@
+[h2]home_init[/h2]
diff --git a/doc/en/hook/hostxrd.bb b/doc/en/hook/hostxrd.bb
new file mode 100644
index 000000000..2b67320cf
--- /dev/null
+++ b/doc/en/hook/hostxrd.bb
@@ -0,0 +1 @@
+[h2]hostxrd[/h2]
diff --git a/doc/en/hook/html2bbcode.bb b/doc/en/hook/html2bbcode.bb
new file mode 100644
index 000000000..3061f05f0
--- /dev/null
+++ b/doc/en/hook/html2bbcode.bb
@@ -0,0 +1 @@
+[h2]html2bbcode[/h2]
diff --git a/doc/en/hook/identity_basic_export.bb b/doc/en/hook/identity_basic_export.bb
new file mode 100644
index 000000000..71329ba1e
--- /dev/null
+++ b/doc/en/hook/identity_basic_export.bb
@@ -0,0 +1,10 @@
+[h2]identity_basic_export[/h2]
+
+Called when exporting data for a channel
+Passed array contains
+
+ [
+ 'channel_id' => channel_id being exported
+ 'sections' => array of functional export sections which are being exported
+ 'data' => the export data array which has been generated
+ ]
diff --git a/doc/en/hook/import_author_xchan.bb b/doc/en/hook/import_author_xchan.bb
new file mode 100644
index 000000000..e2340469d
--- /dev/null
+++ b/doc/en/hook/import_author_xchan.bb
@@ -0,0 +1 @@
+[h2]import_author_xchan[/h2]
diff --git a/doc/en/hook/import_channel.bb b/doc/en/hook/import_channel.bb
new file mode 100644
index 000000000..b220b7415
--- /dev/null
+++ b/doc/en/hook/import_channel.bb
@@ -0,0 +1 @@
+[h2]import_channel[/h2]
diff --git a/doc/en/hook/import_directory_profile.bb b/doc/en/hook/import_directory_profile.bb
new file mode 100644
index 000000000..e2fac59bc
--- /dev/null
+++ b/doc/en/hook/import_directory_profile.bb
@@ -0,0 +1 @@
+[h2]import_directory_profile[/h2]
diff --git a/doc/en/hook/import_xchan.bb b/doc/en/hook/import_xchan.bb
new file mode 100644
index 000000000..40e0783ce
--- /dev/null
+++ b/doc/en/hook/import_xchan.bb
@@ -0,0 +1 @@
+[h2]import_xchan[/h2]
diff --git a/doc/en/hook/item_custom.bb b/doc/en/hook/item_custom.bb
new file mode 100644
index 000000000..d20c7d76c
--- /dev/null
+++ b/doc/en/hook/item_custom.bb
@@ -0,0 +1,24 @@
+[h2]item_custom[/h2]
+
+Allow addons to create and process custom item types.
+
+Addon authors will need to use iconfig meta data (with sharing on) or some other method
+to specify and determine whether the custom item is destined for their addon.
+
+It is fed an array of ['item' => ${item_array}, 'allow_exec' => {true/false}]
+
+By default $arr['item']['cancel'] is set to TRUE which will abort storage of the
+custom item in the item table unless the addon unsets it or sets it to false.
+
+[code]
+ if ($arr['item_type']==ITEM_TYPE_CUSTOM) {
+ /* Custom items are not stored by default
+ because they require an addon to process. */
+ $d['item']['cancel']=true;
+
+ call_hooks('item_custom',$d);
+ }
+
+[/code]
+
+see: include/items.php
diff --git a/doc/en/hook/item_photo_menu.bb b/doc/en/hook/item_photo_menu.bb
new file mode 100644
index 000000000..8f9860a90
--- /dev/null
+++ b/doc/en/hook/item_photo_menu.bb
@@ -0,0 +1 @@
+[h2]item_photo_menu[/h2]
diff --git a/doc/en/hook/item_store.bb b/doc/en/hook/item_store.bb
new file mode 100644
index 000000000..5d49b725c
--- /dev/null
+++ b/doc/en/hook/item_store.bb
@@ -0,0 +1 @@
+[h2]item_store[/h2]
diff --git a/doc/en/hook/item_store_update.bb b/doc/en/hook/item_store_update.bb
new file mode 100644
index 000000000..a7c58939a
--- /dev/null
+++ b/doc/en/hook/item_store_update.bb
@@ -0,0 +1 @@
+[h2]item_store_update[/h2]
diff --git a/doc/en/hook/item_stored.bb b/doc/en/hook/item_stored.bb
new file mode 100644
index 000000000..8d706cb4e
--- /dev/null
+++ b/doc/en/hook/item_stored.bb
@@ -0,0 +1,18 @@
+[h2]item_stored[/h2]
+
+Allow addons to continue processing after an item has been stored in the event
+that they need access to the item_id or other data that gets assigned during
+the storage process.
+
+It is fed an array of type item (including terms and iconfig data).
+
+[code]
+ /**
+ * @hooks item_stored
+ * Called after new item is stored in the database.
+ * (By this time we have an item_id and other frequently needed info.)
+ */
+ call_hooks('item_stored',$arr);
+[/code]
+
+see: include/items.php
diff --git a/doc/en/hook/item_stored_update.bb b/doc/en/hook/item_stored_update.bb
new file mode 100644
index 000000000..4532a347c
--- /dev/null
+++ b/doc/en/hook/item_stored_update.bb
@@ -0,0 +1,15 @@
+[h2]item_stored_update[/h2]
+
+Allow addons to continue processing after an item update has been stored
+
+It is fed an array of type item (including terms and iconfig data).
+
+[code]
+ /**
+ * @hooks item_stored_update
+ * Called after updated item is stored in the database.
+ */
+ call_hooks('item_stored_update',$arr);
+[/code]
+
+see: include/items.php
diff --git a/doc/en/hook/item_translate.bb b/doc/en/hook/item_translate.bb
new file mode 100644
index 000000000..695494b9c
--- /dev/null
+++ b/doc/en/hook/item_translate.bb
@@ -0,0 +1 @@
+[h2]item_translate[/h2]
diff --git a/doc/en/hook/jot_header_tpl_filter.bb b/doc/en/hook/jot_header_tpl_filter.bb
new file mode 100644
index 000000000..b17d81d03
--- /dev/null
+++ b/doc/en/hook/jot_header_tpl_filter.bb
@@ -0,0 +1,5 @@
+[h2]jot_header_tpl_filter[/h2]
+
+Allows addon developers to modify the values of replacements fed into jot-header.tpl
+
+cxref: include/conversation.php
diff --git a/doc/en/hook/jot_networks.bb b/doc/en/hook/jot_networks.bb
new file mode 100644
index 000000000..4c1629ba7
--- /dev/null
+++ b/doc/en/hook/jot_networks.bb
@@ -0,0 +1 @@
+[h2]jot_networks[/h2]
diff --git a/doc/en/hook/jot_tool.bb b/doc/en/hook/jot_tool.bb
new file mode 100644
index 000000000..22ba9701e
--- /dev/null
+++ b/doc/en/hook/jot_tool.bb
@@ -0,0 +1 @@
+[h2]jot_tool[/h2]
diff --git a/doc/en/hook/jot_tpl_filter.bb b/doc/en/hook/jot_tpl_filter.bb
new file mode 100644
index 000000000..426da3c56
--- /dev/null
+++ b/doc/en/hook/jot_tpl_filter.bb
@@ -0,0 +1,5 @@
+[h2]jot_tpl_filter[/h2]
+
+Allows addon developers to alter the macro replacements prior to being fed into jot.tpl
+
+cxref: include/conversation.php
diff --git a/doc/en/hook/legal_webbie.bb b/doc/en/hook/legal_webbie.bb
new file mode 100644
index 000000000..8c7d32d56
--- /dev/null
+++ b/doc/en/hook/legal_webbie.bb
@@ -0,0 +1,10 @@
+[h2]legal_webbie[/h2]
+
+Called when validating a channel address. By default the valid characters are
+a-z,0-9,-,_, and . Uppercase ASCII characters are folded to lower and any invalid characters are stripped.
+
+Some federated networks require more restrictive rules.
+
+The hook is called with an array [ 'input' => (supplied text), 'output' => (validated text) ]
+
+A plugin will generally perform a regex filter or text operation on 'input' and provide the results in 'output'. \ No newline at end of file
diff --git a/doc/en/hook/legal_webbie_text.bb b/doc/en/hook/legal_webbie_text.bb
new file mode 100644
index 000000000..32c74c93b
--- /dev/null
+++ b/doc/en/hook/legal_webbie_text.bb
@@ -0,0 +1,7 @@
+[h2]legal_webbie_text[/h2]
+
+Returns a string describing the text rules applied to legal_webbie().
+
+Called with an array [ 'text' => (descriptive text describing text character limitations) ]
+
+A plugin should return the description of the allowed characters and operation performed in the 'legal_webbie' hook to assist people when creating a new channel. \ No newline at end of file
diff --git a/doc/en/hook/load_pdl.bb b/doc/en/hook/load_pdl.bb
new file mode 100644
index 000000000..149a3e766
--- /dev/null
+++ b/doc/en/hook/load_pdl.bb
@@ -0,0 +1 @@
+[h2]load_pdl[/h2]
diff --git a/doc/en/hook/local_dir_update.bb b/doc/en/hook/local_dir_update.bb
new file mode 100644
index 000000000..d0b0f8ac1
--- /dev/null
+++ b/doc/en/hook/local_dir_update.bb
@@ -0,0 +1 @@
+[h2]local_dir_update[/h2]
diff --git a/doc/en/hook/logged_in.bb b/doc/en/hook/logged_in.bb
new file mode 100644
index 000000000..b01041576
--- /dev/null
+++ b/doc/en/hook/logged_in.bb
@@ -0,0 +1 @@
+[h2]logged_in[/h2]
diff --git a/doc/en/hook/logger.bb b/doc/en/hook/logger.bb
new file mode 100644
index 000000000..8fe989abd
--- /dev/null
+++ b/doc/en/hook/logger.bb
@@ -0,0 +1,16 @@
+[h2]logger[/h2]
+
+Called when making an entry to the application logfile
+
+Hook data:
+
+ array(
+ 'filename' => name of logfile relative to application basedir. String.
+ 'loglevel' => the log level of this log entry, if this is higher than the configured maximum loglevel
+ this hook will not be called. Integer.
+ 'message' => The formatted log message, ready for logging. String.
+ 'logged' => boolean, default is false. Set to true to prevent the normal logfile entry to be made
+ (e.g. if the plugin is configured to handle this aspect of the function, or if it is determined
+ that this log entry should not be made)
+ )
+
diff --git a/doc/en/hook/logging_out.bb b/doc/en/hook/logging_out.bb
new file mode 100644
index 000000000..d47b9f1df
--- /dev/null
+++ b/doc/en/hook/logging_out.bb
@@ -0,0 +1 @@
+[h2]logging_out[/h2]
diff --git a/doc/en/hook/login_hook.bb b/doc/en/hook/login_hook.bb
new file mode 100644
index 000000000..156a0afcd
--- /dev/null
+++ b/doc/en/hook/login_hook.bb
@@ -0,0 +1 @@
+[h2]login_hook[/h2]
diff --git a/doc/en/hook/magic_auth.bb b/doc/en/hook/magic_auth.bb
new file mode 100644
index 000000000..80d6edb27
--- /dev/null
+++ b/doc/en/hook/magic_auth.bb
@@ -0,0 +1 @@
+[h2]magic_auth[/h2]
diff --git a/doc/en/hook/magic_auth_openid_success.bb b/doc/en/hook/magic_auth_openid_success.bb
new file mode 100644
index 000000000..810f2e06d
--- /dev/null
+++ b/doc/en/hook/magic_auth_openid_success.bb
@@ -0,0 +1 @@
+[h2]magic_auth_openid_success[/h2]
diff --git a/doc/en/hook/magic_auth_success.bb b/doc/en/hook/magic_auth_success.bb
new file mode 100644
index 000000000..d795e43e5
--- /dev/null
+++ b/doc/en/hook/magic_auth_success.bb
@@ -0,0 +1 @@
+[h2]magic_auth_success[/h2]
diff --git a/doc/en/hook/main_slider.bb b/doc/en/hook/main_slider.bb
new file mode 100644
index 000000000..a63c2170a
--- /dev/null
+++ b/doc/en/hook/main_slider.bb
@@ -0,0 +1 @@
+[h2]main_slider[/h2]
diff --git a/doc/en/hook/marital_selector.bb b/doc/en/hook/marital_selector.bb
new file mode 100644
index 000000000..0f76c3f5a
--- /dev/null
+++ b/doc/en/hook/marital_selector.bb
@@ -0,0 +1 @@
+[h2]marital_selector[/h2]
diff --git a/doc/en/hook/marital_selector_min.bb b/doc/en/hook/marital_selector_min.bb
new file mode 100644
index 000000000..f02d21f20
--- /dev/null
+++ b/doc/en/hook/marital_selector_min.bb
@@ -0,0 +1 @@
+[h2]marital_selector_min[/h2]
diff --git a/doc/en/hook/markdown_to_bb.bb b/doc/en/hook/markdown_to_bb.bb
new file mode 100644
index 000000000..8af637c8c
--- /dev/null
+++ b/doc/en/hook/markdown_to_bb.bb
@@ -0,0 +1,5 @@
+[h2]markdown_to_bb[/h2]
+
+Called when processing markdown to bbcode conversion such as when importing Diaspora protocol source or other markdown sources. The plugin is called post conversion.
+
+The function takes one argument which is the string being converted. It may be additionally processed by the plugin.
diff --git a/doc/en/hook/module_loaded.bb b/doc/en/hook/module_loaded.bb
new file mode 100644
index 000000000..cb0d2302d
--- /dev/null
+++ b/doc/en/hook/module_loaded.bb
@@ -0,0 +1 @@
+[h2]module_loaded[/h2]
diff --git a/doc/en/hook/module_mod_aftercontent.bb b/doc/en/hook/module_mod_aftercontent.bb
new file mode 100644
index 000000000..04e3c8d88
--- /dev/null
+++ b/doc/en/hook/module_mod_aftercontent.bb
@@ -0,0 +1,12 @@
+[h2]module_mod_aftercontent[/h2]
+
+
+
+The hook data for this call consists of an array
+
+ $arr['content']
+
+This element contains the HTML content which was prepared for this page by calling the module_content() function. It is invoked after the content has been created. It does not contain the result of AJAX or asynchronous page load calls.
+
+ The current module may be determined by lookin at App::$module
+
diff --git a/doc/en/hook/module_mod_content.bb b/doc/en/hook/module_mod_content.bb
new file mode 100644
index 000000000..eef5b7ba5
--- /dev/null
+++ b/doc/en/hook/module_mod_content.bb
@@ -0,0 +1,10 @@
+[h2]module_mod_content[/h2]
+
+The hook data for this call consists of an array
+
+ $arr['content']
+
+This element contains the HTML content before calling the module_content() function. It is invoked before the content region has been populated. This may or may not be empty as there may be other processes or addons generating content prior to your hook handler is run. Be certain to preserve any current content. Typically anything you add here will be placed at the top of the content region of the page, but in any event prior to the main content region being generated.
+
+ The current module may be determined by lookin at App::$module
+
diff --git a/doc/en/hook/module_mod_init.bb b/doc/en/hook/module_mod_init.bb
new file mode 100644
index 000000000..52fe5a616
--- /dev/null
+++ b/doc/en/hook/module_mod_init.bb
@@ -0,0 +1 @@
+[h2]module_mod_init[/h2]
diff --git a/doc/en/hook/module_mod_post.bb b/doc/en/hook/module_mod_post.bb
new file mode 100644
index 000000000..3adb0e737
--- /dev/null
+++ b/doc/en/hook/module_mod_post.bb
@@ -0,0 +1 @@
+[h2]module_mod_post[/h2]
diff --git a/doc/en/hook/mood_verbs.bb b/doc/en/hook/mood_verbs.bb
new file mode 100644
index 000000000..67fb719dd
--- /dev/null
+++ b/doc/en/hook/mood_verbs.bb
@@ -0,0 +1 @@
+[h2]mood_verbs[/h2]
diff --git a/doc/en/hook/nav.bb b/doc/en/hook/nav.bb
new file mode 100644
index 000000000..b52f90602
--- /dev/null
+++ b/doc/en/hook/nav.bb
@@ -0,0 +1,28 @@
+[h2]nav[/h2]
+
+Called when generating the main navigation bar and menu for a page
+
+Hook data:
+
+ array(
+ 'usermenu' => array( 'icon' => photo URL, 'name' => channel name )
+ 'nav' => array(
+ 'usermenu' => usermenu (photo menu) link array
+ (channel home, profiles, photos, cloud, chats, webapges ...)
+ 'loginmenu' => login menu link array
+ 'network' => grid link and grid-notify
+ 'home' => home link and home-notify
+ 'intros' => intros link and intros-notify
+ 'notifications' => notifications link and notifications-notify
+ 'messages' => PM link and PM-notify
+ 'all_events' => events link and events notfiy
+ 'manage' => manage channels link
+ 'settings' => settings link
+ 'register' => registration link
+ 'help' => help/doc link
+ 'apps' => apps link
+ 'search' => search link and form
+ 'directory' => directory link
+ )
+
+
diff --git a/doc/en/hook/network_content_init.bb b/doc/en/hook/network_content_init.bb
new file mode 100644
index 000000000..224da393a
--- /dev/null
+++ b/doc/en/hook/network_content_init.bb
@@ -0,0 +1 @@
+[h2]network_content_init[/h2]
diff --git a/doc/en/hook/network_ping.bb b/doc/en/hook/network_ping.bb
new file mode 100644
index 000000000..78deefe78
--- /dev/null
+++ b/doc/en/hook/network_ping.bb
@@ -0,0 +1 @@
+[h2]network_ping[/h2]
diff --git a/doc/en/hook/network_to_name.bb b/doc/en/hook/network_to_name.bb
new file mode 100644
index 000000000..eea4a1841
--- /dev/null
+++ b/doc/en/hook/network_to_name.bb
@@ -0,0 +1 @@
+[h2]network_to_name[/h2]
diff --git a/doc/en/hook/notifier_end.bb b/doc/en/hook/notifier_end.bb
new file mode 100644
index 000000000..df9d852bd
--- /dev/null
+++ b/doc/en/hook/notifier_end.bb
@@ -0,0 +1 @@
+[h2]notifier_end[/h2]
diff --git a/doc/en/hook/notifier_hub.bb b/doc/en/hook/notifier_hub.bb
new file mode 100644
index 000000000..4255ce446
--- /dev/null
+++ b/doc/en/hook/notifier_hub.bb
@@ -0,0 +1 @@
+[h2]notifier_hub[/h2]
diff --git a/doc/en/hook/notifier_normal.bb b/doc/en/hook/notifier_normal.bb
new file mode 100644
index 000000000..0059baa47
--- /dev/null
+++ b/doc/en/hook/notifier_normal.bb
@@ -0,0 +1 @@
+[h2]notifier_normal[/h2]
diff --git a/doc/en/hook/obj_verbs.bb b/doc/en/hook/obj_verbs.bb
new file mode 100644
index 000000000..ca98229aa
--- /dev/null
+++ b/doc/en/hook/obj_verbs.bb
@@ -0,0 +1 @@
+[h2]obj_verbs[/h2]
diff --git a/doc/en/hook/oembed_probe.bb b/doc/en/hook/oembed_probe.bb
new file mode 100644
index 000000000..4f32ac267
--- /dev/null
+++ b/doc/en/hook/oembed_probe.bb
@@ -0,0 +1 @@
+[h2]oembed_probe[/h2]
diff --git a/doc/en/hook/other_encapsulate.bb b/doc/en/hook/other_encapsulate.bb
new file mode 100644
index 000000000..ea0cdf622
--- /dev/null
+++ b/doc/en/hook/other_encapsulate.bb
@@ -0,0 +1,7 @@
+[h2]other_encapsulate[/h2]
+
+Passed an array of 'data', 'pubkey', 'alg', 'result' when encrypting data with an algorithm (alg) which is unknown to the system. Hooks are expected to identify their algorithm, encrypt data with pubkey and place the result in 'result'.
+
+
+
+
diff --git a/doc/en/hook/other_unencapsulate.bb b/doc/en/hook/other_unencapsulate.bb
new file mode 100644
index 000000000..c8b0b617f
--- /dev/null
+++ b/doc/en/hook/other_unencapsulate.bb
@@ -0,0 +1,5 @@
+[h2]other_unencapsulate[/h2]
+
+Passed an array of 'data', 'prvkey', 'alg', 'result' when decrypting data with an algorithm (alg) which is unknown to the system. Hooks are expected to identify their algorithm, decrypt data with prvkey and place the result in 'result'.
+
+
diff --git a/doc/en/hook/page_content_top.bb b/doc/en/hook/page_content_top.bb
new file mode 100644
index 000000000..137e3abfd
--- /dev/null
+++ b/doc/en/hook/page_content_top.bb
@@ -0,0 +1 @@
+[h2]page_content_top[/h2]
diff --git a/doc/en/hook/page_end.bb b/doc/en/hook/page_end.bb
new file mode 100644
index 000000000..09293cf50
--- /dev/null
+++ b/doc/en/hook/page_end.bb
@@ -0,0 +1 @@
+[h2]page_end[/h2]
diff --git a/doc/en/hook/page_header.bb b/doc/en/hook/page_header.bb
new file mode 100644
index 000000000..ffaa791c9
--- /dev/null
+++ b/doc/en/hook/page_header.bb
@@ -0,0 +1 @@
+[h2]page_header[/h2]
diff --git a/doc/en/hook/page_meta.bb b/doc/en/hook/page_meta.bb
new file mode 100644
index 000000000..30a8f9440
--- /dev/null
+++ b/doc/en/hook/page_meta.bb
@@ -0,0 +1,13 @@
+[h2]page_meta[/h2]
+
+Called before generating the page header.
+
+[code]
+ $pagemeta = [ 'og:title' => self::$page['title'] ];
+
+ call_hooks('page_meta',$pagemeta);
+ foreach ($pagemeta as $metaproperty => $metavalue) {
+ self::$meta->set($metaproperty,$metavalue);
+ }
+
+[/code]
diff --git a/doc/en/hook/parse_atom.bb b/doc/en/hook/parse_atom.bb
new file mode 100644
index 000000000..c8037317f
--- /dev/null
+++ b/doc/en/hook/parse_atom.bb
@@ -0,0 +1 @@
+[h2]parse_atom[/h2]
diff --git a/doc/en/hook/parse_link.bb b/doc/en/hook/parse_link.bb
new file mode 100644
index 000000000..1c328059c
--- /dev/null
+++ b/doc/en/hook/parse_link.bb
@@ -0,0 +1 @@
+[h2]parse_link[/h2]
diff --git a/doc/en/hook/pdl_selector.bb b/doc/en/hook/pdl_selector.bb
new file mode 100644
index 000000000..bee01c843
--- /dev/null
+++ b/doc/en/hook/pdl_selector.bb
@@ -0,0 +1 @@
+[h2]pdl_selector[/h2]
diff --git a/doc/en/hook/perm_is_allowed.bb b/doc/en/hook/perm_is_allowed.bb
new file mode 100644
index 000000000..aac647609
--- /dev/null
+++ b/doc/en/hook/perm_is_allowed.bb
@@ -0,0 +1 @@
+[h2]perm_is_allowed[/h2]
diff --git a/doc/en/hook/permissions_create.bb b/doc/en/hook/permissions_create.bb
new file mode 100644
index 000000000..22f80a80e
--- /dev/null
+++ b/doc/en/hook/permissions_create.bb
@@ -0,0 +1 @@
+[h2]permissions_create[/h2]
diff --git a/doc/en/hook/permissions_update.bb b/doc/en/hook/permissions_update.bb
new file mode 100644
index 000000000..40366b33d
--- /dev/null
+++ b/doc/en/hook/permissions_update.bb
@@ -0,0 +1 @@
+[h2]permissions_update[/h2]
diff --git a/doc/en/hook/permit_hook.bb b/doc/en/hook/permit_hook.bb
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/doc/en/hook/permit_hook.bb
diff --git a/doc/en/hook/personal_xrd.bb b/doc/en/hook/personal_xrd.bb
new file mode 100644
index 000000000..71d4bd8dd
--- /dev/null
+++ b/doc/en/hook/personal_xrd.bb
@@ -0,0 +1 @@
+[h2]personal_xrd[/h2]
diff --git a/doc/en/hook/photo_post_end.bb b/doc/en/hook/photo_post_end.bb
new file mode 100644
index 000000000..8a3291763
--- /dev/null
+++ b/doc/en/hook/photo_post_end.bb
@@ -0,0 +1 @@
+[h2]photo_post_end[/h2]
diff --git a/doc/en/hook/photo_upload_begin.bb b/doc/en/hook/photo_upload_begin.bb
new file mode 100644
index 000000000..5e441a12a
--- /dev/null
+++ b/doc/en/hook/photo_upload_begin.bb
@@ -0,0 +1 @@
+[h2]photo_upload_begin[/h2]
diff --git a/doc/en/hook/photo_upload_end.bb b/doc/en/hook/photo_upload_end.bb
new file mode 100644
index 000000000..956175f1d
--- /dev/null
+++ b/doc/en/hook/photo_upload_end.bb
@@ -0,0 +1 @@
+[h2]photo_upload_end[/h2]
diff --git a/doc/en/hook/photo_upload_file.bb b/doc/en/hook/photo_upload_file.bb
new file mode 100644
index 000000000..726622ac0
--- /dev/null
+++ b/doc/en/hook/photo_upload_file.bb
@@ -0,0 +1 @@
+[h2]photo_upload_file[/h2]
diff --git a/doc/en/hook/photo_upload_form.bb b/doc/en/hook/photo_upload_form.bb
new file mode 100644
index 000000000..70b8318b8
--- /dev/null
+++ b/doc/en/hook/photo_upload_form.bb
@@ -0,0 +1 @@
+[h2]photo_upload_form[/h2]
diff --git a/doc/en/hook/photo_view_filter.bb b/doc/en/hook/photo_view_filter.bb
new file mode 100644
index 000000000..0780c1edc
--- /dev/null
+++ b/doc/en/hook/photo_view_filter.bb
@@ -0,0 +1 @@
+[h2]photo_view_filter[/h2]
diff --git a/doc/en/hook/poke_verbs.bb b/doc/en/hook/poke_verbs.bb
new file mode 100644
index 000000000..54d68c3a2
--- /dev/null
+++ b/doc/en/hook/poke_verbs.bb
@@ -0,0 +1 @@
+[h2]poke_verbs[/h2]
diff --git a/doc/en/hook/post_local.bb b/doc/en/hook/post_local.bb
new file mode 100644
index 000000000..5aa723cb9
--- /dev/null
+++ b/doc/en/hook/post_local.bb
@@ -0,0 +1 @@
+[h2]post_local[/h2]
diff --git a/doc/en/hook/post_local_end.bb b/doc/en/hook/post_local_end.bb
new file mode 100644
index 000000000..380166fdb
--- /dev/null
+++ b/doc/en/hook/post_local_end.bb
@@ -0,0 +1 @@
+[h2]post_local_end[/h2]
diff --git a/doc/en/hook/post_local_start.bb b/doc/en/hook/post_local_start.bb
new file mode 100644
index 000000000..2f684f67a
--- /dev/null
+++ b/doc/en/hook/post_local_start.bb
@@ -0,0 +1 @@
+[h2]post_local_start[/h2]
diff --git a/doc/en/hook/post_mail.bb b/doc/en/hook/post_mail.bb
new file mode 100644
index 000000000..8f67ad4f0
--- /dev/null
+++ b/doc/en/hook/post_mail.bb
@@ -0,0 +1 @@
+[h2]post_mail[/h2]
diff --git a/doc/en/hook/post_mail_end.bb b/doc/en/hook/post_mail_end.bb
new file mode 100644
index 000000000..7f0085773
--- /dev/null
+++ b/doc/en/hook/post_mail_end.bb
@@ -0,0 +1 @@
+[h2]post_mail_end[/h2]
diff --git a/doc/en/hook/post_remote.bb b/doc/en/hook/post_remote.bb
new file mode 100644
index 000000000..f8e087eee
--- /dev/null
+++ b/doc/en/hook/post_remote.bb
@@ -0,0 +1 @@
+[h2]post_remote[/h2]
diff --git a/doc/en/hook/post_remote_end.bb b/doc/en/hook/post_remote_end.bb
new file mode 100644
index 000000000..0fef20cbf
--- /dev/null
+++ b/doc/en/hook/post_remote_end.bb
@@ -0,0 +1 @@
+[h2]post_remote_end[/h2]
diff --git a/doc/en/hook/post_remote_update.bb b/doc/en/hook/post_remote_update.bb
new file mode 100644
index 000000000..fd358db28
--- /dev/null
+++ b/doc/en/hook/post_remote_update.bb
@@ -0,0 +1 @@
+[h2]post_remote_update[/h2]
diff --git a/doc/en/hook/post_remote_update_end.bb b/doc/en/hook/post_remote_update_end.bb
new file mode 100644
index 000000000..95f1e6f78
--- /dev/null
+++ b/doc/en/hook/post_remote_update_end.bb
@@ -0,0 +1 @@
+[h2]post_remote_update_end[/h2]
diff --git a/doc/en/hook/prepare_body.bb b/doc/en/hook/prepare_body.bb
new file mode 100644
index 000000000..3f1eaef85
--- /dev/null
+++ b/doc/en/hook/prepare_body.bb
@@ -0,0 +1 @@
+[h2]prepare_body[/h2]
diff --git a/doc/en/hook/prepare_body_final.bb b/doc/en/hook/prepare_body_final.bb
new file mode 100644
index 000000000..96d1ae389
--- /dev/null
+++ b/doc/en/hook/prepare_body_final.bb
@@ -0,0 +1 @@
+[h2]prepare_body_final[/h2]
diff --git a/doc/en/hook/prepare_body_init.bb b/doc/en/hook/prepare_body_init.bb
new file mode 100644
index 000000000..f3de79970
--- /dev/null
+++ b/doc/en/hook/prepare_body_init.bb
@@ -0,0 +1 @@
+[h2]prepare_body_init[/h2]
diff --git a/doc/en/hook/privacygroup_extras.bb b/doc/en/hook/privacygroup_extras.bb
new file mode 100644
index 000000000..bd67f2470
--- /dev/null
+++ b/doc/en/hook/privacygroup_extras.bb
@@ -0,0 +1,12 @@
+[h2]privacygroup_extras[/h2]
+
+Add items to the Privacy Group edit form
+
+[code]
+ $hookinfo = [ 'pgrp_extras' => '', 'group'=>$argv(1) ];
+ call_hooks ('privacygroup_extras',$hookinfo);
+ $pgrp_extras = $hookinfo['pgrp_extras'];
+[/code]
+
+see: Zotlabs/Module/Group.php
+see: view/tpl/privacy_groups.tpl
diff --git a/doc/en/hook/privacygroup_extras_drop.bb b/doc/en/hook/privacygroup_extras_drop.bb
new file mode 100644
index 000000000..fd27ab255
--- /dev/null
+++ b/doc/en/hook/privacygroup_extras_drop.bb
@@ -0,0 +1,11 @@
+[h2]privacygroup_extras_drop[/h2]
+
+Called after privacy group is dropped
+
+[code]
+ $hookinfo = [ 'pgrp_extras' => '', 'group'=>$argv(2) ];
+ call_hooks ('privacygroup_extras_drop',$hookinfo);
+[/code]
+
+see: Zotlabs/Module/Group.php
+see: view/tpl/privacy_groups.tpl
diff --git a/doc/en/hook/privacygroup_extras_post.bb b/doc/en/hook/privacygroup_extras_post.bb
new file mode 100644
index 000000000..704db1997
--- /dev/null
+++ b/doc/en/hook/privacygroup_extras_post.bb
@@ -0,0 +1,11 @@
+[h2]privacygroup_extras_post[/h2]
+
+Called as privacy group edit form is edited.
+
+[code]
+ $hookinfo = [ 'pgrp_extras' => '', 'group'=>$group['id'] ];
+ call_hooks ('privacygroup_extras_post',$hookinfo);
+[/code]
+
+see: Zotlabs/Module/Group.php
+see: view/tpl/privacy_groups.tpl
diff --git a/doc/en/hook/proc_run.bb b/doc/en/hook/proc_run.bb
new file mode 100644
index 000000000..a3759794a
--- /dev/null
+++ b/doc/en/hook/proc_run.bb
@@ -0,0 +1 @@
+[h2]proc_run[/h2]
diff --git a/doc/en/hook/process_channel_sync_delivery.bb b/doc/en/hook/process_channel_sync_delivery.bb
new file mode 100644
index 000000000..c0416c8cb
--- /dev/null
+++ b/doc/en/hook/process_channel_sync_delivery.bb
@@ -0,0 +1 @@
+[h2]process_channel_sync_delivery[/h2]
diff --git a/doc/en/hook/profile_advanced.bb b/doc/en/hook/profile_advanced.bb
new file mode 100644
index 000000000..65e56afd6
--- /dev/null
+++ b/doc/en/hook/profile_advanced.bb
@@ -0,0 +1 @@
+[h2]profile_advanced[/h2]
diff --git a/doc/en/hook/profile_edit.bb b/doc/en/hook/profile_edit.bb
new file mode 100644
index 000000000..e60663d4a
--- /dev/null
+++ b/doc/en/hook/profile_edit.bb
@@ -0,0 +1 @@
+[h2]profile_edit[/h2]
diff --git a/doc/en/hook/profile_photo_content_end.bb b/doc/en/hook/profile_photo_content_end.bb
new file mode 100644
index 000000000..518415c4d
--- /dev/null
+++ b/doc/en/hook/profile_photo_content_end.bb
@@ -0,0 +1 @@
+[h2]profile_photo_content_end[/h2]
diff --git a/doc/en/hook/profile_post.bb b/doc/en/hook/profile_post.bb
new file mode 100644
index 000000000..d22d8fbc7
--- /dev/null
+++ b/doc/en/hook/profile_post.bb
@@ -0,0 +1 @@
+[h2]profile_post[/h2]
diff --git a/doc/en/hook/profile_sidebar.bb b/doc/en/hook/profile_sidebar.bb
new file mode 100644
index 000000000..bfd059e4b
--- /dev/null
+++ b/doc/en/hook/profile_sidebar.bb
@@ -0,0 +1 @@
+[h2]profile_sidebar[/h2]
diff --git a/doc/en/hook/profile_sidebar_enter.bb b/doc/en/hook/profile_sidebar_enter.bb
new file mode 100644
index 000000000..9d6726a30
--- /dev/null
+++ b/doc/en/hook/profile_sidebar_enter.bb
@@ -0,0 +1 @@
+[h2]profile_sidebar_enter[/h2]
diff --git a/doc/en/hook/register_account.bb b/doc/en/hook/register_account.bb
new file mode 100644
index 000000000..df4de2b30
--- /dev/null
+++ b/doc/en/hook/register_account.bb
@@ -0,0 +1 @@
+[h2]register_account[/h2]
diff --git a/doc/en/hook/render_location.bb b/doc/en/hook/render_location.bb
new file mode 100644
index 000000000..41501c087
--- /dev/null
+++ b/doc/en/hook/render_location.bb
@@ -0,0 +1 @@
+[h2]render_location[/h2]
diff --git a/doc/en/hook/replace_macros.bb b/doc/en/hook/replace_macros.bb
new file mode 100644
index 000000000..fac39dd7b
--- /dev/null
+++ b/doc/en/hook/replace_macros.bb
@@ -0,0 +1 @@
+[h2]replace_macros[/h2]
diff --git a/doc/en/hook/reverse_magic_auth.bb b/doc/en/hook/reverse_magic_auth.bb
new file mode 100644
index 000000000..4cbd84b93
--- /dev/null
+++ b/doc/en/hook/reverse_magic_auth.bb
@@ -0,0 +1 @@
+[h2]reverse_magic_auth[/h2]
diff --git a/doc/en/hook/settings_form.bb b/doc/en/hook/settings_form.bb
new file mode 100644
index 000000000..d65341181
--- /dev/null
+++ b/doc/en/hook/settings_form.bb
@@ -0,0 +1 @@
+[h2]settings_form[/h2]
diff --git a/doc/en/hook/settings_post.bb b/doc/en/hook/settings_post.bb
new file mode 100644
index 000000000..f72546c11
--- /dev/null
+++ b/doc/en/hook/settings_post.bb
@@ -0,0 +1 @@
+[h2]settings_post[/h2]
diff --git a/doc/en/hook/sexpref_selector.bb b/doc/en/hook/sexpref_selector.bb
new file mode 100644
index 000000000..b4dad6b38
--- /dev/null
+++ b/doc/en/hook/sexpref_selector.bb
@@ -0,0 +1 @@
+[h2]sexpref_selector[/h2]
diff --git a/doc/en/hook/sexpref_selector_min.bb b/doc/en/hook/sexpref_selector_min.bb
new file mode 100644
index 000000000..6f49946af
--- /dev/null
+++ b/doc/en/hook/sexpref_selector_min.bb
@@ -0,0 +1 @@
+[h2]sexpref_selector_min[/h2]
diff --git a/doc/en/hook/smilie.bb b/doc/en/hook/smilie.bb
new file mode 100644
index 000000000..575acc178
--- /dev/null
+++ b/doc/en/hook/smilie.bb
@@ -0,0 +1,19 @@
+[h2]smilie[/h2]
+
+
+Called when processing translation of emoticons. It is passed an array containing two sub-arrays:
+
+ array(
+ 'texts' => array('text1','text2',...),
+ 'icons' => array('icon1','icon2',...)
+ );
+
+ texts is the emoticon text - for example ':-)' for a traditional smile face.
+ icons is the HTML used as a replacement. For example
+ '&lt;img class="smiley" src="https://localhost/images/smiley-smile.gif" alt=":-)" /&gt;'
+
+ If adding or removing an entry from either array, the corresponding element from the matching array must also
+ be added or removed. Emoticons less than three characters in length or not recommended as they get triggered
+ incorrectly quite often. Extended emoticons are indicated by convention using a preceding colon, for example
+
+ :walrus_kissing_a_baby \ No newline at end of file
diff --git a/doc/en/hook/status_editor.bb b/doc/en/hook/status_editor.bb
new file mode 100644
index 000000000..00e97a7c9
--- /dev/null
+++ b/doc/en/hook/status_editor.bb
@@ -0,0 +1,31 @@
+[h2]status_editor[/h2]
+
+Replace the default status_editor (jot).
+
+Allow plugins to replace the default status editor in a context dependent manner.
+
+It is fed an array of ['editor_html' => '', 'x' => $x, 'popup' => $popup, 'module' => $module].
+
+All calls to the status_editor at the time of the creation of this hook have been updated
+to set $module at invocation. This allows addon developers to have a context dependent editor
+based on the Hubzilla module/addon.
+
+Calls to status_editor() are in the form of:
+ status_editor($a, $x, $popup, $module).
+
+Future module/addon developers are encouraged to set $popup and $module when invoking the
+status_editor.
+
+
+[code]
+ $hook_info = ['editor_html' => '', 'x' => $x, 'popup' => $popup, 'module' => $module];
+ call_hooks('status_editor',$hook_info);
+ if ($hook_info['editor_html'] == '') {
+ return hz_status_editor($a, $x, $popup);
+ } else {
+ return $hook_info['editor_html'];
+ }
+
+[/code]
+
+see: include/conversation.php
diff --git a/doc/en/hook/stream_item.bb b/doc/en/hook/stream_item.bb
new file mode 100644
index 000000000..30086961d
--- /dev/null
+++ b/doc/en/hook/stream_item.bb
@@ -0,0 +1,13 @@
+[h2]stream_item[/h2]
+
+
+Called for each item processed for viewing by conversation();
+
+The hook data consists of an array
+
+ array(
+ 'mode' => current mode of conversation()
+ 'item' => item being processed
+ );
+
+ Set item['blocked'] to block the item from viewing. This action will not affect comment or sub-thread counts, so if there are three comments in a conversation and you block one, three comments will still be reported even though only two are visible.
diff --git a/doc/en/hook/system_app_installed_filter.bb b/doc/en/hook/system_app_installed_filter.bb
new file mode 100644
index 000000000..a269a79a8
--- /dev/null
+++ b/doc/en/hook/system_app_installed_filter.bb
@@ -0,0 +1,18 @@
+[h2]system_app_installed_filter[/h2]
+
+Allow plugins to filter the result of system_app_installed.
+
+Code excerpt:
+
+[code]
+ $filter_arr = [
+ 'uid'=>$uid,
+ 'app'=>$app,
+ 'installed'=>$r
+ ];
+ call_hooks('system_app_installed_filter',$filter_arr);
+ $r = $filter_arr['installed'];
+[/code]
+
+cxref: Zotlabs/Lib/Apps.php
+
diff --git a/doc/en/hook/tagged.bb b/doc/en/hook/tagged.bb
new file mode 100644
index 000000000..05d081d07
--- /dev/null
+++ b/doc/en/hook/tagged.bb
@@ -0,0 +1,16 @@
+[h2]tagged[/h2]
+
+
+This hook is called when a delivery is made which results in the recipient being tagged.
+
+The hook data is an array containing
+
+ array(
+ 'channel_id' => int,
+ 'item' => item structure of the delivered item from database,
+ 'body' => the body of the referenced item
+
+ );
+
+ Note: This hook is called before secondary delivery chains are invoked in the case of tagging a forum. This means that permissions and some item attributes will be those of the item before being re-packaged and before ownership of this item is given to the forum.
+
diff --git a/doc/en/hook/update_unseen.bb b/doc/en/hook/update_unseen.bb
new file mode 100644
index 000000000..8fb02c239
--- /dev/null
+++ b/doc/en/hook/update_unseen.bb
@@ -0,0 +1,9 @@
+[h3]update_unseen[/h3]
+
+Called prior to automatically marking items 'seen'; allowing a plugin the choice to not perform this action.
+
+hook data
+
+[ 'channel_id' => local_channel(), 'update' => 'unset' ];
+
+If 'update' is set to 0 or false on return, the update operation is not performed. \ No newline at end of file
diff --git a/doc/en/hook/validate_channelname.bb b/doc/en/hook/validate_channelname.bb
new file mode 100644
index 000000000..2ab12bbec
--- /dev/null
+++ b/doc/en/hook/validate_channelname.bb
@@ -0,0 +1,23 @@
+[h2]validate_channelname[/h2]
+
+Called when creating a new channel or changing the channel name in mod/settings.php
+
+Hook data consists of an array
+
+ array(
+ 'name' => supplied name
+ );
+
+ If the hook handler determines the name is valid, do nothing. If there is an issue with the name,
+ set $hook_data['message'] to the message text which should be displayed to the member - and the name will
+ not be accepted.
+
+
+ Example:
+ [code]
+ if(mb_strlen($hook_data['name']) < 3)
+ $hook_data['message'] = t('Name too short.');
+ [/code]
+
+
+ \ No newline at end of file
diff --git a/doc/en/hook/webfinger.bb b/doc/en/hook/webfinger.bb
new file mode 100644
index 000000000..7cc24322f
--- /dev/null
+++ b/doc/en/hook/webfinger.bb
@@ -0,0 +1 @@
+[h2]webfinger[/h2]
diff --git a/doc/en/hook/well_known.bb b/doc/en/hook/well_known.bb
new file mode 100644
index 000000000..778b27a02
--- /dev/null
+++ b/doc/en/hook/well_known.bb
@@ -0,0 +1 @@
+[h2]well_known[/h2]
diff --git a/doc/en/hook/wiki_preprocess.bb b/doc/en/hook/wiki_preprocess.bb
new file mode 100644
index 000000000..913b601ba
--- /dev/null
+++ b/doc/en/hook/wiki_preprocess.bb
@@ -0,0 +1,11 @@
+[h3]wiki_preprocess[/h3]
+
+Called before markdown/bbcode processors are run for wiki pages
+
+Passed parameter array:
+
+ 'content' => wiki page content
+ 'mimetype' => page mimetype
+
+
+see: Zotlabs/Module/Wiki.php
diff --git a/doc/en/hook/zid.bb b/doc/en/hook/zid.bb
new file mode 100644
index 000000000..2210c1342
--- /dev/null
+++ b/doc/en/hook/zid.bb
@@ -0,0 +1 @@
+[h2]zid[/h2]
diff --git a/doc/en/hook/zid_init.bb b/doc/en/hook/zid_init.bb
new file mode 100644
index 000000000..131dd8f72
--- /dev/null
+++ b/doc/en/hook/zid_init.bb
@@ -0,0 +1 @@
+[h2]zid_init[/h2]
diff --git a/doc/en/hook/zot_best_algorithm.bb b/doc/en/hook/zot_best_algorithm.bb
new file mode 100644
index 000000000..ccde505cb
--- /dev/null
+++ b/doc/en/hook/zot_best_algorithm.bb
@@ -0,0 +1,3 @@
+[h2]zot_best_algorithm[/h2]
+
+
diff --git a/doc/en/hook/zot_finger.bb b/doc/en/hook/zot_finger.bb
new file mode 100644
index 000000000..9383b4c31
--- /dev/null
+++ b/doc/en/hook/zot_finger.bb
@@ -0,0 +1 @@
+[h2]zot_finger[/h2]