aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authormrjive <mrjive@mrjive.it>2015-11-11 16:51:48 +0100
committermrjive <mrjive@mrjive.it>2015-11-11 16:51:48 +0100
commit53a796afcc0cff6f9e3f51457df4506a43db1945 (patch)
treea2366c48e0dae047b052283cc44284224369c8cd /doc
parenta4c3058f845a1c38d06b2201a10700c5f878366d (diff)
parentbc7c0ed844711e81c4bc642e3024849195a48421 (diff)
downloadvolse-hubzilla-53a796afcc0cff6f9e3f51457df4506a43db1945.tar.gz
volse-hubzilla-53a796afcc0cff6f9e3f51457df4506a43db1945.tar.bz2
volse-hubzilla-53a796afcc0cff6f9e3f51457df4506a43db1945.zip
Merge pull request #8 from redmatrix/master
get fresh code from HZ base
Diffstat (limited to 'doc')
-rw-r--r--doc/Hooks.md136
-rw-r--r--doc/Hubzilla_on_OpenShift.bb4
-rw-r--r--doc/addons.bb2
-rw-r--r--doc/admins.bb1
-rw-r--r--doc/bbcode.html12
-rw-r--r--doc/credits.bb2
-rw-r--r--doc/database/db_abook.bb30
-rw-r--r--doc/database/db_attach.bb16
-rw-r--r--doc/database/db_channel.bb94
-rw-r--r--doc/database/db_chat.bb10
-rw-r--r--doc/database/db_chatpresence.bb12
-rw-r--r--doc/database/db_chatroom.bb22
-rw-r--r--doc/database/db_conv.bb19
-rw-r--r--doc/database/db_group_member.bb8
-rw-r--r--doc/database/db_groups.bb12
-rw-r--r--doc/database/db_hook.bb10
-rw-r--r--doc/database/db_item.bb145
-rw-r--r--doc/database/db_item_id.bb10
-rw-r--r--doc/de/main.bb30
-rw-r--r--doc/develop.bb1
-rw-r--r--doc/developers.bb2
-rw-r--r--doc/directories.bb95
-rw-r--r--doc/faq_developers.bb421
-rw-r--r--doc/hidden_configs.bb42
-rw-r--r--doc/hook/about_hook.bb1
-rw-r--r--doc/hook/accept_follow.bb1
-rw-r--r--doc/hook/account_downgrade.bb1
-rw-r--r--doc/hook/account_settings.bb1
-rw-r--r--doc/hook/account_settings_post.bb1
-rw-r--r--doc/hook/activity_received.bb1
-rw-r--r--doc/hook/affinity_labels.bb1
-rw-r--r--doc/hook/api_perm_is_allowed.bb1
-rw-r--r--doc/hook/atom_author.bb1
-rw-r--r--doc/hook/atom_entry.bb1
-rw-r--r--doc/hook/atom_feed.bb1
-rw-r--r--doc/hook/atom_feed_end.bb1
-rw-r--r--doc/hook/attach_upload_file.bb1
-rw-r--r--doc/hook/authenticate.bb29
-rw-r--r--doc/hook/bb2diaspora.bb1
-rw-r--r--doc/hook/bbcode.bb1
-rw-r--r--doc/hook/channel_remove.bb1
-rw-r--r--doc/hook/chat_message.bb1
-rw-r--r--doc/hook/chat_post.bb1
-rw-r--r--doc/hook/check_account_email.bb1
-rw-r--r--doc/hook/check_account_invite.bb1
-rw-r--r--doc/hook/check_account_password.bb1
-rw-r--r--doc/hook/connect_premium.bb1
-rw-r--r--doc/hook/connector_settings.bb1
-rw-r--r--doc/hook/construct_page.bb1
-rw-r--r--doc/hook/contact_block_end.bb1
-rw-r--r--doc/hook/contact_edit.bb1
-rw-r--r--doc/hook/contact_edit_post.bb1
-rw-r--r--doc/hook/contact_select_options.bb1
-rw-r--r--doc/hook/conversation_start.bb1
-rw-r--r--doc/hook/create_identity.bb1
-rw-r--r--doc/hook/cron.bb5
-rw-r--r--doc/hook/cron_daily.bb3
-rw-r--r--doc/hook/cron_weekly.bb3
-rw-r--r--doc/hook/directory_item.bb1
-rw-r--r--doc/hook/discover_by_webbie.bb1
-rw-r--r--doc/hook/display_item.bb1
-rw-r--r--doc/hook/display_settings.bb1
-rw-r--r--doc/hook/display_settings_post.bb1
-rw-r--r--doc/hook/donate_contributors.bb1
-rw-r--r--doc/hook/donate_plugin.bb1
-rw-r--r--doc/hook/donate_sponsors.bb1
-rw-r--r--doc/hook/dreport_is_storable.bb1
-rw-r--r--doc/hook/drop_item.bb1
-rw-r--r--doc/hook/enotify.bb1
-rw-r--r--doc/hook/enotify_mail.bb1
-rw-r--r--doc/hook/enotify_store.bb1
-rw-r--r--doc/hook/event_created.bb1
-rw-r--r--doc/hook/event_updated.bb1
-rw-r--r--doc/hook/externals_url_select.bb1
-rw-r--r--doc/hook/feature_enabled.bb1
-rw-r--r--doc/hook/feature_settings.bb1
-rw-r--r--doc/hook/feature_settings_post.bb1
-rw-r--r--doc/hook/follow.bb1
-rw-r--r--doc/hook/follow_allow.bb1
-rw-r--r--doc/hook/gender_selector.bb1
-rw-r--r--doc/hook/gender_selector_min.bb1
-rw-r--r--doc/hook/generate_map.bb1
-rw-r--r--doc/hook/generate_named_map.bb1
-rw-r--r--doc/hook/get_all_api_perms.bb1
-rw-r--r--doc/hook/get_all_perms.bb1
-rw-r--r--doc/hook/get_features.bb1
-rw-r--r--doc/hook/get_role_perms.bb1
-rw-r--r--doc/hook/global_permissions.bb1
-rw-r--r--doc/hook/home_content.bb1
-rw-r--r--doc/hook/home_init.bb1
-rw-r--r--doc/hook/hostxrd.bb1
-rw-r--r--doc/hook/html2bbcode.bb1
-rw-r--r--doc/hook/identity_basic_export.bb1
-rw-r--r--doc/hook/import_author_xchan.bb1
-rw-r--r--doc/hook/import_channel.bb1
-rw-r--r--doc/hook/import_directory_profile.bb1
-rw-r--r--doc/hook/import_xchan.bb1
-rw-r--r--doc/hook/item_photo_menu.bb1
-rw-r--r--doc/hook/item_store.bb1
-rw-r--r--doc/hook/item_store_update.bb1
-rw-r--r--doc/hook/item_translate.bb1
-rw-r--r--doc/hook/jot_networks.bb1
-rw-r--r--doc/hook/jot_tool.bb1
-rw-r--r--doc/hook/load_pdl.bb1
-rw-r--r--doc/hook/local_dir_update.bb1
-rw-r--r--doc/hook/logged_in.bb1
-rw-r--r--doc/hook/logging_out.bb1
-rw-r--r--doc/hook/login_hook.bb1
-rw-r--r--doc/hook/magic_auth.bb1
-rw-r--r--doc/hook/magic_auth_openid_success.bb1
-rw-r--r--doc/hook/magic_auth_success.bb1
-rw-r--r--doc/hook/main_slider.bb1
-rw-r--r--doc/hook/marital_selector.bb1
-rw-r--r--doc/hook/marital_selector_min.bb1
-rw-r--r--doc/hook/module_loaded.bb1
-rw-r--r--doc/hook/module_mod_aftercontent.bb12
-rw-r--r--doc/hook/module_mod_content.bb10
-rw-r--r--doc/hook/module_mod_init.bb1
-rw-r--r--doc/hook/module_mod_post.bb1
-rw-r--r--doc/hook/mood_verbs.bb1
-rw-r--r--doc/hook/nav.bb1
-rw-r--r--doc/hook/network_content_init.bb1
-rw-r--r--doc/hook/network_ping.bb1
-rw-r--r--doc/hook/network_tabs.bb1
-rw-r--r--doc/hook/network_to_name.bb1
-rw-r--r--doc/hook/notifier_end.bb1
-rw-r--r--doc/hook/notifier_hub.bb1
-rw-r--r--doc/hook/notifier_normal.bb1
-rw-r--r--doc/hook/obj_verbs.bb1
-rw-r--r--doc/hook/oembed_probe.bb1
-rw-r--r--doc/hook/page_content_top.bb1
-rw-r--r--doc/hook/page_end.bb1
-rw-r--r--doc/hook/page_header.bb1
-rw-r--r--doc/hook/parse_atom.bb1
-rw-r--r--doc/hook/parse_link.bb1
-rw-r--r--doc/hook/pdl_selector.bb1
-rw-r--r--doc/hook/perm_is_allowed.bb1
-rw-r--r--doc/hook/permissions_create.bb1
-rw-r--r--doc/hook/permissions_update.bb1
-rw-r--r--doc/hook/personal_xrd.bb1
-rw-r--r--doc/hook/photo_post_end.bb1
-rw-r--r--doc/hook/photo_upload_begin.bb1
-rw-r--r--doc/hook/photo_upload_end.bb1
-rw-r--r--doc/hook/photo_upload_file.bb1
-rw-r--r--doc/hook/photo_upload_form.bb1
-rw-r--r--doc/hook/poke_verbs.bb1
-rw-r--r--doc/hook/post_local.bb1
-rw-r--r--doc/hook/post_local_end.bb1
-rw-r--r--doc/hook/post_local_start.bb1
-rw-r--r--doc/hook/post_mail.bb1
-rw-r--r--doc/hook/post_mail_end.bb1
-rw-r--r--doc/hook/post_remote.bb1
-rw-r--r--doc/hook/post_remote_end.bb1
-rw-r--r--doc/hook/post_remote_update.bb1
-rw-r--r--doc/hook/post_remote_update_end.bb1
-rw-r--r--doc/hook/prepare_body.bb1
-rw-r--r--doc/hook/prepare_body_final.bb1
-rw-r--r--doc/hook/prepare_body_init.bb1
-rw-r--r--doc/hook/probe_well_known.bb3
-rw-r--r--doc/hook/proc_run.bb1
-rw-r--r--doc/hook/process_channel_sync_delivery.bb1
-rw-r--r--doc/hook/profile_advanced.bb1
-rw-r--r--doc/hook/profile_edit.bb1
-rw-r--r--doc/hook/profile_photo_content_end.bb1
-rw-r--r--doc/hook/profile_post.bb1
-rw-r--r--doc/hook/profile_sidebar.bb1
-rw-r--r--doc/hook/profile_sidebar_enter.bb1
-rw-r--r--doc/hook/profile_tabs.bb1
-rw-r--r--doc/hook/register_account.bb1
-rw-r--r--doc/hook/render_location.bb1
-rw-r--r--doc/hook/replace_macros.bb1
-rw-r--r--doc/hook/reverse_magic_auth.bb1
-rw-r--r--doc/hook/settings_form.bb1
-rw-r--r--doc/hook/settings_post.bb1
-rw-r--r--doc/hook/sexpref_selector.bb1
-rw-r--r--doc/hook/sexpref_selector_min.bb1
-rw-r--r--doc/hook/smilie.bb19
-rw-r--r--doc/hook/tagged.bb16
-rw-r--r--doc/hook/validate_channelname.bb23
-rw-r--r--doc/hook/webfinger.bb1
-rw-r--r--doc/hook/well_known.bb1
-rw-r--r--doc/hook/zid.bb1
-rw-r--r--doc/hook/zid_init.bb1
-rw-r--r--doc/hook/zot_finger.bb1
-rw-r--r--doc/hooklist.bb486
-rw-r--r--doc/hooks.html1
-rw-r--r--doc/schemaspy_hubzilla/zot.meta.xml283
-rw-r--r--doc/sv/main.bb2
188 files changed, 1848 insertions, 333 deletions
diff --git a/doc/Hooks.md b/doc/Hooks.md
deleted file mode 100644
index 90edff623..000000000
--- a/doc/Hooks.md
+++ /dev/null
@@ -1,136 +0,0 @@
-Hooks - Complete List
-=====================
-
-
-* 'about_hook'
-* 'account_settings'
-* 'app_menu'
-* 'atom_author'
-* 'atom_entry'
-* 'atom_feed'
-* 'atom_feed_end'
-* 'authenticate'
-* 'avatar_lookup'
-* 'bb2diaspora'
-* 'bbcode'
-* 'channel_remove'
-* 'check_account_email'
-* 'check_account_invite'
-* 'check_account_password'
-* 'connect_premium'
-* 'connector_settings'
-* 'contact_block_end'
-* 'contact_edit'
-* 'contact_edit_post'
-* 'contact_photo_menu'
-* 'contact_select_options'
-* 'conversation_start'
-* 'cron'
-* 'directory_item'
-* 'display_item'
-* 'display_item'
-* 'display_settings'
-* 'display_settings_post'
-* 'enotify'
-* 'enotify_mail'
-* 'enotify_store'
-* 'event_created'
-* 'event_updated'
-* 'feature_enabled'
-* 'feature_settings'
-* 'feature_settings_post'
-* 'follow'
-* 'gender_selector'
-* 'get_all_perms'
-* 'get_features'
-* 'get_widgets'
-* 'global_permissions'
-* 'home_content'
-* 'home_init'
-* 'html2bbcode'
-* 'import_directory_profile'
-* 'init_1'
-* 'item_photo_menu'
-* 'item_translate'
-* 'jot_networks'
-* 'jot_tool'
-* 'logged_in'
-* 'login_hook'
-* 'logging_out'
-* 'magic_auth'
-* 'magic_auth_success'
-* 'main_slider'
-* 'marital_selector'
-* 'mood_verbs'
-* 'network_content_init'
-* 'network_ping'
-* 'network_tabs'
-* 'network_to_name'
-* 'notifier_end'
-* 'notifier_normal'
-* 'obj_verbs'
-* 'oembed_probe'
-* 'page_content_top'
-* 'page_end'
-* 'page_header'
-* 'parse_atom'
-* 'parse_link'
-* 'pdl_selector'
-* 'perm_is_allowed'
-* 'personal_xrd'
-* 'photo_post_end'
-* 'photo_post_end'
-* 'photo_upload_begin'
-* 'photo_upload_end'
-* 'photo_upload_file'
-* 'photo_upload_form'
-* 'poke_verbs'
-* 'post_local'
-* 'post_local_end'
-* 'post_local_start'
-* 'post_mail'
-* 'post_mail_end'
-* 'post_remote'
-* 'post_remote_end'
-* 'post_remote_update'
-* 'post_remote_update_end'
-* 'prepare_body'
-* 'prepare_body_final'
-* 'prepare_body_init'
-* 'proc_run'
-* 'profile_advanced'
-* 'profile_edit'
-* 'profile_post'
-* 'profile_sidebar'
-* 'profile_sidebar_enter'
-* 'profile_tabs'
-* 'register_account'
-* 'render_location'
-* 'settings_account'
-* 'settings_form'
-* 'settings_post'
-* 'sexpref_selector'
-* 'smilie'
-* 'validate_channelname'
-* 'webfinger'
-* 'zid'
-* 'zid_init'
-
-***General Module Hooks***
-
-* $a->module . '_mod_aftercontent'
-* $a->module . '_mod_aside'
-* $a->module . '_mod_content'
-* $a->module . '_mod_init'
-* $a->module . '_mod_post'
-
-***General Selector Hooks***
-
-* $a->module . '_post_' . $selname
-* $a->module . '_post_' . $selname
-* $a->module . '_post_' . $selname
-* $a->module . '_pre_' . $selname
-* $a->module . '_pre_' . $selname
-* $a->module . '_pre_' . $selname
-
-#include doc/macros/main_footer.bb;
diff --git a/doc/Hubzilla_on_OpenShift.bb b/doc/Hubzilla_on_OpenShift.bb
index db61c3a48..9b2c539dc 100644
--- a/doc/Hubzilla_on_OpenShift.bb
+++ b/doc/Hubzilla_on_OpenShift.bb
@@ -1,7 +1,9 @@
[b]Hubzilla on OpenShift[/b]
You will notice a new .openshift folder when you fetch from upstream, i.e. from [url=https://github.com/redmatrix/hubzilla.git]https://github.com/redmatrix/hubzilla.git[/url] , which contains a deploy script to set up Hubzilla on OpenShift with plugins and extra themes.
-Create an account on OpenShift, then use the registration e-mail and password to create your first Hubzilla instance. Install git and RedHat's command line tools - rhc - if you have not already done so.
+As of this writing, 2015-10-28, you do not have to pay for OpenShift on the Free plan, which gives you three gears at no cost. The Bronze plan gives you three gears at no cost too, but you can expand to 16 gears by paying, and this requires you to register your payment card. The three gears can give three instances of Hubzilla with one gear each, or you can combine two gears into one high-availability Hubzilla instance and one extra gear. The main difference to be aware of is this: gears on the Free plan will go into hibernation if left idle for too long, this does not happen on the Bronze plan.
+
+Create an account on OpenShift, then use the registration e-mail and password to create your first Hubzilla instance. Install git and RedHat's command line tools - rhc - if you have not already done so. See for example https://developers.openshift.com/en/getting-started-debian-ubuntu.html on how to do this on Debian GNU/Linux, or in the menu on that page for other GNU/Linux distributions or other operating systems.
[code]rhc app-create your_app_name php-5.4 mysql-5.5 cron phpmyadmin --namespace your_domain --from-code https://github.com/redmatrix/hubzilla.git -l your@email.address -p your_account_password
[/code]
diff --git a/doc/addons.bb b/doc/addons.bb
index 1be88150d..a6d2cfc2f 100644
--- a/doc/addons.bb
+++ b/doc/addons.bb
@@ -42,7 +42,7 @@
[*] qrator - generate QR code images
[*] rainbowtag - display your tag and category clouds in colours
[*] randpost - post/reply bot based on and requires fortunate
-[*] redred - Crosspost to another Redmatrix or Hubzilla channel
+[*] redred - Crosspost to another Red Matrix or Hubzilla channel
[*] rtof - Crosspost to Friendica
[*] smiley_pack - extend the built-in smilie (emoticon) support
[*] smileybutton - provides a smiley selector on the post window
diff --git a/doc/admins.bb b/doc/admins.bb
index c77b004a4..484212024 100644
--- a/doc/admins.bb
+++ b/doc/admins.bb
@@ -9,6 +9,7 @@
[zrl=[baseurl]/help/hidden_configs]Tweaking $Projectname's Hidden Configurations[/zrl]
[zrl=[baseurl]/help/faq_admins]FAQ For Admins[/zrl]
[zrl=[baseurl]/help/service_classes]Service Classes[/zrl]
+[zrl=[baseurl]/help/directories]Working with and configuring Directories[/zrl]
[zrl=[baseurl]/help/theme_management]Theme Management[/zrl]
diff --git a/doc/bbcode.html b/doc/bbcode.html
index 4fe47842f..3e9bda1d9 100644
--- a/doc/bbcode.html
+++ b/doc/bbcode.html
@@ -7,11 +7,11 @@
<li>[u]underlined[/u] - <u>underlined</u><br />
<li>[s]strike[/s] - <strike>strike</strike><br />
<li>[color=red]red[/color] - <span style="color: red;">red</span><br />
-<li>[url=https://redmatrix.me]$Projectname[/url] <a href="https://redmatrix.me">$Projectname</a><br />
-<li>[img]https://redmatrix.me/images/default_profile_photos/rainbow_man/48.jpg[/img] <img src="https://redmatrix.me/images/default_profile_photos/rainbow_man/48.jpg" alt="Image/photo" /><br />
-<li>[img float=left]https://redmatrix.me/images/default_profile_photos/rainbow_man/48.jpg[/img] <img src="https://redmatrix.me/images/default_profile_photos/rainbow_man/48.jpg" style="float:left;" alt="Image/photo" /><br />
+<li>[url=https://zothub.com]$Projectname[/url] <a href="https://zothub.com">$Projectname</a><br />
+<li>[img]https://zothub.com/images/default_profile_photos/rainbow_man/48.jpg[/img] <img src="https://zothub.com/images/default_profile_photos/rainbow_man/48.jpg" alt="Image/photo" /><br />
+<li>[img float=left]https://zothub.com/images/default_profile_photos/rainbow_man/48.jpg[/img] <img src="https://zothub.com/images/default_profile_photos/rainbow_man/48.jpg" style="float:left;" alt="Image/photo" /><br />
<div style="clear:both;"></div>
-<li>[img float=right]https://redmatrix.me/images/default_profile_photos/rainbow_man/48.jpg[/img] <img src="https://redmatrix.me/images/default_profile_photos/rainbow_man/48.jpg" style="float:right;" alt="Image/photo" /><br />
+<li>[img float=right]https://zothub.com/images/default_profile_photos/rainbow_man/48.jpg[/img] <img src="https://zothub.com/images/default_profile_photos/rainbow_man/48.jpg" style="float:right;" alt="Image/photo" /><br />
<div style="clear:both;"></div>
<li>[code]code[/code] <code>code</code><br />
<li>[quote]quote[/quote] <blockquote>quote</blockquote><br />
@@ -50,8 +50,8 @@
<p>$Projectname specific codes</p>
<ul class="listbullet" style="list-style-type: circle;">
<li>[&amp;copy;] &copy; This works for many HTML entities</li>
-<li>[zrl]https://redmatrix.me[/zrl] Magic-auth version of [url] tag</li>
-<li>[zmg]https://redmatrix.me/some/photo.jpg[/zmg] Magic-auth version of [img] tag<br /></li>
+<li>[zrl]https://zothub.com[/zrl] Magic-auth version of [url] tag</li>
+<li>[zmg]https://zothub.com/some/photo.jpg[/zmg] Magic-auth version of [img] tag<br /></li>
<li>[observer=1]Text to display if observer is authenticated in the matrix[/observer]</li>
<li>[observer=0]Text to display if observer is <strong>not</strong> authenticated in the matrix[/observer]</li>
diff --git a/doc/credits.bb b/doc/credits.bb
index 200f1fc85..5219d7bf5 100644
--- a/doc/credits.bb
+++ b/doc/credits.bb
@@ -14,7 +14,7 @@ tommy tomson
Simon
zottel
Christian Vogeley
-jeroenpraat
+Jeroen van Riet Paap (jeroenpraat)
Michael Vogel
erik
Zach Prezkuta
diff --git a/doc/database/db_abook.bb b/doc/database/db_abook.bb
index a34e51996..2e4b9c4a7 100644
--- a/doc/database/db_abook.bb
+++ b/doc/database/db_abook.bb
@@ -27,29 +27,21 @@
[/td][/tr]
[tr][td]abook_dob[/td][td]Datetime of connection's birthday converted from *their* timezone to UTC[/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
[/td][/tr]
-[tr][td]abook_flags[/td][td]Bitfield containing blocked(0x1), ignored(0x2), hidden(0x4), archived(0x8), pending(0x10), unconnected(0x20), self(0x80), feed(0x100)[/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[tr][td]abook_flags[/td][td]No longer used[/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
[tr][td]abook_profile[/td][td]profile.guid of profile to display to this connection if authenticated[/td][td]char(64)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
[/td][/tr]
+[tr][td]abook_blocked[/td][td]Bi-directional communications with this channel are blocked, regardless of other permissions. [/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[tr][td]abook_ignored[/td][td]Incoming communications from this channel are blocked, regardless of other permissions. [/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[tr][td]abook_hidden[/td][td]This connection will not be shown as a connection to anybody but the channel owner[/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[tr][td]abook_archived[/td][td]This connection is likely non-functioning and the entry and conversations are preserved, but further polled communications will not be attempted. [/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[tr][td]abook_pending[/td][td]A connection request was received from this channel but has not been approved by the channel owner, public communications may still be visible but no additional permissions have been granted. [/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[tr][td]abook_unconnected[/td][td]currently unused. Projected usage is to indicate "one-way" connections which were insitgated on this end but are still pending on the remote end. [/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[tr][td]abook_self[/td][td]is a special case where the owner is the target. Every channel has one abook entry with abook_self and with a target abook_xchan set to channel.channel_hash . When this flag is present, abook_my_perms is the default permissions granted to all new connections and several other fields are unused.[/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[tr][td]abook_feed[/td][td]indicates this connection is an RSS/Atom feed and may trigger special handling.[/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[tr][td]abook_incl[/td][td]connection filter allow rules separated by LF[/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[tr][td]abook_excl[/td][td]connection filter deny rules separated by LF[/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/table]
-Notes:
-
-ABOOK_FLAGS_BLOCKED - Bi-directional communications with this channel are blocked, regardless of other permissions.
-
-ABOOK_FLAGS_IGNORED - Incoming communications from this channel are blocked, regardless of other permissions.
-
-ABOOK_FLAGS_HIDDEN - This connection will not be shown as a connection to anybody but the channel owner
-
-ABOOK_FLAGS_ARCHIVED - This connection is likely non-functioning and the entry and conversations are preserved, but further polled communications will not be attempted.
-
-ABOOK_FLAGS_PENDING - A connection request was received from this channel but has not been approved by the channel owner, public communications may still be visible but no additional permissions have been granted.
-
-ABOOK_FLAGS_UNCONNECTED - currently unused. Projected usage is to indicate "one-way" connections which were insitgated on this end but are still pending on the remote end.
-
-ABOOK_FLAGS_SELF is a special case where the owner is the target. Every channel has one abook entry with ABOOK_FLAGS_SELF with a target abook_xchan set to channel.channel_hash . When this flag is present, abook_my_perms is the default permissions granted to all new connections and several other fields are unused.
-
-ABOOK_FLAGS_FEED - indicates this connection is an RSS/Atom feed and may trigger special handling.
-
Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/database/db_attach.bb b/doc/database/db_attach.bb
index 4514c87f8..7d2befb47 100644
--- a/doc/database/db_attach.bb
+++ b/doc/database/db_attach.bb
@@ -21,7 +21,15 @@
[/td][/tr]
[tr][td]folder[/td][td]attach.hash of parent folder[/td][td]char(64)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
[/td][/tr]
-[tr][td]flags[/td][td]see notes[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[tr][td]flags[/td][td]no longer used[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]is_dir[/td][td]0 (file) or 1 to indicate a directory[/td][td]tinyint[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]is_photo[/td][td]if 1, a photo is linked to this resource[/td][td]tinyint[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]os_storage[/td][td]if 0, data contains content; if 1 data contains path to content (always 1 in hubzilla)[/td][td]tinyint[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]display_path[/td][td]under construction, store the human readable path[/td][td]mediumtext[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
[tr][td]data[/td][td]file data or pathname to stored data if ATTACH_FLAG_OS[/td][td]longblob[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
@@ -39,12 +47,6 @@
[/td][/tr]
[/table]
-
-Bitmasks
-
-define ( 'ATTACH_FLAG_DIR', 0x0001); This is a directory
-define ( 'ATTACH_FLAG_OS', 0x0002); Data content is link to OS file containing data, if unset the data filed contains the file data
-
permissions are xchan_hash or group_hash surrounded by angle chars. e.g. '<abc123><xyz789>'
Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/database/db_channel.bb b/doc/database/db_channel.bb
index 215db3fb7..70887298d 100644
--- a/doc/database/db_channel.bb
+++ b/doc/database/db_channel.bb
@@ -1,95 +1,99 @@
[table]
[tr][th]Field[/th][th]Description[/th][th]Type[/th][th]Null[/th][th]Key[/th][th]Default[/th][th]Extra
[/th][/tr]
-[tr][td]channel_id[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
+[tr][td]channel_id[/td][td]sequential ID[/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
[/td][/tr]
-[tr][td]channel_account_id[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[tr][td]channel_account_id[/td][td]account.id of the account owning this channel[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
-[tr][td]channel_primary[/td][td][/td][td]tinyint(1) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[tr][td]channel_primary[/td][td]1 = this is the primary instance of this channel[/td][td]tinyint(1) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
-[tr][td]channel_name[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[tr][td]channel_name[/td][td]Name that this channel is known by[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
[/td][/tr]
-[tr][td]channel_address[/td][td][/td][td]char(255)[/td][td]NO[/td][td]UNI[/td][td][/td][td]
+[tr][td]channel_address[/td][td]"username" or URL-and-email safe nickname[/td][td]char(255)[/td][td]NO[/td][td]UNI[/td][td][/td][td]
[/td][/tr]
-[tr][td]channel_guid[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[tr][td]channel_guid[/td][td]Long hash representing a psuedo-unique ID, does not have ot be globally unique[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
[/td][/tr]
-[tr][td]channel_guid_sig[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[tr][td]channel_guid_sig[/td][td]channel.gui signed with channel.prvkey and base64url_encoded[/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]channel_hash[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[tr][td]channel_hash[/td][td]whirlpool hash of channel.guid and channel_guid_sig concatenated, synonymous with xchan_hash[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
[/td][/tr]
-[tr][td]channel_timezone[/td][td][/td][td]char(128)[/td][td]NO[/td][td]MUL[/td][td]UTC[/td][td]
+[tr][td]channel_timezone[/td][td]PHP-legal timezone[/td][td]char(128)[/td][td]NO[/td][td]MUL[/td][td]UTC[/td][td]
[/td][/tr]
-[tr][td]channel_location[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[tr][td]channel_location[/td][td]Default for item.location[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
[/td][/tr]
-[tr][td]channel_theme[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[tr][td]channel_theme[/td][td]channel theme preference[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
[/td][/tr]
-[tr][td]channel_startpage[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
+[tr][td]channel_startpage[/td]relative site URL to visit after logging in[td][/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
[/td][/tr]
-[tr][td]channel_pubkey[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[tr][td]channel_pubkey[/td][td]RSA public key 4096 bit[/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]channel_prvkey[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[tr][td]channel_prvkey[/td][td]RSA private key 4096 bit[/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]channel_notifyflags[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]65535[/td][td]
+[tr][td]channel_notifyflags[/td][td]bifield representing what notification types are active[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]65535[/td][td]
[/td][/tr]
-[tr][td]channel_pageflags[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[tr][td]channel_pageflags[/td][td]bitfield of special channel uses[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
-[tr][td]channel_dirdate[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
+[tr][td]channel_dirdate[/td][td]time when directory was last pinged. Must do this once a month[/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
[/td][/tr]
-[tr][td]channel_deleted[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
+[tr][td]channel_deleted[/td][td]time when channel was deleted[/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
[/td][/tr]
-[tr][td]channel_max_anon_mail[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]10[/td][td]
+[tr][td]channel_max_anon_mail[/td][td]unused[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]10[/td][td]
[/td][/tr]
-[tr][td]channel_max_friend_req[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]10[/td][td]
+[tr][td]channel_max_friend_req[/td][td]unused[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]10[/td][td]
[/td][/tr]
-[tr][td]channel_expire_days[/td][td][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[tr][td]channel_expire_days[/td][td]expire imported content that hasn't been otherwise protected after this many days, 0 is no expiration[/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
-[tr][td]channel_passwd_reset[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
+[tr][td]channel_passwd_reset[/td][td]password reset token[/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
[/td][/tr]
-[tr][td]channel_default_group[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[tr][td]channel_default_group[/td][td]put all new connections into the group with this name[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
[/td][/tr]
-[tr][td]channel_allow_cid[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[tr][td]channel_allow_cid[/td][td]Default permissions for this channel[/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]channel_allow_gid[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[tr][td]channel_allow_gid[/td][td]Default permissions for this channel[/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]channel_deny_cid[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[tr][td]channel_deny_cid[/td][td]Default permissions for this channel[/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]channel_deny_gid[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[tr][td]channel_deny_gid[/td][td]Default permissions for this channel[/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]channel_r_stream[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
+[tr][td]channel_r_stream[/td][td]specific permission bitfield[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
[/td][/tr]
-[tr][td]channel_r_profile[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
+[tr][td]channel_r_profile[/td][td]specific permission bitfield[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
[/td][/tr]
-[tr][td]channel_r_photos[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
+[tr][td]channel_r_photos[/td][td]specific permission bitfield[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
[/td][/tr]
-[tr][td]channel_r_abook[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
+[tr][td]channel_r_abook[/td][td]specific permission bitfield[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
[/td][/tr]
-[tr][td]channel_w_stream[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
+[tr][td]channel_w_stream[/td][td]specific permission bitfield[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
[/td][/tr]
-[tr][td]channel_w_wall[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
+[tr][td]channel_w_wall[/td][td]specific permission bitfield[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
[/td][/tr]
-[tr][td]channel_w_tagwall[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
+[tr][td]channel_w_tagwall[/td][td]specific permission bitfield[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
[/td][/tr]
-[tr][td]channel_w_comment[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
+[tr][td]channel_w_comment[/td][td]specific permission bitfield[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
[/td][/tr]
-[tr][td]channel_w_mail[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
+[tr][td]channel_w_mail[/td][td]specific permission bitfield[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
[/td][/tr]
-[tr][td]channel_w_photos[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
+[tr][td]channel_w_photos[/td][td]specific permission bitfield[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
[/td][/tr]
-[tr][td]channel_w_chat[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
+[tr][td]channel_w_chat[/td][td]specific permission bitfield[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
[/td][/tr]
-[tr][td]channel_a_delegate[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[tr][td]channel_a_delegate[/td][td]specific permission bitfield[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
-[tr][td]channel_r_storage[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
+[tr][td]channel_r_storage[/td][td]specific permission bitfield[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
[/td][/tr]
-[tr][td]channel_w_storage[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
+[tr][td]channel_w_storage[/td][td]specific permission bitfield[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
[/td][/tr]
-[tr][td]channel_r_pages[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
+[tr][td]channel_r_pages[/td][td]specific permission bitfield[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
[/td][/tr]
-[tr][td]channel_w_pages[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
+[tr][td]channel_w_pages[/td][td]specific permission bitfield[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
[/td][/tr]
-[tr][td]channel_a_republish[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
+[tr][td]channel_a_republish[/td][td]specific permission bitfield[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
[/td][/tr]
-[tr][td]channel_w_like[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
+[tr][td]channel_w_like[/td][td]specific permission bitfield[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
+[/td][/tr]
+[tr][td]channel_removed[/td][td]if 1, this channel has been deleted[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
+[/td][/tr]
+[tr][td]channel_system[/td][td]if 1, this is the special system channel on this site[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td]
[/td][/tr]
[/table]
diff --git a/doc/database/db_chat.bb b/doc/database/db_chat.bb
index 6221f36e2..1aac2bd15 100644
--- a/doc/database/db_chat.bb
+++ b/doc/database/db_chat.bb
@@ -1,15 +1,15 @@
[table]
[tr][th]Field[/th][th]Description[/th][th]Type[/th][th]Null[/th][th]Key[/th][th]Default[/th][th]Extra
[/th][/tr]
-[tr][td]chat_id[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
+[tr][td]chat_id[/td][td]sequential ID[/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
[/td][/tr]
-[tr][td]chat_room[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[tr][td]chat_room[/td][td]chatroom.cr_id for this chat[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
-[tr][td]chat_xchan[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[tr][td]chat_xchan[/td][td]author xchan_hash[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
[/td][/tr]
-[tr][td]chat_text[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[tr][td]chat_text[/td][td]the text of the chat message[/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]created[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
+[tr][td]created[/td][td]timestamp of this message[/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
[/td][/tr]
[/table]
diff --git a/doc/database/db_chatpresence.bb b/doc/database/db_chatpresence.bb
index cdc948a60..28cd6f207 100644
--- a/doc/database/db_chatpresence.bb
+++ b/doc/database/db_chatpresence.bb
@@ -1,17 +1,17 @@
[table]
[tr][th]Field[/th][th]Description[/th][th]Type[/th][th]Null[/th][th]Key[/th][th]Default[/th][th]Extra
[/th][/tr]
-[tr][td]cp_id[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
+[tr][td]cp_id[/td][td]sequential ID[/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
[/td][/tr]
-[tr][td]cp_room[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[tr][td]cp_room[/td][td]chatroom.cr_id of the chatroom[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
-[tr][td]cp_xchan[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[tr][td]cp_xchan[/td][td]xchan_hash of the chatroom participant[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
[/td][/tr]
-[tr][td]cp_last[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
+[tr][td]cp_last[/td][td]datetime last ping[/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
[/td][/tr]
-[tr][td]cp_status[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[tr][td]cp_status[/td][td]text status description e.g. "online"[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]cp_client[/td][td][/td][td]char(128)[/td][td]NO[/td][td][/td][td][/td][td]
+[tr][td]cp_client[/td][td][/td]IP address of this client[td]char(128)[/td][td]NO[/td][td][/td][td][/td][td]
[/td][/tr]
[/table]
diff --git a/doc/database/db_chatroom.bb b/doc/database/db_chatroom.bb
index b2da762cf..1d316288d 100644
--- a/doc/database/db_chatroom.bb
+++ b/doc/database/db_chatroom.bb
@@ -1,27 +1,27 @@
[table]
[tr][th]Field[/th][th]Description[/th][th]Type[/th][th]Null[/th][th]Key[/th][th]Default[/th][th]Extra
[/th][/tr]
-[tr][td]cr_id[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
+[tr][td]cr_id[/td][td]sequential ID[/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
[/td][/tr]
-[tr][td]cr_aid[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[tr][td]cr_aid[/td][td]account.id of chatroom owner[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
-[tr][td]cr_uid[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[tr][td]cr_uid[/td][td]channel.channel_id of chatroom owner[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
-[tr][td]cr_name[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[tr][td]cr_name[/td][td]visible name of chatroom[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
[/td][/tr]
-[tr][td]cr_created[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
+[tr][td]cr_created[/td][td]creation timestampe[/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
[/td][/tr]
-[tr][td]cr_edited[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
+[tr][td]cr_edited[/td][td]edited timestamp[/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
[/td][/tr]
-[tr][td]cr_expire[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[tr][td]cr_expire[/td][td]expiration period for chats in this chatroom in minutes, 0 is no expiration[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
-[tr][td]allow_cid[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[tr][td]allow_cid[/td][td]permissions for this room[/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]allow_gid[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[tr][td]allow_gid[/td][td]permissions for this room[/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]deny_cid[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[tr][td]deny_cid[/td][td]permissions for this room[/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]deny_gid[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[tr][td]deny_gid[/td][td]permissions for this room[/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
[/table]
diff --git a/doc/database/db_conv.bb b/doc/database/db_conv.bb
index ba1ba7f01..5adfa8c80 100644
--- a/doc/database/db_conv.bb
+++ b/doc/database/db_conv.bb
@@ -1,21 +1,24 @@
+
+Used in Diaspora private mails
+
[table]
[tr][th]Field[/th][th]Description[/th][th]Type[/th][th]Null[/th][th]Key[/th][th]Default[/th][th]Extra
[/th][/tr]
-[tr][td]id[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
+[tr][td]id[/td][td]sequential ID[/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
[/td][/tr]
-[tr][td]guid[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[tr][td]guid[/td][td]A unique identifier for this conversation[/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]recips[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[tr][td]recips[/td][td]sender_handle;recipient_handle[/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]uid[/td][td][/td][td]int(11)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[tr][td]uid[/td][td]channel.channel_id of the owner of this data[/td][td]int(11)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]creator[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[tr][td]creator[/td][td]handle of creator[/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]created[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
+[tr][td]created[/td][td]creation timestamp[/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
[/td][/tr]
-[tr][td]updated[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
+[tr][td]updated[/td][td]edited timestamp[/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
[/td][/tr]
-[tr][td]subject[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[tr][td]subject[/td][td]subject of initial message (obscured for privacy)[/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
[/table]
diff --git a/doc/database/db_group_member.bb b/doc/database/db_group_member.bb
index d31fa1edb..b9ab8171d 100644
--- a/doc/database/db_group_member.bb
+++ b/doc/database/db_group_member.bb
@@ -1,13 +1,13 @@
[table]
[tr][th]Field[/th][th]Description[/th][th]Type[/th][th]Null[/th][th]Key[/th][th]Default[/th][th]Extra
[/th][/tr]
-[tr][td]id[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
+[tr][td]id[/td][td]sequential ID[/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
[/td][/tr]
-[tr][td]uid[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[tr][td]uid[/td][td]channel.channel_id of the owner of this data[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]gid[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[tr][td]gid[/td][td]groups.id of the associated group[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]xchan[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[tr][td]xchan[/td][td]xchan.xchan_hash of the member assigned to the associated group[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
[/td][/tr]
[/table]
diff --git a/doc/database/db_groups.bb b/doc/database/db_groups.bb
index 03e4fe2d7..078d96464 100644
--- a/doc/database/db_groups.bb
+++ b/doc/database/db_groups.bb
@@ -1,17 +1,17 @@
[table]
[tr][th]Field[/th][th]Description[/th][th]Type[/th][th]Null[/th][th]Key[/th][th]Default[/th][th]Extra
[/th][/tr]
-[tr][td]id[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
+[tr][td]id[/td][td]sequential ID[/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
[/td][/tr]
-[tr][td]hash[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[tr][td]hash[/td][td]unique hash representing this group with the group name appended[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
[/td][/tr]
-[tr][td]uid[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[tr][td]uid[/td][td]channel.channel_id owning this data[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]visible[/td][td][/td][td]tinyint(1)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[tr][td]visible[/td][td]1 indicates the member list is not private[/td][td]tinyint(1)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
-[tr][td]deleted[/td][td][/td][td]tinyint(1)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[tr][td]deleted[/td][td]1 indicates the group has been deleted[/td][td]tinyint(1)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
-[tr][td]name[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[tr][td]name[/td][td]human readable name of group[/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
[/table]
diff --git a/doc/database/db_hook.bb b/doc/database/db_hook.bb
index 6e8e907a1..0812b1b41 100644
--- a/doc/database/db_hook.bb
+++ b/doc/database/db_hook.bb
@@ -1,15 +1,15 @@
[table]
[tr][th]Field[/th][th]Description[/th][th]Type[/th][th]Null[/th][th]Key[/th][th]Default[/th][th]Extra
[/th][/tr]
-[tr][td]id[/td][td][/td][td]int(11)[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
+[tr][td]id[/td][td]sequential ID[/td][td]int(11)[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
[/td][/tr]
-[tr][td]hook[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[tr][td]hook[/td][td]name of hook[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]file[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[tr][td]file[/td][td]relative filename of hook handler[/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]function[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[tr][td]function[/td][td]function name of hook handler[/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]priority[/td][td][/td][td]int(11) unsigned[/td][td]NO[/td][td][/td][td]0[/td][td]
+[tr][td]priority[/td][td]not yet implemented - can be used to sort conflicts in hook handling by calling handlers in priority order[/td][td]int(11) unsigned[/td][td]NO[/td][td][/td][td]0[/td][td]
[/td][/tr]
[/table]
diff --git a/doc/database/db_item.bb b/doc/database/db_item.bb
index b31823d6c..e4e594196 100644
--- a/doc/database/db_item.bb
+++ b/doc/database/db_item.bb
@@ -1,104 +1,151 @@
[table]
[tr][th]Field[/th][th]Description[/th][th]Type[/th][th]Null[/th][th]Key[/th][th]Default[/th][th]Extra
[/th][/tr]
-[tr][td]id[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
+[tr][td]id[/td][td]Sequential ID[/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
[/td][/tr]
-[tr][td]mid[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[tr][td]mid[/td][td]Message-id - globally unique, there can be several items with the same message-ID in the table as they may have different uid owners[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
[/td][/tr]
-[tr][td]aid[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[tr][td]aid[/td][td]channel_account_id of the channel_id (uid) which owns this copy of the item[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
-[tr][td]uid[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[tr][td]uid[/td][td]channel_id (uid) which owns this copy of the item[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
-[tr][td]parent[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[tr][td]parent[/td][td]item.id of the parent to this item if it is a reply of some form; otherwise this must be set to the id of this item[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
-[tr][td]parent_mid[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[tr][td]parent_mid[/td][td]Globally unique message-id of the parent to this item[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
[/td][/tr]
-[tr][td]thr_parent[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
+[tr][td]thr_parent[/td][td]If the parent of this item is not the top-level item in the conversation, the message-id of the immediate parent; otherwise set to parent_mid[/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
[/td][/tr]
-[tr][td]created[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
+[tr][td]created[/td][td]Creation timestamp. If creation is more than ten minutes into the future, set item_delayed to 1; it will automatically be delivered by the poller once the created time has passed[/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
[/td][/tr]
-[tr][td]edited[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
+[tr][td]edited[/td][td]Date of last edit (default is created)[/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
[/td][/tr]
-[tr][td]expires[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
+[tr][td]expires[/td][td]Date this item expires and will be removed[/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
[/td][/tr]
-[tr][td]commented[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
+[tr][td]commented[/td][td]Date of last comment/reply to this item[/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
[/td][/tr]
-[tr][td]received[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
+[tr][td]received[/td][Date the item was received at this sitetd][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
[/td][/tr]
-[tr][td]changed[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
+[tr][td]changed[/td][td]Date that something in the conversation changed, indicating clients should fetch the conversation again[/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
[/td][/tr]
-[tr][td]comments_closed[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
+[tr][td]comments_closed[/td][td]Date after which no more comments will be accepted[/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
[/td][/tr]
-[tr][td]owner_xchan[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[tr][td]owner_xchan[/td][td]xchan_hash of the owner of this conversation (this is who replies are sent to)[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
[/td][/tr]
-[tr][td]author_xchan[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[tr][td]author_xchan[/td][td]xchan_hash of the author of this item[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
[/td][/tr]
-[tr][td]source_xchan[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
+[tr][td]source_xchan[/td][td]xchan_hash of the external source of this item belongs to multiple delivery chains and comments need to be uplinked[/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
[/td][/tr]
-[tr][td]mimetype[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[tr][td]mimetype[/td][td]mime type of the content body[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
[/td][/tr]
-[tr][td]title[/td][td][/td][td]text[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[tr][td]title[/td][td]item title[/td][td]text[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]body[/td][td][/td][td]mediumtext[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[tr][td]body[/td][td]item body content[/td][td]mediumtext[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]app[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
+[tr][td]app[/td][td]application which generated this item[/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
[/td][/tr]
-[tr][td]lang[/td][td][/td][td]char(64)[/td][td]NO[/td][td][/td][td][/td][td]
+[tr][td]lang[/td][td]auto-detected language[/td][td]char(64)[/td][td]NO[/td][td][/td][td][/td][td]
[/td][/tr]
-[tr][td]revision[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[tr][td]revision[/td][td]future use, version control[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
-[tr][td]verb[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[tr][td]verb[/td][td]ActivityStreams verb (old style URI)[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
[/td][/tr]
-[tr][td]obj_type[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
+[tr][td]obj_type[/td][td]ActivityStreams object type (old style URI)[/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
[/td][/tr]
-[tr][td]object[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[tr][td]object[/td][td]JSON encoded object structure unless it is an implied object (normal post)[/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]tgt_type[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
+[tr][td]tgt_type[/td][td]ActivityStreams target type if applicable (URI)[/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
[/td][/tr]
-[tr][td]target[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[tr][td]target[/td][td]JSON encoded target structure if used[/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]layout_mid[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[tr][td]layout_mid[/td][td]For webpages, which layout (mid or message_id) to use when displaying this page[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
[/td][/tr]
-[tr][td]postopts[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[tr][td]postopts[/td][td]External post connectors add their network name to this comma-separated string to identify that they should be delivered to these networks during delivery[/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]route[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[tr][td]route[/td][td]comma separated xchan list of xchans where this message was routed on its way to this destination, used for route loop discovery and rejection of comments which arrived by alternate routes and may have different permissions[/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]llink[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[tr][td]llink[/td][td]URL of a displayable copy of this post/conversation on this site[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
[/td][/tr]
-[tr][td]plink[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
+[tr][td]plink[/td][td]permalink or URL toa displayable copy of the message at its source[/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
[/td][/tr]
-[tr][td]resource_id[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
+[tr][td]resource_id[/td][td]Used to link other tables to items, it identifies the linked resource and if set must also set resource_type[/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
[/td][/tr]
-[tr][td]resource_type[/td][td][/td][td]char(16)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[tr][td]resource_type[/td][td]default none, if a linked resource this should be the name of the resource type such as "photo" or "event"[/td][td]char(16)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
[/td][/tr]
-[tr][td]attach[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[tr][td]attach[/td][td]JSON structure representing attachments to this item[/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]sig[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[tr][td]sig[/td][td]RSA signature of the item body by the original author if the private key is available[/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]diaspora_meta[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[tr][td]diaspora_meta[/td][td]Used to store Diaspora comment signatures with their weird requirements[/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]location[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
+[tr][td]location[/td][td]text location where this item originated[/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
[/td][/tr]
-[tr][td]coord[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
+[tr][td]coord[/td][td] longitude/latitude pair representing location where this item originated[/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
[/td][/tr]
-[tr][td]public_policy[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[tr][td]public_policy[/td][td]If the author has specified restrictions (this network, this site) etc. for distribution, the corresponding policy text is present here and item_private = 1[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
[/td][/tr]
-[tr][td]comment_policy[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[tr][td]comment_policy[/td][td]If the author has specified comment restrictions (thei network, this site, etc.) the corresponding policy text is present here[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
[/td][/tr]
-[tr][td]allow_cid[/td][td][/td][td]mediumtext[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[tr][td]allow_cid[/td][td]Access Control - list of allowed xchans '<xchan1><xchan2>...'[/td][td]mediumtext[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]allow_gid[/td][td][/td][td]mediumtext[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[tr][td]allow_gid[/td]Access Control - list of allowed group hashes, see allow_cid[td][/td][td]mediumtext[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]deny_cid[/td][td][/td][td]mediumtext[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[tr][td]deny_cid[/td][td]Access Control - list of denied xchans[/td][td]mediumtext[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]deny_gid[/td][td][/td][td]mediumtext[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[tr][td]deny_gid[/td][td]Access Control - list of denied groups[/td][td]mediumtext[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]item_restrict[/td][td][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[tr][td]item_restrict[/td]no longer used[td][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
-[tr][td]item_flags[/td][td][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[tr][td]item_flags[/td][td]no longer used[/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
-[tr][td]item_private[/td][td][/td][td]tinyint(4)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[tr][td]item_private[/td][td]distribution is restricted[/td][td]tinyint(4)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
[/td][/tr]
+[tr][td]item_origin[/td][td]item originated at this site[/td][td]tinyint(4)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]item_unseen[/td][td]item has not been seen[/td][td]tinyint(4)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]item_starred[/td][td]item has been favourited[/td][td]tinyint(4)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]item_uplink[/td][td]This item is part of a multiple delivery chain and must be uplinked to the original sender (source_xchan)[/td][td]tinyint(4)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]item_consensus[/td][td]This item allows voting tools[/td][td]tinyint(4)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]item_wall[/td][td]This item was posted to the wall of uid[/td][td]tinyint(4)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]item_thread_top[/td][td]parent = id, this is the top post in a conversation [/td][td]tinyint(4)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]item_notshown[/td][td][/td][td]tinyint(4)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]item_nsfw[/td][td][/td][td]tinyint(4)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]item_relay[/td][td][/td][td]tinyint(4)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]item_mentionsme[/td][td]The owner of this item was mentioned in it[/td][td]tinyint(4)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]item_nocomment[/td][td]if 1, no comments are allowed[/td][td]tinyint(4)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]item_obscured[/td][td]no longer used[/td][td]tinyint(4)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]item_verified[/td][td]the signature has been verified on this site[/td][td]tinyint(4)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]item_retained[/td][td][/td][td]tinyint(4)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]item_rss[/td][td]item originated in a feed[/td][td]tinyint(4)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]item_deleted[/td][td]item has been deleted[/td][td]tinyint(4)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]item_type[/td][td]used to identify webpage and design element types, 0 is a normal conversation item[/td][td]tinyint(4)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]item_hidden[/td][td]0 or 1 if item is not to be displayed[/td][td]tinyint(4)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]item_unpublished[/td][td][/td][td]tinyint(4)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]item_delayed[/td][td]item is posted in the future[/td][td]tinyint(4)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]item_pending_remove[/td][td]item is in the process of being removed[/td][td]tinyint(4)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]item_blocked[/td][td][/td][td]tinyint(4)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+
[/table]
Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/database/db_item_id.bb b/doc/database/db_item_id.bb
index b77ae2d1a..ba4cca247 100644
--- a/doc/database/db_item_id.bb
+++ b/doc/database/db_item_id.bb
@@ -1,15 +1,15 @@
[table]
[tr][th]Field[/th][th]Description[/th][th]Type[/th][th]Null[/th][th]Key[/th][th]Default[/th][th]Extra
[/th][/tr]
-[tr][td]id[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
+[tr][td]id[/td][td]sequential ID[/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
[/td][/tr]
-[tr][td]iid[/td][td][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[tr][td]iid[/td][td]item.id of the referenced item[/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]uid[/td][td][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[tr][td]uid[/td][td]channel.channel_id of the owner of this data[/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]sid[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[tr][td]sid[/td][td]an additional identifier to attach or link to the referenced item (often used to store a message_id from another system in order to suppress duplicates)[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
[/td][/tr]
-[tr][td]service[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[tr][td]service[/td][td]the name or description of the service which generated this identifier[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
[/td][/tr]
[/table]
diff --git a/doc/de/main.bb b/doc/de/main.bb
index f310d0ab5..5786f03ef 100644
--- a/doc/de/main.bb
+++ b/doc/de/main.bb
@@ -1,19 +1,19 @@
-[img][baseurl]/assets/hashlogo.png[/img]
+[img][baseurl]/images/hubzilla-banner.png[/img]
-[zrl=[baseurl]/help/about]Was ist die RedMatrix?[/zrl]
-Die RedMatrix ist eine dezentrale Kommunikations- und Publishing-Plattform. Sie ermöglicht Dir die volle Kontrolle über all Deine Kommunikation mit Hilfe von automatischer Verschlüsselung und detaillierter Zugriffskontrolle. Du, und [i]nur[/i] Du, entscheidest, wer Deine Beiträge sehen darf.
+[zrl=[baseurl]/help/about]Was ist Hubzilla?[/zrl]
+Hubzilla ist eine dezentrale Kommunikations- und Publishing-Plattform. Sie ermöglicht Dir die volle Kontrolle über all Deine Kommunikation mit Hilfe von automatischer Verschlüsselung und detaillierter Zugriffskontrolle. Du, und [i]nur[/i] Du, entscheidest, wer Deine Beiträge sehen darf. Hubzilla ist der Nachfolger, der seit einigen Jahren erfolgreichen Plattformen Firendica und Red Matrix.
-[zrl=[baseurl]/help/features]Features der RedMatrix[/zrl]
-Die RedMatrix funktioniert schon heute als ein globales verteiltes Netzwerk und beweist täglich ihre Vielseitigkeit und Skalierbarkeit auf kleinen Privatservern wie auch auf riesigen Sites.
-Kommunikationsplattformen für Familien, verteilte Online-Communities, Support-Foren, Blogs und Homepages. Oder auch professionelle Inhalte-Anbieter mit kommerziellen Premium-Kanälen und eingeschränktem Zugriff – was immer Du willst, die RedMatrix unterstützt Dich in Deinem kreativen Schaffen.
+[zrl=[baseurl]/help/features]Features von Hubzilla[/zrl]
+Hubzilla, basierend auf der Red Matrix, funktioniert schon heute als ein globales verteiltes Netzwerk und beweist täglich ihre Vielseitigkeit und Skalierbarkeit - auf kleinen Privatservern wie auch auf riesigen Sites.
+Kommunikationsplattformen für Familien, verteilte Online-Communities, Support-Foren, Blogs und Homepages. Oder auch professionelle Inhalte-Anbieter mit kommerziellen Premium-Kanälen und eingeschränktem Zugriff – was immer Du willst, Hubzilla unterstützt Dich in Deinem kreativen Schaffen.
[zrl=[baseurl]/help/what_is_zot]Got Zot? Hast Du schon Zot? Wenn nicht wird es Zeit.[/zrl]
-Zot ist das großartige neue Kommunikationsprotokoll, das extra für die RedMatrix entwickelt wurde. Als Mitglied bist Du dank „Nomadischer Identität“ nicht länger an einen einzigen Server oder Anbieter gebunden. Ziehe einfach auf einen anderen Server um und behalte dabei alle Deine Kontakte, oder klone Deinen Kanal und lasse ihn auf mehreren Servern gleichzeitig laufen – sollte einer davon plötzlich geschlossen werden, ist das kein Problem für Dich. Und bist Du erst Teil der RedMatrix, musst Du Dich nie wieder mehrfach anmelden, selbst wenn Du Seiten auf einem andere Red-Server betrachtest. Zot ist, was die RedMatrix besonders macht.
+Zot ist ein großartiges neues Kommunikationsprotokoll, das für Hubzilla - und vorher die Red Matrix - entwickelt wurde. Als Mitglied bist Du dank „Nomadischer Identität“ nicht länger an einen einzigen Server oder einen einzigen Anbieter gebunden. Ziehe einfach auf einen anderen Server um und behalte dabei alle Deine Kontakte, oder klone Deinen Kanal und lasse ihn auf mehreren Servern gleichzeitig laufen – sollte einer davon plötzlich geschlossen werden, ist das kein Problem für Dich. Und bist Du erst Teil des Hubzilla-Netzwerkes, musst Du Dich nie wieder mehrfach anmelden, selbst wenn Du Seiten auf einem andere Hub (den Hubzilla-Servern) betrachtest. Zot ist es, was das Hubzilla-Netzwerk besonders macht.
[h3]Erste Schritte[/h3]
[zrl=[baseurl]/help/Privacy]Datenschutz[/zrl]
[zrl=[baseurl]/help/registration]Ein Konto registrieren[/zrl]
-[zrl=[baseurl]/help/accounts_profiles_channels_basics]Du in der RedMatrix: Konten, Profile und Kanäle kurz erklärt[/zrl]
+[zrl=[baseurl]/help/accounts_profiles_channels_basics]Du im Hubzilla-Netzwerk: Konten, Profile und Kanäle kurz erklärt[/zrl]
[zrl=[baseurl]/help/profiles]Profile[/zrl]
[zrl=[baseurl]/help/channels]Kanäle[/zrl]
[zrl=[baseurl]/help/roles]Zugriffsrechte-Kategorien und Kanaltypen[/zrl]
@@ -26,7 +26,7 @@ Zot ist das großartige neue Kommunikationsprotokoll, das extra für die RedMatr
[h3]Hilfe für $Projectname-Mitglieder[/h3]
[zrl=[baseurl]/help/tags_and_mentions]Tags und Erwähnungen[/zrl]
[zrl=[baseurl]/help/webpages]Webseiten[/zrl]
-[zrl=[baseurl]/help/bbcode]BBcode-Referenz für Posts und Kommentare[/zrl]
+[zrl=[baseurl]/help/bbcode]BBcode-Referenz für Beiträge und Kommentare[/zrl]
[zrl=[baseurl]/help/checking_account_quota_usage]Überprüfung der Kontenlimits[/zrl]
[zrl=[baseurl]/help/cloud_desktop_clients]Desktop-Anwendungen und die Cloud[/zrl]
[zrl=[baseurl]/help/AdvancedSearch]Fortgeschrittene Suche im Kanalverzeichnis[/zrl]
@@ -36,7 +36,7 @@ Zot ist das großartige neue Kommunikationsprotokoll, das extra für die RedMatr
[h3]Hilfe für Administratoren[/h3]
[zrl=[baseurl]/help/install]Installation[/zrl]
-[zrl=[baseurl]/help/red2pi]Red auf einem Raspberry Pi installieren[/zrl]
+[zrl=[baseurl]/help/red2pi]Hubzilla auf einem Raspberry Pi installieren[/zrl]
[zrl=[baseurl]/help/troubleshooting]Troubleshooting-Tipps[/zrl]
[zrl=[baseurl]/help/hidden_configs]Versteckte Konfigurations-Optionen[/zrl]
[zrl=[baseurl]/help/faq_admins]FAQ für Admins[/zrl]
@@ -60,9 +60,9 @@ Zot ist das großartige neue Kommunikationsprotokoll, das extra für die RedMatr
[zrl=[baseurl]/help/database]Datenbank-Schema[/zrl]
[zrl=[baseurl]/help/api_functions]API-Funktionen[/zrl]
[zrl=[baseurl]/help/api_posting]Mit der API einen Beitrag erstellen[/zrl]
-[zrl=[baseurl]/help/developer_function_primer]Übersicht der wichtigsten Red-Funktionen[/zrl]
+[zrl=[baseurl]/help/developer_function_primer]Übersicht der wichtigsten Hubzilla-Funktionen[/zrl]
[zrl=[baseurl]/doc/html/]Code-Referenz (mit doxygen generiert - setzt Cookies)[/zrl]
-[zrl=[baseurl]/help/to_do_doco]To-Do-Liste für das Projekt Red-Dokumentation[/zrl]
+[zrl=[baseurl]/help/to_do_doco]To-Do-Liste für das Projekt Hubzilla-Dokumentation[/zrl]
[zrl=[baseurl]/help/to_do_code]To-Do-Liste für Entwickler[/zrl]
[zrl=[baseurl]/help/roadmap]Roadmap für Version 3[/zrl]
[zrl=[baseurl]/help/git_for_non_developers]Git für Nicht-Entwickler[/zrl]
@@ -80,7 +80,7 @@ Zot ist das großartige neue Kommunikationsprotokoll, das extra für die RedMatr
[url=[baseurl]/help/credits]$Projectname Credits[/url]
-[h3]Über diesen Red-Server[/h3]
-[zrl=[baseurl]/help/TermsOfService]Nutzungsbedingungen dieses Red-Servers[/zrl]
-[zrl=[baseurl]/siteinfo]Informationen zu diesem Server und der Red-Version[/zrl]
+[h3]Über diesen Hub (Hubzilla-Server)[/h3]
+[zrl=[baseurl]/help/TermsOfService]Nutzungsbedingungen dieses Hubs (Hubzilla-Servers)[/zrl]
+[zrl=[baseurl]/siteinfo]Informationen zu diesem Server und der Hubzilla-Version[/zrl]
[zrl=[baseurl]/siteinfo/json]Detaillierte technische Informationen zu diesem Server im JSON-Format[/zrl]
diff --git a/doc/develop.bb b/doc/develop.bb
index c46447cce..6694a839b 100644
--- a/doc/develop.bb
+++ b/doc/develop.bb
@@ -8,6 +8,7 @@
[zrl=[baseurl]/help/Creating-Templates]Creating Comanche Templates[/zrl]
[zrl=[baseurl]/help/Widgets]Widgets[/zrl]
[zrl=[baseurl]/help/plugins]Plugins[/zrl]
+[zrl=[baseurl]/help/hooklist]Hooks (detailed - under construction)[/zrl]
[zrl=[baseurl]/help/doco]Contributing Documentation[/zrl]
[zrl=[baseurl]/help/DerivedTheme1]Creating Derivative Themes[/zrl]
[zrl=[baseurl]/help/schema_development]Schemas[/zrl]
diff --git a/doc/developers.bb b/doc/developers.bb
index e9dddc695..6f7752577 100644
--- a/doc/developers.bb
+++ b/doc/developers.bb
@@ -64,6 +64,8 @@ In the interests of consistency we adopt the following code styling. We may acce
[li] Generally speaking, opening braces go on the same line as the thing which opens the brace. They are the last character on the line. Closing braces are on a line by themselves. [/li]
+[li] Some functions take arguments in argc/argv style like main() in C or function args in bash or Perl. Urls are broken up within a module. e.g, given "http://example.com/module/arg1/arg2", then $this->argc will be 3 (integer) and $this->argv will contain: [0] => 'module', [1] => 'arg1', [2] => 'arg2'. There will always be one argument. If provided a naked domain URL, $this->argv[0] is set to "home".[/li]
+
[b]See Also[/b]
[zrl=[baseurl]/help/sql_conventions]SQL Conventions[/zrl]
diff --git a/doc/directories.bb b/doc/directories.bb
new file mode 100644
index 000000000..d81dd84c5
--- /dev/null
+++ b/doc/directories.bb
@@ -0,0 +1,95 @@
+[h3]Directory Configuration[/h3]
+
+Directories in $Projectname serve the purpose of searching and locating members anywhere in the network. They are also used to store and query "ratings" of members and sites. The directory services are distributed and mirrored so that a failure of one will not take down or disrupt the entire network.
+
+[b]Standard Configuration[/b]
+
+New sites operating as directory clients will automatically select from a hard-coded list of directory servers during their first directory access. You may examine or over-ride this decision using
+
+[code]
+util/config system directory_server
+[/code]
+
+To set a different server,
+
+[code]
+util/config system directory_server https://newdirectory.something
+[/code]
+
+
+[b]Standalone configuration[/b]
+
+Some sites may wish to operate in 'standalone' mode and not connect to any external directory services. This is useful for isolated sites ("off the gird") and test sites, but can also be useful for small organisations who do not wish to connect with other sites in the network.
+
+To configure this, please look in your .htconfig.php file for the following text and set the configuration accordingly.
+
+[code]
+// Configure how we communicate with directory servers.
+// DIRECTORY_MODE_NORMAL = directory client, we will find a directory
+// DIRECTORY_MODE_SECONDARY = caching directory or mirror
+// DIRECTORY_MODE_PRIMARY = main directory server
+// DIRECTORY_MODE_STANDALONE = "off the grid" or private directory services
+
+$a->config['system']['directory_mode'] = DIRECTORY_MODE_STANDALONE;
+[/code]
+
+
+[b]Secondary server configuration[/b]
+
+You may also configure your site as a secondary server. This operates as a mirror of the primary directory and allows disitribution of the load amongst available servers. There is very little functional difference between a primary and secondary sever, however there may only be *one* primary directory server per realm (realms are discussed later in this document).
+
+Before choosing to be a directory server, please be advised that you should be an active member of the network and have the resources and time available to manage these services. They don't typically require management, but the requirement is more for stability as losing a directory server can cause issues to directory clients which are reliant on it.
+
+
+[b]Changing the directory server[/b]
+
+If a directory server indicates that it is no longer a directory server, this should be detected by the software and the configuration for that server will be removed (blanked). If it goes offline permanently without warning, you will only know if site members report that directory services are unavailable. Currently this can only be repaired manually by the site administrator by selecting a new directory and performing:
+
+[code]
+util/config system directory_server https://newdirectory.something
+[/code]
+
+Eventually we hope to make this a selectable box from the site admin panel.
+
+
+[h2]Directory realms[/h2]
+
+Large organisations may wish to use directory 'realms' rather than a single standalone directory. The standard and default realm is known as RED_GLOBAL. By creating a new realm, your organisation has the ability to create its own hierarchy of primary and secondary servers and clients.
+
+[code]
+util/config system directory_realm MY_REALM
+[/code]
+
+Your realm *must* have a primary directory. Create this first. Then set the realm the same on all sites within your directory realm (servers and clients).
+
+You may also provide a "sub-realm" that operates indepently from the RED_GLOBAL realm (or any other realm) but allows cross membership and some ability to lookup members of the entire directory space. This has only undergone light testing so be prepared to help out and fix any issues that may arise. A sub-realm contains its parent realm within the realm name.
+
+
+[code]
+util/config system directory_realm RED_GLOBAL:MY_REALM
+[/code]
+
+
+[b]Realm access[/b]
+
+You may wish that your directory servers and services are only used by members of your realm. To do this a token or password must be supplied to access the realm directory services. This token is not encrypted during transit, but is sufficient to prevent casual access to your directory servers. The following must be configured for all sites (clients and directory servers) within the realm:
+
+[code]
+util/config system realm_token my-secret-realm-password
+[/code]
+
+
+
+[h2]Directory mirrors[/h2]
+
+Mirroring occurs with a daily transaction log of activities which are shared between directory servers. In the case of directory and profile updates, the channel address performing the update is transmitted, and the other directory servers probe that channel at its source for changes. We do not and should not trust any information given us by other directory servers. We always check the information at the source.
+
+Ratings are handled slightly differently - an encrypted packet (signed by the channel that created the rating) is passed between the servers. This signature needs to be verified before the rating is accepted. Ratings are always published to the primary directory server and propagated to all other directory servers from there. For this reason there can only be one primary server in a realm. If a misconfigured site claims to be a primary directory, it is ignored in the RED_GLOBAL realm. For other realms there is currently no such protection. Be aware of this when working with alternate realms.
+
+Newly created directory servers are not provided a "full dump", but for performance reasons and minimal disruption to the other servers in the network, they are brought online slowly. It may take up to a month for a new secondary directory server to provide a full view of the network. Please do not add any secondary servers to the hard-coded list of fallback directory servers until it has been operating as a directory for at least a month.
+
+All channels are configured to "ping" their directory server once a month, at somewhat random times during the month. This gives the ability for the directory to discover dead channels and sites (they stop pinging). Subsequently they are marked dead or unreachable and over time will be removed from the directory results.
+
+Channels may be configured to be "hidden" from the directory. These channels may still exist in the directory but will be un-searchable and some "sensitive" personal information will not be stored at all.
+
+ \ No newline at end of file
diff --git a/doc/faq_developers.bb b/doc/faq_developers.bb
index 027efe8f4..c74ec3c56 100644
--- a/doc/faq_developers.bb
+++ b/doc/faq_developers.bb
@@ -28,6 +28,427 @@ function foo() {
[/code]
+An example (large) &$a object showing some of its many members and structures-- in JSON format for easier readability-- is here:
+
+[code] {
+ "category": null,
+ "nav_sel": {
+ "home": null,
+ "community": null,
+ "contacts": null,
+ "directory": null,
+ "settings": null,
+ "notifications": null,
+ "intros": null,
+ "messages": null,
+ "register": null,
+ "manage": null,
+ "profiles": null,
+ "network": null,
+ "help": "active"
+ },
+ "argc": 2,
+ "install": false,
+ "is_mobile": false,
+ "timezone": "America/Los_Angeles",
+ "sourcename": "",
+ "module_loaded": true,
+ "contacts": null,
+ "interactive": true,
+ "config": {
+ "system": {
+ "max_import_size": 200000,
+ "logfile": "/tmp/hubzilla.log",
+ "channels_active_monthly_stat": "3",
+ "last_expire_day": "4",
+ "loglevel": "4",
+ "sitename": "Hubzilla",
+ "access_policy": 0,
+ "directory_mode": 0,
+ "debugging": "1",
+ "verify_email": 1,
+ "register_text": "",
+ "urlverify": "687474703a2f2f6875627a696c6c61",
+ "register_policy": 2,
+ "theme": "redbasic",
+ "smarty3_folder": "/home/src/hubzilla/store/[data]/smarty3",
+ "channels_total_stat": "4",
+ "admin_email": "foo@bar.com",
+ "channels_active_halfyear_stat": "3",
+ "location_hash": "910792b7bf75296cbf238ae29a5493f3c78805812652d3f0396e88763a26ce1b",
+ "local_posts_stat": "63",
+ "lastpollcheck": "2015-11-03 07:40:38",
+ "baseurl": "http://hubzilla",
+ "config_loaded": true,
+ "pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAuR4neYAxuWwZg34fqofU\nZg8y1YSTX39Tzhgcgn7QFCeH600NHJBHWXbPdS5imdYq6W+P1vtKxsVNLI9d01+j\ns3MF3amgEuJH0X+JLLjyittQksyAiukvh/o4MSit8mcYcXs8Dxaybe+KaY09N4ys\ndxKcn6EPlthUiQPJMPitybp4vYkw9LupWZOQWThz9ur6T5wnk9ehBIPFN8gYvKrT\nAG9RFfbq3y59rTOiSHNA2PIUMzo2HEh4QBVCvVolKt7GPhUM4Bze40VRe8ELZTPp\nyehNxEHyhHZfnC+XRVNlvSPXBU2vtE+zcok+5DXsKAqMt8YgFIThNEOLQKvff/lv\nsdGvk6jJZok7+9lKtYfwnNnRWf51aVVuSAO3aIIVLroLyhiji0KA7G5YRHeF1rNL\np88e8peMyUMCX2Svv1wudJzqOfWSvOpY0NLZrdGZXRN2/rXyHPRD/TtS3SNDdd7J\nYQUjyxGjF1/zB3xqvPr09s8tzXqJl9pZNcN9iz58oPBbTuGdUr8CJro/3nVHgkRf\nw7/zhapSW1UaroJjecrC9yWx5QUD3KNU51phsP9iHCFdMyPBdUHjmNvE5f7YJWBh\nO1rRKUoE3i+eHLYAWeYblFX7T+EKOCB2hd3NUrIqDL98OSpfDiZT7rf9PdcWCOY5\nuddm6KzwHjffl5kZd8MM8bMCAwEAAQ==\n-----END PUBLIC KEY-----\n",
+ "addon": "converse",
+ "lastpoll": "2015-11-04 07:40:01",
+ "php_path": "/usr/bin/php",
+ "allowed_themes": "redbasic",
+ "sellpage": "",
+ "prvkey": "-----BEGIN PRIVATE KEY-----\n-----END PRIVATE KEY-----\n",
+ "directory_server": "https://red.zottel.red",
+ "curl_ssl_ciphers": "ALL:!eNULL",
+ "db_version": "1158"
+ },
+ "config": {
+ "config_loaded": true
+ },
+ "feature": {
+ "config_loaded": true
+ },
+ "2": {
+ "redbasic": {
+ "schema": "dark",
+ "comment_indent": "",
+ "toolicon_activecolour": "",
+ "item_colour": "",
+ "nav_gradient_top": "",
+ "nav_active_icon_colour": "",
+ "nav_active_gradient_top": "",
+ "top_photo": "",
+ "converse_width": "",
+ "nav_min_opacity": "",
+ "body_font_size": "",
+ "reply_photo": "",
+ "background_colour": "",
+ "radius": "",
+ "nav_gradient_bottom": "",
+ "toolicon_colour": "",
+ "nav_active_gradient_bottom": "",
+ "nav_icon_colour": "",
+ "narrow_navbar": "",
+ "nav_bg": "",
+ "comment_item_colour": "",
+ "config_loaded": true,
+ "banner_colour": "",
+ "comment_border_colour": "",
+ "align_left": "",
+ "font_size": "",
+ "font_colour": "",
+ "nav_bd": "",
+ "photo_shadow": "",
+ "background_image": "",
+ "link_colour": ""
+ },
+ "system": {
+ "network_list_mode": "0",
+ "post_joingroup": "0",
+ "channel_list_mode": "0",
+ "title_tosource": "0",
+ "blocktags": "0",
+ "photo_path": "%Y-%m",
+ "suggestme": "0",
+ "autoperms": "0",
+ "hide_presence": "0",
+ "channel_divmore_height": "400",
+ "network_divmore_height": "400",
+ "post_profilechange": "0",
+ "channel_menu": "",
+ "always_show_in_notices": "0",
+ "use_browser_location": "0",
+ "update_interval": "80000",
+ "itemspage": "20",
+ "attach_path": "%Y-%m",
+ "permissions_role": "social",
+ "vnotify": "2047",
+ "post_newfriend": "0",
+ "config_loaded": true,
+ "no_smilies": "0",
+ "evdays": "3",
+ "user_scalable": "1"
+ }
+ }
+ },
+ "layout": {
+ "region_aside": "\n&lt;div class=&quot;widget&quot;&gt;&lt;h3&gt;Documentation&lt;/h3&gt;&lt;ul class=&quot;nav nav-pills nav-stacked&quot;&gt;&lt;li&gt;&lt;a href=&quot;help/general&quot;&gt;Project/Site Information&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;help/members&quot;&gt;For Members&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;help/admins&quot;&gt;For Administrators&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;help/develop&quot;&gt;For Developers&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;\n"
+ },
+ "is_sys": false,
+ "content": null,
+ "cid": null,
+ "profile_uid": 0,
+ "hooks": {
+ "construct_page": [
+ [
+ "addon/converse/converse.php",
+ "converse_content"
+ ]
+ ]
+ },
+ "strings": [],
+ "js_sources": [
+ "jquery.js",
+ "library/justifiedGallery/jquery.justifiedGallery.min.js",
+ "library/sprintf.js/dist/sprintf.min.js",
+ "spin.js",
+ "jquery.spin.js",
+ "jquery.textinputs.js",
+ "autocomplete.js",
+ "library/jquery-textcomplete/jquery.textcomplete.js",
+ "library/jquery.timeago.js",
+ "library/readmore.js/readmore.js",
+ "library/jgrowl/jquery.jgrowl_minimized.js",
+ "library/cryptojs/components/core-min.js",
+ "library/cryptojs/rollups/aes.js",
+ "library/cryptojs/rollups/rabbit.js",
+ "library/cryptojs/rollups/tripledes.js",
+ "acl.js",
+ "webtoolkit.base64.js",
+ "main.js",
+ "crypto.js",
+ "library/jRange/jquery.range.js",
+ "library/colorbox/jquery.colorbox-min.js",
+ "library/jquery.AreYouSure/jquery.are-you-sure.js",
+ "library/tableofcontents/jquery.toc.js",
+ "library/bootstrap/js/bootstrap.min.js",
+ "library/bootbox/bootbox.min.js",
+ "library/bootstrap-tagsinput/bootstrap-tagsinput.js",
+ "library/datetimepicker/jquery.datetimepicker.js",
+ "library/bootstrap-colorpicker/dist/js/bootstrap-colorpicker.js",
+ "view/theme/redbasic/js/redbasic.js",
+ "mod_help.js"
+ ],
+ "channel": {
+ "channel_hash": "uRy0nF-urp6k_bFrkdtCc2EkBynwpgCJL_FQFoTwyw2Hep7AHkrSt1MZcHWV_8DQucNlHSY1vHgUNS2Fvoirpw",
+ "channel_address": "testes",
+ "channel_primary": "1",
+ "channel_allow_gid": "",
+ "xchan_deleted": "0",
+ "xchan_connpage": "",
+ "channel_r_storage": "1",
+ "xchan_pubforum": "0",
+ "channel_pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA7MP/xxsq/srA8I7m+WKf\nHlguwwg0b1tz+I3o+djp7b+wF8q03XPKQpYmKfXIj47vpAOu75nKA4Tn90lLymmk\nSXUHogOqOMy1CHoaVrAw2T2/tAeRoMAjAJ5IxSOAM7Xda0nVUK6FmfxPcvftKf9y\nPmvvFadXpaHT4JGPH0tszDhGXLkqlt9xSkIkpsgMA6emj/7bacc6x8eTdtvzo2e5\n/NyPXvBKH4henmYaKjq/4aIYZcBWYVGt6onxaP2j1cSNbksnOY7GbJl+hy95iFoZ\nDWGxiFwQd+CroiBbdlpVGp13cV/WKp2spZzlzkmCRGYoNbbM5RlgFLnmyTa4XMZE\nwnA3ZUB59MsrUJK+0H/utiZrpX5NQcFl33z8k5zB3pPnhc5S5/P+UJZRnqhet1wQ\n7AZVmdP30D75QD8LZ4SytZ1DHn/N76EsVhSADNMnUfEphs708V33Z0gFWultYDoK\nlvXUf4O0/V8GTufFHb6XdAiy92IUzrormXCpXoOmdOcJdaH9RnotZi/DkuQ0zP+Y\nCvxU9nrjyZvAwAdew//XFDjw4HoThVM4k4jzkIhCTlCao/yRnNM7A/i3OKcXq9wU\n7OZqcRfM9o0BFpZTIoXB7BMtpeioJcBi/7FUaV9U9uYLFuLL0qWa1YxLwfsN9rDk\n6A1gbhD60G9/dAbolp8xAHkCAwEAAQ==\n-----END PUBLIC KEY-----\n",
+ "xchan_flags": "0",
+ "channel_allow_cid": "",
+ "xchan_censored": "0",
+ "channel_w_pages": "128",
+ "xchan_instance_url": "",
+ "xchan_photo_s": "http://hubzilla/photo/profile/s/2",
+ "channel_w_stream": "128",
+ "channel_timezone": "America/Los_Angeles",
+ "xchan_pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA7MP/xxsq/srA8I7m+WKf\nHlguwwg0b1tz+I3o+djp7b+wF8q03XPKQpYmKfXIj47vpAOu75nKA4Tn90lLymmk\nSXUHogOqOMy1CHoaVrAw2T2/tAeRoMAjAJ5IxSOAM7Xda0nVUK6FmfxPcvftKf9y\nPmvvFadXpaHT4JGPH0tszDhGXLkqlt9xSkIkpsgMA6emj/7bacc6x8eTdtvzo2e5\n/NyPXvBKH4henmYaKjq/4aIYZcBWYVGt6onxaP2j1cSNbksnOY7GbJl+hy95iFoZ\nDWGxiFwQd+CroiBbdlpVGp13cV/WKp2spZzlzkmCRGYoNbbM5RlgFLnmyTa4XMZE\nwnA3ZUB59MsrUJK+0H/utiZrpX5NQcFl33z8k5zB3pPnhc5S5/P+UJZRnqhet1wQ\n7AZVmdP30D75QD8LZ4SytZ1DHn/N76EsVhSADNMnUfEphs708V33Z0gFWultYDoK\nlvXUf4O0/V8GTufFHb6XdAiy92IUzrormXCpXoOmdOcJdaH9RnotZi/DkuQ0zP+Y\nCvxU9nrjyZvAwAdew//XFDjw4HoThVM4k4jzkIhCTlCao/yRnNM7A/i3OKcXq9wU\n7OZqcRfM9o0BFpZTIoXB7BMtpeioJcBi/7FUaV9U9uYLFuLL0qWa1YxLwfsN9rDk\n6A1gbhD60G9/dAbolp8xAHkCAwEAAQ==\n-----END PUBLIC KEY-----\n",
+ "channel_w_chat": "128",
+ "xchan_connurl": "http://hubzilla/poco/testes",
+ "channel_guid_sig": "XXX",
+ "xchan_name_date": "2015-10-09 00:45:41",
+ "channel_expire_days": "0",
+ "xchan_system": "0",
+ "xchan_photo_date": "2015-10-09 00:45:41",
+ "channel_startpage": "",
+ "channel_deny_gid": "",
+ "channel_lastpost": "2015-10-09 02:53:23",
+ "xchan_photo_m": "http://hubzilla/photo/profile/m/2",
+ "channel_passwd_reset": "",
+ "xchan_hidden": "0",
+ "xchan_selfcensored": "0",
+ "xchan_photo_mimetype": "image/jpeg",
+ "channel_a_republish": "128",
+ "channel_w_tagwall": "128",
+ "channel_r_stream": "1",
+ "channel_w_comment": "128",
+ "channel_system": "0",
+ "channel_w_mail": "128",
+ "channel_pageflags": "0",
+ "xchan_network": "zot",
+ "channel_id": "2",
+ "xchan_guid": "Ok-ycNKQYMzjokLnIz5OTCF8M5f4CtRT4vJCUeUivJhIOJWk3ORwIQgGx3P5g2Yz79KxQ-rs_Cn2G_jsgM6hmw",
+ "channel_removed": "0",
+ "channel_dirdate": "2015-10-09 00:46:00",
+ "channel_w_storage": "128",
+ "channel_w_photos": "0",
+ "channel_prvkey": "-----BEGIN PRIVATE KEY----------END PRIVATE KEY-----\n",
+ "channel_guid": "Ok-ycNKQYMzjokLnIz5OTCF8M5f4CtRT4vJCUeUivJhIOJWk3ORwIQgGx3P5g2Yz79KxQ-rs_Cn2G_jsgM6hmw",
+ "channel_max_friend_req": "0",
+ "channel_w_wall": "128",
+ "channel_r_abook": "1",
+ "channel_max_anon_mail": "0",
+ "channel_location": "",
+ "channel_a_delegate": "128",
+ "channel_deny_cid": "",
+ "channel_r_profile": "1",
+ "channel_name": "testes",
+ "xchan_guid_sig": "XXX",
+ "xchan_hash": "uRy0nF-urp6k_bFrkdtCc2EkBynwpgCJL_FQFoTwyw2Hep7AHkrSt1MZcHWV_8DQucNlHSY1vHgUNS2Fvoirpw",
+ "channel_notifyflags": "703",
+ "channel_theme": "redbasic",
+ "channel_w_like": "2",
+ "xchan_url": "http://hubzilla/channel/testes",
+ "channel_default_group": "",
+ "channel_r_photos": "0",
+ "channel_account_id": "1",
+ "xchan_addr": "testes@hubzilla",
+ "channel_r_pages": "1",
+ "channel_deleted": "0000-00-00 00:00:00",
+ "xchan_orphan": "0",
+ "xchan_follow": "http://hubzilla/follow?f=&amp;url=%s",
+ "xchan_name": "testes",
+ "xchan_photo_l": "http://hubzilla/photo/profile/l/2"
+ },
+ "page": {
+ "content": "&lt;div id=&quot;help-content&quot; class=&quot;generic-content-wrapper&quot;&gt;\n\t&lt;div class=&quot;section-title-wrapper&quot;&gt;\n\t&lt;h2&gt;Hubzilla Documentation&lt;/h2&gt;\n\t&lt;/div&gt;\n\t&lt;div class=&quot;section-content-wrapper&quot;&gt;\n\t&lt;h2&gt;Documentation for Developers&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Technical Documentation&lt;/h3&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/Zot---A-High-Level-Overview&quot; target=&quot;_newwin&quot; &gt;A high level overview of Zot&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/zot&quot; target=&quot;_newwin&quot; &gt;An introduction to Zot&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/zot_structures&quot; target=&quot;_newwin&quot; &gt;Zot Stuctures&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/comanche&quot; target=&quot;_newwin&quot; &gt;Comanche Page Descriptions&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/Creating-Templates&quot; target=&quot;_newwin&quot; &gt;Creating Comanche Templates&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/Widgets&quot; target=&quot;_newwin&quot; &gt;Widgets&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/plugins&quot; target=&quot;_newwin&quot; &gt;Plugins&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/hooks&quot; target=&quot;_newwin&quot; &gt;Hooks&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/doco&quot; target=&quot;_newwin&quot; &gt;Contributing Documentation&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/DerivedTheme1&quot; target=&quot;_newwin&quot; &gt;Creating Derivative Themes&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/schema_development&quot; target=&quot;_newwin&quot; &gt;Schemas&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/Translations&quot; target=&quot;_newwin&quot; &gt;Translations&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/developers&quot; target=&quot;_newwin&quot; &gt;Developers&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/intro_for_developers&quot; target=&quot;_newwin&quot; &gt;Intro for Developers&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/database&quot; target=&quot;_newwin&quot; &gt;Database schema documantation&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/api_functions&quot; target=&quot;_newwin&quot; &gt;API functions&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/api_posting&quot; target=&quot;_newwin&quot; &gt;Posting to the red# using the API&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/developer_function_primer&quot; target=&quot;_newwin&quot; &gt;Red Functions 101&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/doc/html/&quot; target=&quot;_newwin&quot; &gt;Code Reference (Doxygen generated - sets cookies)&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/to_do_doco&quot; target=&quot;_newwin&quot; &gt;To-Do list for the Red Documentation Project&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/to_do_code&quot; target=&quot;_newwin&quot; &gt;To-Do list for Developers&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/roadmap&quot; target=&quot;_newwin&quot; &gt;Version 3 roadmap&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/git_for_non_developers&quot; target=&quot;_newwin&quot; &gt;Git for Non-Developers&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/dev_beginner&quot; target=&quot;_newwin&quot; &gt;Step-for-step manual for beginning developers&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Frequently Asked Questions For Developers&lt;/h3&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/faq_developers&quot; target=&quot;_newwin&quot; &gt;FAQ For Developers&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;External Resources&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://zothub.com/channel/one&quot; target=&quot;_newwin&quot; &gt;Development Channel&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://federated.social/channel/postgres&quot; target=&quot;_newwin&quot; &gt;Postgres-specific Hubzilla Admin Support Channel&lt;/a&gt;&lt;br /&gt;\n\t&lt;/div&gt;\n&lt;/div&gt;\n&lt;script&gt;var homebase = &quot;http://hubzilla/channel/testes&quot;;&lt;/script&gt;",
+ "page_title": "help",
+ "title": "Help: Develop",
+ "nav": "\t&lt;div class=&quot;container-fluid&quot;&gt;\n\t\t&lt;div class=&quot;navbar-header&quot;&gt;\n\t\t\t&lt;button type=&quot;button&quot; class=&quot;navbar-toggle&quot; data-toggle=&quot;collapse&quot; data-target=&quot;#navbar-collapse-1&quot;&gt;\n\t\t\t\t&lt;span class=&quot;icon-bar&quot;&gt;&lt;/span&gt;\n\t\t\t\t&lt;span class=&quot;icon-bar&quot;&gt;&lt;/span&gt;\n\t\t\t\t&lt;span class=&quot;icon-bar&quot;&gt;&lt;/span&gt;\n\t\t\t&lt;/button&gt;\n\t\t\t&lt;button id=&quot;expand-tabs&quot; type=&quot;button&quot; class=&quot;navbar-toggle&quot; data-toggle=&quot;collapse&quot; data-target=&quot;#tabs-collapse-1&quot;&gt;\n\t\t\t\t&lt;i class=&quot;icon-circle-arrow-down&quot; id=&quot;expand-tabs-icon&quot;&gt;&lt;/i&gt;\n\t\t\t&lt;/button&gt;\n\t\t\t&lt;button id=&quot;expand-aside&quot; type=&quot;button&quot; class=&quot;navbar-toggle&quot; data-toggle=&quot;offcanvas&quot; data-target=&quot;#region_1&quot;&gt;\n\t\t\t\t&lt;i class=&quot;icon-circle-arrow-right&quot; id=&quot;expand-aside-icon&quot;&gt;&lt;/i&gt;\n\t\t\t&lt;/button&gt;\n\t\t\t\t\t\t\t&lt;img class=&quot;dropdown-toggle fakelink&quot; data-toggle=&quot;dropdown&quot; id=&quot;avatar&quot; src=&quot;http://hubzilla/photo/profile/m/2&quot; alt=&quot;testes@hubzilla&quot;&gt;&lt;span class=&quot;caret&quot; id=&quot;usermenu-caret&quot;&gt;&lt;/span&gt;\n\t\t\t\t\t\t\t\t\t&lt;ul class=&quot;dropdown-menu&quot; role=&quot;menu&quot; aria-labelledby=&quot;avatar&quot;&gt;\n\t\t\t\t\t\t\t\t\t\t\t\t&lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;channel/testes&quot; title=&quot;Your posts and conversations&quot; role=&quot;menuitem&quot; id=&quot;channel_nav_btn&quot;&gt;Home&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t\t\t\t\t\t\t&lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;profile/testes&quot; title=&quot;Your profile page&quot; role=&quot;menuitem&quot; id=&quot;profile_nav_btn&quot;&gt;View Profile&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t\t\t\t\t\t\t&lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;profiles/2&quot; title=&quot;Edit your profile&quot; role=&quot;menuitem&quot; id=&quot;profiles_nav_btn&quot;&gt;Edit Profile&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t\t\t\t\t\t\t&lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;photos/testes&quot; title=&quot;Your photos&quot; role=&quot;menuitem&quot; id=&quot;photos_nav_btn&quot;&gt;Photos&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t\t\t\t\t\t\t&lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;cloud/testes&quot; title=&quot;Your files&quot; role=&quot;menuitem&quot; id=&quot;cloud_nav_btn&quot;&gt;Files&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t\t\t\t\t\t\t&lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;chat/testes/new&quot; title=&quot;Your chatrooms&quot; role=&quot;menuitem&quot; id=&quot;chat_nav_btn&quot;&gt;Chat&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t\t\t\t\t\t\t&lt;li role=&quot;presentation&quot; class=&quot;divider&quot;&gt;&lt;/li&gt;\n\t\t\t\t\t\t\t\t\t\t\t\t&lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;settings&quot; title=&quot;Account/Channel Settings&quot; role=&quot;menuitem&quot; id=&quot;settings_nav_btn&quot;&gt;Settings&lt;/a&gt;&lt;/li&gt;\t\t\t\t\t\t&lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;manage&quot; title=&quot;Manage Your Channels&quot; role=&quot;menuitem&quot; id=&quot;manage_nav_btn&quot;&gt;Channel Manager&lt;/a&gt;&lt;/li&gt;\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t&lt;li role=&quot;presentation&quot; class=&quot;divider&quot;&gt;&lt;/li&gt;\n\t\t\t\t\t\t&lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;admin/&quot; title=&quot;Site Setup and Configuration&quot; role=&quot;menuitem&quot; id=&quot;admin_nav_btn&quot;&gt;Admin&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t&lt;li role=&quot;presentation&quot; class=&quot;divider&quot;&gt;&lt;/li&gt;\n\t\t\t\t\t\t&lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;logout&quot; title=&quot;End this session&quot; role=&quot;menuitem&quot; id=&quot;logout_nav_btn&quot;&gt;Logout&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t\t\t\t\t\t&lt;/ul&gt;\n\t\t\t\t\t\t\t\t\t&lt;/div&gt;\n\t\t&lt;div class=&quot;collapse navbar-collapse&quot; id=&quot;navbar-collapse-1&quot;&gt;\n\t\t\t&lt;ul class=&quot;nav navbar-nav navbar-left&quot;&gt;\n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\t\t\t\t&lt;li class=&quot; hidden-xs&quot;&gt;\n\t\t\t\t\t&lt;a href=&quot;network&quot; title=&quot;Your grid&quot; id=&quot;network_nav_btn&quot;&gt;&lt;i class=&quot;icon-th&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;net-update badge dropdown-toggle&quot; data-toggle=&quot;dropdown&quot; rel=&quot;#nav-network-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t\t&lt;ul id=&quot;nav-network-menu&quot; role=&quot;menu&quot; class=&quot;dropdown-menu&quot; rel=&quot;network&quot;&gt;\n\t\t\t\t\t\t\n\t\t\t\t\t\t&lt;li id=&quot;nav-network-mark-all&quot;&gt;&lt;a href=&quot;#&quot; onclick=&quot;markRead('network'); return false;&quot;&gt;Mark all grid notifications seen&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t&lt;li class=&quot;empty&quot;&gt;Loading...&lt;/li&gt;\n\t\t\t\t\t&lt;/ul&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\t&lt;li class=&quot; visible-xs&quot;&gt;\n\t\t\t\t\t&lt;a href=&quot;network&quot; title=&quot;Your grid&quot; &gt;&lt;i class=&quot;icon-th&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;net-update badge&quot; rel=&quot;#nav-network-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\n\t\t\t\t\t\t\t&lt;li class=&quot; hidden-xs&quot;&gt;\n\t\t\t\t\t&lt;a class=&quot;&quot; href=&quot;channel/testes&quot; title=&quot;Channel home&quot; id=&quot;home_nav_btn&quot;&gt;&lt;i class=&quot;icon-home&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;home-update badge dropdown-toggle&quot; data-toggle=&quot;dropdown&quot; rel=&quot;#nav-home-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t\t&lt;ul id=&quot;nav-home-menu&quot; class=&quot;dropdown-menu&quot; rel=&quot;home&quot;&gt;\n\t\t\t\t\t\t\n\t\t\t\t\t\t&lt;li id=&quot;nav-home-mark-all&quot;&gt;&lt;a href=&quot;#&quot; onclick=&quot;markRead('home'); return false;&quot;&gt;Mark all channel notifications seen&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t&lt;li class=&quot;empty&quot;&gt;Loading...&lt;/li&gt;\n\t\t\t\t\t&lt;/ul&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\t&lt;li class=&quot; visible-xs&quot;&gt;\n\t\t\t\t\t&lt;a class=&quot;&quot; href=&quot;channel/testes&quot; title=&quot;Channel home&quot; &gt;&lt;i class=&quot;icon-home&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;home-update badge&quot; rel=&quot;#nav-home-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\n\n\t\t\t\t\t\t\t&lt;li class=&quot; hidden-xs&quot;&gt;\n\t\t\t\t\t&lt;a class=&quot;&quot; href=&quot;mail/combined&quot; title=&quot;Private mail&quot; id=&quot;mail_nav_btn&quot;&gt;&lt;i class=&quot;icon-envelope&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;mail-update badge dropdown-toggle&quot; data-toggle=&quot;dropdown&quot; rel=&quot;#nav-messages-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t\t&lt;ul id=&quot;nav-messages-menu&quot; class=&quot;dropdown-menu&quot; rel=&quot;messages&quot;&gt;\n\t\t\t\t\t\t&lt;li id=&quot;nav-messages-see-all&quot;&gt;&lt;a href=&quot;mail/combined&quot;&gt;See all private messages&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t&lt;li id=&quot;nav-messages-mark-all&quot;&gt;&lt;a href=&quot;#&quot; onclick=&quot;markRead('messages'); return false;&quot;&gt;Mark all private messages seen&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t&lt;li class=&quot;empty&quot;&gt;Loading...&lt;/li&gt;\n\t\t\t\t\t&lt;/ul&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\t&lt;li class=&quot; visible-xs&quot;&gt;\n\t\t\t\t\t&lt;a class=&quot;&quot; href=&quot;mail/combined&quot; title=&quot;Private mail&quot; &gt;&lt;i class=&quot;icon-envelope&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;mail-update badge&quot; rel=&quot;#nav-messages-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\n\t\t\t\t\t\t\t&lt;li class=&quot; hidden-xs&quot;&gt;\n\t\t\t\t\t&lt;a class=&quot;&quot; href=&quot;events&quot; title=&quot;Event Calendar&quot; id='events_nav_btn'&gt;&lt;i class=&quot;icon-calendar&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;all_events-update badge dropdown-toggle&quot; data-toggle=&quot;dropdown&quot; rel=&quot;#nav-all_events-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t\t&lt;ul id=&quot;nav-all_events-menu&quot; class=&quot;dropdown-menu&quot; rel=&quot;all_events&quot;&gt;\n\t\t\t\t\t\t&lt;li id=&quot;nav-all_events-see-all&quot;&gt;&lt;a href=&quot;events&quot;&gt;See all events&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t&lt;li id=&quot;nav-all_events-mark-all&quot;&gt;&lt;a href=&quot;#&quot; onclick=&quot;markRead('all_events'); return false;&quot;&gt;Mark all events seen&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t&lt;li class=&quot;empty&quot;&gt;Loading...&lt;/li&gt;\n\t\t\t\t\t&lt;/ul&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\t&lt;li class=&quot; visible-xs&quot;&gt;\n\t\t\t\t\t&lt;a class=&quot;&quot; href=&quot;events&quot; title=&quot;Event Calendar&quot; &gt;&lt;i class=&quot;icon-calendar&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;all_events-update badge&quot; rel=&quot;#nav-all_events-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\n\t\t\t\t\t\t\t&lt;li class=&quot; hidden-xs&quot;&gt;\n\t\t\t\t\t&lt;a class=&quot;&quot; href=&quot;connections/ifpending&quot; title=&quot;Connections&quot; id=&quot;connections_nav_btn&quot;&gt;&lt;i class=&quot;icon-user&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;intro-update badge dropdown-toggle&quot; data-toggle=&quot;dropdown&quot; rel=&quot;#nav-intros-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t\t&lt;ul id=&quot;nav-intros-menu&quot; class=&quot;dropdown-menu&quot; rel=&quot;intros&quot;&gt;\n\t\t\t\t\t\t&lt;li id=&quot;nav-intros-see-all&quot;&gt;&lt;a href=&quot;&quot;&gt;&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t&lt;li class=&quot;empty&quot;&gt;Loading...&lt;/li&gt;\n\t\t\t\t\t&lt;/ul&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\t&lt;li class=&quot; visible-xs&quot;&gt;\n\t\t\t\t\t&lt;a class=&quot;&quot; href=&quot;connections/ifpending&quot; title=&quot;Connections&quot; &gt;&lt;i class=&quot;icon-user&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;intro-update badge&quot; rel=&quot;#nav-intros-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\t\t\n\t\t\t\t\t\t\t&lt;li class=&quot; hidden-xs&quot;&gt;\n\t\t\t\t\t&lt;a href=&quot;notifications/system&quot; title=&quot;Notices&quot; id=&quot;notifications_nav_btn&quot;&gt;&lt;i class=&quot;icon-exclamation&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;notify-update badge dropdown-toggle&quot; data-toggle=&quot;dropdown&quot; rel=&quot;#nav-notify-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t\t&lt;ul id=&quot;nav-notify-menu&quot; class=&quot;dropdown-menu&quot; rel=&quot;notify&quot;&gt;\n\t\t\t\t\t\t&lt;li id=&quot;nav-notify-see-all&quot;&gt;&lt;a href=&quot;notifications/system&quot;&gt;See all notifications&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t&lt;li id=&quot;nav-notify-mark-all&quot;&gt;&lt;a href=&quot;#&quot; onclick=&quot;markRead('notify'); return false;&quot;&gt;Mark all system notifications seen&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t&lt;li class=&quot;empty&quot;&gt;Loading...&lt;/li&gt;\n\t\t\t\t\t&lt;/ul&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\t&lt;li class=&quot; visible-xs&quot;&gt;\n\t\t\t\t\t&lt;a href=&quot;notifications/system&quot; title=&quot;Notices&quot;&gt;&lt;i class=&quot;icon-exclamation&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;notify-update badge&quot; rel=&quot;#nav-notify-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\t\t\t&lt;/ul&gt;\n\t\t\t&lt;ul class=&quot;nav navbar-nav navbar-right&quot;&gt;\n\t\t\t\t&lt;li class=&quot;hidden-xs&quot;&gt;\n\t\t\t\t\t&lt;form method=&quot;get&quot; action=&quot;search&quot; role=&quot;search&quot;&gt;\n\t\t\t\t\t\t&lt;div id=&quot;nav-search-spinner&quot;&gt;&lt;/div&gt;&lt;input class=&quot;icon-search&quot; id=&quot;nav-search-text&quot; type=&quot;text&quot; value=&quot;&quot; placeholder=&quot;&amp;#xf002; @name, #tag, ?doc, content&quot; name=&quot;search&quot; title=&quot;Search site @name, #tag, ?docs, content&quot; onclick=&quot;this.submit();&quot;/&gt;\n\t\t\t\t\t&lt;/form&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\t&lt;li class=&quot;visible-xs&quot;&gt;\n\t\t\t\t\t&lt;a href=&quot;/search&quot; title=&quot;Search site @name, #tag, ?docs, content&quot;&gt;&lt;i class=&quot;icon-search&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t&lt;/li&gt;\n\n\t\t\t\t\t\t\t\t\t\t&lt;li class=&quot;&quot;&gt;\n\t\t\t\t\t&lt;a class=&quot;&quot; href=&quot;directory&quot; title=&quot;Channel Directory&quot; id=&quot;directory_nav_btn&quot;&gt;&lt;i class=&quot;icon-sitemap&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\n\t\t\t\t\t\t\t&lt;li class=&quot;&quot;&gt;\n\t\t\t\t\t&lt;a class=&quot;&quot; href=&quot;apps&quot; title=&quot;Applications, utilities, links, games&quot; id=&quot;apps_nav_btn&quot;&gt;&lt;i class=&quot;icon-cogs&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\n\t\t\t\t\t\t\t&lt;li class=&quot;active&quot;&gt;\n\t\t\t\t\t&lt;a class=&quot;&quot; target=&quot;hubzilla-help&quot; href=&quot;http://hubzilla/help?f=&amp;cmd=help/develop&quot; title=&quot;Help and documentation&quot; id=&quot;help_nav_btn&quot;&gt;&lt;i class=&quot;icon-question&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\t\t\t&lt;/ul&gt;\n\t\t&lt;/div&gt;\n\t&lt;/div&gt;\n",
+ "htmlhead": "&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html;charset=utf-8&quot; /&gt;\n&lt;base href=&quot;http://hubzilla/&quot; /&gt;\n&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, height=device-height, initial-scale=1, user-scalable=1&quot; /&gt;\n&lt;meta name=&quot;generator&quot; content=&quot;hubzilla 2015-11-03.1205H&quot; /&gt;\n\n&lt;!--[if IE]&gt;\n&lt;script src=&quot;http://hubzilla/library/html5.js&quot;&gt;&lt;/script&gt;\n&lt;![endif]--&gt;\n\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/library/font_awesome/css/font-awesome.min.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/library/bootstrap/css/bootstrap.min.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/library/bootstrap-tagsinput/bootstrap-tagsinput.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/view/css/bootstrap-red.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/library/datetimepicker/jquery.datetimepicker.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/library/bootstrap-colorpicker/dist/css/bootstrap-colorpicker.min.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/library/tiptip/tipTip.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/library/jgrowl/jquery.jgrowl.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/library/jRange/jquery.range.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/view/css/conversation.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/view/css/widgets.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/view/css/colorbox.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/library/justifiedGallery/justifiedGallery.min.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/view/css/default.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/view/theme/redbasic/php/style.pcss&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n\n\n&lt;script&gt;\n\n\tvar aStr = {\n\n\t\t'delitem' : &quot;Delete this item?&quot;,\n\t\t'comment' : &quot;Comment&quot;,\n\t\t'showmore' : &quot;[+] show all&quot;,\n\t\t'showfewer' : &quot;[-] show less&quot;,\n\t\t'divgrowmore' : &quot;[+] expand&quot;,\n\t\t'divgrowless' : &quot;[-] collapse&quot;,\n\t\t'pwshort' : &quot;Password too short&quot;,\n\t\t'pwnomatch' : &quot;Passwords do not match&quot;,\n\t\t'everybody' : &quot;everybody&quot;,\n\t\t'passphrase' : &quot;Secret Passphrase&quot;,\n\t\t'passhint' : &quot;Passphrase hint&quot;,\n\t\t'permschange' : &quot;Notice: Permissions have changed but have not yet been submitted.&quot;,\n\t\t'closeAll' : &quot;close all&quot;,\n\t\t'nothingnew' : &quot;Nothing new here&quot;,\n\t\t'rating_desc' : &quot;Rate This Channel (this is public)&quot;,\n\t\t'rating_val' : &quot;Rating&quot;,\n\t\t'rating_text' : &quot;Describe (optional)&quot;,\n\t\t'submit' : &quot;Submit&quot;,\n\t\t'linkurl' : &quot;Please enter a link URL&quot;,\n\t\t'leavethispage' : &quot;Unsaved changes. Are you sure you wish to leave this page?&quot;,\n\n\t\t't01' : &quot;&quot;,\n\t\t't02' : &quot;&quot;,\n\t\t't03' : &quot;ago&quot;,\n\t\t't04' : &quot;from now&quot;,\n\t\t't05' : &quot;less than a minute&quot;,\n\t\t't06' : &quot;about a minute&quot;,\n\t\t't07' : &quot;%d minutes&quot;,\n\t\t't08' : &quot;about an hour&quot;,\n\t\t't09' : &quot;about %d hours&quot;,\n\t\t't10' : &quot;a day&quot;,\n\t\t't11' : &quot;%d days&quot;,\n\t\t't12' : &quot;about a month&quot;,\n\t\t't13' : &quot;%d months&quot;,\n\t\t't14' : &quot;about a year&quot;,\n\t\t't15' : &quot;%d years&quot;,\n\t\t't16' : &quot; &quot;,\n\t\t't17' : &quot;[]&quot;,\n\n\t\t'monthNames' : [ &quot;January&quot;,&quot;February&quot;,&quot;March&quot;,&quot;April&quot;,&quot;May&quot;,&quot;June&quot;,&quot;July&quot;,&quot;August&quot;,&quot;September&quot;,&quot;October&quot;,&quot;November&quot;,&quot;December&quot; ],\n\t\t'monthNamesShort' : [ &quot;Jan&quot;,&quot;Feb&quot;,&quot;Mar&quot;,&quot;Apr&quot;,&quot;May&quot;,&quot;Jun&quot;,&quot;Jul&quot;,&quot;Aug&quot;,&quot;Sep&quot;,&quot;Oct&quot;,&quot;Nov&quot;,&quot;Dec&quot; ],\n\t\t'dayNames' : [&quot;Sunday&quot;,&quot;Monday&quot;,&quot;Tuesday&quot;,&quot;Wednesday&quot;,&quot;Thursday&quot;,&quot;Friday&quot;,&quot;Saturday&quot;],\n\t\t'dayNamesShort' : [&quot;Sun&quot;,&quot;Mon&quot;,&quot;Tue&quot;,&quot;Wed&quot;,&quot;Thu&quot;,&quot;Fri&quot;,&quot;Sat&quot;],\n\t\t'today' : &quot;today&quot;,\n\t\t'month' : &quot;month&quot;,\n\t\t'week' : &quot;week&quot;,\n\t\t'day' : &quot;day&quot;,\n\t\t'allday' : &quot;All day&quot;\n\t};\n\n&lt;/script&gt;\n\t\t\n\n\n&lt;script src=&quot;http://hubzilla/view/js/jquery.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/justifiedGallery/jquery.justifiedGallery.min.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/sprintf.js/dist/sprintf.min.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/view/js/spin.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/view/js/jquery.spin.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/view/js/jquery.textinputs.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/view/js/autocomplete.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/jquery-textcomplete/jquery.textcomplete.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/jquery.timeago.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/readmore.js/readmore.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/jgrowl/jquery.jgrowl_minimized.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/cryptojs/components/core-min.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/cryptojs/rollups/aes.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/cryptojs/rollups/rabbit.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/cryptojs/rollups/tripledes.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/view/js/acl.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/view/js/webtoolkit.base64.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/view/js/crypto.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/jRange/jquery.range.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/colorbox/jquery.colorbox-min.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/jquery.AreYouSure/jquery.are-you-sure.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/tableofcontents/jquery.toc.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/bootstrap/js/bootstrap.min.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/bootbox/bootbox.min.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/bootstrap-tagsinput/bootstrap-tagsinput.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/datetimepicker/jquery.datetimepicker.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/bootstrap-colorpicker/dist/js/bootstrap-colorpicker.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/view/theme/redbasic/js/redbasic.js&quot; &gt;&lt;/script&gt;\r\n\n\n&lt;link rel=&quot;shortcut icon&quot; href=&quot;http://hubzilla/images/hz-32.png&quot; /&gt;\n&lt;link rel=&quot;search&quot;\n href=&quot;http://hubzilla/opensearch&quot; \n type=&quot;application/opensearchdescription+xml&quot; \n title=&quot;Search in the Hubzilla&quot; /&gt;\n\n\n&lt;script&gt;\n\n\tvar updateInterval = 80000;\n\tvar localUser = 2;\n\tvar zid = 'testes@hubzilla';\n\tvar justifiedGalleryActive = false;\n\t\t\n&lt;/script&gt;\n\n\n\n\n&lt;script&gt;$(document).ready(function() {\n\t$(&quot;#nav-search-text&quot;).search_autocomplete('http://hubzilla/acl');\n});\n\n&lt;/script&gt;&lt;script src=&quot;http://hubzilla/view/js/main.js&quot; &gt;&lt;/script&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/addon/converse/converse.min.js&quot; media=&quot;all&quot; /&gt;&lt;script src=&quot;http://hubzilla/addon/converse/converse.min.js&quot;&gt;&lt;/script&gt;",
+ "header": "&lt;div id=&quot;banner&quot; class=&quot;hidden-sm hidden-xs&quot;&gt;Hubzilla&lt;/div&gt;\n\n&lt;ul id=&quot;nav-notifications-template&quot; style=&quot;display:none;&quot; rel=&quot;template&quot;&gt;\n\t&lt;li class=&quot;{5}&quot;&gt;&lt;a href=&quot;{0}&quot; title=&quot;{2} {3}&quot;&gt;&lt;img data-src=&quot;{1}&quot;&gt;&lt;span class=&quot;contactname&quot;&gt;{2}&lt;/span&gt;&lt;span class=&quot;dropdown-sub-text&quot;&gt;{3}&lt;br&gt;{4}&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;\n&lt;/ul&gt;\n"
+ },
+ "poi": null,
+ "force_max_items": 0,
+ "module": "help",
+ "template_engines": {
+ "smarty3": "FriendicaSmartyEngine",
+ "internal": "Template"
+ },
+ "account": {
+ "account_flags": "0",
+ "account_service_class": "",
+ "account_id": "1",
+ "account_salt": "9bf8c193c35a56c4c666f47728fe20da",
+ "account_expires": "0000-00-00 00:00:00",
+ "account_lastlog": "2015-11-04 07:47:55",
+ "account_password_changed": "0000-00-00 00:00:00",
+ "account_language": "en",
+ "account_default_channel": "2",
+ "account_password": "",
+ "account_parent": "1",
+ "account_expire_notified": "0000-00-00 00:00:00",
+ "account_reset": "",
+ "account_email": "foo@bar.com",
+ "account_level": "0",
+ "account_roles": "4096",
+ "account_external": "",
+ "account_created": "2015-10-09 00:44:51"
+ },
+ "theme_info": [],
+ "argv": [
+ "help",
+ "develop"
+ ],
+ "template_engine_instance": {
+ "smarty3": {}
+ },
+ "language": "en",
+ "pager": {
+ "page": 1,
+ "itemspage": 60,
+ "start": 0,
+ "total": 0
+ },
+ "plugins": [
+ "converse"
+ ],
+ "error": false,
+ "pdl": "[region=aside]\n[widget=helpindex][/widget]\n[/region]\n",
+ "query_string": "help/develop",
+ "cmd": "help/develop",
+ "groups": null,
+ "videowidth": 425,
+ "css_sources": [
+ [
+ "library/font_awesome/css/font-awesome.min.css",
+ "screen"
+ ],
+ [
+ "library/bootstrap/css/bootstrap.min.css",
+ "screen"
+ ],
+ [
+ "library/bootstrap-tagsinput/bootstrap-tagsinput.css",
+ "screen"
+ ],
+ [
+ "view/css/bootstrap-red.css",
+ "screen"
+ ],
+ [
+ "library/datetimepicker/jquery.datetimepicker.css",
+ "screen"
+ ],
+ [
+ "library/bootstrap-colorpicker/dist/css/bootstrap-colorpicker.min.css",
+ "screen"
+ ],
+ [
+ "library/tiptip/tipTip.css",
+ "screen"
+ ],
+ [
+ "library/jgrowl/jquery.jgrowl.css",
+ "screen"
+ ],
+ [
+ "library/jRange/jquery.range.css",
+ "screen"
+ ],
+ [
+ "view/css/conversation.css",
+ "screen"
+ ],
+ [
+ "view/css/widgets.css",
+ "screen"
+ ],
+ [
+ "view/css/colorbox.css",
+ "screen"
+ ],
+ [
+ "library/justifiedGallery/justifiedGallery.min.css",
+ "screen"
+ ],
+ [
+ "default.css",
+ "screen"
+ ],
+ [
+ "mod_help.css",
+ "screen"
+ ],
+ [
+ "view/theme/redbasic/php/style.pcss",
+ "screen"
+ ]
+ ],
+ "is_tablet": false,
+ "observer": {
+ "xchan_deleted": "0",
+ "xchan_connpage": "",
+ "xchan_pubforum": "0",
+ "xchan_flags": "0",
+ "xchan_censored": "0",
+ "xchan_instance_url": "",
+ "xchan_photo_s": "http://hubzilla/photo/profile/s/2",
+ "xchan_pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA7MP/xxsq/srA8I7m+WKf\nHlguwwg0b1tz+I3o+djp7b+wF8q03XPKQpYmKfXIj47vpAOu75nKA4Tn90lLymmk\nSXUHogOqOMy1CHoaVrAw2T2/tAeRoMAjAJ5IxSOAM7Xda0nVUK6FmfxPcvftKf9y\nPmvvFadXpaHT4JGPH0tszDhGXLkqlt9xSkIkpsgMA6emj/7bacc6x8eTdtvzo2e5\n/NyPXvBKH4henmYaKjq/4aIYZcBWYVGt6onxaP2j1cSNbksnOY7GbJl+hy95iFoZ\nDWGxiFwQd+CroiBbdlpVGp13cV/WKp2spZzlzkmCRGYoNbbM5RlgFLnmyTa4XMZE\nwnA3ZUB59MsrUJK+0H/utiZrpX5NQcFl33z8k5zB3pPnhc5S5/P+UJZRnqhet1wQ\n7AZVmdP30D75QD8LZ4SytZ1DHn/N76EsVhSADNMnUfEphs708V33Z0gFWultYDoK\nlvXUf4O0/V8GTufFHb6XdAiy92IUzrormXCpXoOmdOcJdaH9RnotZi/DkuQ0zP+Y\nCvxU9nrjyZvAwAdew//XFDjw4HoThVM4k4jzkIhCTlCao/yRnNM7A/i3OKcXq9wU\n7OZqcRfM9o0BFpZTIoXB7BMtpeioJcBi/7FUaV9U9uYLFuLL0qWa1YxLwfsN9rDk\n6A1gbhD60G9/dAbolp8xAHkCAwEAAQ==\n-----END PUBLIC KEY-----\n",
+ "xchan_connurl": "http://hubzilla/poco/testes",
+ "xchan_name_date": "2015-10-09 00:45:41",
+ "xchan_system": "0",
+ "xchan_photo_date": "2015-10-09 00:45:41",
+ "xchan_photo_m": "http://hubzilla/photo/profile/m/2",
+ "xchan_hidden": "0",
+ "xchan_selfcensored": "0",
+ "xchan_photo_mimetype": "image/jpeg",
+ "xchan_network": "zot",
+ "xchan_guid": "Ok-ycNKQYMzjokLnIz5OTCF8M5f4CtRT4vJCUeUivJhIOJWk3ORwIQgGx3P5g2Yz79KxQ-rs_Cn2G_jsgM6hmw",
+ "xchan_guid_sig": "XXX",
+ "xchan_hash": "uRy0nF-urp6k_bFrkdtCc2EkBynwpgCJL_FQFoTwyw2Hep7AHkrSt1MZcHWV_8DQucNlHSY1vHgUNS2Fvoirpw",
+ "xchan_url": "http://hubzilla/channel/testes",
+ "xchan_addr": "testes@hubzilla",
+ "xchan_orphan": "0",
+ "xchan_follow": "http://hubzilla/follow?f=&amp;url=%s",
+ "xchan_name": "testes",
+ "xchan_photo_l": "http://hubzilla/photo/profile/l/2"
+ },
+ "contact": null,
+ "identities": null,
+ "user": null,
+ "videoheight": 350,
+ "profile": null,
+ "theme_thread_allow": true,
+ "data": {
+ "pageicon": "/images/hz-32.png"
+ }
+}[/code]
+
#include doc/macros/main_footer.bb;
diff --git a/doc/hidden_configs.bb b/doc/hidden_configs.bb
index 76213851c..44114967b 100644
--- a/doc/hidden_configs.bb
+++ b/doc/hidden_configs.bb
@@ -112,7 +112,7 @@ This document assumes you're an administrator.
[b]system > cron_hour[/b]
Specify an hour in which to run cron_daily. By default with no config, this will run at midnight UTC.
[b]system > minimum_feedcheck_minutes[/b]
- The minimum interval between polling RSS feeds. If this is lower than the cron interval, feeds will be polled with each cronjob
+ The minimum interval between polling RSS feeds. If this is lower than the cron interval, feeds will be polled with each cronjob. Defaults to 60 if not set. The site setting can also be over-ridden on a channel by channel basis by a service class setting aptly named 'minimum_feedcheck_minutes'.
[b]system > blacklisted_sites[/b]
An array of specific hubs to block from this hub completely.
[b]system > ignore_imagick[/b]
@@ -133,7 +133,45 @@ This document assumes you're an administrator.
How long to cache photos, in seconds. Default is 86400 (1 day).
Longer time increases performance, but it also means it takes longer for changed permissions to apply.
[b]system > poco_rating_enable[/b]
- Distributed reputation reporting and data collection may be disabled. If your site does not participate in distributed reputation you will also not be able to make use of the data from your connections on other sites. By default and in the absence of any setting it is enabled. Individual members can opt out by restricting who can see their connections or by not providing any reputation information for their connections.
+ Distributed reputation reporting and data collection may be disabled. If your site does not participate in distributed reputation you will also not be able to make use of the data from your connections on other sites. By default and in the absence of any setting it is enabled. Individual members can opt out by restricting who can see their connections or by not providing any reputation information for their connections.
+ [b]system > register_link[/b]
+ path to direct to from the "register" link on the login form. On closed sites this will direct to 'pubsites'. For open sites it will normally redirect to 'register' but you may change this to a custom site page offering subscriptions or whatever.
+ [b]system > max_import_size[/b]
+ If configured, the maximum length of an imported text message. This is normally left at 200Kbytes or more to accomodate Friendica private photos, which are embedded.
+ [b]system > tempdir[/b]
+ Place to store temporary files, default is defined in the PHP configuration
+ [b]system > uploaddir[/b]
+ Location to upload files (default is system.tempdir)
+ [b]system > disable_discover_tab[/b]
+ This allows you to completely disable the ability to discover public content from external sites.
+ [b]system > sys_expire_days[/b]
+ How many days to keep discovered public content from other sites
+ [b]system > openssl_encrypt[/b]
+ Use openssl encryption engine, default is false (uses mcrypt for AES encryption)
+ [b]system > max_tagged_forums[/b]
+ Spam prevention. Limits the number of tagged forums which are recognised in any post. Default is 2. Only the first 'n' tags will be delivered as forums, the others will not cause any delivery.
+ [b]system > openssl_conf_file[/b]
+ Needed in some Windows installations to locate the openssl configuration file on the system.
+
+
+[b]Directory config[/b]
+[b]Directory search defaults[/b]
+ [b]directory > safemode[/b]
+ 0 or 1.
+ [b]directory > globaldir[/b]
+ 0 or 1. Default 0. If you visit the directory on a site you'll just see the members of that site by default. You have to go through an extra step to see the people in the rest of the network; and by doing so there's a clear delineation that these people *aren't* members of that site but of a larger network.
+ [b]directory > pubforums[/b]
+ 0 or 1. Public forums *should* be default 0.
+[b]Directory server configuration (see [zrl=[baseurl]/help/directories]help/directories[/zrl])[/b]
+ [b]system > directory_server[/b]
+ [b]system > directory_primary[/b]
+ [b]system > directory_realm[/b]
+ [b]system > realm_token[/b]
+ [b]system > directory_mode[/b]
+
+
+
+
#include doc/macros/main_footer.bb;
diff --git a/doc/hook/about_hook.bb b/doc/hook/about_hook.bb
new file mode 100644
index 000000000..22b60d786
--- /dev/null
+++ b/doc/hook/about_hook.bb
@@ -0,0 +1 @@
+[h2]about_hook[/h2]
diff --git a/doc/hook/accept_follow.bb b/doc/hook/accept_follow.bb
new file mode 100644
index 000000000..e8b1ed0c4
--- /dev/null
+++ b/doc/hook/accept_follow.bb
@@ -0,0 +1 @@
+[h2]accept_follow[/h2]
diff --git a/doc/hook/account_downgrade.bb b/doc/hook/account_downgrade.bb
new file mode 100644
index 000000000..63bae0a58
--- /dev/null
+++ b/doc/hook/account_downgrade.bb
@@ -0,0 +1 @@
+[h2]account_downgrade[/h2]
diff --git a/doc/hook/account_settings.bb b/doc/hook/account_settings.bb
new file mode 100644
index 000000000..91b3a8385
--- /dev/null
+++ b/doc/hook/account_settings.bb
@@ -0,0 +1 @@
+[h2]account_settings[/h2]
diff --git a/doc/hook/account_settings_post.bb b/doc/hook/account_settings_post.bb
new file mode 100644
index 000000000..bbd7a57a8
--- /dev/null
+++ b/doc/hook/account_settings_post.bb
@@ -0,0 +1 @@
+[h2]account_settings_post[/h2]
diff --git a/doc/hook/activity_received.bb b/doc/hook/activity_received.bb
new file mode 100644
index 000000000..2e9d68bf3
--- /dev/null
+++ b/doc/hook/activity_received.bb
@@ -0,0 +1 @@
+[h2]activity_received[/h2]
diff --git a/doc/hook/affinity_labels.bb b/doc/hook/affinity_labels.bb
new file mode 100644
index 000000000..7234b7632
--- /dev/null
+++ b/doc/hook/affinity_labels.bb
@@ -0,0 +1 @@
+[h2]affinity_labels[/h2]
diff --git a/doc/hook/api_perm_is_allowed.bb b/doc/hook/api_perm_is_allowed.bb
new file mode 100644
index 000000000..862cbd653
--- /dev/null
+++ b/doc/hook/api_perm_is_allowed.bb
@@ -0,0 +1 @@
+[h2]api_perm_is_allowed[/h2]
diff --git a/doc/hook/atom_author.bb b/doc/hook/atom_author.bb
new file mode 100644
index 000000000..c9d05a593
--- /dev/null
+++ b/doc/hook/atom_author.bb
@@ -0,0 +1 @@
+[h2]atom_author[/h2]
diff --git a/doc/hook/atom_entry.bb b/doc/hook/atom_entry.bb
new file mode 100644
index 000000000..0aec89f16
--- /dev/null
+++ b/doc/hook/atom_entry.bb
@@ -0,0 +1 @@
+[h2]atom_entry[/h2]
diff --git a/doc/hook/atom_feed.bb b/doc/hook/atom_feed.bb
new file mode 100644
index 000000000..69775ca5e
--- /dev/null
+++ b/doc/hook/atom_feed.bb
@@ -0,0 +1 @@
+[h2]atom_feed[/h2]
diff --git a/doc/hook/atom_feed_end.bb b/doc/hook/atom_feed_end.bb
new file mode 100644
index 000000000..4f019fc8f
--- /dev/null
+++ b/doc/hook/atom_feed_end.bb
@@ -0,0 +1 @@
+[h2]atom_feed_end[/h2]
diff --git a/doc/hook/attach_upload_file.bb b/doc/hook/attach_upload_file.bb
new file mode 100644
index 000000000..1f8056caa
--- /dev/null
+++ b/doc/hook/attach_upload_file.bb
@@ -0,0 +1 @@
+[h2]attach_upload_file[/h2]
diff --git a/doc/hook/authenticate.bb b/doc/hook/authenticate.bb
new file mode 100644
index 000000000..eb8071e73
--- /dev/null
+++ b/doc/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/hook/bb2diaspora.bb b/doc/hook/bb2diaspora.bb
new file mode 100644
index 000000000..c28f1883e
--- /dev/null
+++ b/doc/hook/bb2diaspora.bb
@@ -0,0 +1 @@
+[h2]bb2diaspora[/h2]
diff --git a/doc/hook/bbcode.bb b/doc/hook/bbcode.bb
new file mode 100644
index 000000000..2996a8528
--- /dev/null
+++ b/doc/hook/bbcode.bb
@@ -0,0 +1 @@
+[h2]bbcode[/h2]
diff --git a/doc/hook/channel_remove.bb b/doc/hook/channel_remove.bb
new file mode 100644
index 000000000..db9e9dd82
--- /dev/null
+++ b/doc/hook/channel_remove.bb
@@ -0,0 +1 @@
+[h2]channel_remove[/h2]
diff --git a/doc/hook/chat_message.bb b/doc/hook/chat_message.bb
new file mode 100644
index 000000000..ccc93bb2c
--- /dev/null
+++ b/doc/hook/chat_message.bb
@@ -0,0 +1 @@
+[h2]chat_message[/h2]
diff --git a/doc/hook/chat_post.bb b/doc/hook/chat_post.bb
new file mode 100644
index 000000000..7cb3c9fa1
--- /dev/null
+++ b/doc/hook/chat_post.bb
@@ -0,0 +1 @@
+[h2]chat_post[/h2]
diff --git a/doc/hook/check_account_email.bb b/doc/hook/check_account_email.bb
new file mode 100644
index 000000000..b309706a0
--- /dev/null
+++ b/doc/hook/check_account_email.bb
@@ -0,0 +1 @@
+[h2]check_account_email[/h2]
diff --git a/doc/hook/check_account_invite.bb b/doc/hook/check_account_invite.bb
new file mode 100644
index 000000000..8d4a40522
--- /dev/null
+++ b/doc/hook/check_account_invite.bb
@@ -0,0 +1 @@
+[h2]check_account_invite[/h2]
diff --git a/doc/hook/check_account_password.bb b/doc/hook/check_account_password.bb
new file mode 100644
index 000000000..53562ec6e
--- /dev/null
+++ b/doc/hook/check_account_password.bb
@@ -0,0 +1 @@
+[h2]check_account_password[/h2]
diff --git a/doc/hook/connect_premium.bb b/doc/hook/connect_premium.bb
new file mode 100644
index 000000000..ae3aafc66
--- /dev/null
+++ b/doc/hook/connect_premium.bb
@@ -0,0 +1 @@
+[h2]connect_premium[/h2]
diff --git a/doc/hook/connector_settings.bb b/doc/hook/connector_settings.bb
new file mode 100644
index 000000000..9b59c49da
--- /dev/null
+++ b/doc/hook/connector_settings.bb
@@ -0,0 +1 @@
+[h2]connector_settings[/h2]
diff --git a/doc/hook/construct_page.bb b/doc/hook/construct_page.bb
new file mode 100644
index 000000000..700d9256f
--- /dev/null
+++ b/doc/hook/construct_page.bb
@@ -0,0 +1 @@
+[h2]construct_page[/h2]
diff --git a/doc/hook/contact_block_end.bb b/doc/hook/contact_block_end.bb
new file mode 100644
index 000000000..30a7d2d76
--- /dev/null
+++ b/doc/hook/contact_block_end.bb
@@ -0,0 +1 @@
+[h2]contact_block_end[/h2]
diff --git a/doc/hook/contact_edit.bb b/doc/hook/contact_edit.bb
new file mode 100644
index 000000000..5fd31fb1d
--- /dev/null
+++ b/doc/hook/contact_edit.bb
@@ -0,0 +1 @@
+[h2]contact_edit[/h2]
diff --git a/doc/hook/contact_edit_post.bb b/doc/hook/contact_edit_post.bb
new file mode 100644
index 000000000..bc736f8b8
--- /dev/null
+++ b/doc/hook/contact_edit_post.bb
@@ -0,0 +1 @@
+[h2]contact_edit_post[/h2]
diff --git a/doc/hook/contact_select_options.bb b/doc/hook/contact_select_options.bb
new file mode 100644
index 000000000..65f9154ff
--- /dev/null
+++ b/doc/hook/contact_select_options.bb
@@ -0,0 +1 @@
+[h2]contact_select_options[/h2]
diff --git a/doc/hook/conversation_start.bb b/doc/hook/conversation_start.bb
new file mode 100644
index 000000000..7208c8d8f
--- /dev/null
+++ b/doc/hook/conversation_start.bb
@@ -0,0 +1 @@
+[h2]conversation_start[/h2]
diff --git a/doc/hook/create_identity.bb b/doc/hook/create_identity.bb
new file mode 100644
index 000000000..5c1da2d43
--- /dev/null
+++ b/doc/hook/create_identity.bb
@@ -0,0 +1 @@
+[h2]create_identity[/h2]
diff --git a/doc/hook/cron.bb b/doc/hook/cron.bb
new file mode 100644
index 000000000..55120b6c2
--- /dev/null
+++ b/doc/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/hook/cron_daily.bb b/doc/hook/cron_daily.bb
new file mode 100644
index 000000000..802bea5e4
--- /dev/null
+++ b/doc/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/hook/cron_weekly.bb b/doc/hook/cron_weekly.bb
new file mode 100644
index 000000000..c01bf9611
--- /dev/null
+++ b/doc/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/hook/directory_item.bb b/doc/hook/directory_item.bb
new file mode 100644
index 000000000..cb710e0b4
--- /dev/null
+++ b/doc/hook/directory_item.bb
@@ -0,0 +1 @@
+[h2]directory_item[/h2]
diff --git a/doc/hook/discover_by_webbie.bb b/doc/hook/discover_by_webbie.bb
new file mode 100644
index 000000000..f9228932e
--- /dev/null
+++ b/doc/hook/discover_by_webbie.bb
@@ -0,0 +1 @@
+[h2]discover_by_webbie[/h2]
diff --git a/doc/hook/display_item.bb b/doc/hook/display_item.bb
new file mode 100644
index 000000000..a6bfd621d
--- /dev/null
+++ b/doc/hook/display_item.bb
@@ -0,0 +1 @@
+[h2]display_item[/h2]
diff --git a/doc/hook/display_settings.bb b/doc/hook/display_settings.bb
new file mode 100644
index 000000000..1f1e0b491
--- /dev/null
+++ b/doc/hook/display_settings.bb
@@ -0,0 +1 @@
+[h2]display_settings[/h2]
diff --git a/doc/hook/display_settings_post.bb b/doc/hook/display_settings_post.bb
new file mode 100644
index 000000000..d3bb39359
--- /dev/null
+++ b/doc/hook/display_settings_post.bb
@@ -0,0 +1 @@
+[h2]display_settings_post[/h2]
diff --git a/doc/hook/donate_contributors.bb b/doc/hook/donate_contributors.bb
new file mode 100644
index 000000000..f97c77efa
--- /dev/null
+++ b/doc/hook/donate_contributors.bb
@@ -0,0 +1 @@
+[h2]donate_contributors[/h2]
diff --git a/doc/hook/donate_plugin.bb b/doc/hook/donate_plugin.bb
new file mode 100644
index 000000000..db4a6f113
--- /dev/null
+++ b/doc/hook/donate_plugin.bb
@@ -0,0 +1 @@
+[h2]donate_plugin[/h2]
diff --git a/doc/hook/donate_sponsors.bb b/doc/hook/donate_sponsors.bb
new file mode 100644
index 000000000..3abd46d42
--- /dev/null
+++ b/doc/hook/donate_sponsors.bb
@@ -0,0 +1 @@
+[h2]donate_sponsors[/h2]
diff --git a/doc/hook/dreport_is_storable.bb b/doc/hook/dreport_is_storable.bb
new file mode 100644
index 000000000..9ca99b896
--- /dev/null
+++ b/doc/hook/dreport_is_storable.bb
@@ -0,0 +1 @@
+[h2]dreport_is_storable[/h2]
diff --git a/doc/hook/drop_item.bb b/doc/hook/drop_item.bb
new file mode 100644
index 000000000..35bb80f82
--- /dev/null
+++ b/doc/hook/drop_item.bb
@@ -0,0 +1 @@
+[h2]drop_item[/h2]
diff --git a/doc/hook/enotify.bb b/doc/hook/enotify.bb
new file mode 100644
index 000000000..703a3ffa0
--- /dev/null
+++ b/doc/hook/enotify.bb
@@ -0,0 +1 @@
+[h2]enotify[/h2]
diff --git a/doc/hook/enotify_mail.bb b/doc/hook/enotify_mail.bb
new file mode 100644
index 000000000..adeb8bd30
--- /dev/null
+++ b/doc/hook/enotify_mail.bb
@@ -0,0 +1 @@
+[h2]enotify_mail[/h2]
diff --git a/doc/hook/enotify_store.bb b/doc/hook/enotify_store.bb
new file mode 100644
index 000000000..dc44cc320
--- /dev/null
+++ b/doc/hook/enotify_store.bb
@@ -0,0 +1 @@
+[h2]enotify_store[/h2]
diff --git a/doc/hook/event_created.bb b/doc/hook/event_created.bb
new file mode 100644
index 000000000..222602e77
--- /dev/null
+++ b/doc/hook/event_created.bb
@@ -0,0 +1 @@
+[h2]event_created[/h2]
diff --git a/doc/hook/event_updated.bb b/doc/hook/event_updated.bb
new file mode 100644
index 000000000..69e3c72c1
--- /dev/null
+++ b/doc/hook/event_updated.bb
@@ -0,0 +1 @@
+[h2]event_updated[/h2]
diff --git a/doc/hook/externals_url_select.bb b/doc/hook/externals_url_select.bb
new file mode 100644
index 000000000..a542dcb29
--- /dev/null
+++ b/doc/hook/externals_url_select.bb
@@ -0,0 +1 @@
+[h2]externals_url_select[/h2]
diff --git a/doc/hook/feature_enabled.bb b/doc/hook/feature_enabled.bb
new file mode 100644
index 000000000..5630cc768
--- /dev/null
+++ b/doc/hook/feature_enabled.bb
@@ -0,0 +1 @@
+[h2]feature_enabled[/h2]
diff --git a/doc/hook/feature_settings.bb b/doc/hook/feature_settings.bb
new file mode 100644
index 000000000..d1691eb38
--- /dev/null
+++ b/doc/hook/feature_settings.bb
@@ -0,0 +1 @@
+[h2]feature_settings[/h2]
diff --git a/doc/hook/feature_settings_post.bb b/doc/hook/feature_settings_post.bb
new file mode 100644
index 000000000..eecf941ff
--- /dev/null
+++ b/doc/hook/feature_settings_post.bb
@@ -0,0 +1 @@
+[h2]feature_settings_post[/h2]
diff --git a/doc/hook/follow.bb b/doc/hook/follow.bb
new file mode 100644
index 000000000..a97632b06
--- /dev/null
+++ b/doc/hook/follow.bb
@@ -0,0 +1 @@
+[h2]follow[/h2]
diff --git a/doc/hook/follow_allow.bb b/doc/hook/follow_allow.bb
new file mode 100644
index 000000000..fdab1865c
--- /dev/null
+++ b/doc/hook/follow_allow.bb
@@ -0,0 +1 @@
+[h2]follow_allow[/h2]
diff --git a/doc/hook/gender_selector.bb b/doc/hook/gender_selector.bb
new file mode 100644
index 000000000..0b56b5c9b
--- /dev/null
+++ b/doc/hook/gender_selector.bb
@@ -0,0 +1 @@
+[h2]gender_selector[/h2]
diff --git a/doc/hook/gender_selector_min.bb b/doc/hook/gender_selector_min.bb
new file mode 100644
index 000000000..9d143855a
--- /dev/null
+++ b/doc/hook/gender_selector_min.bb
@@ -0,0 +1 @@
+[h2]gender_selector_min[/h2]
diff --git a/doc/hook/generate_map.bb b/doc/hook/generate_map.bb
new file mode 100644
index 000000000..33672d552
--- /dev/null
+++ b/doc/hook/generate_map.bb
@@ -0,0 +1 @@
+[h2]generate_map[/h2]
diff --git a/doc/hook/generate_named_map.bb b/doc/hook/generate_named_map.bb
new file mode 100644
index 000000000..5bacb846d
--- /dev/null
+++ b/doc/hook/generate_named_map.bb
@@ -0,0 +1 @@
+[h2]generate_named_map[/h2]
diff --git a/doc/hook/get_all_api_perms.bb b/doc/hook/get_all_api_perms.bb
new file mode 100644
index 000000000..eb41f8a02
--- /dev/null
+++ b/doc/hook/get_all_api_perms.bb
@@ -0,0 +1 @@
+[h2]get_all_api_perms[/h2]
diff --git a/doc/hook/get_all_perms.bb b/doc/hook/get_all_perms.bb
new file mode 100644
index 000000000..149f8c78c
--- /dev/null
+++ b/doc/hook/get_all_perms.bb
@@ -0,0 +1 @@
+[h2]get_all_perms[/h2]
diff --git a/doc/hook/get_features.bb b/doc/hook/get_features.bb
new file mode 100644
index 000000000..66e81f13c
--- /dev/null
+++ b/doc/hook/get_features.bb
@@ -0,0 +1 @@
+[h2]get_features[/h2]
diff --git a/doc/hook/get_role_perms.bb b/doc/hook/get_role_perms.bb
new file mode 100644
index 000000000..87830f8e3
--- /dev/null
+++ b/doc/hook/get_role_perms.bb
@@ -0,0 +1 @@
+[h2]get_role_perms[/h2]
diff --git a/doc/hook/global_permissions.bb b/doc/hook/global_permissions.bb
new file mode 100644
index 000000000..fe998ee9c
--- /dev/null
+++ b/doc/hook/global_permissions.bb
@@ -0,0 +1 @@
+[h2]global_permissions[/h2]
diff --git a/doc/hook/home_content.bb b/doc/hook/home_content.bb
new file mode 100644
index 000000000..7f32b3547
--- /dev/null
+++ b/doc/hook/home_content.bb
@@ -0,0 +1 @@
+[h2]home_content[/h2]
diff --git a/doc/hook/home_init.bb b/doc/hook/home_init.bb
new file mode 100644
index 000000000..25dd72792
--- /dev/null
+++ b/doc/hook/home_init.bb
@@ -0,0 +1 @@
+[h2]home_init[/h2]
diff --git a/doc/hook/hostxrd.bb b/doc/hook/hostxrd.bb
new file mode 100644
index 000000000..2b67320cf
--- /dev/null
+++ b/doc/hook/hostxrd.bb
@@ -0,0 +1 @@
+[h2]hostxrd[/h2]
diff --git a/doc/hook/html2bbcode.bb b/doc/hook/html2bbcode.bb
new file mode 100644
index 000000000..3061f05f0
--- /dev/null
+++ b/doc/hook/html2bbcode.bb
@@ -0,0 +1 @@
+[h2]html2bbcode[/h2]
diff --git a/doc/hook/identity_basic_export.bb b/doc/hook/identity_basic_export.bb
new file mode 100644
index 000000000..3f4e88799
--- /dev/null
+++ b/doc/hook/identity_basic_export.bb
@@ -0,0 +1 @@
+[h2]identity_basic_export[/h2]
diff --git a/doc/hook/import_author_xchan.bb b/doc/hook/import_author_xchan.bb
new file mode 100644
index 000000000..e2340469d
--- /dev/null
+++ b/doc/hook/import_author_xchan.bb
@@ -0,0 +1 @@
+[h2]import_author_xchan[/h2]
diff --git a/doc/hook/import_channel.bb b/doc/hook/import_channel.bb
new file mode 100644
index 000000000..b220b7415
--- /dev/null
+++ b/doc/hook/import_channel.bb
@@ -0,0 +1 @@
+[h2]import_channel[/h2]
diff --git a/doc/hook/import_directory_profile.bb b/doc/hook/import_directory_profile.bb
new file mode 100644
index 000000000..e2fac59bc
--- /dev/null
+++ b/doc/hook/import_directory_profile.bb
@@ -0,0 +1 @@
+[h2]import_directory_profile[/h2]
diff --git a/doc/hook/import_xchan.bb b/doc/hook/import_xchan.bb
new file mode 100644
index 000000000..40e0783ce
--- /dev/null
+++ b/doc/hook/import_xchan.bb
@@ -0,0 +1 @@
+[h2]import_xchan[/h2]
diff --git a/doc/hook/item_photo_menu.bb b/doc/hook/item_photo_menu.bb
new file mode 100644
index 000000000..8f9860a90
--- /dev/null
+++ b/doc/hook/item_photo_menu.bb
@@ -0,0 +1 @@
+[h2]item_photo_menu[/h2]
diff --git a/doc/hook/item_store.bb b/doc/hook/item_store.bb
new file mode 100644
index 000000000..5d49b725c
--- /dev/null
+++ b/doc/hook/item_store.bb
@@ -0,0 +1 @@
+[h2]item_store[/h2]
diff --git a/doc/hook/item_store_update.bb b/doc/hook/item_store_update.bb
new file mode 100644
index 000000000..a7c58939a
--- /dev/null
+++ b/doc/hook/item_store_update.bb
@@ -0,0 +1 @@
+[h2]item_store_update[/h2]
diff --git a/doc/hook/item_translate.bb b/doc/hook/item_translate.bb
new file mode 100644
index 000000000..695494b9c
--- /dev/null
+++ b/doc/hook/item_translate.bb
@@ -0,0 +1 @@
+[h2]item_translate[/h2]
diff --git a/doc/hook/jot_networks.bb b/doc/hook/jot_networks.bb
new file mode 100644
index 000000000..4c1629ba7
--- /dev/null
+++ b/doc/hook/jot_networks.bb
@@ -0,0 +1 @@
+[h2]jot_networks[/h2]
diff --git a/doc/hook/jot_tool.bb b/doc/hook/jot_tool.bb
new file mode 100644
index 000000000..22ba9701e
--- /dev/null
+++ b/doc/hook/jot_tool.bb
@@ -0,0 +1 @@
+[h2]jot_tool[/h2]
diff --git a/doc/hook/load_pdl.bb b/doc/hook/load_pdl.bb
new file mode 100644
index 000000000..149a3e766
--- /dev/null
+++ b/doc/hook/load_pdl.bb
@@ -0,0 +1 @@
+[h2]load_pdl[/h2]
diff --git a/doc/hook/local_dir_update.bb b/doc/hook/local_dir_update.bb
new file mode 100644
index 000000000..d0b0f8ac1
--- /dev/null
+++ b/doc/hook/local_dir_update.bb
@@ -0,0 +1 @@
+[h2]local_dir_update[/h2]
diff --git a/doc/hook/logged_in.bb b/doc/hook/logged_in.bb
new file mode 100644
index 000000000..b01041576
--- /dev/null
+++ b/doc/hook/logged_in.bb
@@ -0,0 +1 @@
+[h2]logged_in[/h2]
diff --git a/doc/hook/logging_out.bb b/doc/hook/logging_out.bb
new file mode 100644
index 000000000..d47b9f1df
--- /dev/null
+++ b/doc/hook/logging_out.bb
@@ -0,0 +1 @@
+[h2]logging_out[/h2]
diff --git a/doc/hook/login_hook.bb b/doc/hook/login_hook.bb
new file mode 100644
index 000000000..156a0afcd
--- /dev/null
+++ b/doc/hook/login_hook.bb
@@ -0,0 +1 @@
+[h2]login_hook[/h2]
diff --git a/doc/hook/magic_auth.bb b/doc/hook/magic_auth.bb
new file mode 100644
index 000000000..80d6edb27
--- /dev/null
+++ b/doc/hook/magic_auth.bb
@@ -0,0 +1 @@
+[h2]magic_auth[/h2]
diff --git a/doc/hook/magic_auth_openid_success.bb b/doc/hook/magic_auth_openid_success.bb
new file mode 100644
index 000000000..810f2e06d
--- /dev/null
+++ b/doc/hook/magic_auth_openid_success.bb
@@ -0,0 +1 @@
+[h2]magic_auth_openid_success[/h2]
diff --git a/doc/hook/magic_auth_success.bb b/doc/hook/magic_auth_success.bb
new file mode 100644
index 000000000..d795e43e5
--- /dev/null
+++ b/doc/hook/magic_auth_success.bb
@@ -0,0 +1 @@
+[h2]magic_auth_success[/h2]
diff --git a/doc/hook/main_slider.bb b/doc/hook/main_slider.bb
new file mode 100644
index 000000000..a63c2170a
--- /dev/null
+++ b/doc/hook/main_slider.bb
@@ -0,0 +1 @@
+[h2]main_slider[/h2]
diff --git a/doc/hook/marital_selector.bb b/doc/hook/marital_selector.bb
new file mode 100644
index 000000000..0f76c3f5a
--- /dev/null
+++ b/doc/hook/marital_selector.bb
@@ -0,0 +1 @@
+[h2]marital_selector[/h2]
diff --git a/doc/hook/marital_selector_min.bb b/doc/hook/marital_selector_min.bb
new file mode 100644
index 000000000..f02d21f20
--- /dev/null
+++ b/doc/hook/marital_selector_min.bb
@@ -0,0 +1 @@
+[h2]marital_selector_min[/h2]
diff --git a/doc/hook/module_loaded.bb b/doc/hook/module_loaded.bb
new file mode 100644
index 000000000..cb0d2302d
--- /dev/null
+++ b/doc/hook/module_loaded.bb
@@ -0,0 +1 @@
+[h2]module_loaded[/h2]
diff --git a/doc/hook/module_mod_aftercontent.bb b/doc/hook/module_mod_aftercontent.bb
new file mode 100644
index 000000000..5d48435b8
--- /dev/null
+++ b/doc/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 $a->module
+
diff --git a/doc/hook/module_mod_content.bb b/doc/hook/module_mod_content.bb
new file mode 100644
index 000000000..39f5743b1
--- /dev/null
+++ b/doc/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 $a->module
+
diff --git a/doc/hook/module_mod_init.bb b/doc/hook/module_mod_init.bb
new file mode 100644
index 000000000..52fe5a616
--- /dev/null
+++ b/doc/hook/module_mod_init.bb
@@ -0,0 +1 @@
+[h2]module_mod_init[/h2]
diff --git a/doc/hook/module_mod_post.bb b/doc/hook/module_mod_post.bb
new file mode 100644
index 000000000..3adb0e737
--- /dev/null
+++ b/doc/hook/module_mod_post.bb
@@ -0,0 +1 @@
+[h2]module_mod_post[/h2]
diff --git a/doc/hook/mood_verbs.bb b/doc/hook/mood_verbs.bb
new file mode 100644
index 000000000..67fb719dd
--- /dev/null
+++ b/doc/hook/mood_verbs.bb
@@ -0,0 +1 @@
+[h2]mood_verbs[/h2]
diff --git a/doc/hook/nav.bb b/doc/hook/nav.bb
new file mode 100644
index 000000000..847573620
--- /dev/null
+++ b/doc/hook/nav.bb
@@ -0,0 +1 @@
+[h2]nav[/h2]
diff --git a/doc/hook/network_content_init.bb b/doc/hook/network_content_init.bb
new file mode 100644
index 000000000..224da393a
--- /dev/null
+++ b/doc/hook/network_content_init.bb
@@ -0,0 +1 @@
+[h2]network_content_init[/h2]
diff --git a/doc/hook/network_ping.bb b/doc/hook/network_ping.bb
new file mode 100644
index 000000000..78deefe78
--- /dev/null
+++ b/doc/hook/network_ping.bb
@@ -0,0 +1 @@
+[h2]network_ping[/h2]
diff --git a/doc/hook/network_tabs.bb b/doc/hook/network_tabs.bb
new file mode 100644
index 000000000..677d7f2b9
--- /dev/null
+++ b/doc/hook/network_tabs.bb
@@ -0,0 +1 @@
+[h2]network_tabs[/h2]
diff --git a/doc/hook/network_to_name.bb b/doc/hook/network_to_name.bb
new file mode 100644
index 000000000..eea4a1841
--- /dev/null
+++ b/doc/hook/network_to_name.bb
@@ -0,0 +1 @@
+[h2]network_to_name[/h2]
diff --git a/doc/hook/notifier_end.bb b/doc/hook/notifier_end.bb
new file mode 100644
index 000000000..df9d852bd
--- /dev/null
+++ b/doc/hook/notifier_end.bb
@@ -0,0 +1 @@
+[h2]notifier_end[/h2]
diff --git a/doc/hook/notifier_hub.bb b/doc/hook/notifier_hub.bb
new file mode 100644
index 000000000..4255ce446
--- /dev/null
+++ b/doc/hook/notifier_hub.bb
@@ -0,0 +1 @@
+[h2]notifier_hub[/h2]
diff --git a/doc/hook/notifier_normal.bb b/doc/hook/notifier_normal.bb
new file mode 100644
index 000000000..0059baa47
--- /dev/null
+++ b/doc/hook/notifier_normal.bb
@@ -0,0 +1 @@
+[h2]notifier_normal[/h2]
diff --git a/doc/hook/obj_verbs.bb b/doc/hook/obj_verbs.bb
new file mode 100644
index 000000000..ca98229aa
--- /dev/null
+++ b/doc/hook/obj_verbs.bb
@@ -0,0 +1 @@
+[h2]obj_verbs[/h2]
diff --git a/doc/hook/oembed_probe.bb b/doc/hook/oembed_probe.bb
new file mode 100644
index 000000000..4f32ac267
--- /dev/null
+++ b/doc/hook/oembed_probe.bb
@@ -0,0 +1 @@
+[h2]oembed_probe[/h2]
diff --git a/doc/hook/page_content_top.bb b/doc/hook/page_content_top.bb
new file mode 100644
index 000000000..137e3abfd
--- /dev/null
+++ b/doc/hook/page_content_top.bb
@@ -0,0 +1 @@
+[h2]page_content_top[/h2]
diff --git a/doc/hook/page_end.bb b/doc/hook/page_end.bb
new file mode 100644
index 000000000..09293cf50
--- /dev/null
+++ b/doc/hook/page_end.bb
@@ -0,0 +1 @@
+[h2]page_end[/h2]
diff --git a/doc/hook/page_header.bb b/doc/hook/page_header.bb
new file mode 100644
index 000000000..ffaa791c9
--- /dev/null
+++ b/doc/hook/page_header.bb
@@ -0,0 +1 @@
+[h2]page_header[/h2]
diff --git a/doc/hook/parse_atom.bb b/doc/hook/parse_atom.bb
new file mode 100644
index 000000000..c8037317f
--- /dev/null
+++ b/doc/hook/parse_atom.bb
@@ -0,0 +1 @@
+[h2]parse_atom[/h2]
diff --git a/doc/hook/parse_link.bb b/doc/hook/parse_link.bb
new file mode 100644
index 000000000..1c328059c
--- /dev/null
+++ b/doc/hook/parse_link.bb
@@ -0,0 +1 @@
+[h2]parse_link[/h2]
diff --git a/doc/hook/pdl_selector.bb b/doc/hook/pdl_selector.bb
new file mode 100644
index 000000000..bee01c843
--- /dev/null
+++ b/doc/hook/pdl_selector.bb
@@ -0,0 +1 @@
+[h2]pdl_selector[/h2]
diff --git a/doc/hook/perm_is_allowed.bb b/doc/hook/perm_is_allowed.bb
new file mode 100644
index 000000000..aac647609
--- /dev/null
+++ b/doc/hook/perm_is_allowed.bb
@@ -0,0 +1 @@
+[h2]perm_is_allowed[/h2]
diff --git a/doc/hook/permissions_create.bb b/doc/hook/permissions_create.bb
new file mode 100644
index 000000000..22f80a80e
--- /dev/null
+++ b/doc/hook/permissions_create.bb
@@ -0,0 +1 @@
+[h2]permissions_create[/h2]
diff --git a/doc/hook/permissions_update.bb b/doc/hook/permissions_update.bb
new file mode 100644
index 000000000..40366b33d
--- /dev/null
+++ b/doc/hook/permissions_update.bb
@@ -0,0 +1 @@
+[h2]permissions_update[/h2]
diff --git a/doc/hook/personal_xrd.bb b/doc/hook/personal_xrd.bb
new file mode 100644
index 000000000..71d4bd8dd
--- /dev/null
+++ b/doc/hook/personal_xrd.bb
@@ -0,0 +1 @@
+[h2]personal_xrd[/h2]
diff --git a/doc/hook/photo_post_end.bb b/doc/hook/photo_post_end.bb
new file mode 100644
index 000000000..8a3291763
--- /dev/null
+++ b/doc/hook/photo_post_end.bb
@@ -0,0 +1 @@
+[h2]photo_post_end[/h2]
diff --git a/doc/hook/photo_upload_begin.bb b/doc/hook/photo_upload_begin.bb
new file mode 100644
index 000000000..5e441a12a
--- /dev/null
+++ b/doc/hook/photo_upload_begin.bb
@@ -0,0 +1 @@
+[h2]photo_upload_begin[/h2]
diff --git a/doc/hook/photo_upload_end.bb b/doc/hook/photo_upload_end.bb
new file mode 100644
index 000000000..956175f1d
--- /dev/null
+++ b/doc/hook/photo_upload_end.bb
@@ -0,0 +1 @@
+[h2]photo_upload_end[/h2]
diff --git a/doc/hook/photo_upload_file.bb b/doc/hook/photo_upload_file.bb
new file mode 100644
index 000000000..726622ac0
--- /dev/null
+++ b/doc/hook/photo_upload_file.bb
@@ -0,0 +1 @@
+[h2]photo_upload_file[/h2]
diff --git a/doc/hook/photo_upload_form.bb b/doc/hook/photo_upload_form.bb
new file mode 100644
index 000000000..70b8318b8
--- /dev/null
+++ b/doc/hook/photo_upload_form.bb
@@ -0,0 +1 @@
+[h2]photo_upload_form[/h2]
diff --git a/doc/hook/poke_verbs.bb b/doc/hook/poke_verbs.bb
new file mode 100644
index 000000000..54d68c3a2
--- /dev/null
+++ b/doc/hook/poke_verbs.bb
@@ -0,0 +1 @@
+[h2]poke_verbs[/h2]
diff --git a/doc/hook/post_local.bb b/doc/hook/post_local.bb
new file mode 100644
index 000000000..5aa723cb9
--- /dev/null
+++ b/doc/hook/post_local.bb
@@ -0,0 +1 @@
+[h2]post_local[/h2]
diff --git a/doc/hook/post_local_end.bb b/doc/hook/post_local_end.bb
new file mode 100644
index 000000000..380166fdb
--- /dev/null
+++ b/doc/hook/post_local_end.bb
@@ -0,0 +1 @@
+[h2]post_local_end[/h2]
diff --git a/doc/hook/post_local_start.bb b/doc/hook/post_local_start.bb
new file mode 100644
index 000000000..2f684f67a
--- /dev/null
+++ b/doc/hook/post_local_start.bb
@@ -0,0 +1 @@
+[h2]post_local_start[/h2]
diff --git a/doc/hook/post_mail.bb b/doc/hook/post_mail.bb
new file mode 100644
index 000000000..8f67ad4f0
--- /dev/null
+++ b/doc/hook/post_mail.bb
@@ -0,0 +1 @@
+[h2]post_mail[/h2]
diff --git a/doc/hook/post_mail_end.bb b/doc/hook/post_mail_end.bb
new file mode 100644
index 000000000..7f0085773
--- /dev/null
+++ b/doc/hook/post_mail_end.bb
@@ -0,0 +1 @@
+[h2]post_mail_end[/h2]
diff --git a/doc/hook/post_remote.bb b/doc/hook/post_remote.bb
new file mode 100644
index 000000000..f8e087eee
--- /dev/null
+++ b/doc/hook/post_remote.bb
@@ -0,0 +1 @@
+[h2]post_remote[/h2]
diff --git a/doc/hook/post_remote_end.bb b/doc/hook/post_remote_end.bb
new file mode 100644
index 000000000..0fef20cbf
--- /dev/null
+++ b/doc/hook/post_remote_end.bb
@@ -0,0 +1 @@
+[h2]post_remote_end[/h2]
diff --git a/doc/hook/post_remote_update.bb b/doc/hook/post_remote_update.bb
new file mode 100644
index 000000000..fd358db28
--- /dev/null
+++ b/doc/hook/post_remote_update.bb
@@ -0,0 +1 @@
+[h2]post_remote_update[/h2]
diff --git a/doc/hook/post_remote_update_end.bb b/doc/hook/post_remote_update_end.bb
new file mode 100644
index 000000000..95f1e6f78
--- /dev/null
+++ b/doc/hook/post_remote_update_end.bb
@@ -0,0 +1 @@
+[h2]post_remote_update_end[/h2]
diff --git a/doc/hook/prepare_body.bb b/doc/hook/prepare_body.bb
new file mode 100644
index 000000000..3f1eaef85
--- /dev/null
+++ b/doc/hook/prepare_body.bb
@@ -0,0 +1 @@
+[h2]prepare_body[/h2]
diff --git a/doc/hook/prepare_body_final.bb b/doc/hook/prepare_body_final.bb
new file mode 100644
index 000000000..96d1ae389
--- /dev/null
+++ b/doc/hook/prepare_body_final.bb
@@ -0,0 +1 @@
+[h2]prepare_body_final[/h2]
diff --git a/doc/hook/prepare_body_init.bb b/doc/hook/prepare_body_init.bb
new file mode 100644
index 000000000..f3de79970
--- /dev/null
+++ b/doc/hook/prepare_body_init.bb
@@ -0,0 +1 @@
+[h2]prepare_body_init[/h2]
diff --git a/doc/hook/probe_well_known.bb b/doc/hook/probe_well_known.bb
new file mode 100644
index 000000000..62898c536
--- /dev/null
+++ b/doc/hook/probe_well_known.bb
@@ -0,0 +1,3 @@
+[h2]probe_well_known[/h2]
+
+This hook is under construction and not currently used - see include/probe.php \ No newline at end of file
diff --git a/doc/hook/proc_run.bb b/doc/hook/proc_run.bb
new file mode 100644
index 000000000..a3759794a
--- /dev/null
+++ b/doc/hook/proc_run.bb
@@ -0,0 +1 @@
+[h2]proc_run[/h2]
diff --git a/doc/hook/process_channel_sync_delivery.bb b/doc/hook/process_channel_sync_delivery.bb
new file mode 100644
index 000000000..c0416c8cb
--- /dev/null
+++ b/doc/hook/process_channel_sync_delivery.bb
@@ -0,0 +1 @@
+[h2]process_channel_sync_delivery[/h2]
diff --git a/doc/hook/profile_advanced.bb b/doc/hook/profile_advanced.bb
new file mode 100644
index 000000000..65e56afd6
--- /dev/null
+++ b/doc/hook/profile_advanced.bb
@@ -0,0 +1 @@
+[h2]profile_advanced[/h2]
diff --git a/doc/hook/profile_edit.bb b/doc/hook/profile_edit.bb
new file mode 100644
index 000000000..e60663d4a
--- /dev/null
+++ b/doc/hook/profile_edit.bb
@@ -0,0 +1 @@
+[h2]profile_edit[/h2]
diff --git a/doc/hook/profile_photo_content_end.bb b/doc/hook/profile_photo_content_end.bb
new file mode 100644
index 000000000..518415c4d
--- /dev/null
+++ b/doc/hook/profile_photo_content_end.bb
@@ -0,0 +1 @@
+[h2]profile_photo_content_end[/h2]
diff --git a/doc/hook/profile_post.bb b/doc/hook/profile_post.bb
new file mode 100644
index 000000000..d22d8fbc7
--- /dev/null
+++ b/doc/hook/profile_post.bb
@@ -0,0 +1 @@
+[h2]profile_post[/h2]
diff --git a/doc/hook/profile_sidebar.bb b/doc/hook/profile_sidebar.bb
new file mode 100644
index 000000000..bfd059e4b
--- /dev/null
+++ b/doc/hook/profile_sidebar.bb
@@ -0,0 +1 @@
+[h2]profile_sidebar[/h2]
diff --git a/doc/hook/profile_sidebar_enter.bb b/doc/hook/profile_sidebar_enter.bb
new file mode 100644
index 000000000..9d6726a30
--- /dev/null
+++ b/doc/hook/profile_sidebar_enter.bb
@@ -0,0 +1 @@
+[h2]profile_sidebar_enter[/h2]
diff --git a/doc/hook/profile_tabs.bb b/doc/hook/profile_tabs.bb
new file mode 100644
index 000000000..5b3e9e707
--- /dev/null
+++ b/doc/hook/profile_tabs.bb
@@ -0,0 +1 @@
+[h2]profile_tabs[/h2]
diff --git a/doc/hook/register_account.bb b/doc/hook/register_account.bb
new file mode 100644
index 000000000..df4de2b30
--- /dev/null
+++ b/doc/hook/register_account.bb
@@ -0,0 +1 @@
+[h2]register_account[/h2]
diff --git a/doc/hook/render_location.bb b/doc/hook/render_location.bb
new file mode 100644
index 000000000..41501c087
--- /dev/null
+++ b/doc/hook/render_location.bb
@@ -0,0 +1 @@
+[h2]render_location[/h2]
diff --git a/doc/hook/replace_macros.bb b/doc/hook/replace_macros.bb
new file mode 100644
index 000000000..fac39dd7b
--- /dev/null
+++ b/doc/hook/replace_macros.bb
@@ -0,0 +1 @@
+[h2]replace_macros[/h2]
diff --git a/doc/hook/reverse_magic_auth.bb b/doc/hook/reverse_magic_auth.bb
new file mode 100644
index 000000000..4cbd84b93
--- /dev/null
+++ b/doc/hook/reverse_magic_auth.bb
@@ -0,0 +1 @@
+[h2]reverse_magic_auth[/h2]
diff --git a/doc/hook/settings_form.bb b/doc/hook/settings_form.bb
new file mode 100644
index 000000000..d65341181
--- /dev/null
+++ b/doc/hook/settings_form.bb
@@ -0,0 +1 @@
+[h2]settings_form[/h2]
diff --git a/doc/hook/settings_post.bb b/doc/hook/settings_post.bb
new file mode 100644
index 000000000..f72546c11
--- /dev/null
+++ b/doc/hook/settings_post.bb
@@ -0,0 +1 @@
+[h2]settings_post[/h2]
diff --git a/doc/hook/sexpref_selector.bb b/doc/hook/sexpref_selector.bb
new file mode 100644
index 000000000..b4dad6b38
--- /dev/null
+++ b/doc/hook/sexpref_selector.bb
@@ -0,0 +1 @@
+[h2]sexpref_selector[/h2]
diff --git a/doc/hook/sexpref_selector_min.bb b/doc/hook/sexpref_selector_min.bb
new file mode 100644
index 000000000..6f49946af
--- /dev/null
+++ b/doc/hook/sexpref_selector_min.bb
@@ -0,0 +1 @@
+[h2]sexpref_selector_min[/h2]
diff --git a/doc/hook/smilie.bb b/doc/hook/smilie.bb
new file mode 100644
index 000000000..575acc178
--- /dev/null
+++ b/doc/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/hook/tagged.bb b/doc/hook/tagged.bb
new file mode 100644
index 000000000..05d081d07
--- /dev/null
+++ b/doc/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/hook/validate_channelname.bb b/doc/hook/validate_channelname.bb
new file mode 100644
index 000000000..2ab12bbec
--- /dev/null
+++ b/doc/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/hook/webfinger.bb b/doc/hook/webfinger.bb
new file mode 100644
index 000000000..7cc24322f
--- /dev/null
+++ b/doc/hook/webfinger.bb
@@ -0,0 +1 @@
+[h2]webfinger[/h2]
diff --git a/doc/hook/well_known.bb b/doc/hook/well_known.bb
new file mode 100644
index 000000000..778b27a02
--- /dev/null
+++ b/doc/hook/well_known.bb
@@ -0,0 +1 @@
+[h2]well_known[/h2]
diff --git a/doc/hook/zid.bb b/doc/hook/zid.bb
new file mode 100644
index 000000000..2210c1342
--- /dev/null
+++ b/doc/hook/zid.bb
@@ -0,0 +1 @@
+[h2]zid[/h2]
diff --git a/doc/hook/zid_init.bb b/doc/hook/zid_init.bb
new file mode 100644
index 000000000..131dd8f72
--- /dev/null
+++ b/doc/hook/zid_init.bb
@@ -0,0 +1 @@
+[h2]zid_init[/h2]
diff --git a/doc/hook/zot_finger.bb b/doc/hook/zot_finger.bb
new file mode 100644
index 000000000..9383b4c31
--- /dev/null
+++ b/doc/hook/zot_finger.bb
@@ -0,0 +1 @@
+[h2]zot_finger[/h2]
diff --git a/doc/hooklist.bb b/doc/hooklist.bb
new file mode 100644
index 000000000..2285ef1cf
--- /dev/null
+++ b/doc/hooklist.bb
@@ -0,0 +1,486 @@
+[h2]Hooks[/h2]
+
+Hooks allow plugins/addons to "hook into" the code at many points and alter the behaviour or otherwise perform independent actions when an activity takes place or when certain data structures are accessed. There are many hooks which allow you to tie into the software at most any point and do something slightly different than the default thing. These hooks are passed two variables. The first is the App structure which contains details about the entire state of the page request as we build the resulting page. The second is unique to the specific hook that is called and provides specific detail about what is happening in the software at the time the hook is invoked.
+
+[zrl=[baseurl]/help/hooks]Generated index of all hooks and the files which call them[/zrl]
+
+[zrl=[baseurl]/help/hook/module_mod_aftercontent]module_mod_aftercontent[/zrl]
+ General purpose hook for any module, executed after mod_content(). Replace 'module' with module name, e.g. 'photos_mod_aftercontent'.
+
+[zrl=[baseurl]/help/hook/module_mod_content]module_mod_content[/zrl]
+ General purpose hook for any module, executed before mod_content(). Replace 'module' with module name, e.g. 'photos_mod_content'.
+
+[zrl=[baseurl]/help/hook/module_mod_init]module_mod_init[/zrl]
+ General purpose hook for any module, executed before mod_init(). Replace 'module' with module name, e.g. 'photos_mod_init'.
+
+[zrl=[baseurl]/help/hook/module_mod_post]module_mod_post[/zrl]
+ General purpose hook for any module, executed before mod_post(). Replace 'module' with module name, e.g. 'photos_mod_post'.
+
+[zrl=[baseurl]/help/hook/about_hook]about_hook[/zrl]
+ Called from the siteinfo page
+
+[zrl=[baseurl]/help/hook/accept_follow]accept_follow[/zrl]
+ Called when accepting a connection (friend request)
+
+[zrl=[baseurl]/help/hook/account_downgrade]account_downgrade[/zrl]
+ Called when an account has expired, indicating a potential downgrade to "basic" service class
+
+[zrl=[baseurl]/help/hook/account_settings]account_settings[/zrl]
+ Called when generating the account settings form
+
+[zrl=[baseurl]/help/hook/settings_account]account_settings_post[/zrl]
+ Called when posting from the account settings form
+
+[zrl=[baseurl]/help/hook/activity_received]activity_received[/zrl]
+ Called when an activity (post, comment, like, etc.) has been received from a zot source
+
+[zrl=[baseurl]/help/hook/affinity_labels]affinity_labels[/zrl]
+ Used to generate alternate labels for the affinity slider.
+
+[zrl=[baseurl]/help/hook/api_perm_is_allowed]api_perm_is_allowed[/zrl]
+ Called when perm_is_allowed() is executed from an API call.
+
+[zrl=[baseurl]/help/hook/atom_author]atom_author[/zrl]
+ Called when generating an author or owner element for an Atom ActivityStream feed
+
+[zrl=[baseurl]/help/hook/atom_entry]atom_entry[/zrl]
+ Called when generating each item entry of an Atom ActivityStreams feed
+
+[zrl=[baseurl]/help/hook/atom_feed]atom_feed[/zrl]
+ Called when generating an Atom ActivityStreams feed
+
+[zrl=[baseurl]/help/hook/atom_feed_end]atom_feed_end[/zrl]
+ Called when generation of an Atom ActivityStreams feed is completed
+
+[zrl=[baseurl]/help/hook/attach_upload_file]attach_upload_file[/zrl]
+ Called when uploading a file
+
+[zrl=[baseurl]/help/hook/authenticate]authenticate[/zrl]
+ Can provide alternate authentication mechanisms
+
+[zrl=[baseurl]/help/hook/bb2diaspora]bb2diaspora[/zrl]
+ called when converting bbcode to markdown
+
+[zrl=[baseurl]/help/hook/bbcode]bbcode[/zrl]
+ Called when converting bbcode to HTML
+
+[zrl=[baseurl]/help/hook/channel_remove]channel_remove[/zrl]
+ Called when removing a channel
+
+[zrl=[baseurl]/help/hook/chat_message]chat_message[/zrl]
+ Called to create a chat message.
+
+[zrl=[baseurl]/help/hook/chat_post]chat_post[/zrl]
+ Called when a chat message has been posted
+
+[zrl=[baseurl]/help/hook/check_account_email]check_account_email[/zrl]
+ Validate the email provided in an account registration
+
+[zrl=[baseurl]/help/hook/check_account_invite]check_account_invite[/zrl]
+ Validate an invitation code when using site invitations
+
+[zrl=[baseurl]/help/hook/check_account_password]check_account_password[/zrl]
+ Used to provide policy control over account passwords (minimum length, character set inclusion, etc.)
+
+[zrl=[baseurl]/help/hook/connect_premium]connect_premium[/zrl]
+ Called when connecting to a premium channel
+
+[zrl=[baseurl]/help/hook/connector_settings]connector_settings[/zrl]
+ Called when posting to the features/addon settings page
+
+[zrl=[baseurl]/help/hook/construct_page]construct_page[/zrl]
+ General purpose hook to provide content to certain page regions. Called when constructing the Comanche page.
+
+[zrl=[baseurl]/help/hook/contact_block_end]contact_block_end[/zrl]
+ Called when generating the sidebar "Connections" widget
+
+[zrl=[baseurl]/help/hook/contact_edit]contact_edit[/zrl]
+ Called when editing a connection via connedit
+
+[zrl=[baseurl]/help/hook/contact_edit_post]contact_edit_post[/zrl]
+ Called when posting to connedit
+
+[zrl=[baseurl]/help/hook/contact_select_options]contact_select_options[/zrl]
+ Deprecated/unused
+
+[zrl=[baseurl]/help/hook/conversation_start]conversation_start[/zrl]
+ Called in the beginning of rendering a conversation (message or message collection or stream)
+
+[zrl=[baseurl]/help/hook/create_identity]create_identity[/zrl]
+ Called when creating a channel
+
+[zrl=[baseurl]/help/hook/cron]cron[/zrl]
+ Called when scheduled tasks (poller) is executed
+
+[zrl=[baseurl]/help/hook/cron_daily]cron_daily[/zrl]
+ Called when daily scheduled tasks are executed
+
+[zrl=[baseurl]/help/hook/cron_weekly]cron_weekly[/zrl]
+ Called when weekly scheduled tasks are executed
+
+[zrl=[baseurl]/help/hook/directory_item]directory_item[/zrl]
+ Called when generating a directory listing for display
+
+[zrl=[baseurl]/help/hook/discover_by_webbie]discover_by_webbie[/zrl]
+ Called when performing a webfinger lookup
+
+[zrl=[baseurl]/help/hook/display_item]display_item[/zrl]
+ Called for each item being displayed in a conversation thread
+
+[zrl=[baseurl]/help/hook/display_settings]display_settings[/zrl]
+ Called from settings module when displaying the 'display settings' section
+
+[zrl=[baseurl]/help/hook/display_settings_post]display_settings_post[/zrl]
+ Called when posting from the settings module 'display settings' form
+
+[zrl=[baseurl]/help/hook/donate_contributors]donate_contributors[/zrl]
+ called by the 'donate' addon when generating a list of donation recipients
+
+[zrl=[baseurl]/help/hook/donate_plugin]donate_plugin[/zrl]
+ called by the 'donate' addon
+
+[zrl=[baseurl]/help/hook/donate_sponsors]donate_sponsors[/zrl]
+ called by the 'donate' addon
+
+[zrl=[baseurl]/help/hook/dreport_is_storable]dreport_is_storable[/zrl]
+ called before storing a dreport record to determine whether to store it
+
+[zrl=[baseurl]/help/hook/drop_item]drop_item[/zrl]
+ called when an 'item' is removed
+
+[zrl=[baseurl]/help/hook/enotify]enotify[/zrl]
+ called before any notification
+
+[zrl=[baseurl]/help/hook/enotify_mail]enotify_mail[/zrl]
+ called when sending a notification email
+
+[zrl=[baseurl]/help/hook/enotify_store]enotify_store[/zrl]
+ called when storing a notification record
+
+[zrl=[baseurl]/help/hook/event_created]event_created[/zrl]
+ called when an event record is created
+
+[zrl=[baseurl]/help/hook/event_updated]event_updated[/zrl]
+ called when an event record is modified
+
+[zrl=[baseurl]/help/hook/externals_url_select]externals_url_select[/zrl]
+ called when generating a list of random sites to pull public posts from
+
+[zrl=[baseurl]/help/hook/feature_enabled]feature_enabled[/zrl]
+ called when 'feature_enabled()' is used
+
+[zrl=[baseurl]/help/hook/feature_settings]feature_settings[/zrl]
+ called from settings page when visiting 'addon/feature settings'
+
+[zrl=[baseurl]/help/hook/feature_settings_post]feature_settings_post[/zrl]
+ called from settings page when posting from 'addon/feature settings'
+
+[zrl=[baseurl]/help/hook/follow]follow[/zrl]
+ called when a follow operation takes place
+
+[zrl=[baseurl]/help/hook/follow_allow]follow_allow[/zrl]
+ called before storing the results of a follow operation
+
+[zrl=[baseurl]/help/hook/gender_selector]gender_selector[/zrl]
+ called when creating the 'gender' drop down list (advanced profile)
+
+[zrl=[baseurl]/help/hook/gender_selector_min]gender_selector_min[/zrl]
+ called when creating the 'gender' drop down list (normal profile)
+
+
+[zrl=[baseurl]/help/hook/generate_map]generate_map[/zrl]
+ called to generate the HTML for displaying a map location by coordinates
+
+[zrl=[baseurl]/help/hook/generate_named_map]generate_named_map[/zrl]
+ called to generate the HTML for displaying a map location by text location
+
+[zrl=[baseurl]/help/hook/get_all_api_perms]get_all_api_perms[/zrl]
+ Called when retrieving the permissions for API uses
+
+[zrl=[baseurl]/help/hook/get_all_perms]get_all_perms[/zrl]
+ called when get_all_perms() is used
+
+[zrl=[baseurl]/help/hook/get_features]get_features[/zrl]
+ Called when get_features() is called
+
+[zrl=[baseurl]/help/hook/get_role_perms]get_role_perms[/zrl]
+ Called when get_role_perms() is called to obtain permissions for named permission roles
+
+[zrl=[baseurl]/help/hook/global_permissions]global_permissions[/zrl]
+ Called when the global permissions list is generated
+
+[zrl=[baseurl]/help/hook/home_content]home_content[/zrl]
+ Called from mod_home to replace the content of the home page
+
+[zrl=[baseurl]/help/hook/home_init]home_init[/zrl]
+ Called from the home page home_init() function
+
+[zrl=[baseurl]/help/hook/hostxrd]hostxrd[/zrl]
+ Called when generating .well-known/hosts-meta for "old webfinger" (used by Diaspora protocol)
+
+[zrl=[baseurl]/help/hook/html2bbcode]html2bbcode[/zrl]
+ Called when using the html2bbcode tranlsation
+
+[zrl=[baseurl]/help/hook/identity_basic_export]identity_basic_export[/zrl]
+ Called when exporting a channel's basic information for backup or transfer
+
+[zrl=[baseurl]/help/hook/import_author_xchan]import_author_xchan[/zrl]
+ Called when looking up an author of a post by xchan_hash to ensure they have an xchan record on our site
+
+[zrl=[baseurl]/help/hook/import_channel]import_channel[/zrl]
+ Called when importing a channel from a file or API source
+
+[zrl=[baseurl]/help/hook/import_directory_profile]import_directory_profile[/zrl]
+ Called when processing delivery of a profile structure from an external source (usually for directory storage)
+
+[zrl=[baseurl]/help/hook/import_xchan]import_xchan[/zrl]
+ Called when processing the result of zot_finger() to store the result
+
+[zrl=[baseurl]/help/hook/item_photo_menu]item_photo_menu[/zrl]
+ Called when generating the list of actions associated with a displayed conversation item
+
+[zrl=[baseurl]/help/hook/item_store]item_store[/zrl]
+ Called when item_store() stores a record of type item
+
+[zrl=[baseurl]/help/hook/item_store_update]item_store_update[/zrl]
+ Called when item_store_update() is called to update a stored item.
+
+[zrl=[baseurl]/help/hook/item_translate]item_translate[/zrl]
+ Called from item_store and item_store_update after the post language has been autodetected
+
+[zrl=[baseurl]/help/hook/jot_networks]jot_networks[/zrl]
+ Called to generate the list of additional post plugins to enable from the ACL form
+
+[zrl=[baseurl]/help/hook/jot_tool]jot_tool[/zrl]
+ Deprecated and possibly obsolete. Allows one to add action buttons to the post editor.
+
+[zrl=[baseurl]/help/hook/load_pdl]load_pdl[/zrl]
+ Called when we load a PDL file or description
+
+[zrl=[baseurl]/help/hook/local_dir_update]local_dir_update[/zrl]
+ Called when processing a directory update from a channel on the directory server
+
+[zrl=[baseurl]/help/hook/logged_in]logged_in[/zrl]
+ Called when authentication by any means has succeeeded
+
+[zrl=[baseurl]/help/hook/logging_out]logging_out[/zrl]
+ Called when logging out
+
+[zrl=[baseurl]/help/hook/login_hook]login_hook[/zrl]
+ Called when generating the login form
+
+[zrl=[baseurl]/help/hook/magic_auth]magic_auth[/zrl]
+ Called when processing a magic-auth sequence
+
+[zrl=[baseurl]/help/hook/magic_auth_openid_success]magic_auth_openid_success[/zrl]
+ Called when a magic-auth was successful due to openid credentials
+
+[zrl=[baseurl]/help/hook/magic_auth_success]magic_auth_success[/zrl]
+ Called when a magic-auth was successful
+
+[zrl=[baseurl]/help/hook/main_slider]main_slider[/zrl]
+ Called whne generating the affinity tool
+
+[zrl=[baseurl]/help/hook/marital_selector]marital_selector[/zrl]
+ Called when generating the list of choices for the 'marital status' profile dropdown (advanced profile)
+
+[zrl=[baseurl]/help/hook/marital_selector_min]marital_selector_min[/zrl]
+ Called when generating the list of choices for the 'marital status' profile dropdown (normal profile)
+
+[zrl=[baseurl]/help/hook/module_loaded]module_loaded[/zrl]
+ Called when a module has been successfully locate to server a URL request
+
+[zrl=[baseurl]/help/hook/mood_verbs]mood_verbs[/zrl]
+ Called when generating the list of moods
+
+[zrl=[baseurl]/help/hook/nav]nav[/zrl]
+ Called when generating the navigation bar
+
+[zrl=[baseurl]/help/hook/network_content_init]network_content_init[/zrl]
+ Called when loading cntent for the network page
+
+[zrl=[baseurl]/help/hook/network_ping]network_ping[/zrl]
+ Called during a ping request
+
+[zrl=[baseurl]/help/hook/network_tabs]network_tabs[/zrl]
+ Called when generating the list of tabs for the network page
+
+[zrl=[baseurl]/help/hook/network_to_name]network_to_name[/zrl]
+ Deprecated
+
+[zrl=[baseurl]/help/hook/notifier_end]notifier_end[/zrl]
+ Called when a delivery loop has completed
+
+[zrl=[baseurl]/help/hook/notifier_hub]notifier_hub[/zrl]
+ Called when a hub is delivered
+
+[zrl=[baseurl]/help/hook/notifier_normal]notifier_normal[/zrl]
+ Called when the notofoer is invoked for a 'normal' delivery
+
+[zrl=[baseurl]/help/hook/obj_verbs]obj_verbs[/zrl]
+ Called when creating the list of verbs available for profile "things".
+
+[zrl=[baseurl]/help/hook/oembed_probe]oembed_probe[/zrl]
+ Called when performing an oembed content lookup
+
+[zrl=[baseurl]/help/hook/page_content_top]page_content_top[/zrl]
+ Called when we generate a webpage (before calling the module content function)
+
+[zrl=[baseurl]/help/hook/page_end]page_end[/zrl]
+ Called after we have generated the page content
+
+[zrl=[baseurl]/help/hook/page_header]page_header[/zrl]
+ Called when generating the navigation bar
+
+[zrl=[baseurl]/help/hook/parse_atom]parse_atom[/zrl]
+ Called when parsing an atom/RSS feed item
+
+[zrl=[baseurl]/help/hook/parse_link]parse_link[/zrl]
+ Called when probing a URL to generate post content from it
+
+[zrl=[baseurl]/help/hook/pdl_selector]pdl_selector[/zrl]
+ Called when creating a layout selection in a form
+
+[zrl=[baseurl]/help/hook/perm_is_allowed]perm_is_allowed[/zrl]
+ Called during perm_is_allowed() to determine if a permission is allowed for this channel and observer
+
+[zrl=[baseurl]/help/hook/permissions_create]permissions_create[/zrl]
+ Called when an abook entry (connection) is created
+
+[zrl=[baseurl]/help/hook/permissions_update]permissions_update[/zrl]
+ Called when a permissions refresh is transmitted
+
+[zrl=[baseurl]/help/hook/personal_xrd]personal_xrd[/zrl]
+ Called when generating the personal XRD for "old webfinger" (Diaspora)
+
+[zrl=[baseurl]/help/hook/photo_post_end]photo_post_end[/zrl]
+ Called after uploading a photo
+
+[zrl=[baseurl]/help/hook/photo_upload_begin]photo_upload_begin[/zrl]
+ Called when attempting to upload a photo
+
+[zrl=[baseurl]/help/hook/photo_upload_end]photo_upload_end[/zrl]
+ Called when a photo upload has been processed
+
+[zrl=[baseurl]/help/hook/photo_upload_file]photo_upload_file[/zrl]
+ Called to generate alternate filenames for an upload
+
+[zrl=[baseurl]/help/hook/photo_upload_form]photo_upload_form[/zrl]
+ Called when generating a photo upload form
+
+[zrl=[baseurl]/help/hook/poke_verbs]poke_verbs[/zrl]
+ Called when generating the list of actions for "poke" module
+
+[zrl=[baseurl]/help/hook/post_local]post_local[/zrl]
+ Called when an item has been posted on this machine via mod/item.php (also via API)
+
+[zrl=[baseurl]/help/hook/post_local_end]post_local_end[/zrl]
+ Called after a local post operation has completed
+
+[zrl=[baseurl]/help/hook/post_local_start]post_local_start[/zrl]
+ Called when a local post operation is commencing
+
+[zrl=[baseurl]/help/hook/post_mail]post_mail[/zrl]
+ Called when a mail message has been composed
+
+[zrl=[baseurl]/help/hook/post_mail_end]post_mail_end[/zrl]
+ Called when a mail message has been delivered
+
+[zrl=[baseurl]/help/hook/post_remote]post_remote[/zrl]
+ Called when an activity arrives from another site
+
+[zrl=[baseurl]/help/hook/post_remote_end]post_remote_end[/zrl]
+ Called after processing a remote post
+
+[zrl=[baseurl]/help/hook/post_remote_update]post_remote_update[/zrl]
+ Called when processing a remote post that involved an edit or update
+
+[zrl=[baseurl]/help/hook/post_remote_update_end]post_remote_update_end[/zrl]
+ Called after processing a remote post that involved an edit or update
+
+[zrl=[baseurl]/help/hook/prepare_body]prepare_body[/zrl]
+ Called when generating the HTML for a displayed conversation item
+
+[zrl=[baseurl]/help/hook/prepare_body_final]prepare_body_final[/zrl]
+ Called after generating the HTML for a displayed conversation item
+
+[zrl=[baseurl]/help/hook/prepare_body_init]prepare_body_init[/zrl]
+ Called before generating the HTML for a displayed conversation item
+
+[zrl=[baseurl]/help/hook/probe_well_known]probe_well_known[/zrl]
+ under construction
+
+[zrl=[baseurl]/help/hook/proc_run]proc_run[/zrl]
+ Called when invoking PHP sub processes
+
+[zrl=[baseurl]/help/hook/process_channel_sync_delivery]process_channel_sync_delivery[/zrl]
+ Called when accepting delivery of a 'sync packet' containing structure and table updates from a channel clone
+
+[zrl=[baseurl]/help/hook/profile_advanced]profile_advanced[/zrl]
+ Called when generating an advanced profile page
+
+[zrl=[baseurl]/help/hook/profile_edit]profile_edit[/zrl]
+ Called when editing a profile
+
+[zrl=[baseurl]/help/hook/profile_photo_content_end]profile_photo_content_end[/zrl]
+ Called when changing a profile photo
+
+[zrl=[baseurl]/help/hook/profile_post]profile_post[/zrl]
+ Called when posting an edited profile
+
+[zrl=[baseurl]/help/hook/profile_sidebar]profile_sidebar[/zrl]
+ Called when generating the 'channel sidebar' or mini-profile
+
+[zrl=[baseurl]/help/hook/profile_sidebar_enter]profile_sidebar_enter[/zrl]
+ Called before generating the 'channel sidebar' or mini-profile
+
+[zrl=[baseurl]/help/hook/profile_tabs]profile_tabs[/zrl]
+ Called when generating the tabs for channel related pages (channel,profile,files,etc.)
+
+[zrl=[baseurl]/help/hook/register_account]register_account[/zrl]
+ Called when an account has been created
+
+[zrl=[baseurl]/help/hook/render_location]render_location[/zrl]
+ Called to generate an ineractive inline map
+
+[zrl=[baseurl]/help/hook/replace_macros]replace_macros[/zrl]
+ Called before invoking the template processor
+
+[zrl=[baseurl]/help/hook/reverse_magic_auth]reverse_magic_auth[/zrl]
+ Called before invoking reverse magic auth to send you to your own site to authenticate on this site
+
+[zrl=[baseurl]/help/hook/settings_form]settings_form[/zrl]
+ Called when generating the channel settings form
+
+[zrl=[baseurl]/help/hook/settings_post]settings_post[/zrl]
+ Called when posting from the channel settings form
+
+[zrl=[baseurl]/help/hook/sexpref_selector]sexpref_selector[/zrl]
+ Called when generating a dropdown of sexual preference (advanced profile)
+
+[zrl=[baseurl]/help/hook/sexpref_selector_min]sexpref_selector_min[/zrl]
+ Called when generating a dropdown of sexual preference (normal profile)
+
+[zrl=[baseurl]/help/hook/smilie]smilie[/zrl]
+ Called when translating emoticons
+
+[zrl=[baseurl]/help/hook/tagged]tagged[/zrl]
+ Called when a delivery is processed which results in you being tagged
+
+[zrl=[baseurl]/help/hook/validate_channelname]validate_channelname[/zrl]
+ Used to validate the names used by a channel
+
+[zrl=[baseurl]/help/hook/webfinger]webfinger[/zrl]
+ Called when visiting the webfinger (RFC7033) service
+
+[zrl=[baseurl]/help/hook/well_known]well_known[/zrl]
+ Called when accessing the '.well-known' special site addresses
+
+[zrl=[baseurl]/help/hook/zid]zid[/zrl]
+ Called when adding the observer's zid to a URL
+
+[zrl=[baseurl]/help/hook/zid_init]zid_init[/zrl]
+ Called when authenticating a visitor who has used zid
+
+[zrl=[baseurl]/help/hook/zot_finger]zot_finger[/zrl]
+ Called when a zot-info packet has been requested (this is our webfinger discovery mechanism)
diff --git a/doc/hooks.html b/doc/hooks.html
new file mode 100644
index 000000000..c05de58ef
--- /dev/null
+++ b/doc/hooks.html
@@ -0,0 +1 @@
+<div><h3>Hooks</h3><table><tr><td>Function</td><td>Source File</td><td>Arg</td></tr><tr><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td></tr><tr><td>$a-&gt;module . _mod_aftercontent</td><td>index.php</td><td>$arr</td></tr><tr><td>$a-&gt;module . _mod_content</td><td>index.php</td><td>$arr</td></tr><tr><td>$a-&gt;module . _mod_init</td><td>index.php</td><td>$placeholder</td></tr><tr><td>$a-&gt;module . _mod_post</td><td>index.php</td><td>$_POST</td></tr><tr><td>$a-&gt;module . _post_ . $selname</td><td>include/acl_selectors.php</td><td>$o</td></tr><tr><td>$a-&gt;module . _post_ . $selname</td><td>include/acl_selectors.php</td><td>$o</td></tr><tr><td>$a-&gt;module . _post_ . $selname</td><td>include/acl_selectors.php</td><td>$o</td></tr><tr><td>$a-&gt;module . _pre_ . $selname</td><td>include/acl_selectors.php</td><td>$arr</td></tr><tr><td>$a-&gt;module . _pre_ . $selname</td><td>include/acl_selectors.php</td><td>$arr</td></tr><tr><td>$a-&gt;module . _pre_ . $selname</td><td>include/acl_selectors.php</td><td>$arr</td></tr><tr><td>$name</td><td>include/plugin.php</td><td>&amp;$data = null</td></tr><tr><td>about_hook</td><td>mod/siteinfo.php</td><td>$o</td></tr><tr><td>accept_follow</td><td>mod/connedit.php</td><td>$arr</td></tr><tr><td>account_downgrade</td><td>include/account.php</td><td>$ret</td></tr><tr><td>account_downgrade</td><td>include/account.php</td><td>$ret</td></tr><tr><td>account_settings</td><td>mod/settings.php</td><td>$account_settings</td></tr><tr><td>activity_received</td><td>include/zot.php</td><td>$parr</td></tr><tr><td>affinity_labels</td><td>include/widgets.php</td><td>$labels</td></tr><tr><td>affinity_labels</td><td>mod/connedit.php</td><td>$labels</td></tr><tr><td>api_perm_is_allowed</td><td>include/permissions.php</td><td>$arr</td></tr><tr><td>app_menu</td><td>index.php</td><td>$arr</td></tr><tr><td>atom_author</td><td>include/items.php</td><td>$o</td></tr><tr><td>atom_entry</td><td>include/items.php</td><td>$o</td></tr><tr><td>atom_feed</td><td>include/items.php</td><td>$atom</td></tr><tr><td>atom_feed_end</td><td>include/items.php</td><td>$atom</td></tr><tr><td>attach_upload_file</td><td>include/attach.php</td><td>$f</td></tr><tr><td>authenticate</td><td>include/auth.php</td><td>$addon_auth</td></tr><tr><td>avatar_lookup</td><td>include/network.php</td><td>$avatar</td></tr><tr><td>bb2diaspora</td><td>include/bb2diaspora.php</td><td>$Text</td></tr><tr><td>bbcode</td><td>include/bbcode.php</td><td>$Text</td></tr><tr><td>channel_remove</td><td>include/Contact.php</td><td>$r[0]</td></tr><tr><td>chat_message</td><td>include/chat.php</td><td>$arr</td></tr><tr><td>chat_post</td><td>mod/chatsvc.php</td><td>$arr</td></tr><tr><td>check_account_email</td><td>include/account.php</td><td>$arr</td></tr><tr><td>check_account_invite</td><td>include/account.php</td><td>$arr</td></tr><tr><td>check_account_password</td><td>include/account.php</td><td>$arr</td></tr><tr><td>connect_premium</td><td>mod/connect.php</td><td>$arr</td></tr><tr><td>connector_settings</td><td>mod/settings.php</td><td>$settings_connectors</td></tr><tr><td>construct_page</td><td>boot.php</td><td>$arr</td></tr><tr><td>contact_block_end</td><td>include/text.php</td><td>$arr</td></tr><tr><td>contact_edit</td><td>mod/connedit.php</td><td>$arr</td></tr><tr><td>contact_edit_post</td><td>mod/connedit.php</td><td>$_POST</td></tr><tr><td>contact_select_options</td><td>include/acl_selectors.php</td><td>$x</td></tr><tr><td>conversation_start</td><td>include/conversation.php</td><td>$cb</td></tr><tr><td>create_identity</td><td>include/identity.php</td><td>$newuid</td></tr><tr><td>cron</td><td>include/cronhooks.php</td><td>$d</td></tr><tr><td>cron_daily</td><td>include/poller.php</td><td>datetime_convert()</td></tr><tr><td>cron_weekly</td><td>include/poller.php</td><td>datetime_convert()</td></tr><tr><td>directory_item</td><td>mod/directory.php</td><td>$arr</td></tr><tr><td>discover_by_webbie</td><td>include/network.php</td><td>$arr</td></tr><tr><td>display_item</td><td>include/ItemObject.php</td><td>$arr</td></tr><tr><td>display_item</td><td>include/conversation.php</td><td>$arr</td></tr><tr><td>display_settings</td><td>mod/settings.php</td><td>$o</td></tr><tr><td>display_settings_post</td><td>mod/settings.php</td><td>$_POST</td></tr><tr><td>donate_contributors</td><td>extend/addon/matrix/donate/donate.php</td><td>$contributors</td></tr><tr><td>donate_plugin</td><td>extend/addon/matrix/donate/donate.php</td><td>$o</td></tr><tr><td>donate_sponsors</td><td>extend/addon/matrix/donate/donate.php</td><td>$sponsors</td></tr><tr><td>dreport_is_storable</td><td>include/zot.php</td><td>$dr</td></tr><tr><td>drop_item</td><td>include/items.php</td><td>$arr</td></tr><tr><td>enotify</td><td>include/enotify.php</td><td>$h</td></tr><tr><td>enotify_mail</td><td>include/enotify.php</td><td>$datarray</td></tr><tr><td>enotify_store</td><td>include/enotify.php</td><td>$datarray</td></tr><tr><td>event_created</td><td>include/event.php</td><td>$event[id]</td></tr><tr><td>event_updated</td><td>include/event.php</td><td>$event[id]</td></tr><tr><td>externals_url_select</td><td>include/externals.php</td><td>$arr</td></tr><tr><td>feature_enabled</td><td>include/features.php</td><td>$arr</td></tr><tr><td>feature_settings</td><td>mod/settings.php</td><td>$settings_addons</td></tr><tr><td>feature_settings_post</td><td>mod/settings.php</td><td>$_POST</td></tr><tr><td>follow</td><td>include/follow.php</td><td>$arr</td></tr><tr><td>follow</td><td>include/follow.php</td><td>$arr</td></tr><tr><td>follow_allow</td><td>include/follow.php</td><td>$x</td></tr><tr><td>gender_selector</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>gender_selector_min</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>generate_map</td><td>include/text.php</td><td>$arr</td></tr><tr><td>generate_named_map</td><td>include/text.php</td><td>$arr</td></tr><tr><td>get_all_api_perms</td><td>include/permissions.php</td><td>$arr</td></tr><tr><td>get_all_perms</td><td>include/permissions.php</td><td>$arr</td></tr><tr><td>get_features</td><td>include/features.php</td><td>$arr</td></tr><tr><td>get_role_perms</td><td>include/permissions.php</td><td>$ret</td></tr><tr><td>get_widgets</td><td>boot.php</td><td>$arr</td></tr><tr><td>get_widgets</td><td>boot.php</td><td>$arr</td></tr><tr><td>global_permissions</td><td>include/permissions.php</td><td>$ret</td></tr><tr><td>home_content</td><td>mod/home.php</td><td>$o</td></tr><tr><td>home_init</td><td>mod/home.php</td><td>$ret</td></tr><tr><td>hostxrd</td><td>mod/hostxrd.php</td><td>$arr</td></tr><tr><td>html2bbcode</td><td>include/html2bbcode.php</td><td>$message</td></tr><tr><td>identity_basic_export</td><td>include/identity.php</td><td>$addon</td></tr><tr><td>import_author_xchan</td><td>include/items.php</td><td>$arr</td></tr><tr><td>import_channel</td><td>mod/import.php</td><td>$addon</td></tr><tr><td>import_directory_profile</td><td>include/zot.php</td><td>$d</td></tr><tr><td>import_xchan</td><td>include/zot.php</td><td>$arr</td></tr><tr><td>item_photo_menu</td><td>include/conversation.php</td><td>$args</td></tr><tr><td>item_store</td><td>include/items.php</td><td>$d</td></tr><tr><td>item_store</td><td>include/items.php</td><td>$arr</td></tr><tr><td>item_store_update</td><td>include/items.php</td><td>$d</td></tr><tr><td>item_translate</td><td>include/items.php</td><td>$translate</td></tr><tr><td>item_translate</td><td>include/items.php</td><td>$translate</td></tr><tr><td>jot_networks</td><td>include/acl_selectors.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>include/conversation.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>mod/editblock.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>mod/editpost.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>mod/editwebpage.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>mod/editlayout.php</td><td>$jotnets</td></tr><tr><td>jot_tool</td><td>include/conversation.php</td><td>$jotplugins</td></tr><tr><td>jot_tool</td><td>mod/editblock.php</td><td>$jotplugins</td></tr><tr><td>jot_tool</td><td>mod/editpost.php</td><td>$jotplugins</td></tr><tr><td>jot_tool</td><td>mod/editwebpage.php</td><td>$jotplugins</td></tr><tr><td>jot_tool</td><td>mod/editlayout.php</td><td>$jotplugins</td></tr><tr><td>load_pdl</td><td>boot.php</td><td>$arr</td></tr><tr><td>local_dir_update</td><td>include/dir_fns.php</td><td>$arr</td></tr><tr><td>logged_in</td><td>include/oauth.php</td><td>$a-&gt;user</td></tr><tr><td>logged_in</td><td>include/api.php</td><td>$a-&gt;user</td></tr><tr><td>logged_in</td><td>include/security.php</td><td>$a-&gt;account</td></tr><tr><td>logged_in</td><td>include/security.php</td><td>$user_record</td></tr><tr><td>logging_out</td><td>include/auth.php</td><td>$args</td></tr><tr><td>login_hook</td><td>boot.php</td><td>$o</td></tr><tr><td>magic_auth</td><td>mod/magic.php</td><td>$arr</td></tr><tr><td>magic_auth_openid_success</td><td>mod/openid.php</td><td>$arr</td></tr><tr><td>magic_auth_openid_success</td><td>mod/openid.php</td><td>$arr</td></tr><tr><td>magic_auth_success</td><td>mod/post.php</td><td>$arr</td></tr><tr><td>main_slider</td><td>include/widgets.php</td><td>$arr</td></tr><tr><td>marital_selector</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>marital_selector_min</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>module_loaded</td><td>index.php</td><td>$x</td></tr><tr><td>mood_verbs</td><td>include/text.php</td><td>$arr</td></tr><tr><td>nav</td><td>include/nav.php</td><td>$x</td></tr><tr><td>network_content_init</td><td>mod/network.php</td><td>$arr</td></tr><tr><td>network_ping</td><td>mod/ping.php</td><td>$arr</td></tr><tr><td>network_tabs</td><td>include/conversation.php</td><td>$arr</td></tr><tr><td>network_to_name</td><td>include/contact_selectors.php</td><td>$nets</td></tr><tr><td>notifier_end</td><td>include/notifier.php</td><td>$target_item</td></tr><tr><td>notifier_hub</td><td>include/notifier.php</td><td>$narr</td></tr><tr><td>notifier_normal</td><td>include/deliver_hooks.php</td><td>$r[0]</td></tr><tr><td>obj_verbs</td><td>include/taxonomy.php</td><td>$arr</td></tr><tr><td>oembed_probe</td><td>include/oembed.php</td><td>$x</td></tr><tr><td>page_content_top</td><td>index.php</td><td>$a-&gt;page[content]</td></tr><tr><td>page_end</td><td>index.php</td><td>$a-&gt;page[content]</td></tr><tr><td>page_header</td><td>include/nav.php</td><td>$a-&gt;page[nav]</td></tr><tr><td>parse_atom</td><td>include/items.php</td><td>$arr</td></tr><tr><td>parse_link</td><td>mod/linkinfo.php</td><td>$arr</td></tr><tr><td>pdl_selector</td><td>include/comanche.php</td><td>$arr</td></tr><tr><td>perm_is_allowed</td><td>include/permissions.php</td><td>$arr</td></tr><tr><td>permissions_create</td><td>include/notifier.php</td><td>$perm_update</td></tr><tr><td>permissions_update</td><td>include/notifier.php</td><td>$perm_update</td></tr><tr><td>personal_xrd</td><td>mod/xrd.php</td><td>$arr</td></tr><tr><td>photo_post_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_post_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_begin</td><td>include/attach.php</td><td>$arr</td></tr><tr><td>photo_upload_begin</td><td>include/photos.php</td><td>$args</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_file</td><td>include/attach.php</td><td>$f</td></tr><tr><td>photo_upload_file</td><td>include/photos.php</td><td>$f</td></tr><tr><td>photo_upload_form</td><td>mod/photos.php</td><td>$ret</td></tr><tr><td>poke_verbs</td><td>include/text.php</td><td>$arr</td></tr><tr><td>post_local</td><td>include/zot.php</td><td>$arr</td></tr><tr><td>post_local</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_local</td><td>mod/item.php</td><td>$datarray</td></tr><tr><td>post_local_end</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>include/attach.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>include/attach.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>extend/addon/matrix/randpost/randpost.php</td><td>$x</td></tr><tr><td>post_local_end</td><td>extend/addon/matrix/randpost/randpost.php</td><td>$x</td></tr><tr><td>post_local_end</td><td>mod/mood.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>mod/like.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>mod/item.php</td><td>$datarray</td></tr><tr><td>post_local_end</td><td>mod/subthread.php</td><td>$arr</td></tr><tr><td>post_local_start</td><td>mod/item.php</td><td>$_REQUEST</td></tr><tr><td>post_mail</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_mail_end</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_remote</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_remote_end</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_remote_update</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_remote_update_end</td><td>include/items.php</td><td>$arr</td></tr><tr><td>prepare_body</td><td>include/text.php</td><td>$prep_arr</td></tr><tr><td>prepare_body_final</td><td>include/text.php</td><td>$prep_arr</td></tr><tr><td>prepare_body_init</td><td>include/text.php</td><td>$item</td></tr><tr><td>probe_well_known</td><td>include/probe.php</td><td>$ret</td></tr><tr><td>proc_run</td><td>boot.php</td><td>$arr</td></tr><tr><td>process_channel_sync_delivery</td><td>include/zot.php</td><td>$addon</td></tr><tr><td>profile_advanced</td><td>mod/profile.php</td><td>$o</td></tr><tr><td>profile_edit</td><td>mod/profiles.php</td><td>$arr</td></tr><tr><td>profile_photo_content_end</td><td>mod/profile_photo.php</td><td>$o</td></tr><tr><td>profile_post</td><td>mod/profiles.php</td><td>$_POST</td></tr><tr><td>profile_sidebar</td><td>include/identity.php</td><td>$arr</td></tr><tr><td>profile_sidebar_enter</td><td>include/identity.php</td><td>$profile</td></tr><tr><td>profile_tabs</td><td>include/conversation.php</td><td>$arr</td></tr><tr><td>register_account</td><td>include/account.php</td><td>$result</td></tr><tr><td>render_location</td><td>include/conversation.php</td><td>$locate</td></tr><tr><td>replace_macros</td><td>include/text.php</td><td>$arr</td></tr><tr><td>reverse_magic_auth</td><td>mod/rmagic.php</td><td>$arr</td></tr><tr><td>settings_account</td><td>mod/settings.php</td><td>$_POST</td></tr><tr><td>settings_form</td><td>mod/settings.php</td><td>$o</td></tr><tr><td>settings_post</td><td>mod/settings.php</td><td>$_POST</td></tr><tr><td>sexpref_selector</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>sexpref_selector_min</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>smilie</td><td>include/text.php</td><td>$params</td></tr><tr><td>smilie</td><td>extend/addon/matrix/smileybutton/smileybutton.php</td><td>$params</td></tr><tr><td>tagged</td><td>include/items.php</td><td>$arr</td></tr><tr><td>validate_channelname</td><td>include/identity.php</td><td>$arr</td></tr><tr><td>webfinger</td><td>mod/wfinger.php</td><td>$arr</td></tr><tr><td>well_known</td><td>mod/_well_known.php</td><td>$arr</td></tr><tr><td>zid</td><td>include/identity.php</td><td>$arr</td></tr><tr><td>zid_init</td><td>include/identity.php</td><td>$arr</td></tr><tr><td>zot_finger</td><td>include/zot.php</td><td>$ret</td></tr></table><p>Generated Tue Nov 03 21:19:02 PST 2015</p></div> \ No newline at end of file
diff --git a/doc/schemaspy_hubzilla/zot.meta.xml b/doc/schemaspy_hubzilla/zot.meta.xml
new file mode 100644
index 000000000..98a9d370e
--- /dev/null
+++ b/doc/schemaspy_hubzilla/zot.meta.xml
@@ -0,0 +1,283 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<schemaMeta xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:noNamespaceSchemaLocation="http://schemaspy.sourceforge.net/xmlschema/2011/02/05/schemaspy.meta.xsd">
+<comments>
+2015-11-04 - Hubzilla database schema with some corrected cross-table relationships supporting decentralized publishing. Haakon Meland Eriksen.
+</comments>
+
+ <tables>
+ <table name="abook">
+ <column name="abook_xchan">
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+ </table>
+ <table name="account">
+ </table>
+ <table name="addon">
+ </table>
+ <table name="app">
+ </table>
+ <table name="attach">
+ <column name="hash">
+ <foreignKey table="channel" column="channel_hash"/>
+ <foreignKey table="hubloc" column="hubloc_hash"/>
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+ </table>
+ <table name="auth_codes">
+ </table>
+ <table name="cache">
+ </table>
+ <table name="channel">
+ <column name="channel_hash">
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+ </table>
+ <table name="chat">
+ <column name="chat_xchan">
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+ </table>
+ <table name="chatpresence">
+ <column name="cp_xchan">
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+ </table>
+ <table name="chatroom">
+ </table>
+ <table name="clients">
+ </table>
+ <table name="config">
+ </table>
+ <table name="conv">
+ </table>
+ <table name="dreport">
+ <column name="dreport_xchan">
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+ </table>
+ <table name="event">
+ <column name="event_xchan">
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+ <column name="event_hash">
+ <foreignKey table="channel" column="channel_hash"/>
+ <foreignKey table="hubloc" column="hubloc_hash"/>
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+ </table>
+ <table name="fcontact">
+ </table>
+ <table name="ffinder">
+ </table>
+ <table name="fserver">
+ </table>
+ <table name="fsuggest">
+ </table>
+ <table name="group_member">
+ <column name="xchan">
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+ </table>
+ <table name="groups">
+ <column name="hash">
+ <foreignKey table="channel" column="channel_hash"/>
+ <foreignKey table="hubloc" column="hubloc_hash"/>
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+ </table>
+ <table name="hook">
+ </table>
+ <table name="hubloc">
+ <column name="hubloc_hash">
+ <foreignKey table="channel" column="channel_hash"/>
+ <foreignKey table="hubloc" column="hubloc_hash"/>
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+ </table>
+ <table name="issue">
+ </table>
+ <table name="item">
+ <column name="owner_xchan">
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+ <column name="author_xchan">
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+ <column name="source_xchan">
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+ </table>
+ <table name="item_id">
+ </table>
+ <table name="likes">
+ </table>
+ <table name="mail">
+ <column name="from_xchan">
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+ <column name="to_xchan">
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+ </table>
+ <table name="manage">
+ <column name="xchan">
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+ </table>
+ <table name="menu">
+ </table>
+ <table name="menu_item">
+ </table>
+ <table name="notify">
+ <column name="hash">
+ <foreignKey table="channel" column="channel_hash"/>
+ <foreignKey table="hubloc" column="hubloc_hash"/>
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+ </table>
+ <table name="obj">
+ </table>
+ <table name="outq">
+ <column name="outq_hash">
+ <foreignKey table="channel" column="channel_hash"/>
+ <foreignKey table="hubloc" column="hubloc_hash"/>
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+ </table>
+ <table name="pconfig">
+ </table>
+ <table name="photo">
+ <column name="xchan">
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+ </table>
+ <table name="poll">
+ </table>
+ <table name="poll_elm">
+ </table>
+ <table name="profdef">
+ </table>
+ <table name="profext">
+ <column name="hash">
+ <foreignKey table="channel" column="channel_hash"/>
+ <foreignKey table="hubloc" column="hubloc_hash"/>
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+ </table>
+ <table name="profile">
+ </table>
+ <table name="profile_check">
+ </table>
+ <table name="register">
+ <column name="hash">
+ <foreignKey table="channel" column="channel_hash"/>
+ <foreignKey table="hubloc" column="hubloc_hash"/>
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+ </table>
+ <table name="session">
+ </table>
+ <table name="shares">
+ <column name="share_xchan">
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+ </table>
+ <table name="sign">
+ </table>
+ <table name="site">
+ </table>
+ <table name="source">
+ <column name="src_channel_xchan">
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+ <column name="src_xchan">
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+ </table>
+ <table name="spam">
+ </table>
+ <table name="sys_perms">
+ </table>
+ <table name="term">
+ <column name="term_hash">
+ <foreignKey table="channel" column="channel_hash"/>
+ <foreignKey table="hubloc" column="hubloc_hash"/>
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+ <column name="parent_hash">
+ <foreignKey table="channel" column="channel_hash"/>
+ <foreignKey table="hubloc" column="hubloc_hash"/>
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+ </table>
+ <table name="tokens">
+ </table>
+ <table name="updates">
+
+ <column name="ud_hash">
+ <foreignKey table="channel" column="channel_hash"/>
+ <foreignKey table="hubloc" column="hubloc_hash"/>
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+ </table>
+ <table name="verify">
+ </table>
+ <table name="vote">
+ <column name="vote_xchan">
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+ </table>
+ <table name="xchan">
+ <column name="xchan_hash">
+ <foreignKey table="channel" column="channel_hash"/>
+ <foreignKey table="hubloc" column="hubloc_hash"/>
+ </column>
+ </table>
+ <table name="xchat">
+
+ <column name="xchat_xchan">
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+ </table>
+ <table name="xconfig">
+
+ <column name="xchan">
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+ </table>
+ <table name="xign">
+
+ <column name="xchan">
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+
+ </table>
+ <table name="xlink">
+
+ <column name="xlink_xchan">
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+ </table>
+ <table name="xperm">
+
+ </table>
+ <table name="xprof">
+ <column name="xprof_hash">
+ <foreignKey table="channel" column="channel_hash"/>
+ <foreignKey table="hubloc" column="hubloc_hash"/>
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+
+ </table>
+ <table name="xtag">
+
+ <column name="xtag_hash">
+ <foreignKey table="channel" column="channel_hash"/>
+ <foreignKey table="hubloc" column="hubloc_hash"/>
+ <foreignKey table="xchan" column="xchan_hash" />
+ </column>
+ </table>
+ </tables>
+
+</schemaMeta>
diff --git a/doc/sv/main.bb b/doc/sv/main.bb
index eb35b0b3e..26d9c78f6 100644
--- a/doc/sv/main.bb
+++ b/doc/sv/main.bb
@@ -1,4 +1,4 @@
-[img][baseurl]/assets/hashlogo.png[/img]
+[img][baseurl]/images/hubzilla-banner.png[/img]
[zrl=[baseurl]/help/about][b]Vad är $Projectname?[/b][/zrl]
$Projectname är en decentraliserad publicerings- och kommunikationsplattform som möjliggör att du behåller kontrollen över dina kommunikationer med hjälp av automatisk kryptering och fininställbar behörighetskontroll. Det är du, och bara du, som beslutar vem som är behörig att ta del av ditt innehåll.