[size=large][b]Frequently Asked Questions For Developers[/b][/size]
[toc]
[h3]What does $a mean?[/h3]
$a is a class defined in boot.php and passed all around $Projectname as a global reference variable. It defines everything necessary for the $Projectname 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.
[code]function foo(&$a) { $a->something = 'x'; // whatever };
*or* access it within your function as a global variable via get_app()
function foo() {
$a = get_app();
$a->something = 'x';
}
function foo($a) { $a->something = 'x'; };
will *not* change the global app state.
function foo() {
get_app()->something = 'x';
}
[/code]
An example (large) &$a object showing some of its many members and structures-- in JSON format for easier readability-- is here:
[code] {
"category": null,
"nav_sel": {
"home": null,
"community": null,
"contacts": null,
"directory": null,
"settings": null,
"notifications": null,
"intros": null,
"messages": null,
"register": null,
"manage": null,
"profiles": null,
"network": null,
"help": "active"
},
"argc": 2,
"install": false,
"is_mobile": false,
"timezone": "America/Los_Angeles",
"sourcename": "",
"module_loaded": true,
"contacts": null,
"interactive": true,
"config": {
"system": {
"max_import_size": 200000,
"logfile": "/tmp/hubzilla.log",
"channels_active_monthly_stat": "3",
"last_expire_day": "4",
"loglevel": "4",
"sitename": "Hubzilla",
"access_policy": 0,
"directory_mode": 0,
"debugging": "1",
"verify_email": 1,
"register_text": "",
"urlverify": "687474703a2f2f6875627a696c6c61",
"register_policy": 2,
"theme": "redbasic",
"smarty3_folder": "/home/src/hubzilla/store/[data]/smarty3",
"channels_total_stat": "4",
"admin_email": "foo@bar.com",
"channels_active_halfyear_stat": "3",
"location_hash": "910792b7bf75296cbf238ae29a5493f3c78805812652d3f0396e88763a26ce1b",
"local_posts_stat": "63",
"lastpollcheck": "2015-11-03 07:40:38",
"baseurl": "http://hubzilla",
"config_loaded": true,
"pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAuR4neYAxuWwZg34fqofU\nZg8y1YSTX39Tzhgcgn7QFCeH600NHJBHWXbPdS5imdYq6W+P1vtKxsVNLI9d01+j\ns3MF3amgEuJH0X+JLLjyittQksyAiukvh/o4MSit8mcYcXs8Dxaybe+KaY09N4ys\ndxKcn6EPlthUiQPJMPitybp4vYkw9LupWZOQWThz9ur6T5wnk9ehBIPFN8gYvKrT\nAG9RFfbq3y59rTOiSHNA2PIUMzo2HEh4QBVCvVolKt7GPhUM4Bze40VRe8ELZTPp\nyehNxEHyhHZfnC+XRVNlvSPXBU2vtE+zcok+5DXsKAqMt8YgFIThNEOLQKvff/lv\nsdGvk6jJZok7+9lKtYfwnNnRWf51aVVuSAO3aIIVLroLyhiji0KA7G5YRHeF1rNL\np88e8peMyUMCX2Svv1wudJzqOfWSvOpY0NLZrdGZXRN2/rXyHPRD/TtS3SNDdd7J\nYQUjyxGjF1/zB3xqvPr09s8tzXqJl9pZNcN9iz58oPBbTuGdUr8CJro/3nVHgkRf\nw7/zhapSW1UaroJjecrC9yWx5QUD3KNU51phsP9iHCFdMyPBdUHjmNvE5f7YJWBh\nO1rRKUoE3i+eHLYAWeYblFX7T+EKOCB2hd3NUrIqDL98OSpfDiZT7rf9PdcWCOY5\nuddm6KzwHjffl5kZd8MM8bMCAwEAAQ==\n-----END PUBLIC KEY-----\n",
"addon": "converse",
"lastpoll": "2015-11-04 07:40:01",
"php_path": "/usr/bin/php",
"allowed_themes": "redbasic",
"sellpage": "",
"prvkey": "-----BEGIN PRIVATE KEY-----\n-----END PRIVATE KEY-----\n",
"directory_server": "https://red.zottel.red",
"curl_ssl_ciphers": "ALL:!eNULL",
"db_version": "1158"
},
"config": {
"config_loaded": true
},
"feature": {
"config_loaded": true
},
"2": {
"redbasic": {
"schema": "dark",
"comment_indent": "",
"toolicon_activecolour": "",
"item_colour": "",
"nav_gradient_top": "",
"nav_active_icon_colour": "",
"nav_active_gradient_top": "",
"top_photo": "",
"converse_width": "",
"nav_min_opacity": "",
"body_font_size": "",
"reply_photo": "",
"background_colour": "",
"radius": "",
"nav_gradient_bottom": "",
"toolicon_colour": "",
"nav_active_gradient_bottom": "",
"nav_icon_colour": "",
"narrow_navbar": "",
"nav_bg": "",
"comment_item_colour": "",
"config_loaded": true,
"banner_colour": "",
"comment_border_colour": "",
"align_left": "",
"font_size": "",
"font_colour": "",
"nav_bd": "",
"photo_shadow": "",
"background_image": "",
"link_colour": ""
},
"system": {
"network_list_mode": "0",
"post_joingroup": "0",
"channel_list_mode": "0",
"title_tosource": "0",
"blocktags": "0",
"photo_path": "%Y-%m",
"suggestme": "0",
"autoperms": "0",
"hide_presence": "0",
"channel_divmore_height": "400",
"network_divmore_height": "400",
"post_profilechange": "0",
"channel_menu": "",
"always_show_in_notices": "0",
"use_browser_location": "0",
"update_interval": "80000",
"itemspage": "20",
"attach_path": "%Y-%m",
"permissions_role": "social",
"vnotify": "2047",
"post_newfriend": "0",
"config_loaded": true,
"no_smilies": "0",
"evdays": "3",
"user_scalable": "1"
}
}
},
"layout": {
"region_aside": "\n<div class="widget"><h3>Documentation</h3><ul class="nav nav-pills nav-stacked"><li><a href="help/general">Project/Site Information</a></li><li><a href="help/members">For Members</a></li><li><a href="help/admins">For Administrators</a></li><li><a href="help/develop">For Developers</a></li></ul></div>\n"
},
"is_sys": false,
"content": null,
"cid": null,
"profile_uid": 0,
"hooks": {
"construct_page": [
[
"addon/converse/converse.php",
"converse_content"
]
]
},
"strings": [],
"js_sources": [
"jquery.js",
"library/justifiedGallery/jquery.justifiedGallery.min.js",
"library/sprintf.js/dist/sprintf.min.js",
"spin.js",
"jquery.spin.js",
"jquery.textinputs.js",
"autocomplete.js",
"library/jquery-textcomplete/jquery.textcomplete.js",
"library/jquery.timeago.js",
"library/readmore.js/readmore.js",
"library/jgrowl/jquery.jgrowl_minimized.js",
"library/cryptojs/components/core-min.js",
"library/cryptojs/rollups/aes.js",
"library/cryptojs/rollups/rabbit.js",
"library/cryptojs/rollups/tripledes.js",
"acl.js",
"webtoolkit.base64.js",
"main.js",
"crypto.js",
"library/jRange/jquery.range.js",
"library/colorbox/jquery.colorbox-min.js",
"library/jquery.AreYouSure/jquery.are-you-sure.js",
"library/tableofcontents/jquery.toc.js",
"library/bootstrap/js/bootstrap.min.js",
"library/bootbox/bootbox.min.js",
"library/bootstrap-tagsinput/bootstrap-tagsinput.js",
"library/datetimepicker/jquery.datetimepicker.js",
"library/bootstrap-colorpicker/dist/js/bootstrap-colorpicker.js",
"view/theme/redbasic/js/redbasic.js",
"mod_help.js"
],
"channel": {
"channel_hash": "uRy0nF-urp6k_bFrkdtCc2EkBynwpgCJL_FQFoTwyw2Hep7AHkrSt1MZcHWV_8DQucNlHSY1vHgUNS2Fvoirpw",
"channel_address": "testes",
"channel_primary": "1",
"channel_allow_gid": "",
"xchan_deleted": "0",
"xchan_connpage": "",
"channel_r_storage": "1",
"xchan_pubforum": "0",
"channel_pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA7MP/xxsq/srA8I7m+WKf\nHlguwwg0b1tz+I3o+djp7b+wF8q03XPKQpYmKfXIj47vpAOu75nKA4Tn90lLymmk\nSXUHogOqOMy1CHoaVrAw2T2/tAeRoMAjAJ5IxSOAM7Xda0nVUK6FmfxPcvftKf9y\nPmvvFadXpaHT4JGPH0tszDhGXLkqlt9xSkIkpsgMA6emj/7bacc6x8eTdtvzo2e5\n/NyPXvBKH4henmYaKjq/4aIYZcBWYVGt6onxaP2j1cSNbksnOY7GbJl+hy95iFoZ\nDWGxiFwQd+CroiBbdlpVGp13cV/WKp2spZzlzkmCRGYoNbbM5RlgFLnmyTa4XMZE\nwnA3ZUB59MsrUJK+0H/utiZrpX5NQcFl33z8k5zB3pPnhc5S5/P+UJZRnqhet1wQ\n7AZVmdP30D75QD8LZ4SytZ1DHn/N76EsVhSADNMnUfEphs708V33Z0gFWultYDoK\nlvXUf4O0/V8GTufFHb6XdAiy92IUzrormXCpXoOmdOcJdaH9RnotZi/DkuQ0zP+Y\nCvxU9nrjyZvAwAdew//XFDjw4HoThVM4k4jzkIhCTlCao/yRnNM7A/i3OKcXq9wU\n7OZqcRfM9o0BFpZTIoXB7BMtpeioJcBi/7FUaV9U9uYLFuLL0qWa1YxLwfsN9rDk\n6A1gbhD60G9/dAbolp8xAHkCAwEAAQ==\n-----END PUBLIC KEY-----\n",
"xchan_flags": "0",
"channel_allow_cid": "",
"xchan_censored": "0",
"channel_w_pages": "128",
"xchan_instance_url": "",
"xchan_photo_s": "http://hubzilla/photo/profile/s/2",
"channel_w_stream": "128",
"channel_timezone": "America/Los_Angeles",
"xchan_pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA7MP/xxsq/srA8I7m+WKf\nHlguwwg0b1tz+I3o+djp7b+wF8q03XPKQpYmKfXIj47vpAOu75nKA4Tn90lLymmk\nSXUHogOqOMy1CHoaVrAw2T2/tAeRoMAjAJ5IxSOAM7Xda0nVUK6FmfxPcvftKf9y\nPmvvFadXpaHT4JGPH0tszDhGXLkqlt9xSkIkpsgMA6emj/7bacc6x8eTdtvzo2e5\n/NyPXvBKH4henmYaKjq/4aIYZcBWYVGt6onxaP2j1cSNbksnOY7GbJl+hy95iFoZ\nDWGxiFwQd+CroiBbdlpVGp13cV/WKp2spZzlzkmCRGYoNbbM5RlgFLnmyTa4XMZE\nwnA3ZUB59MsrUJK+0H/utiZrpX5NQcFl33z8k5zB3pPnhc5S5/P+UJZRnqhet1wQ\n7AZVmdP30D75QD8LZ4SytZ1DHn/N76EsVhSADNMnUfEphs708V33Z0gFWultYDoK\nlvXUf4O0/V8GTufFHb6XdAiy92IUzrormXCpXoOmdOcJdaH9RnotZi/DkuQ0zP+Y\nCvxU9nrjyZvAwAdew//XFDjw4HoThVM4k4jzkIhCTlCao/yRnNM7A/i3OKcXq9wU\n7OZqcRfM9o0BFpZTIoXB7BMtpeioJcBi/7FUaV9U9uYLFuLL0qWa1YxLwfsN9rDk\n6A1gbhD60G9/dAbolp8xAHkCAwEAAQ==\n-----END PUBLIC KEY-----\n",
"channel_w_chat": "128",
"xchan_connurl": "http://hubzilla/poco/testes",
"channel_guid_sig": "XXX",
"xchan_name_date": "2015-10-09 00:45:41",
"channel_expire_days": "0",
"xchan_system": "0",
"xchan_photo_date": "2015-10-09 00:45:41",
"channel_startpage": "",
"channel_deny_gid": "",
"channel_lastpost": "2015-10-09 02:53:23",
"xchan_photo_m": "http://hubzilla/photo/profile/m/2",
"channel_passwd_reset": "",
"xchan_hidden": "0",
"xchan_selfcensored": "0",
"xchan_photo_mimetype": "image/jpeg",
"channel_a_republish": "128",
"channel_w_tagwall": "128",
"channel_r_stream": "1",
"channel_w_comment": "128",
"channel_system": "0",
"channel_w_mail": "128",
"channel_pageflags": "0",
"xchan_network": "zot",
"channel_id": "2",
"xchan_guid": "Ok-ycNKQYMzjokLnIz5OTCF8M5f4CtRT4vJCUeUivJhIOJWk3ORwIQgGx3P5g2Yz79KxQ-rs_Cn2G_jsgM6hmw",
"channel_removed": "0",
"channel_dirdate": "2015-10-09 00:46:00",
"channel_w_storage": "128",
"channel_w_photos": "0",
"channel_prvkey": "-----BEGIN PRIVATE KEY----------END PRIVATE KEY-----\n",
"channel_guid": "Ok-ycNKQYMzjokLnIz5OTCF8M5f4CtRT4vJCUeUivJhIOJWk3ORwIQgGx3P5g2Yz79KxQ-rs_Cn2G_jsgM6hmw",
"channel_max_friend_req": "0",
"channel_w_wall": "128",
"channel_r_abook": "1",
"channel_max_anon_mail": "0",
"channel_location": "",
"channel_a_delegate": "128",
"channel_deny_cid": "",
"channel_r_profile": "1",
"channel_name": "testes",
"xchan_guid_sig": "XXX",
"xchan_hash": "uRy0nF-urp6k_bFrkdtCc2EkBynwpgCJL_FQFoTwyw2Hep7AHkrSt1MZcHWV_8DQucNlHSY1vHgUNS2Fvoirpw",
"channel_notifyflags": "703",
"channel_theme": "redbasic",
"channel_w_like": "2",
"xchan_url": "http://hubzilla/channel/testes",
"channel_default_group": "",
"channel_r_photos": "0",
"channel_account_id": "1",
"xchan_addr": "testes@hubzilla",
"channel_r_pages": "1",
"channel_deleted": "0000-00-00 00:00:00",
"xchan_orphan": "0",
"xchan_follow": "http://hubzilla/follow?f=&url=%s",
"xchan_name": "testes",
"xchan_photo_l": "http://hubzilla/photo/profile/l/2"
},
"page": {
"content": "<div id="help-content" class="generic-content-wrapper">\n\t<div class="section-title-wrapper">\n\t<h2>Hubzilla Documentation</h2>\n\t</div>\n\t<div class="section-content-wrapper">\n\t<h2>Documentation for Developers</h2><br /><br /><h3>Technical Documentation</h3><br /><a class="zrl" href="http://hubzilla/help/Zot---A-High-Level-Overview" target="_newwin" >A high level overview of Zot</a><br /><a class="zrl" href="http://hubzilla/help/zot" target="_newwin" >An introduction to Zot</a><br /><a class="zrl" href="http://hubzilla/help/zot_structures" target="_newwin" >Zot Stuctures</a><br /><a class="zrl" href="http://hubzilla/help/comanche" target="_newwin" >Comanche Page Descriptions</a><br /><a class="zrl" href="http://hubzilla/help/Creating-Templates" target="_newwin" >Creating Comanche Templates</a><br /><a class="zrl" href="http://hubzilla/help/Widgets" target="_newwin" >Widgets</a><br /><a class="zrl" href="http://hubzilla/help/plugins" target="_newwin" >Plugins</a><br /><a class="zrl" href="http://hubzilla/help/hooks" target="_newwin" >Hooks</a><br /><a class="zrl" href="http://hubzilla/help/doco" target="_newwin" >Contributing Documentation</a><br /><a class="zrl" href="http://hubzilla/help/DerivedTheme1" target="_newwin" >Creating Derivative Themes</a><br /><a class="zrl" href="http://hubzilla/help/schema_development" target="_newwin" >Schemas</a><br /><a class="zrl" href="http://hubzilla/help/Translations" target="_newwin" >Translations</a><br /><a class="zrl" href="http://hubzilla/help/developers" target="_newwin" >Developers</a><br /><a class="zrl" href="http://hubzilla/help/intro_for_developers" target="_newwin" >Intro for Developers</a><br /><a class="zrl" href="http://hubzilla/help/database" target="_newwin" >Database schema documantation</a><br /><a class="zrl" href="http://hubzilla/help/api_functions" target="_newwin" >API functions</a><br /><a class="zrl" href="http://hubzilla/help/api_posting" target="_newwin" >Posting to the red# using the API</a><br /><a class="zrl" href="http://hubzilla/help/developer_function_primer" target="_newwin" >Red Functions 101</a><br /><a class="zrl" href="http://hubzilla/doc/html/" target="_newwin" >Code Reference (Doxygen generated - sets cookies)</a><br /><a class="zrl" href="http://hubzilla/help/to_do_doco" target="_newwin" >To-Do list for the Red Documentation Project</a><br /><a class="zrl" href="http://hubzilla/help/to_do_code" target="_newwin" >To-Do list for Developers</a><br /><a class="zrl" href="http://hubzilla/help/roadmap" target="_newwin" >Version 3 roadmap</a><br /><a class="zrl" href="http://hubzilla/help/git_for_non_developers" target="_newwin" >Git for Non-Developers</a><br /><a class="zrl" href="http://hubzilla/help/dev_beginner" target="_newwin" >Step-for-step manual for beginning developers</a><br /><br /><h3>Frequently Asked Questions For Developers</h3><br /><a class="zrl" href="http://hubzilla/help/faq_developers" target="_newwin" >FAQ For Developers</a><br /><br /><h3>External Resources</h3><br /><br /><a href="https://zothub.com/channel/one" target="_newwin" >Development Channel</a><br /><a href="https://federated.social/channel/postgres" target="_newwin" >Postgres-specific Hubzilla Admin Support Channel</a><br />\n\t</div>\n</div>\n<script>var homebase = "http://hubzilla/channel/testes";</script>",
"page_title": "help",
"title": "Help: Develop",
"nav": "\t<div class="container-fluid">\n\t\t<div class="navbar-header">\n\t\t\t<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapse-1">\n\t\t\t\t<span class="icon-bar"></span>\n\t\t\t\t<span class="icon-bar"></span>\n\t\t\t\t<span class="icon-bar"></span>\n\t\t\t</button>\n\t\t\t<button id="expand-tabs" type="button" class="navbar-toggle" data-toggle="collapse" data-target="#tabs-collapse-1">\n\t\t\t\t<i class="icon-circle-arrow-down" id="expand-tabs-icon"></i>\n\t\t\t</button>\n\t\t\t<button id="expand-aside" type="button" class="navbar-toggle" data-toggle="offcanvas" data-target="#region_1">\n\t\t\t\t<i class="icon-circle-arrow-right" id="expand-aside-icon"></i>\n\t\t\t</button>\n\t\t\t\t\t\t\t<img class="dropdown-toggle fakelink" data-toggle="dropdown" id="avatar" src="http://hubzilla/photo/profile/m/2" alt="testes@hubzilla"><span class="caret" id="usermenu-caret"></span>\n\t\t\t\t\t\t\t\t\t<ul class="dropdown-menu" role="menu" aria-labelledby="avatar">\n\t\t\t\t\t\t\t\t\t\t\t\t<li role="presentation"><a href="channel/testes" title="Your posts and conversations" role="menuitem" id="channel_nav_btn">Home</a></li>\n\t\t\t\t\t\t\t\t\t\t\t\t<li role="presentation"><a href="profile/testes" title="Your profile page" role="menuitem" id="profile_nav_btn">View Profile</a></li>\n\t\t\t\t\t\t\t\t\t\t\t\t<li role="presentation"><a href="profiles/2" title="Edit your profile" role="menuitem" id="profiles_nav_btn">Edit Profile</a></li>\n\t\t\t\t\t\t\t\t\t\t\t\t<li role="presentation"><a href="photos/testes" title="Your photos" role="menuitem" id="photos_nav_btn">Photos</a></li>\n\t\t\t\t\t\t\t\t\t\t\t\t<li role="presentation"><a href="cloud/testes" title="Your files" role="menuitem" id="cloud_nav_btn">Files</a></li>\n\t\t\t\t\t\t\t\t\t\t\t\t<li role="presentation"><a href="chat/testes/new" title="Your chatrooms" role="menuitem" id="chat_nav_btn">Chat</a></li>\n\t\t\t\t\t\t\t\t\t\t\t\t<li role="presentation" class="divider"></li>\n\t\t\t\t\t\t\t\t\t\t\t\t<li role="presentation"><a href="settings" title="Account/Channel Settings" role="menuitem" id="settings_nav_btn">Settings</a></li>\t\t\t\t\t\t<li role="presentation"><a href="manage" title="Manage Your Channels" role="menuitem" id="manage_nav_btn">Channel Manager</a></li>\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li role="presentation" class="divider"></li>\n\t\t\t\t\t\t<li role="presentation"><a href="admin/" title="Site Setup and Configuration" role="menuitem" id="admin_nav_btn">Admin</a></li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li role="presentation" class="divider"></li>\n\t\t\t\t\t\t<li role="presentation"><a href="logout" title="End this session" role="menuitem" id="logout_nav_btn">Logout</a></li>\n\t\t\t\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t<div class="collapse navbar-collapse" id="navbar-collapse-1">\n\t\t\t<ul class="nav navbar-nav navbar-left">\n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\t\t\t\t<li class=" hidden-xs">\n\t\t\t\t\t<a href="network" title="Your grid" id="network_nav_btn"><i class="icon-th"></i></a>\n\t\t\t\t\t<span class="net-update badge dropdown-toggle" data-toggle="dropdown" rel="#nav-network-menu"></span>\n\t\t\t\t\t<ul id="nav-network-menu" role="menu" class="dropdown-menu" rel="network">\n\t\t\t\t\t\t\n\t\t\t\t\t\t<li id="nav-network-mark-all"><a href="#" onclick="markRead('network'); return false;">Mark all grid notifications seen</a></li>\n\t\t\t\t\t\t<li class="empty">Loading...</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</li>\n\t\t\t\t<li class=" visible-xs">\n\t\t\t\t\t<a href="network" title="Your grid" ><i class="icon-th"></i></a>\n\t\t\t\t\t<span class="net-update badge" rel="#nav-network-menu"></span>\n\t\t\t\t</li>\n\t\t\t\n\t\t\t\t\t\t\t<li class=" hidden-xs">\n\t\t\t\t\t<a class="" href="channel/testes" title="Channel home" id="home_nav_btn"><i class="icon-home"></i></a>\n\t\t\t\t\t<span class="home-update badge dropdown-toggle" data-toggle="dropdown" rel="#nav-home-menu"></span>\n\t\t\t\t\t<ul id="nav-home-menu" class="dropdown-menu" rel="home">\n\t\t\t\t\t\t\n\t\t\t\t\t\t<li id="nav-home-mark-all"><a href="#" onclick="markRead('home'); return false;">Mark all channel notifications seen</a></li>\n\t\t\t\t\t\t<li class="empty">Loading...</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</li>\n\t\t\t\t<li class=" visible-xs">\n\t\t\t\t\t<a class="" href="channel/testes" title="Channel home" ><i class="icon-home"></i></a>\n\t\t\t\t\t<span class="home-update badge" rel="#nav-home-menu"></span>\n\t\t\t\t</li>\n\t\t\t\n\n\t\t\t\t\t\t\t<li class=" hidden-xs">\n\t\t\t\t\t<a class="" href="mail/combined" title="Private mail" id="mail_nav_btn"><i class="icon-envelope"></i></a>\n\t\t\t\t\t<span class="mail-update badge dropdown-toggle" data-toggle="dropdown" rel="#nav-messages-menu"></span>\n\t\t\t\t\t<ul id="nav-messages-menu" class="dropdown-menu" rel="messages">\n\t\t\t\t\t\t<li id="nav-messages-see-all"><a href="mail/combined">See all private messages</a></li>\n\t\t\t\t\t\t<li id="nav-messages-mark-all"><a href="#" onclick="markRead('messages'); return false;">Mark all private messages seen</a></li>\n\t\t\t\t\t\t<li class="empty">Loading...</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</li>\n\t\t\t\t<li class=" visible-xs">\n\t\t\t\t\t<a class="" href="mail/combined" title="Private mail" ><i class="icon-envelope"></i></a>\n\t\t\t\t\t<span class="mail-update badge" rel="#nav-messages-menu"></span>\n\t\t\t\t</li>\n\t\t\t\n\t\t\t\t\t\t\t<li class=" hidden-xs">\n\t\t\t\t\t<a class="" href="events" title="Event Calendar" id='events_nav_btn'><i class="icon-calendar"></i></a>\n\t\t\t\t\t<span class="all_events-update badge dropdown-toggle" data-toggle="dropdown" rel="#nav-all_events-menu"></span>\n\t\t\t\t\t<ul id="nav-all_events-menu" class="dropdown-menu" rel="all_events">\n\t\t\t\t\t\t<li id="nav-all_events-see-all"><a href="events">See all events</a></li>\n\t\t\t\t\t\t<li id="nav-all_events-mark-all"><a href="#" onclick="markRead('all_events'); return false;">Mark all events seen</a></li>\n\t\t\t\t\t\t<li class="empty">Loading...</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</li>\n\t\t\t\t<li class=" visible-xs">\n\t\t\t\t\t<a class="" href="events" title="Event Calendar" ><i class="icon-calendar"></i></a>\n\t\t\t\t\t<span class="all_events-update badge" rel="#nav-all_events-menu"></span>\n\t\t\t\t</li>\n\t\t\t\n\t\t\t\t\t\t\t<li class=" hidden-xs">\n\t\t\t\t\t<a class="" href="connections/ifpending" title="Connections" id="connections_nav_btn"><i class="icon-user"></i></a>\n\t\t\t\t\t<span class="intro-update badge dropdown-toggle" data-toggle="dropdown" rel="#nav-intros-menu"></span>\n\t\t\t\t\t<ul id="nav-intros-menu" class="dropdown-menu" rel="intros">\n\t\t\t\t\t\t<li id="nav-intros-see-all"><a href=""></a></li>\n\t\t\t\t\t\t<li class="empty">Loading...</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</li>\n\t\t\t\t<li class=" visible-xs">\n\t\t\t\t\t<a class="" href="connections/ifpending" title="Connections" ><i class="icon-user"></i></a>\n\t\t\t\t\t<span class="intro-update badge" rel="#nav-intros-menu"></span>\n\t\t\t\t</li>\n\t\t\t\t\t\n\t\t\t\t\t\t\t<li class=" hidden-xs">\n\t\t\t\t\t<a href="notifications/system" title="Notices" id="notifications_nav_btn"><i class="icon-exclamation"></i></a>\n\t\t\t\t\t<span class="notify-update badge dropdown-toggle" data-toggle="dropdown" rel="#nav-notify-menu"></span>\n\t\t\t\t\t<ul id="nav-notify-menu" class="dropdown-menu" rel="notify">\n\t\t\t\t\t\t<li id="nav-notify-see-all"><a href="notifications/system">See all notifications</a></li>\n\t\t\t\t\t\t<li id="nav-notify-mark-all"><a href="#" onclick="markRead('notify'); return false;">Mark all system notifications seen</a></li>\n\t\t\t\t\t\t<li class="empty">Loading...</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</li>\n\t\t\t\t<li class=" visible-xs">\n\t\t\t\t\t<a href="notifications/system" title="Notices"><i class="icon-exclamation"></i></a>\n\t\t\t\t\t<span class="notify-update badge" rel="#nav-notify-menu"></span>\n\t\t\t\t</li>\n\t\t\t\t\t\t</ul>\n\t\t\t<ul class="nav navbar-nav navbar-right">\n\t\t\t\t<li class="hidden-xs">\n\t\t\t\t\t<form method="get" action="search" role="search">\n\t\t\t\t\t\t<div id="nav-search-spinner"></div><input class="icon-search" id="nav-search-text" type="text" value="" placeholder="&#xf002; @name, #tag, ?doc, content" name="search" title="Search site @name, #tag, ?docs, content" onclick="this.submit();"/>\n\t\t\t\t\t</form>\n\t\t\t\t</li>\n\t\t\t\t<li class="visible-xs">\n\t\t\t\t\t<a href="/search" title="Search site @name, #tag, ?docs, content"><i class="icon-search"></i></a>\n\t\t\t\t</li>\n\n\t\t\t\t\t\t\t\t\t\t<li class="">\n\t\t\t\t\t<a class="" href="directory" title="Channel Directory" id="directory_nav_btn"><i class="icon-sitemap"></i></a>\n\t\t\t\t</li>\n\t\t\t\n\t\t\t\t\t\t\t<li class="">\n\t\t\t\t\t<a class="" href="apps" title="Applications, utilities, links, games" id="apps_nav_btn"><i class="icon-cogs"></i></a>\n\t\t\t\t</li>\n\t\t\t\n\t\t\t\t\t\t\t<li class="active">\n\t\t\t\t\t<a class="" target="hubzilla-help" href="http://hubzilla/help?f=&cmd=help/develop" title="Help and documentation" id="help_nav_btn"><i class="icon-question"></i></a>\n\t\t\t\t</li>\n\t\t\t\t\t\t</ul>\n\t\t</div>\n\t</div>\n",
"htmlhead": "<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />\n<base href="http://hubzilla/" />\n<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, user-scalable=1" />\n<meta name="generator" content="hubzilla 2015-11-03.1205H" />\n\n<!--[if IE]>\n<script src="http://hubzilla/library/html5.js"></script>\n<![endif]-->\n\n<link rel="stylesheet" href="http://hubzilla/library/font_awesome/css/font-awesome.min.css" type="text/css" media="screen">\r\n<link rel="stylesheet" href="http://hubzilla/library/bootstrap/css/bootstrap.min.css" type="text/css" media="screen">\r\n<link rel="stylesheet" href="http://hubzilla/library/bootstrap-tagsinput/bootstrap-tagsinput.css" type="text/css" media="screen">\r\n<link rel="stylesheet" href="http://hubzilla/view/css/bootstrap-red.css" type="text/css" media="screen">\r\n<link rel="stylesheet" href="http://hubzilla/library/datetimepicker/jquery.datetimepicker.css" type="text/css" media="screen">\r\n<link rel="stylesheet" href="http://hubzilla/library/bootstrap-colorpicker/dist/css/bootstrap-colorpicker.min.css" type="text/css" media="screen">\r\n<link rel="stylesheet" href="http://hubzilla/library/tiptip/tipTip.css" type="text/css" media="screen">\r\n<link rel="stylesheet" href="http://hubzilla/library/jgrowl/jquery.jgrowl.css" type="text/css" media="screen">\r\n<link rel="stylesheet" href="http://hubzilla/library/jRange/jquery.range.css" type="text/css" media="screen">\r\n<link rel="stylesheet" href="http://hubzilla/view/css/conversation.css" type="text/css" media="screen">\r\n<link rel="stylesheet" href="http://hubzilla/view/css/widgets.css" type="text/css" media="screen">\r\n<link rel="stylesheet" href="http://hubzilla/view/css/colorbox.css" type="text/css" media="screen">\r\n<link rel="stylesheet" href="http://hubzilla/library/justifiedGallery/justifiedGallery.min.css" type="text/css" media="screen">\r\n<link rel="stylesheet" href="http://hubzilla/view/css/default.css" type="text/css" media="screen">\r\n<link rel="stylesheet" href="http://hubzilla/view/theme/redbasic/php/style.pcss" type="text/css" media="screen">\r\n\n\n<script>\n\n\tvar aStr = {\n\n\t\t'delitem' : "Delete this item?",\n\t\t'comment' : "Comment",\n\t\t'showmore' : "[+] show all",\n\t\t'showfewer' : "[-] show less",\n\t\t'divgrowmore' : "[+] expand",\n\t\t'divgrowless' : "[-] collapse",\n\t\t'pwshort' : "Password too short",\n\t\t'pwnomatch' : "Passwords do not match",\n\t\t'everybody' : "everybody",\n\t\t'passphrase' : "Secret Passphrase",\n\t\t'passhint' : "Passphrase hint",\n\t\t'permschange' : "Notice: Permissions have changed but have not yet been submitted.",\n\t\t'closeAll' : "close all",\n\t\t'nothingnew' : "Nothing new here",\n\t\t'rating_desc' : "Rate This Channel (this is public)",\n\t\t'rating_val' : "Rating",\n\t\t'rating_text' : "Describe (optional)",\n\t\t'submit' : "Submit",\n\t\t'linkurl' : "Please enter a link URL",\n\t\t'leavethispage' : "Unsaved changes. Are you sure you wish to leave this page?",\n\n\t\t't01' : "",\n\t\t't02' : "",\n\t\t't03' : "ago",\n\t\t't04' : "from now",\n\t\t't05' : "less than a minute",\n\t\t't06' : "about a minute",\n\t\t't07' : "%d minutes",\n\t\t't08' : "about an hour",\n\t\t't09' : "about %d hours",\n\t\t't10' : "a day",\n\t\t't11' : "%d days",\n\t\t't12' : "about a month",\n\t\t't13' : "%d months",\n\t\t't14' : "about a year",\n\t\t't15' : "%d years",\n\t\t't16' : " ",\n\t\t't17' : "[]",\n\n\t\t'monthNames' : [ "January","February","March","April","May","June","July","August","September","October","November","December" ],\n\t\t'monthNamesShort' : [ "Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec" ],\n\t\t'dayNames' : ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],\n\t\t'dayNamesShort' : ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],\n\t\t'today' : "today",\n\t\t'month' : "month",\n\t\t'week' : "week",\n\t\t'day' : "day",\n\t\t'allday' : "All day"\n\t};\n\n</script>\n\t\t\n\n\n<script src="http://hubzilla/view/js/jquery.js" ></script>\r\n<script src="http://hubzilla/library/justifiedGallery/jquery.justifiedGallery.min.js" ></script>\r\n<script src="http://hubzilla/library/sprintf.js/dist/sprintf.min.js" ></script>\r\n<script src="http://hubzilla/view/js/spin.js" ></script>\r\n<script src="http://hubzilla/view/js/jquery.spin.js" ></script>\r\n<script src="http://hubzilla/view/js/jquery.textinputs.js" ></script>\r\n<script src="http://hubzilla/view/js/autocomplete.js" ></script>\r\n<script src="http://hubzilla/library/jquery-textcomplete/jquery.textcomplete.js" ></script>\r\n<script src="http://hubzilla/library/jquery.timeago.js" ></script>\r\n<script src="http://hubzilla/library/readmore.js/readmore.js" ></script>\r\n<script src="http://hubzilla/library/jgrowl/jquery.jgrowl_minimized.js" ></script>\r\n<script src="http://hubzilla/library/cryptojs/components/core-min.js" ></script>\r\n<script src="http://hubzilla/library/cryptojs/rollups/aes.js" ></script>\r\n<script src="http://hubzilla/library/cryptojs/rollups/rabbit.js" ></script>\r\n<script src="http://hubzilla/library/cryptojs/rollups/tripledes.js" ></script>\r\n<script src="http://hubzilla/view/js/acl.js" ></script>\r\n<script src="http://hubzilla/view/js/webtoolkit.base64.js" ></script>\r\n<script src="http://hubzilla/view/js/crypto.js" ></script>\r\n<script src="http://hubzilla/library/jRange/jquery.range.js" ></script>\r\n<script src="http://hubzilla/library/colorbox/jquery.colorbox-min.js" ></script>\r\n<script src="http://hubzilla/library/jquery.AreYouSure/jquery.are-you-sure.js" ></script>\r\n<script src="http://hubzilla/library/tableofcontents/jquery.toc.js" ></script>\r\n<script src="http://hubzilla/library/bootstrap/js/bootstrap.min.js" ></script>\r\n<script src="http://hubzilla/library/bootbox/bootbox.min.js" ></script>\r\n<script src="http://hubzilla/library/bootstrap-tagsinput/bootstrap-tagsinput.js" ></script>\r\n<script src="http://hubzilla/library/datetimepicker/jquery.datetimepicker.js" ></script>\r\n<script src="http://hubzilla/library/bootstrap-colorpicker/dist/js/bootstrap-colorpicker.js" ></script>\r\n<script src="http://hubzilla/view/theme/redbasic/js/redbasic.js" ></script>\r\n\n\n<link rel="shortcut icon" href="http://hubzilla/images/hz-32.png" />\n<link rel="search"\n href="http://hubzilla/opensearch" \n type="application/opensearchdescription+xml" \n title="Search in the Hubzilla" />\n\n\n<script>\n\n\tvar updateInterval = 80000;\n\tvar localUser = 2;\n\tvar zid = 'testes@hubzilla';\n\tvar justifiedGalleryActive = false;\n\t\t\n</script>\n\n\n\n\n<script>$(document).ready(function() {\n\t$("#nav-search-text").search_autocomplete('http://hubzilla/acl');\n});\n\n</script><script src="http://hubzilla/view/js/main.js" ></script>\r\n<link rel="stylesheet" href="http://hubzilla/addon/converse/converse.min.js" media="all" /><script src="http://hubzilla/addon/converse/converse.min.js"></script>",
"header": "<div id="banner" class="hidden-sm hidden-xs">Hubzilla</div>\n\n<ul id="nav-notifications-template" style="display:none;" rel="template">\n\t<li class="{5}"><a href="{0}" title="{2} {3}"><img data-src="{1}"><span class="contactname">{2}</span><span class="dropdown-sub-text">{3}<br>{4}</span></a></li>\n</ul>\n"
},
"poi": null,
"force_max_items": 0,
"module": "help",
"template_engines": {
"smarty3": "FriendicaSmartyEngine",
"internal": "Template"
},
"account": {
"account_flags": "0",
"account_service_class": "",
"account_id": "1",
"account_salt": "9bf8c193c35a56c4c666f47728fe20da",
"account_expires": "0000-00-00 00:00:00",
"account_lastlog": "2015-11-04 07:47:55",
"account_password_changed": "0000-00-00 00:00:00",
"account_language": "en",
"account_default_channel": "2",
"account_password": "",
"account_parent": "1",
"account_expire_notified": "0000-00-00 00:00:00",
"account_reset": "",
"account_email": "foo@bar.com",
"account_level": "0",
"account_roles": "4096",
"account_external": "",
"account_created": "2015-10-09 00:44:51"
},
"theme_info": [],
"argv": [
"help",
"develop"
],
"template_engine_instance": {
"smarty3": {}
},
"language": "en",
"pager": {
"page": 1,
"itemspage": 60,
"start": 0,
"total": 0
},
"plugins": [
"converse"
],
"error": false,
"pdl": "[region=aside]\n[widget=helpindex][/widget]\n[/region]\n",
"query_string": "help/develop",
"cmd": "help/develop",
"groups": null,
"videowidth": 425,
"css_sources": [
[
"library/font_awesome/css/font-awesome.min.css",
"screen"
],
[
"library/bootstrap/css/bootstrap.min.css",
"screen"
],
[
"library/bootstrap-tagsinput/bootstrap-tagsinput.css",
"screen"
],
[
"view/css/bootstrap-red.css",
"screen"
],
[
"library/datetimepicker/jquery.datetimepicker.css",
"screen"
],
[
"library/bootstrap-colorpicker/dist/css/bootstrap-colorpicker.min.css",
"screen"
],
[
"library/tiptip/tipTip.css",
"screen"
],
[
"library/jgrowl/jquery.jgrowl.css",
"screen"
],
[
"library/jRange/jquery.range.css",
"screen"
],
[
"view/css/conversation.css",
"screen"
],
[
"view/css/widgets.css",
"screen"
],
[
"view/css/colorbox.css",
"screen"
],
[
"library/justifiedGallery/justifiedGallery.min.css",
"screen"
],
[
"default.css",
"screen"
],
[
"mod_help.css",
"screen"
],
[
"view/theme/redbasic/php/style.pcss",
"screen"
]
],
"is_tablet": false,
"observer": {
"xchan_deleted": "0",
"xchan_connpage": "",
"xchan_pubforum": "0",
"xchan_flags": "0",
"xchan_censored": "0",
"xchan_instance_url": "",
"xchan_photo_s": "http://hubzilla/photo/profile/s/2",
"xchan_pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA7MP/xxsq/srA8I7m+WKf\nHlguwwg0b1tz+I3o+djp7b+wF8q03XPKQpYmKfXIj47vpAOu75nKA4Tn90lLymmk\nSXUHogOqOMy1CHoaVrAw2T2/tAeRoMAjAJ5IxSOAM7Xda0nVUK6FmfxPcvftKf9y\nPmvvFadXpaHT4JGPH0tszDhGXLkqlt9xSkIkpsgMA6emj/7bacc6x8eTdtvzo2e5\n/NyPXvBKH4henmYaKjq/4aIYZcBWYVGt6onxaP2j1cSNbksnOY7GbJl+hy95iFoZ\nDWGxiFwQd+CroiBbdlpVGp13cV/WKp2spZzlzkmCRGYoNbbM5RlgFLnmyTa4XMZE\nwnA3ZUB59MsrUJK+0H/utiZrpX5NQcFl33z8k5zB3pPnhc5S5/P+UJZRnqhet1wQ\n7AZVmdP30D75QD8LZ4SytZ1DHn/N76EsVhSADNMnUfEphs708V33Z0gFWultYDoK\nlvXUf4O0/V8GTufFHb6XdAiy92IUzrormXCpXoOmdOcJdaH9RnotZi/DkuQ0zP+Y\nCvxU9nrjyZvAwAdew//XFDjw4HoThVM4k4jzkIhCTlCao/yRnNM7A/i3OKcXq9wU\n7OZqcRfM9o0BFpZTIoXB7BMtpeioJcBi/7FUaV9U9uYLFuLL0qWa1YxLwfsN9rDk\n6A1gbhD60G9/dAbolp8xAHkCAwEAAQ==\n-----END PUBLIC KEY-----\n",
"xchan_connurl": "http://hubzilla/poco/testes",
"xchan_name_date": "2015-10-09 00:45:41",
"xchan_system": "0",
"xchan_photo_date": "2015-10-09 00:45:41",
"xchan_photo_m": "http://hubzilla/photo/profile/m/2",
"xchan_hidden": "0",
"xchan_selfcensored": "0",
"xchan_photo_mimetype": "image/jpeg",
"xchan_network": "zot",
"xchan_guid": "Ok-ycNKQYMzjokLnIz5OTCF8M5f4CtRT4vJCUeUivJhIOJWk3ORwIQgGx3P5g2Yz79KxQ-rs_Cn2G_jsgM6hmw",
"xchan_guid_sig": "XXX",
"xchan_hash": "uRy0nF-urp6k_bFrkdtCc2EkBynwpgCJL_FQFoTwyw2Hep7AHkrSt1MZcHWV_8DQucNlHSY1vHgUNS2Fvoirpw",
"xchan_url": "http://hubzilla/channel/testes",
"xchan_addr": "testes@hubzilla",
"xchan_orphan": "0",
"xchan_follow": "http://hubzilla/follow?f=&url=%s",
"xchan_name": "testes",
"xchan_photo_l": "http://hubzilla/photo/profile/l/2"
},
"contact": null,
"identities": null,
"user": null,
"videoheight": 350,
"profile": null,
"theme_thread_allow": true,
"data": {
"pageicon": "/images/hz-32.png"
}
}[/code]
#include doc/macros/main_footer.bb;