aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRedSwede <redswede@riseup.net>2015-01-19 00:45:32 +0100
committerRedSwede <redswede@riseup.net>2015-01-19 00:45:32 +0100
commit08038eafb4e1e1374356727fa1f21dab244185cb (patch)
tree291d9fce556898b60c04faa24d35a2cfbb122787
parentcfd983b7509d55a79621b2895205f1acd74dc564 (diff)
parent5d30565c665341e6a6a805684cee4d45c1d2fafe (diff)
downloadvolse-hubzilla-08038eafb4e1e1374356727fa1f21dab244185cb.tar.gz
volse-hubzilla-08038eafb4e1e1374356727fa1f21dab244185cb.tar.bz2
volse-hubzilla-08038eafb4e1e1374356727fa1f21dab244185cb.zip
Merge branch 'master' of git://github.com/friendica/red into dev_redswede
-rw-r--r--doc/database.bb65
-rw-r--r--doc/db_abook.bb34
-rw-r--r--doc/db_account.bb42
-rw-r--r--doc/db_addon.bb20
-rw-r--r--doc/db_app.bb34
-rw-r--r--doc/db_attach.bb42
-rw-r--r--doc/db_auth_codes.bb16
-rw-r--r--doc/db_cache.bb12
-rw-r--r--doc/db_channel.bb96
-rw-r--r--doc/db_chat.bb16
-rw-r--r--doc/db_chatpresence.bb18
-rw-r--r--doc/db_chatroom.bb28
-rw-r--r--doc/db_clients.bb18
-rw-r--r--doc/db_config.bb14
-rw-r--r--doc/db_conv.bb22
-rw-r--r--doc/db_event.bb46
-rw-r--r--doc/db_fcontact.bb38
-rw-r--r--doc/db_ffinder.bb14
-rw-r--r--doc/db_fserver.bb14
-rw-r--r--doc/db_fsuggest.bb24
-rw-r--r--doc/db_group_member.bb14
-rw-r--r--doc/db_groups.bb18
-rw-r--r--doc/db_hook.bb16
-rw-r--r--doc/db_hubloc.bb38
-rw-r--r--doc/db_issue.bb20
-rw-r--r--doc/db_item.bb104
-rw-r--r--doc/db_item_id.bb16
-rw-r--r--doc/db_likes.bb24
-rw-r--r--doc/db_mail.bb34
-rw-r--r--doc/db_manage.bb12
-rw-r--r--doc/db_menu.bb16
-rw-r--r--doc/db_menu_item.bb28
-rw-r--r--doc/db_notify.bb36
-rw-r--r--doc/db_obj.bb26
-rw-r--r--doc/db_outq.bb28
-rw-r--r--doc/db_pconfig.bb16
-rw-r--r--doc/db_photo.bb52
-rw-r--r--doc/db_poll.bb16
-rw-r--r--doc/db_poll_elm.bb16
-rw-r--r--doc/db_profdef.bb18
-rw-r--r--doc/db_profext.bb16
-rw-r--r--doc/db_profile.bb94
-rw-r--r--doc/db_profile_check.bb18
-rw-r--r--doc/db_register.bb18
-rw-r--r--doc/db_session.bb14
-rw-r--r--doc/db_shares.bb14
-rw-r--r--doc/db_sign.bb18
-rw-r--r--doc/db_site.bb28
-rw-r--r--doc/db_source.bb16
-rw-r--r--doc/db_spam.bb18
-rw-r--r--doc/db_sys_perms.bb16
-rw-r--r--doc/db_term.bb28
-rw-r--r--doc/db_tokens.bb18
-rw-r--r--doc/db_updates.bb20
-rw-r--r--doc/db_verify.bb18
-rw-r--r--doc/db_vote.bb16
-rw-r--r--doc/db_xchan.bb44
-rw-r--r--doc/db_xchat.bb16
-rw-r--r--doc/db_xconfig.bb16
-rw-r--r--doc/db_xign.bb12
-rw-r--r--doc/db_xlink.bb16
-rw-r--r--doc/db_xprof.bb36
-rw-r--r--doc/db_xtag.bb14
-rw-r--r--doc/dev_beginner.bb60
-rw-r--r--doc/faq_admins.bb31
-rw-r--r--doc/faq_developers.bb7
-rw-r--r--doc/faq_members.bb17
-rw-r--r--doc/main.bb1
-rw-r--r--include/RedDAV/RedBrowser.php5
-rw-r--r--include/RedDAV/RedFile.php2
-rw-r--r--include/attach.php109
-rw-r--r--include/conversation.php2
-rw-r--r--include/text.php29
-rw-r--r--library/tableofcontents/jquery.toc.js55
-rw-r--r--mod/filestorage.php9
-rw-r--r--mod/help.php25
-rw-r--r--mod/sharedwithme.php114
-rw-r--r--view/js/autocomplete.js1
-rw-r--r--view/js/main.js2
-rw-r--r--view/theme/redbasic/css/style.css1
-rw-r--r--view/theme/redbasic/php/style.php2
-rw-r--r--view/tpl/attach_edit.tpl7
-rw-r--r--view/tpl/cloud_header.tpl5
83 files changed, 2054 insertions, 115 deletions
diff --git a/doc/database.bb b/doc/database.bb
new file mode 100644
index 000000000..037e9936a
--- /dev/null
+++ b/doc/database.bb
@@ -0,0 +1,65 @@
+[table]
+[tr][th]Table[/th][th]Description[/th][/tr]
+[tr][td][zrl=[baseurl]/help/db_abook]abook[/zrl][/td][td]contact table[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_account]account[/zrl][/td][td]service provider account[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_addon]addon[/zrl][/td][td]registered plugins[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_app]app[/zrl][/td][td]peronal app data[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_attach]attach[/zrl][/td][td]file attachments[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_auth_codes]auth_codes[/zrl][/td][td]OAuth usage[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_cache]cache[/zrl][/td][td]OEmbed cache[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_channel]channel[/zrl][/td][td][/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_chat]chat[/zrl][/td][td]chat room content[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_chatpresence]chatpresence[/zrl][/td][td]channel presence information for chat[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_chatroom]chatroom[/zrl][/td][td] data for the actual chat room[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_clients]clients[/zrl][/td][td]OAuth usage[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_config]config[/zrl][/td][td]main configuration storage[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_conv]conv[/zrl][/td][td]Diaspora private messages[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_event]event[/zrl][/td][td]Events[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_fcontact]fcontact[/zrl][/td][td]friend suggestion stuff[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_ffinder]ffinder[/zrl][/td][td]friend suggestion stuff[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_fserver]fserver[/zrl][/td][td]obsolete[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_fsuggest]fsuggest[/zrl][/td][td]friend suggestion stuff[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_group_member]group_member[/zrl][/td][td]privacy groups[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_groups]groups[/zrl][/td][td]privacy groups[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_hook]hook[/zrl][/td][td]plugin hook registry[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_hubloc]hubloc[/zrl][/td][td]Red location storage, ties a location to an xchan[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_issue]issue[/zrl][/td][td][/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_item]item[/zrl][/td][td]posts[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_item_id]item_id[/zrl][/td][td]other identifiers on other services for posts[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_likes]likes[/zrl][/td][td]likes of 'things'[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_mail]mail[/zrl][/td][td]private messages[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_manage]manage[/zrl][/td][td]may be unused in Red, table of accounts that can "su" each other[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_menu]menu[/zrl][/td][td]channel menu data[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_menu_item]menu_item[/zrl][/td][td]items uses by channel menus[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_notify]notify[/zrl][/td][td]notifications[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_obj]obj[/zrl][/td][td]object data for things (x has y)[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_outq]outq[/zrl][/td][td]Red output queue[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_pconfig]pconfig[/zrl][/td][td]personal (per channel) configuration storage[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_photo]photo[/zrl][/td][td]photo storage[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_poll]poll[/zrl][/td][td]data for polls[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_poll_elm]poll_elm[/zrl][/td][td]data for poll elements[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_profdef]profdef[/zrl][/td][td]custom profile field definitions[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_profext]profext[/zrl][/td][td]custom profile field data[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_profile]profile[/zrl][/td][td]channel profiles[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_profile_check]profile_check[/zrl][/td][td]DFRN remote auth use, may be obsolete[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_register]register[/zrl][/td][td]registrations requiring admin approval[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_session]session[/zrl][/td][td]web session storage[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_shares]shares[/zrl][/td][td]shared item information[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_sign]sign[/zrl][/td][td]Diaspora signatures. To be phased out.[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_site]site[/zrl][/td][td]site table to find directory peers[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_source]source[/zrl][/td][td]channel sources data[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_spam]spam[/zrl][/td][td]unfinished[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_sys_perms]sys_perms[/zrl][/td][td]extensible permissions for the sys channel[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_term]term[/zrl][/td][td]item taxonomy (categories, tags, etc.) table[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_tokens]tokens[/zrl][/td][td]OAuth usage[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_updates]updates[/zrl][/td][td]directory sync updates[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_verify]verify[/zrl][/td][td]general purpose verification structure[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_vote]vote[/zrl][/td][td]vote data for polls[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_xchan]xchan[/zrl][/td][td]list of known channels in the universe[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_xchat]xchat[/zrl][/td][td]bookmarked chat rooms[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_xconfig]xconfig[/zrl][/td][td]as pconfig but for channels with no local account[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_xign]xign[/zrl][/td][td][/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_xlink]xlink[/zrl][/td][td]"friends of friends" linkages derived from poco[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_xprof]xprof[/zrl][/td][td]if this hub is a directory server, contains basic public profile info of everybody in the network[/td][/tr]
+[tr][td][zrl=[baseurl]/help/db_xtag]xtag[/zrl][/td][td]if this hub is a directory server, contains tags or interests of everybody in the network[/td][/tr]
+[/table]
diff --git a/doc/db_abook.bb b/doc/db_abook.bb
new file mode 100644
index 000000000..e0c905594
--- /dev/null
+++ b/doc/db_abook.bb
@@ -0,0 +1,34 @@
+[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]abook_id[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
+[/td][/tr]
+[tr][td]abook_account[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]abook_channel[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]abook_xchan[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]abook_my_perms[/td][td][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]abook_their_perms[/td][td][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]abook_closeness[/td][td][/td][td]tinyint(3) unsigned[/td][td]NO[/td][td]MUL[/td][td]99[/td][td]
+[/td][/tr]
+[tr][td]abook_rating[/td][td][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]abook_created[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
+[/td][/tr]
+[tr][td]abook_updated[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
+[/td][/tr]
+[tr][td]abook_connected[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
+[/td][/tr]
+[tr][td]abook_dob[/td][td][/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][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]abook_profile[/td][td][/td][td]char(64)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_account.bb b/doc/db_account.bb
new file mode 100644
index 000000000..203f72bf0
--- /dev/null
+++ b/doc/db_account.bb
@@ -0,0 +1,42 @@
+[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]account_id[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
+[/td][/tr]
+[tr][td]account_parent[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]account_default_channel[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]account_salt[/td][td][/td][td]char(32)[/td][td]NO[/td][td][/td][td][/td][td]
+[/td][/tr]
+[tr][td]account_password[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
+[/td][/tr]
+[tr][td]account_email[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]account_external[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]account_language[/td][td][/td][td]char(16)[/td][td]NO[/td][td][/td][td]en[/td][td]
+[/td][/tr]
+[tr][td]account_created[/td][td][/td][td]datetime[/td][td]NO[/td][td][/td][td]0000-00-00 00:00:00[/td][td]
+[/td][/tr]
+[tr][td]account_lastlog[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
+[/td][/tr]
+[tr][td]account_flags[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]account_roles[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]account_reset[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
+[/td][/tr]
+[tr][td]account_expires[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
+[/td][/tr]
+[tr][td]account_expire_notified[/td][td][/td][td]datetime[/td][td]NO[/td][td][/td][td]0000-00-00 00:00:00[/td][td]
+[/td][/tr]
+[tr][td]account_service_class[/td][td][/td][td]char(32)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]account_level[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]account_password_changed[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_addon.bb b/doc/db_addon.bb
new file mode 100644
index 000000000..5706c1bff
--- /dev/null
+++ b/doc/db_addon.bb
@@ -0,0 +1,20 @@
+[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
+[/td][/tr]
+[tr][td]name[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]version[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]installed[/td][td][/td][td]tinyint(1)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]hidden[/td][td][/td][td]tinyint(1)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]timestamp[/td][td][/td][td]bigint(20)[/td][td]NO[/td][td][/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]plugin_admin[/td][td][/td][td]tinyint(1)[/td][td]NO[/td][td][/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/db_app.bb b/doc/db_app.bb
new file mode 100644
index 000000000..6e55e930a
--- /dev/null
+++ b/doc/db_app.bb
@@ -0,0 +1,34 @@
+[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
+[/td][/tr]
+[tr][td]app_id[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]app_sig[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
+[/td][/tr]
+[tr][td]app_author[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
+[/td][/tr]
+[tr][td]app_name[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]app_desc[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]app_url[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]app_photo[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]app_version[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]app_channel[/td][td][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]app_addr[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
+[/td][/tr]
+[tr][td]app_price[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]app_page[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
+[/td][/tr]
+[tr][td]app_requires[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_attach.bb b/doc/db_attach.bb
new file mode 100644
index 000000000..b755ee0e0
--- /dev/null
+++ b/doc/db_attach.bb
@@ -0,0 +1,42 @@
+[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
+[/td][/tr]
+[tr][td]aid[/td][td][/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]
+[/td][/tr]
+[tr][td]hash[/td][td][/td][td]char(64)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]creator[/td][td][/td][td]char(128)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]filename[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]filetype[/td][td][/td][td]char(64)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]filesize[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/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]
+[/td][/tr]
+[tr][td]folder[/td][td][/td][td]char(64)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]flags[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]data[/td][td][/td][td]longblob[/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]
+[/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]
+[/td][/tr]
+[tr][td]allow_cid[/td][td][/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]
+[/td][/tr]
+[tr][td]deny_cid[/td][td][/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]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_auth_codes.bb b/doc/db_auth_codes.bb
new file mode 100644
index 000000000..cd13011c3
--- /dev/null
+++ b/doc/db_auth_codes.bb
@@ -0,0 +1,16 @@
+[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]varchar(40)[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]client_id[/td][td][/td][td]varchar(20)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]redirect_uri[/td][td][/td][td]varchar(200)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]expires[/td][td][/td][td]int(11)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]scope[/td][td][/td][td]varchar(250)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_cache.bb b/doc/db_cache.bb
new file mode 100644
index 000000000..65c2146fb
--- /dev/null
+++ b/doc/db_cache.bb
@@ -0,0 +1,12 @@
+[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]k[/td][td][/td][td]char(255)[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]v[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]updated[/td][td][/td][td]datetime[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_channel.bb b/doc/db_channel.bb
new file mode 100644
index 000000000..215db3fb7
--- /dev/null
+++ b/doc/db_channel.bb
@@ -0,0 +1,96 @@
+[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
+[/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]
+[/td][/tr]
+[tr][td]channel_primary[/td][td][/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]
+[/td][/tr]
+[tr][td]channel_address[/td][td][/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]
+[/td][/tr]
+[tr][td]channel_guid_sig[/td][td][/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]
+[/td][/tr]
+[tr][td]channel_timezone[/td][td][/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]
+[/td][/tr]
+[tr][td]channel_theme[/td][td][/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]
+[/td][/tr]
+[tr][td]channel_pubkey[/td][td][/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]
+[/td][/tr]
+[tr][td]channel_notifyflags[/td][td][/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]
+[/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]
+[/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]
+[/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]
+[/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]
+[/td][/tr]
+[tr][td]channel_expire_days[/td][td][/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]
+[/td][/tr]
+[tr][td]channel_default_group[/td][td][/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]
+[/td][/tr]
+[tr][td]channel_allow_gid[/td][td][/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]
+[/td][/tr]
+[tr][td]channel_deny_gid[/td][td][/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]
+[/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]
+[/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]
+[/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]
+[/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]
+[/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]
+[/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]
+[/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]
+[/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]
+[/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]
+[/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]
+[/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]
+[/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]
+[/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]
+[/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]
+[/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]
+[/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]
+[/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]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_chat.bb b/doc/db_chat.bb
new file mode 100644
index 000000000..6221f36e2
--- /dev/null
+++ b/doc/db_chat.bb
@@ -0,0 +1,16 @@
+[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
+[/td][/tr]
+[tr][td]chat_room[/td][td][/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]
+[/td][/tr]
+[tr][td]chat_text[/td][td][/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]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_chatpresence.bb b/doc/db_chatpresence.bb
new file mode 100644
index 000000000..cdc948a60
--- /dev/null
+++ b/doc/db_chatpresence.bb
@@ -0,0 +1,18 @@
+[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
+[/td][/tr]
+[tr][td]cp_room[/td][td][/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]
+[/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]
+[/td][/tr]
+[tr][td]cp_status[/td][td][/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]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_chatroom.bb b/doc/db_chatroom.bb
new file mode 100644
index 000000000..b2da762cf
--- /dev/null
+++ b/doc/db_chatroom.bb
@@ -0,0 +1,28 @@
+[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
+[/td][/tr]
+[tr][td]cr_aid[/td][td][/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]
+[/td][/tr]
+[tr][td]cr_name[/td][td][/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]
+[/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]
+[/td][/tr]
+[tr][td]cr_expire[/td][td][/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]
+[/td][/tr]
+[tr][td]allow_gid[/td][td][/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]
+[/td][/tr]
+[tr][td]deny_gid[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_clients.bb b/doc/db_clients.bb
new file mode 100644
index 000000000..d342b529f
--- /dev/null
+++ b/doc/db_clients.bb
@@ -0,0 +1,18 @@
+[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]client_id[/td][td][/td][td]varchar(20)[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]pw[/td][td][/td][td]varchar(20)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]redirect_uri[/td][td][/td][td]varchar(200)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]name[/td][td][/td][td]text[/td][td]YES[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]icon[/td][td][/td][td]text[/td][td]YES[/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]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/db_config.bb b/doc/db_config.bb
new file mode 100644
index 000000000..f32d3c259
--- /dev/null
+++ b/doc/db_config.bb
@@ -0,0 +1,14 @@
+[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
+[/td][/tr]
+[tr][td]cat[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]k[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]v[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_conv.bb b/doc/db_conv.bb
new file mode 100644
index 000000000..ba1ba7f01
--- /dev/null
+++ b/doc/db_conv.bb
@@ -0,0 +1,22 @@
+[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
+[/td][/tr]
+[tr][td]guid[/td][td][/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]
+[/td][/tr]
+[tr][td]uid[/td][td][/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]
+[/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]
+[/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]
+[/td][/tr]
+[tr][td]subject[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_event.bb b/doc/db_event.bb
new file mode 100644
index 000000000..7c31d7fde
--- /dev/null
+++ b/doc/db_event.bb
@@ -0,0 +1,46 @@
+[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
+[/td][/tr]
+[tr][td]aid[/td][td][/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(11)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]event_xchan[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]event_hash[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]created[/td][td][/td][td]datetime[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]edited[/td][td][/td][td]datetime[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]start[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]finish[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]summary[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]description[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]location[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]type[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]nofinish[/td][td][/td][td]tinyint(1)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]adjust[/td][td][/td][td]tinyint(1)[/td][td]NO[/td][td]MUL[/td][td]1[/td][td]
+[/td][/tr]
+[tr][td]ignore[/td][td][/td][td]tinyint(1)[/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]
+[/td][/tr]
+[tr][td]allow_gid[/td][td][/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]
+[/td][/tr]
+[tr][td]deny_gid[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_fcontact.bb b/doc/db_fcontact.bb
new file mode 100644
index 000000000..9bd8c20fe
--- /dev/null
+++ b/doc/db_fcontact.bb
@@ -0,0 +1,38 @@
+[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
+[/td][/tr]
+[tr][td]url[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]name[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]photo[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]request[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]nick[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]addr[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]batch[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]notify[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]poll[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]confirm[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]priority[/td][td][/td][td]tinyint(1)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]network[/td][td][/td][td]char(32)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]alias[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]pubkey[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]updated[/td][td][/td][td]datetime[/td][td]NO[/td][td][/td][td]0000-00-00 00:00:00[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_ffinder.bb b/doc/db_ffinder.bb
new file mode 100644
index 000000000..c20158d56
--- /dev/null
+++ b/doc/db_ffinder.bb
@@ -0,0 +1,14 @@
+[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
+[/td][/tr]
+[tr][td]uid[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]cid[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]fid[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_fserver.bb b/doc/db_fserver.bb
new file mode 100644
index 000000000..4c4b0b530
--- /dev/null
+++ b/doc/db_fserver.bb
@@ -0,0 +1,14 @@
+[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
+[/td][/tr]
+[tr][td]server[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]posturl[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]key[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_fsuggest.bb b/doc/db_fsuggest.bb
new file mode 100644
index 000000000..9da1f2f6d
--- /dev/null
+++ b/doc/db_fsuggest.bb
@@ -0,0 +1,24 @@
+[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
+[/td][/tr]
+[tr][td]uid[/td][td][/td][td]int(11)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]cid[/td][td][/td][td]int(11)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]name[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]url[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]request[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]photo[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]note[/td][td][/td][td]text[/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][/td][td]NULL[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_group_member.bb b/doc/db_group_member.bb
new file mode 100644
index 000000000..d31fa1edb
--- /dev/null
+++ b/doc/db_group_member.bb
@@ -0,0 +1,14 @@
+[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
+[/td][/tr]
+[tr][td]uid[/td][td][/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]
+[/td][/tr]
+[tr][td]xchan[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_groups.bb b/doc/db_groups.bb
new file mode 100644
index 000000000..03e4fe2d7
--- /dev/null
+++ b/doc/db_groups.bb
@@ -0,0 +1,18 @@
+[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
+[/td][/tr]
+[tr][td]hash[/td][td][/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]
+[/td][/tr]
+[tr][td]visible[/td][td][/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]
+[/td][/tr]
+[tr][td]name[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_hook.bb b/doc/db_hook.bb
new file mode 100644
index 000000000..6e8e907a1
--- /dev/null
+++ b/doc/db_hook.bb
@@ -0,0 +1,16 @@
+[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
+[/td][/tr]
+[tr][td]hook[/td][td][/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]
+[/td][/tr]
+[tr][td]function[/td][td][/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]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_hubloc.bb b/doc/db_hubloc.bb
new file mode 100644
index 000000000..e4ab7159d
--- /dev/null
+++ b/doc/db_hubloc.bb
@@ -0,0 +1,38 @@
+[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]hubloc_id[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
+[/td][/tr]
+[tr][td]hubloc_guid[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]hubloc_guid_sig[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]hubloc_hash[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]hubloc_addr[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]hubloc_network[/td][td][/td][td]char(32)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]hubloc_flags[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]hubloc_status[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]hubloc_url[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]hubloc_url_sig[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]hubloc_host[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]hubloc_callback[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
+[/td][/tr]
+[tr][td]hubloc_connect[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]hubloc_sitekey[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]hubloc_updated[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
+[/td][/tr]
+[tr][td]hubloc_connected[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_issue.bb b/doc/db_issue.bb
new file mode 100644
index 000000000..0a6f2912b
--- /dev/null
+++ b/doc/db_issue.bb
@@ -0,0 +1,20 @@
+[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]issue_id[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
+[/td][/tr]
+[tr][td]issue_created[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
+[/td][/tr]
+[tr][td]issue_updated[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
+[/td][/tr]
+[tr][td]issue_assigned[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]issue_priority[/td][td][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]issue_status[/td][td][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]issue_component[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_item.bb b/doc/db_item.bb
new file mode 100644
index 000000000..b31823d6c
--- /dev/null
+++ b/doc/db_item.bb
@@ -0,0 +1,104 @@
+[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
+[/td][/tr]
+[tr][td]mid[/td][td][/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]
+[/td][/tr]
+[tr][td]uid[/td][td][/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]
+[/td][/tr]
+[tr][td]parent_mid[/td][td][/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]
+[/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]
+[/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]
+[/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]
+[/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]
+[/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]
+[/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]
+[/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]
+[/td][/tr]
+[tr][td]owner_xchan[/td][td][/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]
+[/td][/tr]
+[tr][td]source_xchan[/td][td][/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]
+[/td][/tr]
+[tr][td]title[/td][td][/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]
+[/td][/tr]
+[tr][td]app[/td][td][/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]
+[/td][/tr]
+[tr][td]revision[/td][td][/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]
+[/td][/tr]
+[tr][td]obj_type[/td][td][/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]
+[/td][/tr]
+[tr][td]tgt_type[/td][td][/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]
+[/td][/tr]
+[tr][td]layout_mid[/td][td][/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]
+[/td][/tr]
+[tr][td]route[/td][td][/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]
+[/td][/tr]
+[tr][td]plink[/td][td][/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]
+[/td][/tr]
+[tr][td]resource_type[/td][td][/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]
+[/td][/tr]
+[tr][td]sig[/td][td][/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]
+[/td][/tr]
+[tr][td]location[/td][td][/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]
+[/td][/tr]
+[tr][td]public_policy[/td][td][/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]
+[/td][/tr]
+[tr][td]allow_cid[/td][td][/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]
+[/td][/tr]
+[tr][td]deny_cid[/td][td][/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]
+[/td][/tr]
+[tr][td]item_restrict[/td][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]
+[/td][/tr]
+[tr][td]item_private[/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/db_item_id.bb b/doc/db_item_id.bb
new file mode 100644
index 000000000..b77ae2d1a
--- /dev/null
+++ b/doc/db_item_id.bb
@@ -0,0 +1,16 @@
+[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
+[/td][/tr]
+[tr][td]iid[/td][td][/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]
+[/td][/tr]
+[tr][td]sid[/td][td][/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]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_likes.bb b/doc/db_likes.bb
new file mode 100644
index 000000000..118c9a87e
--- /dev/null
+++ b/doc/db_likes.bb
@@ -0,0 +1,24 @@
+[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
+[/td][/tr]
+[tr][td]channel_id[/td][td][/td][td]int(11) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]liker[/td][td][/td][td]char(128)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]likee[/td][td][/td][td]char(128)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]iid[/td][td][/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]
+[/td][/tr]
+[tr][td]target_type[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]target_id[/td][td][/td][td]char(128)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]target[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_mail.bb b/doc/db_mail.bb
new file mode 100644
index 000000000..0628584ae
--- /dev/null
+++ b/doc/db_mail.bb
@@ -0,0 +1,34 @@
+[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
+[/td][/tr]
+[tr][td]convid[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]mail_flags[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]from_xchan[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]to_xchan[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]account_id[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]channel_id[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]title[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]body[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]attach[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]mid[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]parent_mid[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/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]
+[/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]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_manage.bb b/doc/db_manage.bb
new file mode 100644
index 000000000..a0fdf5aa6
--- /dev/null
+++ b/doc/db_manage.bb
@@ -0,0 +1,12 @@
+[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
+[/td][/tr]
+[tr][td]uid[/td][td][/td][td]int(11)[/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]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_menu.bb b/doc/db_menu.bb
new file mode 100644
index 000000000..5b478115d
--- /dev/null
+++ b/doc/db_menu.bb
@@ -0,0 +1,16 @@
+[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]menu_id[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
+[/td][/tr]
+[tr][td]menu_channel_id[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]menu_name[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]menu_desc[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
+[/td][/tr]
+[tr][td]menu_flags[/td][td][/td][td]int(11)[/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/db_menu_item.bb b/doc/db_menu_item.bb
new file mode 100644
index 000000000..b14aac5e4
--- /dev/null
+++ b/doc/db_menu_item.bb
@@ -0,0 +1,28 @@
+[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]mitem_id[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
+[/td][/tr]
+[tr][td]mitem_link[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
+[/td][/tr]
+[tr][td]mitem_desc[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
+[/td][/tr]
+[tr][td]mitem_flags[/td][td][/td][td]int(11)[/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]
+[/td][/tr]
+[tr][td]allow_gid[/td][td][/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]
+[/td][/tr]
+[tr][td]deny_gid[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]mitem_channel_id[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]mitem_menu_id[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]mitem_order[/td][td][/td][td]int(11)[/td][td]NO[/td][td][/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/db_notify.bb b/doc/db_notify.bb
new file mode 100644
index 000000000..42f9350e5
--- /dev/null
+++ b/doc/db_notify.bb
@@ -0,0 +1,36 @@
+[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
+[/td][/tr]
+[tr][td]hash[/td][td][/td][td]char(64)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]name[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]url[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]photo[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]date[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]msg[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]aid[/td][td][/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]
+[/td][/tr]
+[tr][td]link[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]parent[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]seen[/td][td][/td][td]tinyint(1)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]type[/td][td][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]verb[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]otype[/td][td][/td][td]char(16)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_obj.bb b/doc/db_obj.bb
new file mode 100644
index 000000000..cc5e75598
--- /dev/null
+++ b/doc/db_obj.bb
@@ -0,0 +1,26 @@
+[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]obj_id[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
+[/td][/tr]
+[tr][td]obj_page[/td][td][/td][td]char(64)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]obj_verb[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]obj_type[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]obj_obj[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]obj_channel[/td][td][/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]
+[/td][/tr]
+[tr][td]allow_gid[/td][td][/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]
+[/td][/tr]
+[tr][td]deny_gid[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_outq.bb b/doc/db_outq.bb
new file mode 100644
index 000000000..970f99de5
--- /dev/null
+++ b/doc/db_outq.bb
@@ -0,0 +1,28 @@
+[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]outq_hash[/td][td][/td][td]char(255)[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]outq_account[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]outq_channel[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]outq_driver[/td][td][/td][td]char(32)[/td][td]NO[/td][td][/td][td][/td][td]
+[/td][/tr]
+[tr][td]outq_posturl[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]outq_async[/td][td][/td][td]tinyint(1)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]outq_delivered[/td][td][/td][td]tinyint(1)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]outq_created[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
+[/td][/tr]
+[tr][td]outq_updated[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
+[/td][/tr]
+[tr][td]outq_notify[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]outq_msg[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_pconfig.bb b/doc/db_pconfig.bb
new file mode 100644
index 000000000..2ac36e61a
--- /dev/null
+++ b/doc/db_pconfig.bb
@@ -0,0 +1,16 @@
+[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
+[/td][/tr]
+[tr][td]uid[/td][td][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]cat[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]k[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]v[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_photo.bb b/doc/db_photo.bb
new file mode 100644
index 000000000..6a0cdf362
--- /dev/null
+++ b/doc/db_photo.bb
@@ -0,0 +1,52 @@
+[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
+[/td][/tr]
+[tr][td]aid[/td][td][/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]NULL[/td][td]
+[/td][/tr]
+[tr][td]xchan[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]resource_id[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]created[/td][td][/td][td]datetime[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]edited[/td][td][/td][td]datetime[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]title[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]description[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]album[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]filename[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]type[/td][td][/td][td]char(128)[/td][td]NO[/td][td]MUL[/td][td]image/jpeg[/td][td]
+[/td][/tr]
+[tr][td]height[/td][td][/td][td]smallint(6)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]width[/td][td][/td][td]smallint(6)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]size[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]data[/td][td][/td][td]mediumblob[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]scale[/td][td][/td][td]tinyint(3)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]profile[/td][td][/td][td]tinyint(1)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]photo_flags[/td][td][/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]
+[/td][/tr]
+[tr][td]allow_gid[/td][td][/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]
+[/td][/tr]
+[tr][td]deny_gid[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_poll.bb b/doc/db_poll.bb
new file mode 100644
index 000000000..57d808b71
--- /dev/null
+++ b/doc/db_poll.bb
@@ -0,0 +1,16 @@
+[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]poll_id[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
+[/td][/tr]
+[tr][td]poll_channel[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]poll_desc[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]poll_flags[/td][td][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]poll_votes[/td][td][/td][td]int(11)[/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/db_poll_elm.bb b/doc/db_poll_elm.bb
new file mode 100644
index 000000000..fd649d5a6
--- /dev/null
+++ b/doc/db_poll_elm.bb
@@ -0,0 +1,16 @@
+[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]pelm_id[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
+[/td][/tr]
+[tr][td]pelm_poll[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]pelm_desc[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]pelm_flags[/td][td][/td][td]int(11)[/td][td]NO[/td][td][/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]pelm_result[/td][td][/td][td]float[/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/db_profdef.bb b/doc/db_profdef.bb
new file mode 100644
index 000000000..a0904fd79
--- /dev/null
+++ b/doc/db_profdef.bb
@@ -0,0 +1,18 @@
+[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
+[/td][/tr]
+[tr][td]field_name[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]field_type[/td][td][/td][td]char(16)[/td][td]NO[/td][td][/td][td][/td][td]
+[/td][/tr]
+[tr][td]field_desc[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
+[/td][/tr]
+[tr][td]field_help[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
+[/td][/tr]
+[tr][td]field_inputs[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_profext.bb b/doc/db_profext.bb
new file mode 100644
index 000000000..ada9dce2a
--- /dev/null
+++ b/doc/db_profext.bb
@@ -0,0 +1,16 @@
+[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
+[/td][/tr]
+[tr][td]channel_id[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]hash[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]k[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]v[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_profile.bb b/doc/db_profile.bb
new file mode 100644
index 000000000..83db75713
--- /dev/null
+++ b/doc/db_profile.bb
@@ -0,0 +1,94 @@
+[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
+[/td][/tr]
+[tr][td]profile_guid[/td][td][/td][td]char(64)[/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]
+[/td][/tr]
+[tr][td]uid[/td][td][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]profile_name[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]is_default[/td][td][/td][td]tinyint(1)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]hide_friends[/td][td][/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]
+[/td][/tr]
+[tr][td]pdesc[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]chandesc[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]dob[/td][td][/td][td]char(32)[/td][td]NO[/td][td][/td][td]0000-00-00[/td][td]
+[/td][/tr]
+[tr][td]dob_tz[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]UTC[/td][td]
+[/td][/tr]
+[tr][td]address[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]locality[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]region[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]postal_code[/td][td][/td][td]char(32)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]country_name[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]hometown[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]gender[/td][td][/td][td]char(32)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]marital[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]with[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]howlong[/td][td][/td][td]datetime[/td][td]NO[/td][td][/td][td]0000-00-00 00:00:00[/td][td]
+[/td][/tr]
+[tr][td]sexual[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]politic[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]religion[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]keywords[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]likes[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]dislikes[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]about[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]summary[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]music[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]book[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]tv[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]film[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]interest[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]romance[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]work[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]education[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]contact[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]channels[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]homepage[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]photo[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]thumb[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]publish[/td][td][/td][td]tinyint(1)[/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/db_profile_check.bb b/doc/db_profile_check.bb
new file mode 100644
index 000000000..3be64c5da
--- /dev/null
+++ b/doc/db_profile_check.bb
@@ -0,0 +1,18 @@
+[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
+[/td][/tr]
+[tr][td]uid[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]cid[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]dfrn_id[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]sec[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]expire[/td][td][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_register.bb b/doc/db_register.bb
new file mode 100644
index 000000000..50672b5e1
--- /dev/null
+++ b/doc/db_register.bb
@@ -0,0 +1,18 @@
+[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
+[/td][/tr]
+[tr][td]hash[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]created[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]NULL[/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]
+[/td][/tr]
+[tr][td]password[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]language[/td][td][/td][td]char(16)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_session.bb b/doc/db_session.bb
new file mode 100644
index 000000000..d7ff0482d
--- /dev/null
+++ b/doc/db_session.bb
@@ -0,0 +1,14 @@
+[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]bigint(20) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
+[/td][/tr]
+[tr][td]sid[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]data[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]expire[/td][td][/td][td]bigint(20) unsigned[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_shares.bb b/doc/db_shares.bb
new file mode 100644
index 000000000..be5255c03
--- /dev/null
+++ b/doc/db_shares.bb
@@ -0,0 +1,14 @@
+[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]share_id[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
+[/td][/tr]
+[tr][td]share_type[/td][td][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]share_target[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]share_xchan[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_sign.bb b/doc/db_sign.bb
new file mode 100644
index 000000000..e80ea7ef3
--- /dev/null
+++ b/doc/db_sign.bb
@@ -0,0 +1,18 @@
+[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
+[/td][/tr]
+[tr][td]iid[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]retract_iid[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]signed_text[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]signature[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]signer[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_site.bb b/doc/db_site.bb
new file mode 100644
index 000000000..8dea4dae6
--- /dev/null
+++ b/doc/db_site.bb
@@ -0,0 +1,28 @@
+[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]site_url[/td][td][/td][td]char(255)[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]site_access[/td][td][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]site_flags[/td][td][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]site_update[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
+[/td][/tr]
+[tr][td]site_pull[/td][td][/td][td]datetime[/td][td]NO[/td][td][/td][td]0000-00-00 00:00:00[/td][td]
+[/td][/tr]
+[tr][td]site_sync[/td][td][/td][td]datetime[/td][td]NO[/td][td][/td][td]0000-00-00 00:00:00[/td][td]
+[/td][/tr]
+[tr][td]site_directory[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]site_register[/td][td][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]site_sellpage[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]site_location[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
+[/td][/tr]
+[tr][td]site_realm[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_source.bb b/doc/db_source.bb
new file mode 100644
index 000000000..92850a82e
--- /dev/null
+++ b/doc/db_source.bb
@@ -0,0 +1,16 @@
+[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]src_id[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
+[/td][/tr]
+[tr][td]src_channel_id[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]src_channel_xchan[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]src_xchan[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]src_patt[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_spam.bb b/doc/db_spam.bb
new file mode 100644
index 000000000..b75e1edd3
--- /dev/null
+++ b/doc/db_spam.bb
@@ -0,0 +1,18 @@
+[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
+[/td][/tr]
+[tr][td]uid[/td][td][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]spam[/td][td][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]ham[/td][td][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]term[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]date[/td][td][/td][td]datetime[/td][td]NO[/td][td][/td][td]0000-00-00 00:00:00[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_sys_perms.bb b/doc/db_sys_perms.bb
new file mode 100644
index 000000000..04416a26b
--- /dev/null
+++ b/doc/db_sys_perms.bb
@@ -0,0 +1,16 @@
+[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
+[/td][/tr]
+[tr][td]cat[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]k[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]v[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]public_perm[/td][td][/td][td]tinyint(1) unsigned[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_term.bb b/doc/db_term.bb
new file mode 100644
index 000000000..c0546cc6a
--- /dev/null
+++ b/doc/db_term.bb
@@ -0,0 +1,28 @@
+[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]tid[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
+[/td][/tr]
+[tr][td]aid[/td][td][/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]
+[/td][/tr]
+[tr][td]oid[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]otype[/td][td][/td][td]tinyint(3) unsigned[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]type[/td][td][/td][td]tinyint(3) unsigned[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]term[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]url[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]imgurl[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]term_hash[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]parent_hash[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_tokens.bb b/doc/db_tokens.bb
new file mode 100644
index 000000000..35da2458c
--- /dev/null
+++ b/doc/db_tokens.bb
@@ -0,0 +1,18 @@
+[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]varchar(40)[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]secret[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]client_id[/td][td][/td][td]varchar(20)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]expires[/td][td][/td][td]bigint(20) unsigned[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]scope[/td][td][/td][td]varchar(200)[/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]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_updates.bb b/doc/db_updates.bb
new file mode 100644
index 000000000..f2e25d84c
--- /dev/null
+++ b/doc/db_updates.bb
@@ -0,0 +1,20 @@
+[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]ud_id[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
+[/td][/tr]
+[tr][td]ud_hash[/td][td][/td][td]char(128)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]ud_guid[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]ud_date[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
+[/td][/tr]
+[tr][td]ud_last[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
+[/td][/tr]
+[tr][td]ud_flags[/td][td][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]ud_addr[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_verify.bb b/doc/db_verify.bb
new file mode 100644
index 000000000..9d01181c5
--- /dev/null
+++ b/doc/db_verify.bb
@@ -0,0 +1,18 @@
+[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
+[/td][/tr]
+[tr][td]channel[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]type[/td][td][/td][td]char(32)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]token[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]meta[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/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]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_vote.bb b/doc/db_vote.bb
new file mode 100644
index 000000000..0b9a423eb
--- /dev/null
+++ b/doc/db_vote.bb
@@ -0,0 +1,16 @@
+[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]vote_id[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
+[/td][/tr]
+[tr][td]vote_poll[/td][td][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]vote_element[/td][td][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]vote_result[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]vote_xchan[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_xchan.bb b/doc/db_xchan.bb
new file mode 100644
index 000000000..fd1d68296
--- /dev/null
+++ b/doc/db_xchan.bb
@@ -0,0 +1,44 @@
+[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]xchan_hash[/td][td][/td][td]char(255)[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]xchan_guid[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]xchan_guid_sig[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]xchan_pubkey[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]xchan_photo_mimetype[/td][td][/td][td]char(32)[/td][td]NO[/td][td][/td][td]image/jpeg[/td][td]
+[/td][/tr]
+[tr][td]xchan_photo_l[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
+[/td][/tr]
+[tr][td]xchan_photo_m[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
+[/td][/tr]
+[tr][td]xchan_photo_s[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
+[/td][/tr]
+[tr][td]xchan_addr[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]xchan_url[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]xchan_connurl[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]xchan_follow[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]xchan_connpage[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
+[/td][/tr]
+[tr][td]xchan_name[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]xchan_network[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]xchan_instance_url[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]xchan_flags[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]xchan_photo_date[/td][td][/td][td]datetime[/td][td]NO[/td][td][/td][td]0000-00-00 00:00:00[/td][td]
+[/td][/tr]
+[tr][td]xchan_name_date[/td][td][/td][td]datetime[/td][td]NO[/td][td][/td][td]0000-00-00 00:00:00[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_xchat.bb b/doc/db_xchat.bb
new file mode 100644
index 000000000..0897408d1
--- /dev/null
+++ b/doc/db_xchat.bb
@@ -0,0 +1,16 @@
+[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]xchat_id[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
+[/td][/tr]
+[tr][td]xchat_url[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]xchat_desc[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]xchat_xchan[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]xchat_edited[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_xconfig.bb b/doc/db_xconfig.bb
new file mode 100644
index 000000000..111d1ce3a
--- /dev/null
+++ b/doc/db_xconfig.bb
@@ -0,0 +1,16 @@
+[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
+[/td][/tr]
+[tr][td]xchan[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]cat[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]k[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]v[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_xign.bb b/doc/db_xign.bb
new file mode 100644
index 000000000..e216e11cc
--- /dev/null
+++ b/doc/db_xign.bb
@@ -0,0 +1,12 @@
+[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
+[/td][/tr]
+[tr][td]uid[/td][td][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]xchan[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_xlink.bb b/doc/db_xlink.bb
new file mode 100644
index 000000000..2eefec14a
--- /dev/null
+++ b/doc/db_xlink.bb
@@ -0,0 +1,16 @@
+[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]xlink_id[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
+[/td][/tr]
+[tr][td]xlink_xchan[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]xlink_link[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]xlink_rating[/td][td][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]xlink_updated[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_xprof.bb b/doc/db_xprof.bb
new file mode 100644
index 000000000..d98fb3f17
--- /dev/null
+++ b/doc/db_xprof.bb
@@ -0,0 +1,36 @@
+[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]xprof_hash[/td][td][/td][td]char(255)[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]xprof_age[/td][td][/td][td]tinyint(3) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td]
+[/td][/tr]
+[tr][td]xprof_desc[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]xprof_dob[/td][td][/td][td]char(12)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]xprof_gender[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]xprof_marital[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]xprof_sexual[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]xprof_locale[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]xprof_region[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]xprof_postcode[/td][td][/td][td]char(32)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]xprof_country[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]xprof_keywords[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]xprof_about[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]xprof_homepage[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td]
+[/td][/tr]
+[tr][td]xprof_hometown[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[/table]
+
+Return to [zrl=[baseurl]/help/database]database documentation[/zrl] \ No newline at end of file
diff --git a/doc/db_xtag.bb b/doc/db_xtag.bb
new file mode 100644
index 000000000..1e6fb9961
--- /dev/null
+++ b/doc/db_xtag.bb
@@ -0,0 +1,14 @@
+[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]xtag_id[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment
+[/td][/tr]
+[tr][td]xtag_hash[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td]
+[/td][/tr]
+[tr][td]xtag_term[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td]
+[/td][/tr]
+[tr][td]xtag_flags[/td][td][/td][td]int(11)[/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/dev_beginner.bb b/doc/dev_beginner.bb
index 8e7a9ecf9..c3e4ea07c 100644
--- a/doc/dev_beginner.bb
+++ b/doc/dev_beginner.bb
@@ -1,32 +1,15 @@
[h2]You want to contribute code?[/h2]
-[b]...and don't know how to start?[/b]
-Then this is for you.
-
-This manual will guided you step-by-step to:
+[b]...and don't know how to start to...[/b]
[list]
-[*] debug the Red Matrix (PHP),
+[*] debug the red#matrix (php on the webserver),
[*] contribute code to the project,
[*] optionally - do it all from inside a virtual machine
[/list]
+This manual was tested for Debian (Wheezy) as virtual machine on Lubuntu (Ubuntu 14.0) as host.
-This manual was tested for
-[list]
-[*] Lubuntu (Ubuntu 14.0) as host OS
-[*] Debian (Wheezy) as guest OS running in a VM
-[/list]
+Content
-[h2]Content[/h2]
-
-In this manual you will
-[list=1]
-[*] Install a Virtual Machine (KVM)
-[*] Install Apache Web Server
-[*] Install PHP, MySQL, phpMyAdmin
-[*] Fork the project on github to be able to contribute
-[*] Install the RED Matrix
-[*] Debug the server via eclipse
-[*] Contribute your changes via github
-[/list]
+[toc]
[h2]Install a Virtual Machine (KVM)[/h2]
@@ -81,6 +64,8 @@ Should show you a page like "It works"
[h2]Install PHP, MySQL, phpMyAdmin[/h2]
+[h3]PHP, MySQL[/h3]
+
[code]su -l
apt-get install libapache2-mod-php5 php5 php-pear php5-xcache php5-curl php5-mcrypt php5-xdebug
apt-get install php5-mysql
@@ -92,6 +77,8 @@ Optional since its already enabled during phpmyadmin setup
php5enmod mcrypt
[/code]
+[h3]phpMyAdmin[/h3]
+
Install php myadmin
[code]apt-get install phpmyadmin[/code]
@@ -101,7 +88,7 @@ Configuring phpmyadmin
(Source #^[url=http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#]http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#[/url])
-[b]Enable rewrite[/b]
+[h3]Enable rewrite[/h3]
The default installation of Apache2 comes with mod_rewrite installed. To check whether this is the case, verify the existence of /etc/apache2/mods-available/rewrite.load
@@ -134,7 +121,7 @@ Finally, restart Apache2.
root@debian /var/www $service apache2 restart
[/code]
-[b]Test installation[/b]
+[h3]Test installation[/h3]
[code]cd /var/www[/code]
@@ -167,8 +154,8 @@ open webbrowser on PC and try #^[url=http://localhost/phpmyadmin]http://localhos
(Source #^[url=http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#]http://www.manfred-steger.de/tuts/20-der-eigene-webserver-mit-dem-raspberry-pi#[/url])
+[h3]Create an empty database... that is later used by the red#matrix[/h3]
-[b]Create an empty database... that is later used by RED[/b]
open webbrowser on PC and try #^[url=http://localhost/phpmyadmin]http://localhost/phpmyadmin[/url]
@@ -179,7 +166,7 @@ Grant all rights for the user "red" to the database "red".
Note the access details (hostname, username, password, database name).
-[h2]Fork the project on github to be able to contribute[/h2]
+[h2]Fork the project on github[/h2]
Please follow the instruction in the offiical [url=http://git-scm.com/book/en/v2/GitHub-Contributing-to-a-Project] documentation[/url] of git.
It is a good idea to read the whole manual! Git is different to other version control systems in many ways.
@@ -196,6 +183,8 @@ If you not want to use GIT from the command line - there is a usefull Eclipse pl
[h2]Install RED and its Addons[/h2]
+[h3]Git at your computer / vm[/h3]
+
You should have created an account on github and forked the projects befor you procceed.
Delete the directory www
@@ -206,6 +195,8 @@ rm -R www/
Install git (and optionally git-gui a client gui)
[code]apt-get install git git-gui[/code]
+[h3]Download red#matri and addons[/h3]
+
Download the main project red and red-addons
[code]
root@debian:/var# git clone https://github.com/yourname/red www
@@ -243,6 +234,8 @@ If you are still not able to modify the project files you can check the members
cat /etc/group
[/code]
+[h3]Register yourself as admin[/h3]
+
Open http://localhost and init the matrix
Befor you register a first user switch off the registration mails.
@@ -253,6 +246,8 @@ $a->config['system']['verify_email'] = 0;
[/code]
You should be able to change the file as "yourself" (instead of using root or www-data).
+[h3]Cron and the poller[/h3]
+
Important!
Run the poller to pick up the recent "public" postings of your friends
Set up a cron job or scheduled task to run the poller once every 5-10
@@ -344,6 +339,8 @@ Expected:
[h2]Contribute your changes via github[/h2]
+[h3]Preparations[/h3]
+
There is a related page in this docs: [zrl=[baseurl]/help/git_for_non_developers]Git for Non-Developers[/zrl].
As stated befor it is recommended to read the official documentation [url=http://git-scm.com/book/en/v2/GitHub-Contributing-to-a-Project]GitHub-Contributing-to-a-Project[/url] of git.
@@ -355,6 +352,8 @@ surfer@debian:/var/www$ git config --global user.name "Your Name"
surfer@debian:/var/www$ git config --global user.email "your@mail.com"
[/code]
+[h3]Your first contribution[/h3]
+
Create a descriptive topic branch
[code]
surfer@debian:/var/www$ git checkout -b dev_beginning
@@ -401,8 +400,15 @@ surfer@debian:/var/www$ git push
Now you can go to your (online) account at github and create the pull request.
+[h3]Following contributions[/h3]
+
In case the main devolpers want you to change something.
-Make the changes, check them, commit (to local repository), push (to online repository)
+Fetch the newest work from the remote upstream/master to be sure you have the latest changes.
+[code]
+surfer@debian:/var/www$ git fetch upstream
+surfer@debian:/var/www$ git merge upstream/master
+[/code]
+Make your changes, test them, commit (to local repository), push (to online repository)
[code]
surfer@debian:/var/www$ git status
surfer@debian:/var/www$ git commit -a -m "added modification of branch"
diff --git a/doc/faq_admins.bb b/doc/faq_admins.bb
index 953563230..0a3f774e9 100644
--- a/doc/faq_admins.bb
+++ b/doc/faq_admins.bb
@@ -1,41 +1,41 @@
[size=large][b]The Red Matrix FAQ[/b][/size]
-[ul]
-[*][b]Is there a way to change the Admin account?[/b]
-[*][b]Is there a way to have multiple administrators?[/b]
+[toc]
+
+[h3]Is there a way to change the Admin account?[/h3]
+[h3]Is there a way to have multiple administrators?[/h3]
Yes, but it's a bit messy at the moment as it is not yet exposed in the UI. To make an account an administrative account,
one needs to add 4096 to the account_roles entry in the account table of the database. Likewise, to remove administrative permissions,
one must subtract 4096 from the account roles.
-[*][b]I can log in, but there are no posts or webpages[/b]
+[h3]I can log in, but there are no posts or webpages[/h3]
Most likely, your item table has crashed. Run the MySQL command [code]repair table item;[/code]
-[*][b]Login doesn't work, immediately after login, the page reloads and I'm logged out[/b]
+[h3]Login doesn't work, immediately after login, the page reloads and I'm logged out[/h3]
Most likely, your session table has crashed. Run the MySQL command [code]repair table session;[/code]
-[*][b]When I switch theme, I sometimes get elements of one theme superimposed on top of the other[/b]
+[h3]When I switch theme, I sometimes get elements of one theme superimposed on top of the other[/h3]
a) store/[data]/smarty3 isn't writeable by the webserver. Make it so.
b) You're using Midori, or with certain themes, Konqueror in KHTML mode.
-[b]My network tab won't load, it appears to be caused by a photo or video[/b]
+[b]My network tab won't load, it appears to be caused by a photo or video[/h3]
Your PHP memory limit is too low. Increase the size of the memory_limit directive in your php.ini
Contrary to popular belief, the number of users on a hub doesn't make any difference to the required memory limit, rather, the content
of an individuals matrix counts. Streams with lots of photos and video require more memory than streams with lots of text.
-[*] [b]I have no communication with anybody[/b]
+[h3]I have no communication with anybody[/h3]
You're listening on port 443, but do not have a valid SSL certificate. Note this applies even if your baseurl is http.
Don't listen on port 443 if you cannot use it. It is strongly recommended to solve this problem by installing a browser
valid SSL certificate rather than disabling port 443.
-[*]
-[b]How do I update a non-Git install?[/b]
+[h3]How do I update a non-Git install?[/h3]
1) Backup .htconfig.php
2) Backup everything in store/
3) Backup any custom changes in mod/site/ and view/site
@@ -44,8 +44,7 @@ valid SSL certificate rather than disabling port 443.
5) Upload the new version of themes and addons.
6) Restore everything backed up earlier.
-[*]
-[b]What do I need to do when moving my hub to a different server[/b]
+[h3]What do I need to do when moving my hub to a different server[/h3]
1) Git clone on the new server. Repeat the process for any custom themes, and addons.
2) Rsync .htconfig.php
@@ -53,19 +52,17 @@ valid SSL certificate rather than disabling port 443.
4) Rsync everything in mod/site/ and view/site (these will only exist if you have custom modules)
5) Dump and restore DB.
-[*]
-[b]How do I reinstall an existing hub on the same server?[/b]
+[h3]How do I reinstall an existing hub on the same server?[/h3]
1) [code]git reset --hard HEAD[/code] will reset all files to their upstream defaults. This will not reset any local files that do not also exist upstream. Eg, if you have local changes to mod/channel.php, this will reset them - but will not reset any changes in mod/site/channel.php
2) If you absolutely must reinstall - for example, if you need to upgrade operating system - follow the steps for moving to a different server, but instead of using rsync, backup and restore some other way.
Do not reinstall a hub with a fresh database and fresh .htconfig.php unless as a very last resort. Creating a temporary account and ask for help via a support channel for non-trivial reinstalls is preferable to reinstalling fresh.
-[*]
-[b]How do I set the default homepage for logged out viewers?[/b]
+[h3]How do I set the default homepage for logged out viewers?[/h3]
Use the custom_home addon available in the main addons repository.
-[/ul]
+
#include doc/macros/main_footer.bb;
diff --git a/doc/faq_developers.bb b/doc/faq_developers.bb
index 61843648a..010ef9b8a 100644
--- a/doc/faq_developers.bb
+++ b/doc/faq_developers.bb
@@ -1,8 +1,9 @@
[size=large][b]Frequently Asked Questions For Developers[/b][/size]
+[toc]
-[ul]
-[*][b]What does $a mean?[/b]
+
+[h3]What does $a mean?[/h3]
$a is a class defined in boot.php and passed all around Red Matrix as a global reference variable. It defines everything necessary for the Red Matrix application: Server variables, URL arguments, page structures, layouts, content, installed plugins, output device info, theme info, identity of the observer and (potential) page owner ...
We don't ever create more than one instance and always modify the elements of the single instance. The mechanics of this are somewhat tricky. If you have a function that is passed $a and needs to modify $a you need to declare it as a reference with '&' e.g.
@@ -24,7 +25,7 @@ function foo() {
get_app()->something = 'x';
}
[/code]
-[/ul]
+
#include doc/macros/main_footer.bb;
diff --git a/doc/faq_members.bb b/doc/faq_members.bb
index a089b8b0c..cdc7883f9 100644
--- a/doc/faq_members.bb
+++ b/doc/faq_members.bb
@@ -1,15 +1,18 @@
[size=large][b]The Red Matrix FAQ[/b][/size]
-[ul]
-[*][b]I am able to edit a post's text after I saved it, but is there a way to change the permissions?[/b]
+[toc]
+
+
+[h3]I am able to edit a post's text after I saved it, but is there a way to change the permissions?[/h3]
Short anser: No, there isn't. There are reasons. You are able to change permissons to your files, photos and the likes, but not to posts after you have saved them. The main reason is: Once you have saved a post it is being distributed either to the public channel and from there to other Red Matrix servers or to those you intended it to go. Just like you cannot reclaim something you gave to another person, you cannot change permissions to Red Matrix posts. We would need to track everywhere your posting goes, keep track of everyone you allowed to see it and then keep track of from whom to delete it.
-If a posting is public this is even harder, as the Red Matrix is a global network and there is no way to follow a post, let alone reclaim it reliably. Other networks that may receive your post have no reliable way to delete or reclaim the post.
-[*][b]I downloaded my channel and imported it (cloned my identity) to another site but there is no content, no posts, no photos. What is wrong???[/b]
+If a posting is public this is even harder, as the Red Matrix is a global network and there is no way to follow a post, let alone reclaim it reliably. Other networks that may receive your post have no reliable way to delete or reclaim the post.
+
+[h3]I downloaded my channel and imported it (cloned my identity) to another site but there is no content, no posts, no photos. What is wrong???[/h3]
To be honest: Nothing. That's the way it is right now. Technically it is surely possible to take at least your own posts and maybe even files with you, but this has simply put not implemented yet. When creating this feature we thought that keeping all your contacts was more important. Your friends have already seen your old content. Once we find someone willing to implement this, it will be done. :)
-[*][b]I can't see private resources[/b]
+[h3]I can't see private resources[/h3]
You have probably disabled third party cookies. You need to enable them for remote authentication to work.
-[*][b]There are a lot of foreign language posts. Let's auto-translate them.[/b]
+[h3]There are a lot of foreign language posts. Let's auto-translate them.[/h3]
There are also a lot of [b]private[/b] foreign language posts and auto-translation services would require us to transmit these private messages to the translation service; and we don't know what they will do with them on their servers. Actually we do know thanks to Edward Snowden. Our best bet is a project called [b][i]Apertium[/i][/b] which is an open source translator we can install locally. It is currently missing German translations - which are the most requested translation in the matrix. Once again, this will be implemented when we find somebody who really wants to make it happen.
-[/ul]
+
#include doc/macros/main_footer.bb;
diff --git a/doc/main.bb b/doc/main.bb
index acb39f63f..e7fd2894c 100644
--- a/doc/main.bb
+++ b/doc/main.bb
@@ -59,6 +59,7 @@ Zot is the great new communicaton protocol invented especially for the RedMatrix
[zrl=[baseurl]/help/Translations]Translations[/zrl]
[zrl=[baseurl]/help/developers]Developers[/zrl]
[zrl=[baseurl]/help/intro_for_developers]Intro for Developers[/zrl]
+[zrl=[baseurl]/help/database]Database schema documantation[/zrl]
[zrl=[baseurl]/help/api_functions]API functions[/zrl]
[zrl=[baseurl]/help/api_posting]Posting to the red# using the API[/zrl]
[zrl=[baseurl]/help/developer_function_primer]Red Functions 101[/zrl]
diff --git a/include/RedDAV/RedBrowser.php b/include/RedDAV/RedBrowser.php
index 9ea2b9808..93a546086 100644
--- a/include/RedDAV/RedBrowser.php
+++ b/include/RedDAV/RedBrowser.php
@@ -249,7 +249,10 @@ class RedBrowser extends DAV\Browser\Plugin {
'$header' => t('Files') . ": " . $this->escapeHTML($path) . "/",
'$quota' => $quota,
'$total' => t('Total'),
- '$actionspanel' => $output
+ '$actionspanel' => $output,
+ '$shared' => t('Shared'),
+ '$create' => t('Create'),
+ 'upload' => t('Upload')
));
$html .= replace_macros(get_markup_template('cloud_directory.tpl'), array(
diff --git a/include/RedDAV/RedFile.php b/include/RedDAV/RedFile.php
index 3a5230dc1..f2ee071b8 100644
--- a/include/RedDAV/RedFile.php
+++ b/include/RedDAV/RedFile.php
@@ -276,4 +276,4 @@ class RedFile extends DAV\Node implements DAV\IFile {
attach_delete($this->auth->owner_id, $this->data['hash']);
}
-} \ No newline at end of file
+}
diff --git a/include/attach.php b/include/attach.php
index a76dd4b28..ec175fcb3 100644
--- a/include/attach.php
+++ b/include/attach.php
@@ -753,14 +753,17 @@ function attach_delete($channel_id, $resource) {
$channel_address = (($c) ? $c[0]['channel_address'] : 'notfound');
- $r = q("SELECT hash, flags, folder FROM attach WHERE hash = '%s' AND uid = %d limit 1",
+ $r = q("SELECT hash, filename, flags, folder FROM attach WHERE hash = '%s' AND uid = %d limit 1",
dbesc($resource),
intval($channel_id)
);
+
if(! $r)
return;
+ $url = get_parent_cloudpath($channel_id, $channel_address, $resource) . $r[0]['filename'];
+
// If resource is a directory delete everything in the directory recursive
if($r[0]['flags'] & ATTACH_FLAG_DIR) {
$x = q("SELECT hash, flags FROM attach WHERE folder = '%s' AND uid = %d",
@@ -802,6 +805,8 @@ function attach_delete($channel_id, $resource) {
dbesc($r[0]['folder']),
intval($channel_id)
);
+
+ file_activity($channel_id, $resource, $allow_cid='', $allow_gid='', $deny_cid='', $deny_gid='', $url, 'drop', $no_activity=false);
}
/**
@@ -934,3 +939,105 @@ function pipe_streams($in, $out) {
$size += fwrite($out, fread($in, 8192));
return $size;
}
+
+function file_activity($channel_id, $hash, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $url, $action, $no_activity) {
+
+ require_once('include/items.php');
+
+ $url = rawurlencode($url);
+
+ $poster = get_app()->get_observer();
+
+ $verb = ACTIVITY_FILE . '/' . $action . '/' . $hash;
+
+ $mid = item_message_id();
+
+ $item_flags = ITEM_WALL|ITEM_ORIGIN|ITEM_UNSEEN;
+
+ if($action == 'post') {
+ //check if activity item exists
+ //if yes send drop activity and create a new one
+
+ $r = q("SELECT * FROM item WHERE verb = '%s'",
+ dbesc($verb)
+ );
+
+ if($r) {
+
+ $dmid = item_message_id();
+ $updateverb = ACTIVITY_FILE . '/drop/' . $hash . '#' . $mid;
+
+ $arr = array();
+
+ $arr['aid'] = get_account_id();
+ $arr['uid'] = $channel_id;
+ $arr['mid'] = $dmid;
+ $arr['parent_mid'] = $dmid;
+ $arr['item_flags'] = $item_flags;
+ $arr['author_xchan'] = $poster['xchan_hash'];
+ $arr['owner_xchan'] = $poster['xchan_hash'];
+ $arr['title'] = '';
+ $arr['allow_cid'] = $allow_cid;
+ $arr['allow_gid'] = $allow_gid;
+ $arr['deny_cid'] = $deny_cid;
+ $arr['deny_gid'] = $deny_gid;
+ $arr['item_restrict'] = ITEM_HIDDEN;
+ $arr['item_private'] = 0;
+ $arr['verb'] = $updateverb;
+ $arr['body'] = $url;
+
+ $post = item_store($arr);
+ $item_id = $post['item_id'];
+
+ if($item_id) {
+ proc_run('php',"include/notifier.php","activity",$item_id);
+ }
+
+ //call_hooks('post_local_end', $arr);
+
+ //notice( t('File activity updated') . EOL);
+
+ if($no_activity) {
+ return;
+ }
+
+ }
+ }
+
+ if($no_activity) {
+ return;
+ }
+
+ $arr = array();
+
+ $arr['aid'] = get_account_id();
+ $arr['uid'] = $channel_id;
+ $arr['mid'] = $mid;
+ $arr['parent_mid'] = $mid;
+ $arr['item_flags'] = $item_flags;
+ $arr['author_xchan'] = $poster['xchan_hash'];
+ $arr['owner_xchan'] = $poster['xchan_hash'];
+ $arr['title'] = '';
+ $arr['allow_cid'] = $allow_cid;
+ $arr['allow_gid'] = $allow_gid;
+ $arr['deny_cid'] = $deny_cid;
+ $arr['deny_gid'] = $deny_gid;
+ $arr['item_restrict'] = ITEM_HIDDEN;
+ $arr['item_private'] = 0;
+ $arr['verb'] = $verb;
+ $arr['body'] = $url;
+
+ $post = item_store($arr);
+ $item_id = $post['item_id'];
+
+ if($item_id) {
+ proc_run('php',"include/notifier.php","activity",$item_id);
+ }
+
+ //call_hooks('post_local_end', $arr);
+
+ //(($action === 'post') ? notice( t('File activity posted') . EOL) : notice( t('File activity dropped') . EOL));
+
+ return;
+
+}
diff --git a/include/conversation.php b/include/conversation.php
index 0d59ff92e..25c844fef 100644
--- a/include/conversation.php
+++ b/include/conversation.php
@@ -1572,7 +1572,7 @@ function profile_tabs($a, $is_owner=False, $nickname=Null){
$tabs[] = array(
'label' => t('Files'),
'url' => $a->get_baseurl() . '/cloud/' . $nickname . ((get_observer_hash()) ? '' : '?f=&davguest=1'),
- 'sel' => ((argv(0) == 'cloud') ? 'active' : ''),
+ 'sel' => ((argv(0) == 'cloud' || argv(0) == 'sharedwithme') ? 'active' : ''),
'title' => t('Files and Storage'),
'id' => 'files-tab',
);
diff --git a/include/text.php b/include/text.php
index c130a9b8a..b6e4abf24 100644
--- a/include/text.php
+++ b/include/text.php
@@ -606,9 +606,11 @@ function get_tags($s) {
$s = preg_replace('/\[code\](.*?)\[\/code\]/sm','',$s);
// ignore anything in [style= ]
-
$s = preg_replace('/\[style=(.*?)\]/sm','',$s);
+ // ignore anything in [color= ], because it may contain color codes which are mistaken for tags
+ $s = preg_replace('/\[color=(.*?)\]/sm','',$s);
+
// match any double quoted tags
if(preg_match_all('/([@#]\&quot\;.*?\&quot\;)/',$s,$match)) {
@@ -620,12 +622,11 @@ function get_tags($s) {
// Match full names against @tags including the space between first and last
// We will look these up afterward to see if they are full names or not recognisable.
- if(preg_match_all('/(@[^ \x0D\x0A,:?\[]+ [^ \x0D\x0A@,:?\[]+)([ \x0D\x0A@,:?\[]|$)/',$s,$match)) {
+ // The lookbehind is used to prevent a match in the middle of a word
+ // '=' needs to be avoided because when the replacement is made (in handle_tag()) it has to be ignored there
+ // Feel free to allow '=' if the issue with '=' is solved in handle_tag()
+ if(preg_match_all('/(?<![a-zA-Z0-9=])(@[^ \x0D\x0A,:?\[]+ [^ \x0D\x0A@,:?\[]+)/',$s,$match)) {
foreach($match[1] as $mtch) {
- if(strstr($mtch,"]")) {
- // we might be inside a bbcode color tag - leave it alone
- continue;
- }
if(substr($mtch,-1,1) === '.')
$ret[] = substr($mtch,0,-1);
else
@@ -636,20 +637,13 @@ function get_tags($s) {
// Otherwise pull out single word tags. These can be @nickname, @first_last
// and #hash tags.
- if(preg_match_all('/([@#][^ \x0D\x0A,;:?\[]+)([ \x0D\x0A,;:?\[]|$)/',$s,$match)) {
+ if(preg_match_all('/(?<![a-zA-Z0-9=])([@#][^ \x0D\x0A,;:?\[]+)/',$s,$match)) {
foreach($match[1] as $mtch) {
- if(strstr($mtch,"]")) {
- // we might be inside a bbcode color tag - leave it alone
- continue;
- }
if(substr($mtch,-1,1) === '.')
$mtch = substr($mtch,0,-1);
// ignore strictly numeric tags like #1 or #^ bookmarks or ## double hash
if((strpos($mtch,'#') === 0) && ( ctype_digit(substr($mtch,1)) || substr($mtch,1,1) === '^') || substr($mtch,1,1) === '#')
continue;
- // try not to catch url fragments
- if(strpos($s,$mtch) && preg_match('/[a-zA-z0-9\/]/',substr($s,strpos($s,$mtch)-1,1)))
- continue;
// or quote remnants from the quoted strings we already picked out earlier
if(strpos($mtch,'&quot'))
continue;
@@ -2155,8 +2149,11 @@ function handle_tag($a, &$body, &$access_tag, &$str_tags, $profile_uid, $tag) {
//create text for link
$url = $a->get_baseurl() . '/search?tag=' . rawurlencode($basetag);
$newtag = '#[zrl=' . $a->get_baseurl() . '/search?tag=' . rawurlencode($basetag) . ']' . $basetag . '[/zrl]';
- //replace tag by the link
- $body = str_replace($tag, $newtag, $body);
+ //replace tag by the link. Make sure to not replace something in the middle of a word
+ // The '=' is needed to not replace color codes if the code is also used as a tag
+ // Much better would be to somehow completely avoiding things in e.g. [color]-tags.
+ // This would allow writing things like "my favourite tag=#foobar".
+ $body = preg_replace('/(?<![a-zA-Z0-9=])'.preg_quote($tag).'/', $newtag, $body);
$replaced = true;
}
//is the link already in str_tags?
diff --git a/library/tableofcontents/jquery.toc.js b/library/tableofcontents/jquery.toc.js
index d136f5aab..6ef36f49c 100644
--- a/library/tableofcontents/jquery.toc.js
+++ b/library/tableofcontents/jquery.toc.js
@@ -13,7 +13,10 @@
* or implied. See the License for the specific language governing permissions and limitations
* under the License.
*
- * The original script was modified to work within the red#martrix (added var pathname).
+ * The original script was modified to work within the red#martrix
+ * - added var pathname
+ * - added var textHeading: Accept heading with text only
+ * Why? At the moment webpages can contain empty title using h3
*/
(function ($) {
@@ -53,31 +56,35 @@
var elem = $(this), level = $.map(headingSelectors, function (selector, index) {
return elem.is(selector) ? index : undefined;
})[0];
-
- if (level > currentLevel) {
- // If the heading is at a deeper level than where we are, start a new nested
- // list, but only if we already have some list items in the parent. If we do
- // not, that means that we're skipping levels, so we can just add new list items
- // at the current level.
- // In the upside-down stack, unshift = push, and stack[0] = the top.
- var parentItem = stack[0].children("li:last")[0];
- if (parentItem) {
- stack.unshift($("<" + listTag + "/>").appendTo(parentItem));
+
+ // Accept heading with text only
+ var textHeading = elem.text();
+ if(textHeading != '') {
+ if (level > currentLevel) {
+ // If the heading is at a deeper level than where we are, start a new nested
+ // list, but only if we already have some list items in the parent. If we do
+ // not, that means that we're skipping levels, so we can just add new list items
+ // at the current level.
+ // In the upside-down stack, unshift = push, and stack[0] = the top.
+ var parentItem = stack[0].children("li:last")[0];
+ if (parentItem) {
+ stack.unshift($("<" + listTag + "/>").appendTo(parentItem));
+ }
+ } else {
+ // Truncate the stack to the current level by chopping off the 'top' of the
+ // stack. We also need to preserve at least one element in the stack - that is
+ // the containing element.
+ stack.splice(0, Math.min(currentLevel - level, Math.max(stack.length - 1, 0)));
}
- } else {
- // Truncate the stack to the current level by chopping off the 'top' of the
- // stack. We also need to preserve at least one element in the stack - that is
- // the containing element.
- stack.splice(0, Math.min(currentLevel - level, Math.max(stack.length - 1, 0)));
- }
- // the variable pathname was added to the original script.
- var pathname = window.location.pathname;
- // Add the list item
- $("<li/>").appendTo(stack[0]).append(
- $("<a/>").text(elem.text()).attr("href", pathname + "#" + elem.attr("id"))
- );
+ // the variable pathname was added to the original script.
+ var pathname = window.location.pathname;
+ // Add the list item
+ $("<li/>").appendTo(stack[0]).append(
+ $("<a/>").text(elem.text()).attr("href", pathname + "#" + elem.attr("id"))
+ );
- currentLevel = level;
+ currentLevel = level;
+ }
});
});
}, old = $.fn.toc;
diff --git a/mod/filestorage.php b/mod/filestorage.php
index 0a25617f0..67abc2eab 100644
--- a/mod/filestorage.php
+++ b/mod/filestorage.php
@@ -22,6 +22,8 @@ function filestorage_post(&$a) {
$recurse = ((x($_POST, 'recurse')) ? intval($_POST['recurse']) : 0);
$resource = ((x($_POST, 'filehash')) ? notags($_POST['filehash']) : '');
+ $no_activity = ((x($_POST, 'no_activity')) ? intval($_POST['no_activity']) : 0);
+
if(! $resource) {
notice(t('Item not found.') . EOL);
return;
@@ -37,6 +39,12 @@ function filestorage_post(&$a) {
//Build directory tree and redirect
$channel = $a->get_channel();
$cloudPath = get_parent_cloudpath($channel_id, $channel['channel_address'], $resource);
+
+ $filename = find_filename_by_hash($channel_id, $resource);
+ $url = $cloudPath . $filename;
+
+ file_activity($channel_id, $resource, $str_contact_allow, $str_group_allow, $str_contact_deny, $str_group_deny, $url, 'post', $no_activity);
+
goaway($cloudPath);
}
@@ -150,6 +158,7 @@ function filestorage_content(&$a) {
'$submit' => t('Submit'),
'$attach_btn_title' => t('Attach this file to a new post'),
'$link_btn_title' => t('Show URL to this file'),
+ '$activity_btn_title' => t('Do not show in shared with me folder of your connections')
));
echo $o;
diff --git a/mod/help.php b/mod/help.php
index a3dafcc9b..5cdeda58f 100644
--- a/mod/help.php
+++ b/mod/help.php
@@ -39,18 +39,19 @@ function help_content(&$a) {
if(argc() > 1) {
$text = load_doc_file('doc/' . $a->argv[1] . '.md');
$a->page['title'] = t('Help:') . ' ' . ucwords(str_replace('-',' ',notags(argv(1))));
- }
- if(! $text) {
- $text = load_doc_file('doc/' . $a->argv[1] . '.bb');
- if($text)
- $doctype = 'bbcode';
- $a->page['title'] = t('Help:') . ' ' . ucwords(str_replace('_',' ',notags(argv(1))));
- }
- if(! $text) {
- $text = load_doc_file('doc/' . $a->argv[1] . '.html');
- if($text)
- $doctype = 'html';
- $a->page['title'] = t('Help:') . ' ' . ucwords(str_replace('-',' ',notags(argv(1))));
+
+ if(! $text) {
+ $text = load_doc_file('doc/' . $a->argv[1] . '.bb');
+ if($text)
+ $doctype = 'bbcode';
+ $a->page['title'] = t('Help:') . ' ' . ucwords(str_replace('_',' ',notags(argv(1))));
+ }
+ if(! $text) {
+ $text = load_doc_file('doc/' . $a->argv[1] . '.html');
+ if($text)
+ $doctype = 'html';
+ $a->page['title'] = t('Help:') . ' ' . ucwords(str_replace('-',' ',notags(argv(1))));
+ }
}
if(! $text) {
diff --git a/mod/sharedwithme.php b/mod/sharedwithme.php
new file mode 100644
index 000000000..d4aa129ac
--- /dev/null
+++ b/mod/sharedwithme.php
@@ -0,0 +1,114 @@
+<?php
+require_once('include/text.php');
+require_once('include/conversation.php');
+
+function sharedwithme_content(&$a) {
+ if(! local_user()) {
+ notice( t('Permission denied.') . EOL);
+ return;
+ }
+
+ $channel = $a->get_channel();
+
+ $is_owner = (local_user() && (local_user() == $channel['channel_id']));
+
+ $postverb = ACTIVITY_FILE . '/post/';
+ $dropverb = ACTIVITY_FILE . '/drop/';
+
+ //maintenance - see if a file got dropped and remove it systemwide
+ $x = q("SELECT * FROM item WHERE verb LIKE '%s' AND uid = %d",
+ dbesc($dropverb . '%'),
+ intval(local_user())
+ );
+
+ if($x) {
+
+ foreach($x as $xx) {
+
+ $hash = substr($xx['verb'], 39);
+
+ $update = strpos($hash, '#');
+
+ if($update === false) {
+ q("DELETE FROM item WHERE verb = '%s' OR verb = '%s'",
+ dbesc($postverb . $hash),
+ dbesc($dropverb . $hash)
+ );
+ }
+
+ else {
+
+ $arr = explode('#', $hash);
+
+ q("DELETE FROM item WHERE mid != '%s' AND verb = '%s' OR verb = '%s'",
+ dbesc($arr[1]),
+ dbesc($postverb . $arr[0]),
+ dbesc($dropverb . $hash)
+ );
+
+ }
+
+ }
+
+ }
+
+ //drop single file - localuser
+ if((argc() > 2) && (argv(2) === 'drop')) {
+
+ $id = intval(argv(1));
+
+ q("DELETE FROM item WHERE id = %d AND uid = %d",
+ intval($id),
+ intval(local_user())
+ );
+
+ goaway(z_root() . '/sharedwithme');
+ }
+
+ //drop all files - localuser
+ if((argc() > 1) && (argv(1) === 'dropall')) {
+
+ q("DELETE FROM item WHERE verb LIKE '%s' AND uid = %d",
+ dbesc($postverb . '%'),
+ intval(local_user())
+ );
+
+ goaway(z_root() . '/sharedwithme');
+ }
+
+ //list files
+ $r = q("SELECT * FROM item WHERE verb LIKE '%s' AND uid = %d",
+ dbesc($postverb . '%'),
+ intval(local_user())
+ );
+
+ $o = profile_tabs($a, $is_owner, $channel['channel_address']);
+
+ $o .= '<div class="section-title-wrapper">';
+
+ $o .= '<a href="/sharedwithme/dropall" onclick="return confirmDelete();" class="btn btn-xs btn-default pull-right"><i class="icon-trash"></i>&nbsp;' . t('Remove all entries') . '</a>';
+
+ $o .= '<h2>' . t('Files shared with me') . '</h2>';
+
+ $o .= '</div>';
+
+ $o .= '<div class="section-content-wrapper">';
+
+ if($r) {
+ foreach($r as $rr) {
+ //don't display the files we shared with others
+ if($rr['owner_xchan'] != $channel['channel_hash']) {
+ unobscure($rr);
+ $url = rawurldecode($rr['body']);
+ $o .= '<a href="' . $url . '?f=&zid=' . $channel['xchan_addr'] . '">' . $url . '</a>&nbsp;<a href="/sharedwithme/' . $rr['id'] . '/drop" onclick="return confirmDelete();"><i class="icon-trash drop-icons"></i></a><br><br>';
+ }
+ }
+ }
+
+ $o .= '</div>';
+
+ return $o;
+
+
+}
+
diff --git a/view/js/autocomplete.js b/view/js/autocomplete.js
index 40a9cd4c8..3c35df860 100644
--- a/view/js/autocomplete.js
+++ b/view/js/autocomplete.js
@@ -54,6 +54,7 @@ function contact_format(item) {
// Show contact information if not explicitly told to show something else
if(typeof item.text === 'undefined') {
var desc = ((item.label) ? item.nick + ' ' + item.label : item.nick)
+ if(typeof desc === 'undefined') desc = '';
if(desc) desc = ' ('+desc+')';
return "<div class='{0}' title='{4}'><img src='{1}'>{2}{3}</div>".format(item.taggable, item.photo, item.name, desc, item.link)
}
diff --git a/view/js/main.js b/view/js/main.js
index 0c56c8d41..fac5e1143 100644
--- a/view/js/main.js
+++ b/view/js/main.js
@@ -1125,7 +1125,7 @@ $(document).ready(function() {
$(".autotime").timeago();
- $("#toc").toc({content: "div.page-body", headings: "h1,h2,h3,h4"});
+ $("#toc").toc({content: "body", headings: "h1,h2,h3,h4"});
});
diff --git a/view/theme/redbasic/css/style.css b/view/theme/redbasic/css/style.css
index 842e7063a..c24bee1fd 100644
--- a/view/theme/redbasic/css/style.css
+++ b/view/theme/redbasic/css/style.css
@@ -1031,6 +1031,7 @@ footer {
#colorbox {
border: 0px solid $fancybox_bgcolour;
background-color: $fancybox_bgcolour;
+ z-index: 9;
}
.settings-block {
diff --git a/view/theme/redbasic/php/style.php b/view/theme/redbasic/php/style.php
index 5d44a9b9d..5bc702d8c 100644
--- a/view/theme/redbasic/php/style.php
+++ b/view/theme/redbasic/php/style.php
@@ -275,7 +275,7 @@ if(! $a->install) {
if(! $chat_txtbgcol)
$chat_txtbgcol = "#EEE";
if(! $fancybox_bgcolour)
- $fancybox_bgcolour = "#FFF";
+ $fancybox_bgcolour = "#FFFFFF";
if (!$comment_padding)
$comment_padding="0px";
if (!$comment_border_left)
diff --git a/view/tpl/attach_edit.tpl b/view/tpl/attach_edit.tpl
index 0147d35ba..5a8743919 100644
--- a/view/tpl/attach_edit.tpl
+++ b/view/tpl/attach_edit.tpl
@@ -14,7 +14,7 @@
<i class="icon-share jot-icons"></i>
</button>
</div>
- <div id="attach-edit-tools-perms" class="form-group pull-right{{if $isadir}} btn-group{{/if}}">
+ <div id="attach-edit-tools-perms" class="form-group pull-right btn-group">
{{if $isadir}}
<div id="attach-edit-perms-recurse" class="btn-group" data-toggle="buttons">
<label class="btn btn-default btn-xs" title="{{$recurse}}">
@@ -22,6 +22,11 @@
</label>
</div>
{{/if}}
+ <div id="attach-edit-activity" class="btn-group" data-toggle="buttons">
+ <label class="btn btn-default btn-xs" title="{{$activity_btn_title}}">
+ <input type="checkbox" autocomplete="off" name="no_activity" value="1"><i class="icon-ban-circle jot-icons"></i>
+ </label>
+ </div>
<div id="attach-edit-perms" class="btn-group">
<button id="dbtn-acl" class="btn btn-default btn-xs" data-toggle="modal" data-target="#aclModal" title="{{$permset}}" onclick="return false;">
<i id="jot-perms-icon" class="icon-{{$lockstate}} jot-icons"></i>
diff --git a/view/tpl/cloud_header.tpl b/view/tpl/cloud_header.tpl
index f5f123edb..403323085 100644
--- a/view/tpl/cloud_header.tpl
+++ b/view/tpl/cloud_header.tpl
@@ -1,8 +1,9 @@
<div class="section-title-wrapper">
{{if $actionspanel}}
<div class="pull-right">
- <button id="files-create-btn"class="btn btn-xs btn-primary" title="{{if $quota.limit || $quota.used}}{{$quota.desc}}{{/if}}" onclick="openClose('files-mkdir-tools'); closeMenu('files-upload-tools');"><i class="icon-folder-close-alt"></i>&nbsp;Create</button>
- <button id="files-upload-btn" class="btn btn-xs btn-success" title="{{if $quota.limit || $quota.used}}{{$quota.desc}}{{/if}}" onclick="openClose('files-upload-tools'); closeMenu('files-mkdir-tools');"><i class="icon-upload"></i>&nbsp;Upload</button>
+ <a href="/sharedwithme" class="btn btn-xs btn-default"><i class="icon-cloud-download"></i>&nbsp;{{$shared}}</a>
+ <button id="files-create-btn" class="btn btn-xs btn-primary" title="{{if $quota.limit || $quota.used}}{{$quota.desc}}{{/if}}" onclick="openClose('files-mkdir-tools'); closeMenu('files-upload-tools');"><i class="icon-folder-close-alt"></i>&nbsp;{{$create}}</button>
+ <button id="files-upload-btn" class="btn btn-xs btn-success" title="{{if $quota.limit || $quota.used}}{{$quota.desc}}{{/if}}" onclick="openClose('files-upload-tools'); closeMenu('files-mkdir-tools');"><i class="icon-upload"></i>&nbsp;{{$upload}}</button>
</div>
{{/if}}
<h2>{{$header}}</h2>