+`$b` is an array with:
+
+- **template**: filename of template
+- **vars**: array of vars passed to the template
+
+### acl_lookup_end
+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** (input/output): item array
+
+### prepare_body_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** (input/output): reasons array
+
+### prepare_body
+Called after the HTML conversion in `prepare_body()`.
+Hook data:
+
+- **item** (input): item array
+- **html** (input/output): converted item body
+- **is_preview** (input): post preview flag
+- **filter_reasons** (input): reasons array
+
+### prepare_body_final
+Called at the end of `prepare_body()`.
+Hook data:
+
+- **item**: item array (input)
+- **html**: converted item body (input/output)
+
+### put_item_in_cache
+Called after `prepare_text()` in `put_item_in_cache()`.
+Hook data:
+
+- **item** (input): item array
+- **rendered-html** (input/output): final item body HTML
+- **rendered-hash** (input/output): original item body hash
+
+### magic_auth_success
+Called when a magic-auth was successful.
+Hook data:
+
+ visitor => array with the contact record of the visitor
+ url => the query string
+
+## Current JavaScript hooks
+
+### postprocess_liveupdate
+Called at the end of the live update process (XmlHttpRequest)
+
+## Complete list of hook callbacks
+
+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');
+ Addon::callHooks('app_menu', $arr);
+ Addon::callHooks('page_content_top', $a->page['content']);
+ Addon::callHooks($a->module.'_mod_init', $placeholder);
+ Addon::callHooks($a->module.'_mod_init', $placeholder);
+ Addon::callHooks($a->module.'_mod_post', $_POST);
+ Addon::callHooks($a->module.'_mod_afterpost', $placeholder);
+ Addon::callHooks($a->module.'_mod_content', $arr);
+ Addon::callHooks($a->module.'_mod_aftercontent', $arr);
+ Addon::callHooks('page_end', $a->page['content']);
+
+### include/api.php
+
+ Addon::callHooks('logged_in', $a->user);
+ Addon::callHooks('authenticate', $addon_auth);
+ Addon::callHooks('logged_in', $a->user);
+
+### include/enotify.php
+
+ Addon::callHooks('enotify', $h);
+ Addon::callHooks('enotify_store', $datarray);
+ Addon::callHooks('enotify_mail', $datarray);
+ Addon::callHooks('check_item_notification', $notification_data);
+
+### include/conversation.php
+
+ Addon::callHooks('conversation_start', $cb);
+ Addon::callHooks('render_location', $locate);
+ Addon::callHooks('display_item', $arr);
+ Addon::callHooks('display_item', $arr);
+ Addon::callHooks('item_photo_menu', $args);
+ Addon::callHooks('jot_tool', $jotplugins);
+
+### include/security.php
+
+ Addon::callHooks('logged_in', $a->user);
+
+### include/text.php
+
+ Addon::callHooks('contact_block_end', $arr);
+ Addon::callHooks('poke_verbs', $arr);
+ Addon::callHooks('put_item_in_cache', $hook_data);
+ Addon::callHooks('prepare_body_init', $item);
+ Addon::callHooks('prepare_body_content_filter', $hook_data);
+ Addon::callHooks('prepare_body', $hook_data);
+ Addon::callHooks('prepare_body_final', $hook_data);
+
+### include/items.php
+
+ Addon::callHooks('page_info_data', $data);
+
+### mod/directory.php
+
+ Addon::callHooks('directory_item', $arr);
+
+### mod/xrd.php
+
+ Addon::callHooks('personal_xrd', $arr);
+
+### mod/ping.php
+
+ Addon::callHooks('network_ping', $arr);
+
+### mod/parse_url.php