]> git.mxchange.org Git - friendica.git/commitdiff
parameters now are having a default value and are optional
authorMichael <heluecht@pirati.ca>
Tue, 5 Nov 2019 21:48:54 +0000 (21:48 +0000)
committerMichael <heluecht@pirati.ca>
Tue, 5 Nov 2019 21:48:54 +0000 (21:48 +0000)
110 files changed:
mod/update_contact.php
mod/update_profile.php
src/BaseModule.php
src/LegacyModule.php
src/Module/AccountManagementControlDocument.php
src/Module/Acctlink.php
src/Module/Admin/Addons/Details.php
src/Module/Admin/Addons/Index.php
src/Module/Admin/Blocklist/Contact.php
src/Module/Admin/Blocklist/Server.php
src/Module/Admin/DBSync.php
src/Module/Admin/Features.php
src/Module/Admin/Federation.php
src/Module/Admin/Item/Delete.php
src/Module/Admin/Item/Source.php
src/Module/Admin/Logs/Settings.php
src/Module/Admin/Logs/View.php
src/Module/Admin/PhpInfo.php
src/Module/Admin/Queue.php
src/Module/Admin/Site.php
src/Module/Admin/Summary.php
src/Module/Admin/Themes/Details.php
src/Module/Admin/Themes/Embed.php
src/Module/Admin/Themes/Index.php
src/Module/Admin/Tos.php
src/Module/Admin/Users.php
src/Module/AllFriends.php
src/Module/Apps.php
src/Module/Attach.php
src/Module/BaseAdminModule.php
src/Module/BaseSettingsModule.php
src/Module/Bookmarklet.php
src/Module/Contact.php
src/Module/Contact/Hovercard.php
src/Module/Credits.php
src/Module/Debug/Babel.php
src/Module/Debug/Feed.php
src/Module/Debug/ItemBody.php
src/Module/Debug/Localtime.php
src/Module/Debug/Probe.php
src/Module/Debug/WebFinger.php
src/Module/Delegation.php
src/Module/Diaspora/Fetch.php
src/Module/Diaspora/Receive.php
src/Module/Directory.php
src/Module/Feed.php
src/Module/Filer/RemoveTag.php
src/Module/Filer/SaveTag.php
src/Module/FollowConfirm.php
src/Module/Followers.php
src/Module/Following.php
src/Module/Friendica.php
src/Module/Group.php
src/Module/HTTPException/MethodNotAllowed.php
src/Module/HTTPException/PageNotFound.php
src/Module/Hashtag.php
src/Module/Help.php
src/Module/Home.php
src/Module/Inbox.php
src/Module/Install.php
src/Module/Invite.php
src/Module/Item/Compose.php
src/Module/Item/Ignore.php
src/Module/Like.php
src/Module/Login.php
src/Module/Logout.php
src/Module/Magic.php
src/Module/Maintenance.php
src/Module/Manifest.php
src/Module/NodeInfo.php
src/Module/Notifications/Notify.php
src/Module/Objects.php
src/Module/Oembed.php
src/Module/OpenSearch.php
src/Module/Outbox.php
src/Module/Owa.php
src/Module/Photo.php
src/Module/Profile.php
src/Module/Profile/Contacts.php
src/Module/Proxy.php
src/Module/PublicRSAKey.php
src/Module/RandomProfile.php
src/Module/ReallySimpleDiscovery.php
src/Module/Register.php
src/Module/RobotsTxt.php
src/Module/Search/Acl.php
src/Module/Search/Directory.php
src/Module/Search/Index.php
src/Module/Search/Saved.php
src/Module/Settings/Delegation.php
src/Module/Settings/TwoFactor/AppSpecific.php
src/Module/Settings/TwoFactor/Index.php
src/Module/Settings/TwoFactor/Recovery.php
src/Module/Settings/TwoFactor/Verify.php
src/Module/Settings/UserExport.php
src/Module/Smilies.php
src/Module/Starred.php
src/Module/Statistics.php
src/Module/Theme.php
src/Module/ThemeDetails.php
src/Module/ToggleMobile.php
src/Module/Tos.php
src/Module/TwoFactor/Recovery.php
src/Module/TwoFactor/Verify.php
src/Module/Welcome.php
src/Module/WellKnown/HostMeta.php
src/Module/WellKnown/XSocialRelay.php
src/Module/Xrd.php
static/dbstructure.config.php.sic [new file with mode: 0755]
static/routes.config.php.sic [new file with mode: 0644]

index 1f96dab25b9403e56a793b2df6f2e50202fd6540..bea33b4841f96286ffd4c9ff4a86b93c5a0e23fa 100644 (file)
@@ -14,7 +14,7 @@ function update_contact_content(App $a)
        echo "<section>";
 
        if ($_GET["force"] == 1) {
-               $text = Contact::content(true);
+               $text = Contact::content([], true);
        } else {
                $text = '';
        }
index 72056703958ef0306251773c101d52c5371aea5c..85ca3d3c975def5d56395fb2dc79cf44980fc329 100644 (file)
@@ -28,7 +28,7 @@ function update_profile_content(App $a) {
         * on the client side and then swap the image back.
         */
 
-       $text = Profile::content($profile_uid);
+       $text = Profile::content([], $profile_uid);
 
        if (PConfig::get(local_user(), "system", "bandwidth_saver")) {
                $replace = "<br />".L10n::t("[Embedded content - reload page to view]")."<br />";
index 3bc2ac9ff277a324d7a6095978596285296bf1d1..2b9ebdb14e2d1e0fc78371101712c34490f554e8 100644 (file)
@@ -22,7 +22,7 @@ abstract class BaseModule extends BaseObject
         * Extend this method if you need to do any shared processing before both
         * content() or post()
         */
-       public static function init($parameters)
+       public static function init(array $parameters = [])
        {
        }
 
@@ -32,7 +32,7 @@ abstract class BaseModule extends BaseObject
         * Extend this method if the module is supposed to return communication data,
         * e.g. from protocol implementations.
         */
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
        }
 
@@ -45,7 +45,7 @@ abstract class BaseModule extends BaseObject
         *
         * @return string
         */
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                $o = '';
 
@@ -58,7 +58,7 @@ abstract class BaseModule extends BaseObject
         * Extend this method if the module is supposed to process POST requests.
         * Doesn't display any content
         */
-       public static function post($parameters)
+       public static function post(array $parameters = [])
        {
        }
 
@@ -67,7 +67,7 @@ abstract class BaseModule extends BaseObject
         *
         * Unknown purpose
         */
-       public static function afterpost($parameters)
+       public static function afterpost(array $parameters = [])
        {
        }
 
index 7252e7bef34673bcbf6ccbfe8d899ee83c91ef49..950f8faad213868f028e59cf5802262157524b21 100644 (file)
@@ -35,22 +35,22 @@ class LegacyModule extends BaseModule
                require_once $file_path;
        }
 
-       public static function init($parameters)
+       public static function init(array $parameters = [])
        {
                self::runModuleFunction('init', $parameters);
        }
 
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                return self::runModuleFunction('content', $parameters);
        }
 
-       public static function post($parameters)
+       public static function post(array $parameters = [])
        {
                self::runModuleFunction('post', $parameters);
        }
 
-       public static function afterpost($parameters)
+       public static function afterpost(array $parameters = [])
        {
                self::runModuleFunction('afterpost', $parameters);
        }
@@ -62,7 +62,7 @@ class LegacyModule extends BaseModule
         * @return string
         * @throws \Exception
         */
-       private static function runModuleFunction($function_suffix, $parameters)
+       private static function runModuleFunction($function_suffix, array $parameters = [])
        {
                $function_name = static::$moduleName . '_' . $function_suffix;
 
index 0cf1de6f15c5d43093f9ac85ea48d87fe6079f24..8e7ee0243a7e1b4faab42b39c42830b423704acc 100644 (file)
@@ -11,7 +11,7 @@ use Friendica\BaseModule;
  */
 class AccountManagementControlDocument extends BaseModule
 {
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
                $output = [
                        'version' => 1,
index bef407eb1c87eaa67f281905e61d3bb0b278e998..a3577da320b541952438d2ec4c152b18df019f3b 100644 (file)
@@ -11,7 +11,7 @@ use Friendica\Core\System;
  */
 class Acctlink extends BaseModule
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                $addr = trim($_GET['addr'] ?? '');
 
index 7508cdbf69c6c517341331ad9b7f737c9cc6875a..a196e7834f2ec49373b14e04a6305f445e821842 100644 (file)
@@ -11,7 +11,7 @@ use Friendica\Util\Strings;
 
 class Details extends BaseAdminModule
 {
-       public static function post($parameters)
+       public static function post(array $parameters = [])
        {
                parent::post($parameters);
 
@@ -35,7 +35,7 @@ class Details extends BaseAdminModule
                $a->internalRedirect('admin/addons');
        }
 
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                parent::content($parameters);
 
index 645bd431e3f76cfdb7f8b3b197d3883e0b5e2e40..f327f0dc92ef906fee8e64cab5b2faa82f28e549 100644 (file)
@@ -9,7 +9,7 @@ use Friendica\Module\BaseAdminModule;
 
 class Index extends BaseAdminModule
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                parent::content($parameters);
 
index b0707fc70c572940ea4bce11cd88f251365b6a33..38ae233715b95b2afc062f59c7a5315e2d7cb87a 100644 (file)
@@ -11,7 +11,7 @@ use Friendica\Model;
 
 class Contact extends BaseAdminModule
 {
-       public static function post($parameters)
+       public static function post(array $parameters = [])
        {
                parent::post($parameters);
 
@@ -41,7 +41,7 @@ class Contact extends BaseAdminModule
                self::getApp()->internalRedirect('admin/blocklist/contact');
        }
 
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                parent::content($parameters);
 
index a8c2fd812d8c4fd5727300b45d971db047352217..53647e64efdc0a3bc595c167db4bca11a7905931 100644 (file)
@@ -10,7 +10,7 @@ use Friendica\Util\Strings;
 
 class Server extends BaseAdminModule
 {
-       public static function post($parameters)
+       public static function post(array $parameters = [])
        {
                parent::post($parameters);
 
@@ -50,7 +50,7 @@ class Server extends BaseAdminModule
                self::getApp()->internalRedirect('admin/blocklist/server');
        }
 
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                parent::content($parameters);
 
index 38c3970580d699d60bee84cc693286d7d5032fcf..0d68a564813019c4b92078e88d8d0c8853fd06db 100644 (file)
@@ -12,7 +12,7 @@ use Friendica\Module\BaseAdminModule;
 
 class DBSync extends BaseAdminModule
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                parent::content($parameters);
 
index 2523c4af1344565a2a9a69a0e2d1d8ee98cf27c6..85683d238f3bab32c5d14022bf35943ebd356cd9 100644 (file)
@@ -10,7 +10,7 @@ use Friendica\Module\BaseAdminModule;
 
 class Features extends BaseAdminModule
 {
-       public static function post($parameters)
+       public static function post(array $parameters = [])
        {
                parent::post($parameters);
 
@@ -42,7 +42,7 @@ class Features extends BaseAdminModule
                self::getApp()->internalRedirect('admin/features');
        }
 
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                parent::content($parameters);
 
index 2bc15d8ae6d1f75085fbeb8ba3a09764a4dd4a08..35afb214485f7a05d41040aa6ff763c99f2a615b 100644 (file)
@@ -10,7 +10,7 @@ use Friendica\Module\BaseAdminModule;
 
 class Federation extends BaseAdminModule
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                parent::content($parameters);
 
index 3616b3d2f613e21dba8bdbcd9fe97c7a7190e425..f5f4687cec51a33cf79d2a06585f0c6538ca7adc 100644 (file)
@@ -10,7 +10,7 @@ use Friendica\Util\Strings;
 
 class Delete extends BaseAdminModule
 {
-       public static function post($parameters)
+       public static function post(array $parameters = [])
        {
                parent::post($parameters);
 
@@ -36,7 +36,7 @@ class Delete extends BaseAdminModule
                self::getApp()->internalRedirect('admin/item/delete');
        }
 
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                parent::content($parameters);
 
index 78953fd07087bff272b2fae49a3bd95903b9225a..9c41e60f4784aafc97ea6ec271e707440aaec254 100644 (file)
@@ -13,7 +13,7 @@ use Friendica\Module\BaseAdminModule;
 class Source extends BaseAdminModule
 
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                parent::content($parameters);
 
index b731dd0d6e84e21c148b7e137e82e45e7c1d1d0b..42f3435f6506724453925c9adab32df3f76d783a 100644 (file)
@@ -11,7 +11,7 @@ use Psr\Log\LogLevel;
 
 class Settings extends BaseAdminModule
 {
-       public static function post($parameters)
+       public static function post(array $parameters = [])
        {
                parent::post($parameters);
 
@@ -37,7 +37,7 @@ class Settings extends BaseAdminModule
                self::getApp()->internalRedirect('admin/logs');
        }
 
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                parent::content($parameters);
 
index 7feee32bef574e8df843f6c2b13cf6c529dcb97f..51e083473498cf5015c879372e3b21eeadbe209c 100644 (file)
@@ -10,7 +10,7 @@ use Friendica\Util\Strings;
 
 class View extends BaseAdminModule
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                parent::content($parameters);
 
index 9c7b597514fcec4bc3ccdc60a33db5103245769e..3ac7421816bdbd59f4a70bd758dda5d0c9d65092 100644 (file)
@@ -6,7 +6,7 @@ use Friendica\Module\BaseAdminModule;
 
 class PhpInfo extends BaseAdminModule
 {
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
                parent::rawContent($parameters);
 
index 9b4241a8a82a8d03d4dad0546abb58e2530c481b..9ce44ff15a37345c922655b179159d14cff7033a 100644 (file)
@@ -19,7 +19,7 @@ use Friendica\Util\DateTimeFormat;
  */
 class Queue extends BaseAdminModule
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                parent::content($parameters);
 
index bfb4659aa8cf9389391921b0ed7d9a59460123c4..4a02e98b82c34c0835428b69dcf7bd49278544bd 100644 (file)
@@ -21,7 +21,7 @@ require_once __DIR__ . '/../../../boot.php';
 
 class Site extends BaseAdminModule
 {
-       public static function post($parameters)
+       public static function post(array $parameters = [])
        {
                parent::post($parameters);
 
@@ -412,7 +412,7 @@ class Site extends BaseAdminModule
                $a->internalRedirect('admin/site' . $active_panel);
        }
 
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                parent::content($parameters);
 
index 24e1cc58458c0b64b5fc96b01ec46051a9cedc58..e10533ee9496530895a6cb373953262fd29afad2 100644 (file)
@@ -20,7 +20,7 @@ use Friendica\Util\Network;
 
 class Summary extends BaseAdminModule
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                parent::content($parameters);
 
index 45f9239aa19fb2e66e54165cf224971888a434de..912adc4297383bf26e54726acfe50e3845ef6a32 100644 (file)
@@ -11,7 +11,7 @@ use Friendica\Util\Strings;
 
 class Details extends BaseAdminModule
 {
-       public static function post($parameters)
+       public static function post(array $parameters = [])
        {
                parent::post($parameters);
 
@@ -39,7 +39,7 @@ class Details extends BaseAdminModule
                }
        }
 
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                parent::content($parameters);
 
index dc4b6f136e6ee69d4f0858d5361c2cfb7041ff1e..70a12dadd26edf45ade0f99604a774d145c80816 100644 (file)
@@ -9,7 +9,7 @@ use Friendica\Util\Strings;
 
 class Embed extends BaseAdminModule
 {
-       public static function init($parameters)
+       public static function init(array $parameters = [])
        {
                $a = self::getApp();
 
@@ -23,7 +23,7 @@ class Embed extends BaseAdminModule
                }
        }
 
-       public static function post($parameters)
+       public static function post(array $parameters = [])
        {
                parent::post($parameters);
 
@@ -53,7 +53,7 @@ class Embed extends BaseAdminModule
                }
        }
 
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                parent::content($parameters);
 
index 331f4c477deb0e37f59a5f1f39f296ac8fa8032f..8f7843e293eb2b7ed20851f2269b2b3a472d6336 100644 (file)
@@ -11,7 +11,7 @@ use Friendica\Util\Strings;
 
 class Index extends BaseAdminModule
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                parent::content($parameters);
 
index 3e6a25f4651e505f78fd1747192a7c7510563c60..6fbdc21e8f4b3fdbcaef42cbee9d0f9e8b7c3b43 100644 (file)
@@ -9,7 +9,7 @@ use Friendica\Module\BaseAdminModule;
 
 class Tos extends BaseAdminModule
 {
-       public static function post($parameters)
+       public static function post(array $parameters = [])
        {
                parent::post($parameters);
 
@@ -32,7 +32,7 @@ class Tos extends BaseAdminModule
                self::getApp()->internalRedirect('admin/tos');
        }
 
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                parent::content($parameters);
 
index 592b49495af4ae05a3e7e2a696655a35038da53b..84332c979f79462414e8dde7bb4836e1bf150e45 100644 (file)
@@ -15,7 +15,7 @@ use Friendica\Util\Temporal;
 
 class Users extends BaseAdminModule
 {
-       public static function post($parameters)
+       public static function post(array $parameters = [])
        {
                parent::post($parameters);
 
@@ -131,7 +131,7 @@ class Users extends BaseAdminModule
                $a->internalRedirect('admin/users');
        }
 
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                parent::content($parameters);
 
index 76453a02c3574d543b94e798feea7f02df950ed6..0d9bf598580dee6ffe4f4851bb76ae15fa1a1a9b 100644 (file)
@@ -16,7 +16,7 @@ use Friendica\Util\Proxy as ProxyUtils;
  */
 class AllFriends extends BaseModule
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                $app = self::getApp();
 
index 940bf6b641b2805baa936096b8c79975215b29cc..bc099ce8bbb8a5b6fd854f506ee131b6e2228113 100644 (file)
@@ -13,7 +13,7 @@ use Friendica\Core\Renderer;
  */
 class Apps extends BaseModule
 {
-       public static function init($parameters)
+       public static function init(array $parameters = [])
        {
                $privateaddons = Config::get('config', 'private_addons');
                if ($privateaddons === "1" && !local_user()) {
@@ -21,7 +21,7 @@ class Apps extends BaseModule
                }
        }
 
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                $apps = Nav::getAppMenu();
 
index fe0e063b023b093867496f91b5aa68fb53ae7046..f67104015d768622e2740b56517443b71915ca55 100644 (file)
@@ -20,7 +20,7 @@ class Attach extends BaseModule
        /**
         * @brief Return to user an attached file given the id
         */
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
                $a = self::getApp();
                if ($a->argc != 2) {
index 30c3766640e9fcd8fd98ac3032e55176bb6c6651..01aa00d42392cee738a954649054d51ff8acca8a 100644 (file)
@@ -23,7 +23,7 @@ require_once 'boot.php';
  */
 abstract class BaseAdminModule extends BaseModule
 {
-       public static function post($parameters)
+       public static function post(array $parameters = [])
        {
                if (!is_site_admin()) {
                        return;
@@ -35,7 +35,7 @@ abstract class BaseAdminModule extends BaseModule
                }
        }
 
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
                if (!is_site_admin()) {
                        return '';
@@ -48,7 +48,7 @@ abstract class BaseAdminModule extends BaseModule
                return '';
        }
 
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                $a = self::getApp();
 
index 6a58ecfe40a46647b3437143d63c46c33b912236..4900de42e6d9a1b2e668ac9c96e81f249191a68b 100644 (file)
@@ -9,7 +9,7 @@ use Friendica\Core\Renderer;
 
 class BaseSettingsModule extends BaseModule
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                $a = self::getApp();
 
index 2b0b198814a7dd059bbaf98aa7bd81945241585a..a50f23c256963e160fb4d501b778cad28fee3e47 100644 (file)
@@ -14,7 +14,7 @@ use Friendica\Util\Strings;
  */
 class Bookmarklet extends BaseModule
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                $_GET['mode'] = 'minimal';
 
index 2c5428e0b5c90fc9be2f1c2a6b2347190d3f49c3..ded5ffbe2343ec2e15161e1425b9263aca27241a 100644 (file)
@@ -75,7 +75,7 @@ class Contact extends BaseModule
                $a->internalRedirect('contact');
        }
 
-       public static function post($parameters)
+       public static function post(array $parameters = [])
        {
                $a = self::getApp();
 
@@ -240,7 +240,7 @@ class Contact extends BaseModule
                Model\Contact::remove($orig_record['id']);
        }
 
-       public static function content($update = 0)
+       public static function content(array $parameters = [], $update = 0)
        {
                if (!local_user()) {
                        return Login::form($_SERVER['REQUEST_URI']);
index 7f314d361a0c3fbf9ac3e24343e84e66a3011059..a72a7f0a22a02fb2a106328d1a7bf9e797b90eed 100644 (file)
@@ -18,7 +18,7 @@ use Friendica\Util\Proxy;
  */
 class Hovercard extends BaseModule
 {
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
                $contact_url = $_REQUEST['url'] ?? '';
 
index 5abe1601ea89498ab977439967bf214c93a55462..c536dcaa5e8fae16f5d77215a91d2853bc08b2c4 100644 (file)
@@ -13,7 +13,7 @@ use Friendica\Core\Renderer;
  */
 class Credits extends BaseModule
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                /* fill the page with credits */
                $credits_string = file_get_contents('CREDITS.txt');
index e1a8b694bd6ec6932231bfcff422a16dca60494f..17187a37c7b0d4af9bb56f4e577d3a71cea65d07 100644 (file)
@@ -14,7 +14,7 @@ use Friendica\Util\XML;
  */
 class Babel extends BaseModule
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                function visible_whitespace($s)
                {
index 1583b3c88279b625cc7de8d018370d917bff1341..c764c900032d514818488cec05c82bae3f66137a 100644 (file)
@@ -14,7 +14,7 @@ use Friendica\Util\Network;
  */
 class Feed extends BaseModule
 {
-       public static function init($parameters)
+       public static function init(array $parameters = [])
        {
                if (!local_user()) {
                        info(L10n::t('You must be logged in to use this module'));
@@ -22,7 +22,7 @@ class Feed extends BaseModule
                }
        }
 
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                $result = [];
                if (!empty($_REQUEST['url'])) {
index a2cf8df6bff685c540f312dae9cf6a83b4fa48e2..f166fb0a2782a9f62b51a9e6ad15a33313f12452 100644 (file)
@@ -12,7 +12,7 @@ use Friendica\Network\HTTPException;
  */
 class ItemBody extends BaseModule
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                if (!local_user()) {
                        throw new HTTPException\UnauthorizedException(L10n::t('Access denied.'));
index 8c3eac8b6159578061ea0820bbf3fe46f6a28aa1..0d78f08d796a990ac0c5099983421f3c44bb807a 100644 (file)
@@ -10,7 +10,7 @@ use Friendica\Util\Temporal;
 
 class Localtime extends BaseModule
 {
-       public static function post($parameters)
+       public static function post(array $parameters = [])
        {
                $time = ($_REQUEST['time'] ?? '') ?: 'now';
 
@@ -21,7 +21,7 @@ class Localtime extends BaseModule
                }
        }
 
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                $app = self::getApp();
 
index a5785e1aa749f4a3de06d01b5e5a21e0385014e0..85c5f900fad4fc2d3c927665eb61b8d435c8e3fb 100644 (file)
@@ -13,7 +13,7 @@ use Friendica\Network\Probe as NetworkProbe;
  */
 class Probe extends BaseModule
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                if (!local_user()) {
                        $e           = new HTTPException\ForbiddenException(L10n::t('Only logged in users are permitted to perform a probing.'));
index 2b2ebacbf59d870752465d95a95ef96bc9c30f6a..90da40bf09d12d5e15a289b5eea203965e570b3b 100644 (file)
@@ -12,7 +12,7 @@ use Friendica\Network\Probe;
  */
 class WebFinger extends BaseModule
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                if (!local_user()) {
                        $e           = new \Friendica\Network\HTTPException\ForbiddenException(L10n::t('Only logged in users are permitted to perform a probing.'));
index 46dc7025ee9fd8600cdc0b033dcf0a6774c50ac0..d2930317c08ce638aa22b54e10dec3485a33265d 100644 (file)
@@ -17,7 +17,7 @@ use Friendica\Network\HTTPException\ForbiddenException;
  */
 class Delegation extends BaseModule
 {
-       public static function post($parameters)
+       public static function post(array $parameters = [])
        {
                if (!local_user()) {
                        return;
@@ -92,7 +92,7 @@ class Delegation extends BaseModule
                // NOTREACHED
        }
 
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                if (!local_user()) {
                        throw new ForbiddenException(L10n::t('Permission denied.'));
index b69cd1f12b21536cce97f5f28116d67f6cfdaaf8..6e3469c292c279366b973923d8c3259be9926a20 100644 (file)
@@ -17,7 +17,7 @@ use Friendica\Util\Strings;
  */
 class Fetch extends BaseModule
 {
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
                $app = self::getApp();
 
index d487ab63e5e83782c3c015412270f13709a2062d..72b060a8489b0580779c1d69c899e8529e091673 100644 (file)
@@ -21,13 +21,13 @@ class Receive extends BaseModule
        /** @var LoggerInterface */
        private static $logger;
 
-       public static function init($parameters)
+       public static function init(array $parameters = [])
        {
                /** @var LoggerInterface $logger */
                self::$logger = self::getClass(LoggerInterface::class);
        }
 
-       public static function post($parameters)
+       public static function post(array $parameters = [])
        {
                /** @var Configuration $config */
                $config = self::getClass(Configuration::class);
index c8523148ff1cb7a94669583ff8ef421313a1354e..f24c0665074d4f4f942c9aad427edd76e0ad45a9 100644 (file)
@@ -21,7 +21,7 @@ use Friendica\Util\Strings;
  */
 class Directory extends BaseModule
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                $app = self::getApp();
                $config = $app->getConfig();
index 70974e61f1c2b40f510bab6ef13a4a11a57b4fe9..ba2153762754c24d9f3e59a8437d87d8c7156c4c 100644 (file)
@@ -23,7 +23,7 @@ use Friendica\Protocol\OStatus;
  */
 class Feed extends BaseModule
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                $a = self::getApp();
 
index 09284bec2eaca8a426490e19cb00f22579b29b95..0246f1db36db4c274b7dd0dd34e3bb997cea1ec0 100644 (file)
@@ -12,7 +12,7 @@ use Friendica\Util\XML;
  */
 class RemoveTag extends BaseModule
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                if (!local_user()) {
                        throw new HTTPException\ForbiddenException();
index 1db3384ca5eed51977465a0f3c0a55b12ebe1916..7f0da83bceaf12f017465199cbf116be4d50fd1d 100644 (file)
@@ -14,7 +14,7 @@ use Friendica\Util\XML;
  */
 class SaveTag extends BaseModule
 {
-       public static function init($parameters)
+       public static function init(array $parameters = [])
        {
                if (!local_user()) {
                        info(L10n::t('You must be logged in to use this module'));
@@ -22,7 +22,7 @@ class SaveTag extends BaseModule
                }
        }
 
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
                $a = self::getApp();
                $logger = $a->getLogger();
index 66ca661856ba65234153ebb9c4258eb0a223c847..d1a0a5dda573183aba2f5f944fe370f5d3140b79 100644 (file)
@@ -18,7 +18,7 @@ use Friendica\Util\DateTimeFormat;
  */
 class FollowConfirm extends BaseModule
 {
-       public static function post($parameters)
+       public static function post(array $parameters = [])
        {
                $a = self::getApp();
 
index 34cb0cdbf9e405c214ea170663e7b9a5ab2e2d8c..c2096cd052b28b6d99dd88e83860ce58bce57bbc 100644 (file)
@@ -14,7 +14,7 @@ use Friendica\Protocol\ActivityPub;
  */
 class Followers extends BaseModule
 {
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
                $a = self::getApp();
 
index cbf33d50f0d8df284ea3e74d0070d594361b6b79..8eaa1835c2eb3eebb8c0080d70a40cce16ba5681 100644 (file)
@@ -14,7 +14,7 @@ use Friendica\Protocol\ActivityPub;
  */
 class Following extends BaseModule
 {
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
                $a = self::getApp();
 
index deb17b3859f678a1f939bc8f70353527f6747d6f..ee8b2206119d53262c354de26721d1addbf3df6a 100644 (file)
@@ -15,7 +15,7 @@ use Friendica\Model\User;
  */
 class Friendica extends BaseModule
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                $app = self::getApp();
                $config = $app->getConfig();
@@ -88,7 +88,7 @@ class Friendica extends BaseModule
                ]);
        }
 
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
                $app = self::getApp();
 
index 6368690efd85c460a37f16e6f8796338a12ea737..4c7672c01a7285d855547028cfb8072f7fd9c0be 100644 (file)
@@ -19,7 +19,7 @@ require_once 'boot.php';
 
 class Group extends BaseModule
 {
-       public static function post($parameters)
+       public static function post(array $parameters = [])
        {
                $a = self::getApp();
 
@@ -132,7 +132,7 @@ class Group extends BaseModule
                }
        }
 
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                $change = false;
 
index 3e5d159e702923738982d1dc3ba581d05131ddda..b4f9e9766165eb0d400bf71cc88ef3d5d7794306 100644 (file)
@@ -8,7 +8,7 @@ use Friendica\Network\HTTPException;
 
 class MethodNotAllowed extends BaseModule
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                throw new HTTPException\MethodNotAllowedException(L10n::t('Method Not Allowed.'));
        }
index 90192efca16dc4fa6520fc9f55b1493cfd3e1786..c79d9c2778521d0e24c1b21fea021ca30a091e3e 100644 (file)
@@ -8,7 +8,7 @@ use Friendica\Network\HTTPException;
 
 class PageNotFound extends BaseModule
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                throw new HTTPException\NotFoundException(L10n::t('Page not found.'));
        }
index 8708a464a9e3d09069f174e8986ba031b373117f..a460ae1d98887a25562e6299d2f91e9b5347177b 100644 (file)
@@ -15,7 +15,7 @@ use Friendica\Util\Strings;
 class Hashtag extends BaseModule
 {
 
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                $result = [];
 
index ae5100d63345d8dc078f1a2e070be35506d455ee..3b3ce58704663cc6422e5da1284fafe04d5e0224 100644 (file)
@@ -14,7 +14,7 @@ use Friendica\Util\Strings;
  */
 class Help extends BaseModule
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                Nav::setSelected('help');
 
index 5e9c28af1dffba9da5cd46fb65602024289c6970..e6fb8c349669b241f53b702300c65a22da60f4d1 100644 (file)
@@ -12,7 +12,7 @@ use Friendica\Core\Renderer;
  */
 class Home extends BaseModule
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                $app = self::getApp();
                $config = $app->getConfig();
index ac993277351d847fc2f2e1694e398d7911f01909..8ab169567e021087782b2655935b53f9f0f2de42 100644 (file)
@@ -19,7 +19,7 @@ use Friendica\Util\Network;
  */
 class Inbox extends BaseModule
 {
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
                $a = self::getApp();
 
index f4e2c4c76fcc3e35421dcd4ae768ce0387d34710..71547ad51e4778250fcf84ad2fbc43224fd31cf5 100644 (file)
@@ -46,7 +46,7 @@ class Install extends BaseModule
         */
        private static $installer;
 
-       public static function init($parameters)
+       public static function init(array $parameters = [])
        {
                $a = self::getApp();
 
@@ -76,7 +76,7 @@ class Install extends BaseModule
                self::$currentWizardStep = ($_POST['pass'] ?? '') ?: self::SYSTEM_CHECK;
        }
 
-       public static function post($parameters)
+       public static function post(array $parameters = [])
        {
                $a           = self::getApp();
                $configCache = $a->getConfigCache();
@@ -149,7 +149,7 @@ class Install extends BaseModule
                }
        }
 
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                $a           = self::getApp();
                $configCache = $a->getConfigCache();
index 162d4489d7ed9daaa7780c45418a3983730d86da..cd616001bef04ddfe7f24fb77c7686db7bc0d3e2 100644 (file)
@@ -16,7 +16,7 @@ use Friendica\Util\Strings;
  */
 class Invite extends BaseModule
 {
-       public static function post($parameters)
+       public static function post(array $parameters = [])
        {
                if (!local_user()) {
                        throw new HTTPException\ForbiddenException(L10n::t('Permission denied.'));
@@ -104,7 +104,7 @@ class Invite extends BaseModule
                notice(L10n::tt('%d message sent.', '%d messages sent.', $total) . EOL);
        }
 
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                if (!local_user()) {
                        throw new HTTPException\ForbiddenException(L10n::t('Permission denied.'));
index 1a88ebbc58accb8cf95a2b87069573ac633d2e4d..ad0a2d805cc6fd70199b949f87f575cd9edb8be2 100644 (file)
@@ -21,7 +21,7 @@ use Friendica\Util\Crypto;
 
 class Compose extends BaseModule
 {
-       public static function post($parameters)
+       public static function post(array $parameters = [])
        {
                if (!empty($_REQUEST['body'])) {
                        $_REQUEST['return'] = 'network';
@@ -32,7 +32,7 @@ class Compose extends BaseModule
                }
        }
 
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                if (!local_user()) {
                        return Login::form('compose', false);
index 662148076ca6d32eefdde1f82607cd2c9902e754..4590bc8c84c80e3cadc8e2a2962fe7462ce7837f 100644 (file)
@@ -16,7 +16,7 @@ use Friendica\Network\HTTPException;
  */
 class Ignore extends BaseModule
 {
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
                /** @var L10n $l10n */
                $l10n = self::getClass(L10n::class);
index 3243a12cb9682b248092adec5050d83a089737df..1c98cbc38c6ba6ef0a4c8c0c2df043694f7d3a14 100644 (file)
@@ -13,7 +13,7 @@ use Friendica\Util\Strings;
  */
 class Like extends BaseModule
 {
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
                if (!Session::isAuthenticated()) {
                        throw new HTTPException\ForbiddenException();
index 4cdac27aeabf1aaece18ed58307bb2a3aadf4a10..c84af17ccb99483ce42b2347f6215df2e0cb046c 100644 (file)
@@ -30,7 +30,7 @@ use LightOpenID;
  */
 class Login extends BaseModule
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                $a = self::getApp();
 
@@ -41,7 +41,7 @@ class Login extends BaseModule
                return self::form(Session::get('return_path'), intval(Config::get('config', 'register_policy')) !== \Friendica\Module\Register::CLOSED);
        }
 
-       public static function post($parameters)
+       public static function post(array $parameters = [])
        {
                $openid_identity = Session::get('openid_identity');
                $openid_server = Session::get('openid_server');
index ad7eac6b51ff9efff75cd42aae7eb2a8aa002b40..49ede01a3d7a1544c32417ff1606ec36a6ff0cdd 100644 (file)
@@ -23,7 +23,7 @@ class Logout extends BaseModule
        /**
         * @brief Process logout requests
         */
-       public static function init($parameters)
+       public static function init(array $parameters = [])
        {
                $visitor_home = null;
                if (remote_user()) {
index 43c17d72594b81229721146288d2af30fddc21b5..0f610d123c3c0b7a1a2dc9795f9f2c96ddc3b2f4 100644 (file)
@@ -20,7 +20,7 @@ use Friendica\Util\Strings;
  */
 class Magic extends BaseModule
 {
-       public static function init($parameters)
+       public static function init(array $parameters = [])
        {
                $a = self::getApp();
                $ret = ['success' => false, 'url' => '', 'message' => ''];
index 0a7b67cf80c7c18e8e6e4c61f2b9b5577c2691ef..056bde7325db78718ae8ca780d38f97d9b30feec 100644 (file)
@@ -14,7 +14,7 @@ use Friendica\Util\Strings;
  */
 class Maintenance extends BaseModule
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                $config = self::getApp()->getConfig();
 
index 2fe432a5f4f4ab58f3f788c7c1bf0f53b75d14a5..9e09740594c9a73156d9bc801c34a8d68d29a519 100644 (file)
@@ -7,7 +7,7 @@ use Friendica\Core\Renderer;
 
 class Manifest extends BaseModule
 {
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
                $app = self::getApp();
                $config = $app->getConfig();
index 22e26e97a48bd16e3a5ffead32980c86f9a0cef6..28f23196f9a44417f5aed95b5f51d66d0ec5b169 100644 (file)
@@ -13,7 +13,7 @@ use Friendica\Core\System;
  */
 class NodeInfo extends BaseModule
 {
-       public static function init($parameters)
+       public static function init(array $parameters = [])
        {
                $config = self::getApp()->getConfig();
 
@@ -22,7 +22,7 @@ class NodeInfo extends BaseModule
                }
        }
 
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
                $app = self::getApp();
 
index 28047c698932c41563b549dad8ac88e76f407fe3..721a89a6942a3206aa85ade4354b695c6c02babb 100644 (file)
@@ -14,14 +14,14 @@ use Friendica\Network\HTTPException;
  */
 class Notify extends BaseModule
 {
-       public static function init($parameters)
+       public static function init(array $parameters = [])
        {
                if (!local_user()) {
                        throw new HTTPException\UnauthorizedException(L10n::t('Permission denied.'));
                }
        }
 
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
                $a = self::getApp();
 
@@ -45,7 +45,7 @@ class Notify extends BaseModule
         * @return string|void
         * @throws HTTPException\InternalServerErrorException
         */
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                $a = self::getApp();
 
index 528b20a86cc3ed7e123ac741e6f30e3acf556e02..5538be18889910c035ec0c83275ef69d6e3b7035 100644 (file)
@@ -15,7 +15,7 @@ use Friendica\Protocol\ActivityPub;
  */
 class Objects extends BaseModule
 {
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
                $a = self::getApp();
 
index e31fde6313ccf6cb07377d774532c641e9b2e582..f9d928428169d4def9383fb56c08272af40e2d1b 100644 (file)
@@ -17,7 +17,7 @@ use Friendica\Util\Strings;
  */
 class Oembed extends BaseModule
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                $a = self::getApp();
 
index 89cf53055d1d2f6b90efb99ec22d88950e2c48b5..309db6af950c5b2ae5f64313e5627377a21bd659 100644 (file)
@@ -16,7 +16,7 @@ class OpenSearch extends BaseModule
        /**
         * @throws \Exception
         */
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
                header('Content-type: application/opensearchdescription+xml');
 
index 334e7af7181e9b441cb3e558a64e1341c4412d65..c2024151e5b0fe7059a51d3077aaa43f944c5204 100644 (file)
@@ -14,7 +14,7 @@ use Friendica\Protocol\ActivityPub;
  */
 class Outbox extends BaseModule
 {
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
                $a = self::getApp();
 
index a8c980373d0998175a81ceed510e539b224e7faf..ca4eec47ffad0f2cfd94624b15cd9d638ef47ac7 100644 (file)
@@ -27,7 +27,7 @@ use Friendica\Util\Strings;
  */
 class Owa extends BaseModule
 {
-       public static function init($parameters)
+       public static function init(array $parameters = [])
        {
 
                $ret = [ 'success' => false ];
index 58199a08da763aeb2794648cce5f9dd8b46e8398..9987c38f517041224be88a2895ed961e0b83dbb9 100644 (file)
@@ -23,7 +23,7 @@ class Photo extends BaseModule
         * Fetch a photo or an avatar, in optional size, check for permissions and
         * return the image
         */
-       public static function init($parameters)
+       public static function init(array $parameters = [])
        {
                $a = self::getApp();
                // @TODO: Replace with parameter from router
index 527c7118e9de445a018d2dd35df66c0405d438ab..69db45acf1fe0bf0107fbc9222c86442fa386516 100644 (file)
@@ -33,7 +33,7 @@ class Profile extends BaseModule
        public static $which = '';
        public static $profile = 0;
 
-       public static function init($parameters)
+       public static function init(array $parameters = [])
        {
                $a = self::getApp();
 
@@ -51,7 +51,7 @@ class Profile extends BaseModule
                }
        }
 
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
                if (ActivityPub::isRequest()) {
                        $user = DBA::selectFirst('user', ['uid'], ['nickname' => self::$which]);
@@ -75,7 +75,7 @@ class Profile extends BaseModule
                }
        }
 
-       public static function content($update = 0)
+       public static function content(array $parameters = [], $update = 0)
        {
                $a = self::getApp();
 
index 3df256b9d5f9c28d3d304ba6a69cc8870326bb26..8069248f82f632974cc4b839d210d8399925dcec 100644 (file)
@@ -18,7 +18,7 @@ use Friendica\Util\Proxy as ProxyUtils;
 
 class Contacts extends BaseModule
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                if (Config::get('system', 'block_public') && !Session::isAuthenticated()) {
                        throw new \Friendica\Network\HTTPException\NotFoundException(L10n::t('User not found.'));
index 17509f662d6d6e70cbe20546dbcd320e8efd34ef..fbf4b8bd5cbfea81a6e216e583e016f160571820 100644 (file)
@@ -30,7 +30,7 @@ class Proxy extends BaseModule
         * Sets application instance and checks if /proxy/ path is writable.
         *
         */
-       public static function init($parameters)
+       public static function init(array $parameters = [])
        {
                // Set application instance here
                $a = self::getApp();
index 36502cc86bf442dfe730b5cac8034303a810cfd5..f652811b54bd5a7b1d417d6359e4ff1eabf1848c 100644 (file)
@@ -12,7 +12,7 @@ use Friendica\Network\HTTPException\BadRequestException;
  */
 class PublicRSAKey extends BaseModule
 {
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
                $app = self::getApp();
 
index 8edc43bf0cf7e07d30d136d2a0c9b99993850309..c5b31afeef2e176d7e264171a3f3cf1844e868ba 100644 (file)
@@ -11,7 +11,7 @@ use Friendica\Model\GContact;
  */
 class RandomProfile extends BaseModule
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                $a = self::getApp();
 
index 838843fbf0f2374dedf8ebdb52153f59ab73762b..7cf0db6c7b965d6ac4b4507d628ee74468b1e912 100644 (file)
@@ -11,7 +11,7 @@ use Friendica\Util\XML;
  */
 class ReallySimpleDiscovery extends BaseModule
 {
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
                header('Content-Type: text/xml');
 
index 6993415e66d493c932070582b03928df8c181cd7..aaca8c02e2c3d275681631d96afab2ca9aa8903d 100644 (file)
@@ -35,7 +35,7 @@ class Register extends BaseModule
         *
         * @return string
         */
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                // logged in users can register others (people/pages/groups)
                // even with closed registrations, unless specifically prohibited by site policy.
@@ -152,7 +152,7 @@ class Register extends BaseModule
         * Extend this method if the module is supposed to process POST requests.
         * Doesn't display any content
         */
-       public static function post($parameters)
+       public static function post(array $parameters = [])
        {
                BaseModule::checkFormSecurityTokenRedirectOnError('/register', 'register');
 
index 47e11201d9575e8f58eb91d18892e880ccad5bcb..db83777e8e4ff02e3d8c597c78623eadd91580fc 100644 (file)
@@ -9,7 +9,7 @@ use Friendica\BaseModule;
  */
 class RobotsTxt extends BaseModule
 {
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
                $allDisalloweds = [
                        '/settings/',
index e886a8fdb976085b23fe54b507a4b0c5142f0b08..74ce55fb53597a66d29ba705a3ded9458d3acdd0 100644 (file)
@@ -31,7 +31,7 @@ class Acl extends BaseModule
        const TYPE_PRIVATE_MESSAGE       = 'm';
        const TYPE_ANY_CONTACT           = 'a';
 
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
                if (!local_user()) {
                        throw new HTTPException\UnauthorizedException(L10n::t('You must be logged in to use this module.'));
index c6734ac87c2769adcbfe7f7d0fa4c437dbf4d372..b18847afe9b41edb629a292c2a635208b582a717 100644 (file)
@@ -13,7 +13,7 @@ use Friendica\Util\Strings;
  */
 class Directory extends BaseSearchModule
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                if (!local_user()) {
                        notice(L10n::t('Permission denied.'));
index 6f0f21f62a83050b0dcd854e38abe608826356df..7c52c7e79de1d07f188dccd5531835e6ca82226f 100644 (file)
@@ -23,7 +23,7 @@ use Friendica\Util\Strings;
 
 class Index extends BaseSearchModule
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                $search = (!empty($_GET['q']) ? Strings::escapeTags(trim(rawurldecode($_GET['q']))) : '');
 
index 42429c47bd226380b59c3b31f610601199c62b83..88668272de313a56cbb939d77a2440df58f23629 100644 (file)
@@ -10,7 +10,7 @@ use Friendica\Util\Strings;
 
 class Saved extends BaseModule
 {
-       public static function init($parameters)
+       public static function init(array $parameters = [])
        {
                /** @var Arguments $args */
                $args = self::getClass(Arguments::class);
index 8048d3bf8f87369e6e731d30962b444cd43998ba..e3c2b8d34c8a70df38cc4b5649c73d00969b5d06 100644 (file)
@@ -20,7 +20,7 @@ use Friendica\Util\Strings;
  */
 class Delegation extends BaseSettingsModule
 {
-       public static function post($parameters)
+       public static function post(array $parameters = [])
        {
                if (!local_user() || !empty(self::getApp()->user['uid']) && self::getApp()->user['uid'] != local_user()) {
                        throw new HTTPException\ForbiddenException(L10n::t('Permission denied.'));
@@ -46,7 +46,7 @@ class Delegation extends BaseSettingsModule
                DBA::update('user', ['parent-uid' => $parent_uid], ['uid' => local_user()]);
        }
 
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                parent::content($parameters);
 
index 720fb9a8312353625a5462fa00fbe232bc943f2e..72b233f422f094483c9fa9ebfc93fff1dc999a72 100644 (file)
@@ -20,7 +20,7 @@ class AppSpecific extends BaseSettingsModule
 {
        private static $appSpecificPassword = null;
 
-       public static function init($parameters)
+       public static function init(array $parameters = [])
        {
                if (!local_user()) {
                        return;
@@ -38,7 +38,7 @@ class AppSpecific extends BaseSettingsModule
                }
        }
 
-       public static function post($parameters)
+       public static function post(array $parameters = [])
        {
                if (!local_user()) {
                        return;
@@ -81,7 +81,7 @@ class AppSpecific extends BaseSettingsModule
                }
        }
 
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                if (!local_user()) {
                        return Login::form('settings/2fa/app_specific');
index 9a661ef731fbd28e15355b392acbe276b0cabfe3..34d6f97b49c0092e5c0425872795e192bc3402d2 100644 (file)
@@ -17,7 +17,7 @@ use PragmaRX\Google2FA\Google2FA;
 
 class Index extends BaseSettingsModule
 {
-       public static function post($parameters)
+       public static function post(array $parameters = [])
        {
                if (!local_user()) {
                        return;
@@ -73,7 +73,7 @@ class Index extends BaseSettingsModule
                }
        }
 
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                if (!local_user()) {
                        return Login::form('settings/2fa');
index b3155f6e9e257555af3e5977ffcf49be797dabb2..0d7de7d9023a0eccdb3c60196e41e82facb54fdb 100644 (file)
@@ -18,7 +18,7 @@ use Friendica\Module\Login;
  */
 class Recovery extends BaseSettingsModule
 {
-       public static function init($parameters)
+       public static function init(array $parameters = [])
        {
                if (!local_user()) {
                        return;
@@ -36,7 +36,7 @@ class Recovery extends BaseSettingsModule
                }
        }
 
-       public static function post($parameters)
+       public static function post(array $parameters = [])
        {
                if (!local_user()) {
                        return;
@@ -53,7 +53,7 @@ class Recovery extends BaseSettingsModule
                }
        }
 
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                if (!local_user()) {
                        return Login::form('settings/2fa/recovery');
index 3957a5350a97bbafc0d4101f578e438212500831..63c186e3a8f6129a613607ac77dbcb9d65c15a44 100644 (file)
@@ -24,7 +24,7 @@ use PragmaRX\Google2FA\Google2FA;
  */
 class Verify extends BaseSettingsModule
 {
-       public static function init($parameters)
+       public static function init(array $parameters = [])
        {
                if (!local_user()) {
                        return;
@@ -43,7 +43,7 @@ class Verify extends BaseSettingsModule
                }
        }
 
-       public static function post($parameters)
+       public static function post(array $parameters = [])
        {
                if (!local_user()) {
                        return;
@@ -69,7 +69,7 @@ class Verify extends BaseSettingsModule
                }
        }
 
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                if (!local_user()) {
                        return Login::form('settings/2fa/verify');
index c571be2505c00b538bfcf9ce06f8e3ba68c95687..19722a18e245aebbbee0ec596885f721d0736af6 100644 (file)
@@ -32,7 +32,7 @@ class UserExport extends BaseSettingsModule
         * If there is an action required through the URL / path, react
         * accordingly and export the requested data.
         **/
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                parent::content($parameters);
 
@@ -59,7 +59,7 @@ class UserExport extends BaseSettingsModule
         * to the browser which then offers a save / open dialog
         * to the user.
         **/
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
                $args = self::getClass(Arguments::class);
                if ($args->getArgc() == 3) {
index a2b91f54de9d18c07d9d18365d2091a49db6c47d..a808ce820c2305a8233c3674c1f3e782acc4c08f 100644 (file)
@@ -12,7 +12,7 @@ use Friendica\Core\System;
  */
 class Smilies extends BaseModule
 {
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
                $app = self::getApp();
 
@@ -26,7 +26,7 @@ class Smilies extends BaseModule
                }
        }
 
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                $smilies = Content\Smilies::getList();
                $count = count($smilies['texts'] ?? []);
index 1aab10307ddcd0a989c3e2448c1d7152daacb940..dbda9f1076d4c4a68ba26c807d63f266bb41a3fa 100644 (file)
@@ -10,7 +10,7 @@ use Friendica\Model\Item;
  */
 class Starred extends BaseModule
 {
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
                if (!local_user()) {
                        exit();
index 53f9acf95fcddbf3f88b0c7ed722dc26cab0f776..6e599ac9b1fc3d0602f5bc43638d2ab6936e2a74 100644 (file)
@@ -8,7 +8,7 @@ use Friendica\Core\System;
 
 class Statistics extends BaseModule
 {
-       public static function init($parameters)
+       public static function init(array $parameters = [])
        {
                $config = self::getApp()->getConfig();
 
@@ -17,7 +17,7 @@ class Statistics extends BaseModule
                }
        }
 
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
                $config = self::getApp()->getConfig();
                $logger = self::getApp()->getLogger();
index 762e398556f0cc2726db227ff070b94f62f384c9..e9ce8d396f239cf63d9becfc4e91105ef39c0f4b 100644 (file)
@@ -10,7 +10,7 @@ use Friendica\Util\Strings;
  */
 class Theme extends BaseModule
 {
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
                header("Content-Type: text/css");
 
index 611134d638139ca0058f32f72ae1cdcc2ac3f799..40bfb7a87189889d1ed893cd3d114ddc637ac22b 100644 (file)
@@ -10,7 +10,7 @@ use Friendica\Core\Theme;
  */
 class ThemeDetails extends BaseModule
 {
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
                if (!empty($_REQUEST['theme'])) {
                        $theme = $_REQUEST['theme'];
index 07e6fd87d12b9a07c02c90dd6834497d584dda61..0efc2e54b5fa3d492fb2906f47c83c527dc17cf5 100644 (file)
@@ -9,7 +9,7 @@ use Friendica\BaseModule;
  */
 class ToggleMobile extends BaseModule
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                $a = self::getApp();
 
index c69557d5dcebc7a8f4c419fa48b941adb8e5fd55..ea29a5e072d3ab6b14b56bfef3a66fb8075aa040 100644 (file)
@@ -47,7 +47,7 @@ class Tos extends BaseModule
         * dealings with their own node so a TOS is not necessary.
         *
         **/
-       public static function init($parameters)
+       public static function init(array $parameters = [])
        {
                if (strlen(Config::get('system','singleuser'))) {
                        self::getApp()->internalRedirect('profile/' . Config::get('system','singleuser'));
@@ -66,7 +66,7 @@ class Tos extends BaseModule
         * @return string
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
-       public static function content($parameters) {
+       public static function content(array $parameters = []) {
                $tpl = Renderer::getMarkupTemplate('tos.tpl');
                if (Config::get('system', 'tosdisplay')) {
                        return Renderer::replaceMacros($tpl, [
index 82cfc80eaca3c63bb2bd35bddc755fd7eefef969..bd87836463c7f9df4800868861340a96a3248bc9 100644 (file)
@@ -15,14 +15,14 @@ use Friendica\Model\TwoFactor\RecoveryCode;
  */
 class Recovery extends BaseModule
 {
-       public static function init($parameters)
+       public static function init(array $parameters = [])
        {
                if (!local_user()) {
                        return;
                }
        }
 
-       public static function post($parameters)
+       public static function post(array $parameters = [])
        {
                if (!local_user()) {
                        return;
@@ -48,7 +48,7 @@ class Recovery extends BaseModule
                }
        }
 
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                if (!local_user()) {
                        self::getApp()->internalRedirect();
index daef9f60a5491c02a1671ac955f32bd9c43ed527..f6f040f5a781f1c9271bb3bf2c17674e60713568 100644 (file)
@@ -18,7 +18,7 @@ class Verify extends BaseModule
 {
        private static $errors = [];
 
-       public static function post($parameters)
+       public static function post(array $parameters = [])
        {
                if (!local_user()) {
                        return;
@@ -45,7 +45,7 @@ class Verify extends BaseModule
                }
        }
 
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                if (!local_user()) {
                        self::getApp()->internalRedirect();
index d92f4109ce35612bd89fb12a0a03ff2e9a2ff99a..f69991e4968869cc98b1e8bdd597e2e820978de9 100644 (file)
@@ -11,7 +11,7 @@ use Friendica\Core\Renderer;
  */
 class Welcome extends BaseModule
 {
-       public static function content($parameters)
+       public static function content(array $parameters = [])
        {
                $config = self::getApp()->getConfig();
 
index acf2cca8663b767854f6d3734904bc713505caff..cb344b695e35dad1c13473ac520341c11482214d 100644 (file)
@@ -13,7 +13,7 @@ use Friendica\Util\Crypto;
  */
 class HostMeta extends BaseModule
 {
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
                $app = self::getApp();
                $config = $app->getConfig();
index bbd51069d9fa67ff88b6791370be355dce138c4f..5d8f4e817c1c558378fc824f041a2143179baecc 100644 (file)
@@ -11,7 +11,7 @@ use Friendica\Model\Search;
  */
 class XSocialRelay extends BaseModule
 {
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
                $app = self::getApp();
                $config = $app->getConfig();
index 4bad558a4eba00ebcf3de5db8e1a7217fe466468..79e0883a872bf10dd026cf8c33f7f374bb8d8c29 100644 (file)
@@ -17,7 +17,7 @@ use Friendica\Util\Strings;
  */
 class Xrd extends BaseModule
 {
-       public static function rawContent($parameters)
+       public static function rawContent(array $parameters = [])
        {
                $app = self::getApp();
 
diff --git a/static/dbstructure.config.php.sic b/static/dbstructure.config.php.sic
new file mode 100755 (executable)
index 0000000..65e0b26
--- /dev/null
@@ -0,0 +1,1439 @@
+<?php
+
+/* Main database structure configuration file.
+ *
+ * Here are described all the tables, fields and indexes Friendica needs to work.
+ *
+ * Syntax (braces indicate optionale values):
+ * "<table name>" => [
+ *     "comment" => "Description of the table",
+ *     "fields" => [
+ *             "<field name>" => [
+ *                     "type" => "<field type>{(<field size>)} <unsigned>",
+ *                     "not null" => 0|1,
+ *                     {"extra" => "auto_increment",}
+ *                     {"default" => "<default value>",}
+ *                     {"default" => NULL_DATE,} (for datetime fields)
+ *                     {"primary" => "1",}
+ *                     {"relation" => ["<foreign key table name>" => "<foreign key field name>"],}
+ *                     "comment" => "Description of the fields"
+ *             ],
+ *             ...
+ *     ],
+ *     "indexes" => [
+ *             "PRIMARY" => ["<primary key field name>", ...],
+ *             "<index name>" => [{"UNIQUE",} "<field name>{(<key size>)}", ...]
+ *             ...
+ *     ],
+ * ],
+ *
+ * If you need to make any change, make sure to increment the DB_UPDATE_VERSION constant value below.
+ *
+ */
+
+use Friendica\Database\DBA;
+
+if (!defined('DB_UPDATE_VERSION')) {
+       define('DB_UPDATE_VERSION', 1324);
+}
+
+return [
+       "2fa_app_specific_password" => [
+               "comment" => "Two-factor app-specific _password",
+               "fields" => [
+                       "id" => ["type" => "mediumint unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "Password ID for revocation"],
+                       "uid" => ["type" => "mediumint unsigned", "not null" => "1", "relation" => ["user" => "uid"], "comment" => "User ID"],
+                       "description" => ["type" => "varchar(255)", "comment" => "Description of the usage of the password"],
+                       "hashed_password" => ["type" => "varchar(255)", "not null" => "1", "comment" => "Hashed password"],
+                       "generated" => ["type" => "datetime", "not null" => "1", "comment" => "Datetime the password was generated"],
+                       "last_used" => ["type" => "datetime", "comment" => "Datetime the password was last used"],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "uid_description" => ["uid", "description(190)"],
+               ]
+       ],
+       "2fa_recovery_codes" => [
+               "comment" => "Two-factor authentication recovery codes",
+               "fields" => [
+                       "uid" => ["type" => "mediumint unsigned", "not null" => "1", "primary" => "1", "relation" => ["user" => "uid"], "comment" => "User ID"],
+                       "code" => ["type" => "varchar(50)", "not null" => "1", "primary" => "1", "comment" => "Recovery code string"],
+                       "generated" => ["type" => "datetime", "not null" => "1", "comment" => "Datetime the code was generated"],
+                       "used" => ["type" => "datetime", "comment" => "Datetime the code was used"],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["uid", "code"]
+               ]
+       ],
+       "addon" => [
+               "comment" => "registered addons",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => ""],
+                       "name" => ["type" => "varchar(50)", "not null" => "1", "default" => "", "comment" => "addon base (file)name"],
+                       "version" => ["type" => "varchar(50)", "not null" => "1", "default" => "", "comment" => "currently unused"],
+                       "installed" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "currently always 1"],
+                       "hidden" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "currently unused"],
+                       "timestamp" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "comment" => "file timestamp to check for reloads"],
+                       "plugin_admin" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "1 = has admin config, 0 = has no admin config"],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "name" => ["UNIQUE", "name"],
+               ]
+       ],
+       "apcontact" => [
+               "comment" => "ActivityPub compatible contacts - used in the ActivityPub implementation",
+               "fields" => [
+                       "url" => ["type" => "varbinary(255)", "not null" => "1", "primary" => "1", "comment" => "URL of the contact"],
+                       "uuid" => ["type" => "varchar(255)", "comment" => ""],
+                       "type" => ["type" => "varchar(20)", "not null" => "1", "comment" => ""],
+                       "following" => ["type" => "varchar(255)", "comment" => ""],
+                       "followers" => ["type" => "varchar(255)", "comment" => ""],
+                       "inbox" => ["type" => "varchar(255)", "not null" => "1", "comment" => ""],
+                       "outbox" => ["type" => "varchar(255)", "comment" => ""],
+                       "sharedinbox" => ["type" => "varchar(255)", "comment" => ""],
+                       "manually-approve" => ["type" => "boolean", "comment" => ""],
+                       "nick" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "name" => ["type" => "varchar(255)", "comment" => ""],
+                       "about" => ["type" => "text", "comment" => ""],
+                       "photo" => ["type" => "varchar(255)", "comment" => ""],
+                       "addr" => ["type" => "varchar(255)", "comment" => ""],
+                       "alias" => ["type" => "varchar(255)", "comment" => ""],
+                       "pubkey" => ["type" => "text", "comment" => ""],
+                       "baseurl" => ["type" => "varchar(255)", "comment" => "baseurl of the ap contact"],
+                       "generator" => ["type" => "varchar(255)", "comment" => "Name of the contact's system"],
+                       "updated" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => ""]
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["url"],
+                       "addr" => ["addr(32)"],
+                       "alias" => ["alias(190)"],
+                       "url" => ["followers(190)"]
+               ]
+       ],
+       "attach" => [
+               "comment" => "file attachments",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "generated index"],
+                       "uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "relation" => ["user" => "uid"], "comment" => "Owner User id"],
+                       "hash" => ["type" => "varchar(64)", "not null" => "1", "default" => "", "comment" => "hash"],
+                       "filename" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "filename of original"],
+                       "filetype" => ["type" => "varchar(64)", "not null" => "1", "default" => "", "comment" => "mimetype"],
+                       "filesize" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "comment" => "size in bytes"],
+                       "data" => ["type" => "longblob", "not null" => "1", "comment" => "file data"],
+                       "created" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "creation time"],
+                       "edited" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "last edit time"],
+                       "allow_cid" => ["type" => "mediumtext", "comment" => "Access Control - list of allowed contact.id '<19><78>"],
+                       "allow_gid" => ["type" => "mediumtext", "comment" => "Access Control - list of allowed groups"],
+                       "deny_cid" => ["type" => "mediumtext", "comment" => "Access Control - list of denied contact.id"],
+                       "deny_gid" => ["type" => "mediumtext", "comment" => "Access Control - list of denied groups"],
+                       "backend-class" => ["type" => "tinytext", "comment" => "Storage backend class"],
+                       "backend-ref" => ["type" => "text", "comment" => "Storage backend data reference"],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+               ]
+       ],
+       "auth_codes" => [
+               "comment" => "OAuth usage",
+               "fields" => [
+                       "id" => ["type" => "varchar(40)", "not null" => "1", "primary" => "1", "comment" => ""],
+                       "client_id" => ["type" => "varchar(20)", "not null" => "1", "default" => "", "relation" => ["clients" => "client_id"],
+                               "comment" => ""],
+                       "redirect_uri" => ["type" => "varchar(200)", "not null" => "1", "default" => "", "comment" => ""],
+                       "expires" => ["type" => "int", "not null" => "1", "default" => "0", "comment" => ""],
+                       "scope" => ["type" => "varchar(250)", "not null" => "1", "default" => "", "comment" => ""],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+               ]
+       ],
+       "cache" => [
+               "comment" => "Stores temporary data",
+               "fields" => [
+                       "k" => ["type" => "varbinary(255)", "not null" => "1", "primary" => "1", "comment" => "cache key"],
+                       "v" => ["type" => "mediumtext", "comment" => "cached serialized value"],
+                       "expires" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "datetime of cache expiration"],
+                       "updated" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "datetime of cache insertion"],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["k"],
+                       "k_expires" => ["k", "expires"],
+               ]
+       ],
+       "challenge" => [
+               "comment" => "",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
+                       "challenge" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "dfrn-id" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "expire" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "comment" => ""],
+                       "type" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "last_update" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+               ]
+       ],
+       "clients" => [
+               "comment" => "OAuth usage",
+               "fields" => [
+                       "client_id" => ["type" => "varchar(20)", "not null" => "1", "primary" => "1", "comment" => ""],
+                       "pw" => ["type" => "varchar(20)", "not null" => "1", "default" => "", "comment" => ""],
+                       "redirect_uri" => ["type" => "varchar(200)", "not null" => "1", "default" => "", "comment" => ""],
+                       "name" => ["type" => "text", "comment" => ""],
+                       "icon" => ["type" => "text", "comment" => ""],
+                       "uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "relation" => ["user" => "uid"], "comment" => "User id"],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["client_id"],
+               ]
+       ],
+       "config" => [
+               "comment" => "main configuration storage",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => ""],
+                       "cat" => ["type" => "varbinary(50)", "not null" => "1", "default" => "", "comment" => ""],
+                       "k" => ["type" => "varbinary(50)", "not null" => "1", "default" => "", "comment" => ""],
+                       "v" => ["type" => "mediumtext", "comment" => ""],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "cat_k" => ["UNIQUE", "cat", "k"],
+               ]
+       ],
+       "contact" => [
+               "comment" => "contact table",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
+                       "uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "relation" => ["user" => "uid"], "comment" => "Owner User id"],
+                       "created" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => ""],
+                       "updated" => ["type" => "datetime", "default" => DBA::NULL_DATETIME, "comment" => "Date of last contact update"],
+                       "self" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "1 if the contact is the user him/her self"],
+                       "remote_self" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "rel" => ["type" => "tinyint unsigned", "not null" => "1", "default" => "0", "comment" => "The kind of the relation between the user and the contact"],
+                       "duplex" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "network" => ["type" => "char(4)", "not null" => "1", "default" => "", "comment" => "Network of the contact"],
+                       "protocol" => ["type" => "char(4)", "not null" => "1", "default" => "", "comment" => "Protocol of the contact"],
+                       "name" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "Name that this contact is known by"],
+                       "nick" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "Nick- and user name of the contact"],
+                       "location" => ["type" => "varchar(255)", "default" => "", "comment" => ""],
+                       "about" => ["type" => "text", "comment" => ""],
+                       "keywords" => ["type" => "text", "comment" => "public keywords (interests) of the contact"],
+                       "gender" => ["type" => "varchar(32)", "not null" => "1", "default" => "", "comment" => ""],
+                       "xmpp" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "attag" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "avatar" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "photo" => ["type" => "varchar(255)", "default" => "", "comment" => "Link to the profile photo of the contact"],
+                       "thumb" => ["type" => "varchar(255)", "default" => "", "comment" => "Link to the profile photo (thumb size)"],
+                       "micro" => ["type" => "varchar(255)", "default" => "", "comment" => "Link to the profile photo (micro size)"],
+                       "site-pubkey" => ["type" => "text", "comment" => ""],
+                       "issued-id" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "dfrn-id" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "url" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "nurl" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "addr" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "alias" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "pubkey" => ["type" => "text", "comment" => "RSA public key 4096 bit"],
+                       "prvkey" => ["type" => "text", "comment" => "RSA private key 4096 bit"],
+                       "batch" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "request" => ["type" => "varchar(255)", "comment" => ""],
+                       "notify" => ["type" => "varchar(255)", "comment" => ""],
+                       "poll" => ["type" => "varchar(255)", "comment" => ""],
+                       "confirm" => ["type" => "varchar(255)", "comment" => ""],
+                       "poco" => ["type" => "varchar(255)", "comment" => ""],
+                       "aes_allow" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "ret-aes" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "usehub" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "subhub" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "hub-verify" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "last-update" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "Date of the last try to update the contact info"],
+                       "success_update" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "Date of the last successful contact update"],
+                       "failure_update" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "Date of the last failed update"],
+                       "name-date" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => ""],
+                       "uri-date" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => ""],
+                       "avatar-date" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => ""],
+                       "term-date" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => ""],
+                       "last-item" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "date of the last post"],
+                       "priority" => ["type" => "tinyint unsigned", "not null" => "1", "default" => "0", "comment" => ""],
+                       "blocked" => ["type" => "boolean", "not null" => "1", "default" => "1", "comment" => "Node-wide block status"],
+                       "block_reason" => ["type" => "text", "comment" => "Node-wide block reason"],
+                       "readonly" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "posts of the contact are readonly"],
+                       "writable" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "forum" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "contact is a forum"],
+                       "prv" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "contact is a private group"],
+                       "contact-type" => ["type" => "tinyint", "not null" => "1", "default" => "0", "comment" => ""],
+                       "hidden" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "archive" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "pending" => ["type" => "boolean", "not null" => "1", "default" => "1", "comment" => ""],
+                       "deleted" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "Contact has been deleted"],
+                       "rating" => ["type" => "tinyint", "not null" => "1", "default" => "0", "comment" => ""],
+                       "unsearchable" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "Contact prefers to not be searchable"],
+                       "sensitive" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "Contact posts sensitive content"],
+                       "baseurl" => ["type" => "varchar(255)", "default" => "", "comment" => "baseurl of the contact"],
+                       "reason" => ["type" => "text", "comment" => ""],
+                       "closeness" => ["type" => "tinyint unsigned", "not null" => "1", "default" => "99", "comment" => ""],
+                       "info" => ["type" => "mediumtext", "comment" => ""],
+                       "profile-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "comment" => ""],
+                       "bdyear" => ["type" => "varchar(4)", "not null" => "1", "default" => "", "comment" => ""],
+                       "bd" => ["type" => "date", "not null" => "1", "default" => DBA::NULL_DATE, "comment" => ""],
+                       "notify_new_posts" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "fetch_further_information" => ["type" => "tinyint unsigned", "not null" => "1", "default" => "0", "comment" => ""],
+                       "ffi_keyword_blacklist" => ["type" => "text", "comment" => ""],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "uid_name" => ["uid", "name(190)"],
+                       "self_uid" => ["self", "uid"],
+                       "alias_uid" => ["alias(32)", "uid"],
+                       "pending_uid" => ["pending", "uid"],
+                       "blocked_uid" => ["blocked", "uid"],
+                       "uid_rel_network_poll" => ["uid", "rel", "network", "poll(64)", "archive"],
+                       "uid_network_batch" => ["uid", "network", "batch(64)"],
+                       "addr_uid" => ["addr(32)", "uid"],
+                       "nurl_uid" => ["nurl(32)", "uid"],
+                       "nick_uid" => ["nick(32)", "uid"],
+                       "dfrn-id" => ["dfrn-id(64)"],
+                       "issued-id" => ["issued-id(64)"],
+               ]
+       ],
+       "conv" => [
+               "comment" => "private messages",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
+                       "guid" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "A unique identifier for this conversation"],
+                       "recips" => ["type" => "text", "comment" => "sender_handle;recipient_handle"],
+                       "uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "relation" => ["user" => "uid"], "comment" => "Owner User id"],
+                       "creator" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "handle of creator"],
+                       "created" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "creation timestamp"],
+                       "updated" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "edited timestamp"],
+                       "subject" => ["type" => "text", "comment" => "subject of initial message"],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "uid" => ["uid"],
+               ]
+       ],
+       "conversation" => [
+               "comment" => "Raw data and structure information for messages",
+               "fields" => [
+                       "item-uri" => ["type" => "varbinary(255)", "not null" => "1", "primary" => "1", "comment" => "Original URI of the item - unrelated to the table with the same name"],
+                       "reply-to-uri" => ["type" => "varbinary(255)", "not null" => "1", "default" => "", "comment" => "URI to which this item is a reply"],
+                       "conversation-uri" => ["type" => "varbinary(255)", "not null" => "1", "default" => "", "comment" => "GNU Social conversation URI"],
+                       "conversation-href" => ["type" => "varbinary(255)", "not null" => "1", "default" => "", "comment" => "GNU Social conversation link"],
+                       "protocol" => ["type" => "tinyint unsigned", "not null" => "1", "default" => "255", "comment" => "The protocol of the item"],
+                       "source" => ["type" => "mediumtext", "comment" => "Original source"],
+                       "received" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "Receiving date"],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["item-uri"],
+                       "conversation-uri" => ["conversation-uri"],
+                       "received" => ["received"],
+               ]
+       ],
+       "diaspora-interaction" => [
+               "comment" => "Signed Diaspora Interaction",
+               "fields" => [
+                       "uri-id" => ["type" => "int unsigned", "not null" => "1", "primary" => "1", "relation" => ["item-uri" => "id"], "comment" => "Id of the item-uri table entry that contains the item uri"],
+                       "interaction" => ["type" => "mediumtext", "comment" => "The Diaspora interaction"]
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["uri-id"]
+               ]
+       ],
+       "event" => [
+               "comment" => "Events",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
+                       "guid" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "relation" => ["user" => "uid"], "comment" => "Owner User id"],
+                       "cid" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "relation" => ["contact" => "id"], "comment" => "contact_id (ID of the contact in contact table)"],
+                       "uri" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "created" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "creation time"],
+                       "edited" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "last edit time"],
+                       "start" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "event start time"],
+                       "finish" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "event end time"],
+                       "summary" => ["type" => "text", "comment" => "short description or title of the event"],
+                       "desc" => ["type" => "text", "comment" => "event description"],
+                       "location" => ["type" => "text", "comment" => "event location"],
+                       "type" => ["type" => "varchar(20)", "not null" => "1", "default" => "", "comment" => "event or birthday"],
+                       "nofinish" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "if event does have no end this is 1"],
+                       "adjust" => ["type" => "boolean", "not null" => "1", "default" => "1", "comment" => "adjust to timezone of the recipient (0 or 1)"],
+                       "ignore" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "0 or 1"],
+                       "allow_cid" => ["type" => "mediumtext", "comment" => "Access Control - list of allowed contact.id '<19><78>'"],
+                       "allow_gid" => ["type" => "mediumtext", "comment" => "Access Control - list of allowed groups"],
+                       "deny_cid" => ["type" => "mediumtext", "comment" => "Access Control - list of denied contact.id"],
+                       "deny_gid" => ["type" => "mediumtext", "comment" => "Access Control - list of denied groups"],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "uid_start" => ["uid", "start"],
+               ]
+       ],
+       "fcontact" => [
+               "comment" => "Diaspora compatible contacts - used in the Diaspora implementation",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
+                       "guid" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "unique id"],
+                       "url" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "name" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "photo" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "request" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "nick" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "addr" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "batch" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "notify" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "poll" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "confirm" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "priority" => ["type" => "tinyint unsigned", "not null" => "1", "default" => "0", "comment" => ""],
+                       "network" => ["type" => "char(4)", "not null" => "1", "default" => "", "comment" => ""],
+                       "alias" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "pubkey" => ["type" => "text", "comment" => ""],
+                       "updated" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => ""],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "addr" => ["addr(32)"],
+                       "url" => ["UNIQUE", "url(190)"],
+               ]
+       ],
+       "fsuggest" => [
+               "comment" => "friend suggestion stuff",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => ""],
+                       "uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "relation" => ["user" => "uid"], "comment" => "User id"],
+                       "cid" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "relation" => ["contact" => "id"], "comment" => ""],
+                       "name" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "url" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "request" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "photo" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "note" => ["type" => "text", "comment" => ""],
+                       "created" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => ""],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+               ]
+       ],
+       "gcign" => [
+               "comment" => "contacts ignored by friend suggestions",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
+                       "uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "relation" => ["user" => "uid"], "comment" => "Local User id"],
+                       "gcid" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "relation" => ["gcontact" => "id"], "comment" => "gcontact.id of ignored contact"],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "uid" => ["uid"],
+                       "gcid" => ["gcid"],
+               ]
+       ],
+       "gcontact" => [
+               "comment" => "global contacts",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
+                       "name" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "Name that this contact is known by"],
+                       "nick" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "Nick- and user name of the contact"],
+                       "url" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "Link to the contacts profile page"],
+                       "nurl" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "photo" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "Link to the profile photo"],
+                       "connect" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "created" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => ""],
+                       "updated" => ["type" => "datetime", "default" => DBA::NULL_DATETIME, "comment" => ""],
+                       "last_contact" => ["type" => "datetime", "default" => DBA::NULL_DATETIME, "comment" => ""],
+                       "last_failure" => ["type" => "datetime", "default" => DBA::NULL_DATETIME, "comment" => ""],
+                       "archive_date" => ["type" => "datetime", "default" => DBA::NULL_DATETIME, "comment" => ""],
+                       "archived" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "location" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "about" => ["type" => "text", "comment" => ""],
+                       "keywords" => ["type" => "text", "comment" => "puplic keywords (interests)"],
+                       "gender" => ["type" => "varchar(32)", "not null" => "1", "default" => "", "comment" => ""],
+                       "birthday" => ["type" => "varchar(32)", "not null" => "1", "default" => DBA::NULL_DATE, "comment" => ""],
+                       "community" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "1 if contact is forum account"],
+                       "contact-type" => ["type" => "tinyint", "not null" => "1", "default" => "-1", "comment" => ""],
+                       "hide" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "1 = should be hidden from search"],
+                       "nsfw" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "1 = contact posts nsfw content"],
+                       "network" => ["type" => "char(4)", "not null" => "1", "default" => "", "comment" => "social network protocol"],
+                       "addr" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "notify" => ["type" => "varchar(255)", "comment" => ""],
+                       "alias" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "generation" => ["type" => "tinyint unsigned", "not null" => "1", "default" => "0", "comment" => ""],
+                       "server_url" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "baseurl of the contacts server"],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "nurl" => ["UNIQUE", "nurl(190)"],
+                       "name" => ["name(64)"],
+                       "nick" => ["nick(32)"],
+                       "addr" => ["addr(64)"],
+                       "hide_network_updated" => ["hide", "network", "updated"],
+                       "updated" => ["updated"],
+               ]
+       ],
+       "glink" => [
+               "comment" => "'friends of friends' linkages derived from poco",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
+                       "cid" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "relation" => ["contact" => "id"], "comment" => ""],
+                       "uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "relation" => ["user" => "uid"], "comment" => "User id"],
+                       "gcid" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "relation" => ["gcontact" => "id"], "comment" => ""],
+                       "zcid" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "relation" => ["gcontact" => "id"], "comment" => ""],
+                       "updated" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => ""],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "cid_uid_gcid_zcid" => ["UNIQUE", "cid", "uid", "gcid", "zcid"],
+                       "gcid" => ["gcid"],
+               ]
+       ],
+       "group" => [
+               "comment" => "privacy groups, group info",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
+                       "uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "relation" => ["user" => "uid"], "comment" => "Owner User id"],
+                       "visible" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "1 indicates the member list is not private"],
+                       "deleted" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "1 indicates the group has been deleted"],
+                       "name" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "human readable name of group"],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "uid" => ["uid"],
+               ]
+       ],
+       "group_member" => [
+               "comment" => "privacy groups, member info",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
+                       "gid" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "relation" => ["group" => "id"], "comment" => "groups.id of the associated group"],
+                       "contact-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "relation" => ["contact" => "id"], "comment" => "contact.id of the member assigned to the associated group"],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "contactid" => ["contact-id"],
+                       "gid_contactid" => ["UNIQUE", "gid", "contact-id"],
+               ]
+       ],
+       "gserver" => [
+               "comment" => "Global servers",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
+                       "url" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "nurl" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "version" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "site_name" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "info" => ["type" => "text", "comment" => ""],
+                       "register_policy" => ["type" => "tinyint", "not null" => "1", "default" => "0", "comment" => ""],
+                       "registered-users" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "comment" => "Number of registered users"],
+                       "poco" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "noscrape" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "network" => ["type" => "char(4)", "not null" => "1", "default" => "", "comment" => ""],
+                       "platform" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "relay-subscribe" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "Has the server subscribed to the relay system"],
+                       "relay-scope" => ["type" => "varchar(10)", "not null" => "1", "default" => "", "comment" => "The scope of messages that the server wants to get"],
+                       "created" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => ""],
+                       "last_poco_query" => ["type" => "datetime", "default" => DBA::NULL_DATETIME, "comment" => ""],
+                       "last_contact" => ["type" => "datetime", "default" => DBA::NULL_DATETIME, "comment" => ""],
+                       "last_failure" => ["type" => "datetime", "default" => DBA::NULL_DATETIME, "comment" => ""],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "nurl" => ["UNIQUE", "nurl(190)"],
+               ]
+       ],
+       "gserver-tag" => [
+               "comment" => "Tags that the server has subscribed",
+               "fields" => [
+                       "gserver-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "relation" => ["gserver" => "id"], "primary" => "1",
+                               "comment" => "The id of the gserver"],
+                       "tag" => ["type" => "varchar(100)", "not null" => "1", "default" => "", "primary" => "1", "comment" => "Tag that the server has subscribed"],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["gserver-id", "tag"],
+                       "tag" => ["tag"],
+               ]
+       ],
+       "hook" => [
+               "comment" => "addon hook registry",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
+                       "hook" => ["type" => "varbinary(100)", "not null" => "1", "default" => "", "comment" => "name of hook"],
+                       "file" => ["type" => "varbinary(200)", "not null" => "1", "default" => "", "comment" => "relative filename of hook handler"],
+                       "function" => ["type" => "varbinary(200)", "not null" => "1", "default" => "", "comment" => "function name of hook handler"],
+                       "priority" => ["type" => "smallint unsigned", "not null" => "1", "default" => "0", "comment" => "not yet implemented - can be used to sort conflicts in hook handling by calling handlers in priority order"],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "hook_file_function" => ["UNIQUE", "hook", "file", "function"],
+               ]
+       ],
+       "inbox-status" => [
+               "comment" => "Status of ActivityPub inboxes",
+               "fields" => [
+                       "url" => ["type" => "varbinary(255)", "not null" => "1", "primary" => "1", "comment" => "URL of the inbox"],
+                       "created" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "Creation date of this entry"],
+                       "success" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "Date of the last successful delivery"],
+                       "failure" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "Date of the last failed delivery"],
+                       "previous" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "Previous delivery date"],
+                       "archive" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "Is the inbox archived?"],
+                       "shared" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "Is it a shared inbox?"]
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["url"]
+               ]
+       ],
+       "intro" => [
+               "comment" => "",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
+                       "uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "relation" => ["user" => "uid"], "comment" => "User id"],
+                       "fid" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "relation" => ["fcontact" => "id"], "comment" => ""],
+                       "contact-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "relation" => ["contact" => "id"], "comment" => ""],
+                       "knowyou" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "duplex" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "note" => ["type" => "text", "comment" => ""],
+                       "hash" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "datetime" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => ""],
+                       "blocked" => ["type" => "boolean", "not null" => "1", "default" => "1", "comment" => ""],
+                       "ignore" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+               ]
+       ],
+       "item" => [
+               "comment" => "Structure for all posts",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "relation" => ["thread" => "iid"]],
+                       "guid" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "A unique identifier for this item"],
+                       "uri" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "uri-id" => ["type" => "int unsigned", "relation" => ["item-uri" => "id"], "comment" => "Id of the item-uri table entry that contains the item uri"],
+                       "uri-hash" => ["type" => "varchar(80)", "not null" => "1", "default" => "", "comment" => "RIPEMD-128 hash from uri"],
+                       "parent" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "relation" => ["item" => "id"], "comment" => "item.id of the parent to this item if it is a reply of some form; otherwise this must be set to the id of this item"],
+                       "parent-uri" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "uri of the parent to this item"],
+                       "parent-uri-id" => ["type" => "int unsigned", "relation" => ["item-uri" => "id"], "comment" => "Id of the item-uri table that contains the parent uri"],
+                       "thr-parent" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "If the parent of this item is not the top-level item in the conversation, the uri of the immediate parent; otherwise set to parent-uri"],
+                       "thr-parent-id" => ["type" => "int unsigned", "relation" => ["item-uri" => "id"], "comment" => "Id of the item-uri table that contains the thread parent uri"],
+                       "created" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "Creation timestamp."],
+                       "edited" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "Date of last edit (default is created)"],
+                       "commented" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "Date of last comment/reply to this item"],
+                       "received" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "datetime"],
+                       "changed" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "Date that something in the conversation changed, indicating clients should fetch the conversation again"],
+                       "gravity" => ["type" => "tinyint unsigned", "not null" => "1", "default" => "0", "comment" => ""],
+                       "network" => ["type" => "char(4)", "not null" => "1", "default" => "", "comment" => "Network from where the item comes from"],
+                       "owner-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "relation" => ["contact" => "id"], "comment" => "Link to the contact table with uid=0 of the owner of this item"],
+                       "author-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "relation" => ["contact" => "id"], "comment" => "Link to the contact table with uid=0 of the author of this item"],
+                       "icid" => ["type" => "int unsigned", "relation" => ["item-content" => "id"], "comment" => "Id of the item-content table entry that contains the whole item content"],
+                       "iaid" => ["type" => "int unsigned", "relation" => ["item-activity" => "id"], "comment" => "Id of the item-activity table entry that contains the activity data"],
+                       "extid" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "post-type" => ["type" => "tinyint unsigned", "not null" => "1", "default" => "0", "comment" => "Post type (personal note, bookmark, ...)"],
+                       "global" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "private" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "distribution is restricted"],
+                       "visible" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "moderated" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "deleted" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "item has been deleted"],
+                       // User specific fields. Eventually they will move to user-item
+                       "uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "relation" => ["user" => "uid"], "comment" => "Owner id which owns this copy of the item"],
+                       "contact-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "relation" => ["contact" => "id"], "comment" => "contact.id"],
+                       "wall" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "This item was posted to the wall of uid"],
+                       "origin" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "item originated at this site"],
+                       "pubmail" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "starred" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "item has been favourited"],
+                       "unseen" => ["type" => "boolean", "not null" => "1", "default" => "1", "comment" => "item has not been seen"],
+                       "mention" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "The owner of this item was mentioned in it"],
+                       "forum_mode" => ["type" => "tinyint unsigned", "not null" => "1", "default" => "0", "comment" => ""],
+                       "psid" => ["type" => "int unsigned", "relation" => ["permissionset" => "id"], "comment" => "ID of the permission set of this post"],
+                       // It has to be decided whether these fields belong to the user or the structure
+                       "resource-id" => ["type" => "varchar(32)", "not null" => "1", "default" => "", "comment" => "Used to link other tables to items, it identifies the linked resource (e.g. photo) and if set must also set resource_type"],
+                       "event-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "relation" => ["event" => "id"], "comment" => "Used to link to the event.id"],
+                       // Could possibly be replaced by the "attach" table?
+                       "attach" => ["type" => "mediumtext", "comment" => "JSON structure representing attachments to this item"],
+                       // Deprecated fields. Will be removed in upcoming versions
+                       "allow_cid" => ["type" => "mediumtext", "comment" => "Deprecated"],
+                       "allow_gid" => ["type" => "mediumtext", "comment" => "Deprecated"],
+                       "deny_cid" => ["type" => "mediumtext", "comment" => "Deprecated"],
+                       "deny_gid" => ["type" => "mediumtext", "comment" => "Deprecated"],
+                       "postopts" => ["type" => "text", "comment" => "Deprecated"],
+                       "inform" => ["type" => "mediumtext", "comment" => "Deprecated"],
+                       "type" => ["type" => "varchar(20)", "comment" => "Deprecated"],
+                       "bookmark" => ["type" => "boolean", "comment" => "Deprecated"],
+                       "file" => ["type" => "mediumtext", "comment" => "Deprecated"],
+                       "location" => ["type" => "varchar(255)", "comment" => "Deprecated"],
+                       "coord" => ["type" => "varchar(255)", "comment" => "Deprecated"],
+                       "tag" => ["type" => "mediumtext", "comment" => "Deprecated"],
+                       "plink" => ["type" => "varchar(255)", "comment" => "Deprecated"],
+                       "title" => ["type" => "varchar(255)", "comment" => "Deprecated"],
+                       "content-warning" => ["type" => "varchar(255)", "comment" => "Deprecated"],
+                       "body" => ["type" => "mediumtext", "comment" => "Deprecated"],
+                       "app" => ["type" => "varchar(255)", "comment" => "Deprecated"],
+                       "verb" => ["type" => "varchar(100)", "comment" => "Deprecated"],
+                       "object-type" => ["type" => "varchar(100)", "comment" => "Deprecated"],
+                       "object" => ["type" => "text", "comment" => "Deprecated"],
+                       "target-type" => ["type" => "varchar(100)", "comment" => "Deprecated"],
+                       "target" => ["type" => "text", "comment" => "Deprecated"],
+                       "author-name" => ["type" => "varchar(255)", "comment" => "Deprecated"],
+                       "author-link" => ["type" => "varchar(255)", "comment" => "Deprecated"],
+                       "author-avatar" => ["type" => "varchar(255)", "comment" => "Deprecated"],
+                       "owner-name" => ["type" => "varchar(255)", "comment" => "Deprecated"],
+                       "owner-link" => ["type" => "varchar(255)", "comment" => "Deprecated"],
+                       "owner-avatar" => ["type" => "varchar(255)", "comment" => "Deprecated"],
+                       "rendered-hash" => ["type" => "varchar(32)", "comment" => "Deprecated"],
+                       "rendered-html" => ["type" => "mediumtext", "comment" => "Deprecated"],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "guid" => ["guid(191)"],
+                       "uri" => ["uri(191)"],
+                       "parent" => ["parent"],
+                       "parent-uri" => ["parent-uri(191)"],
+                       "extid" => ["extid(191)"],
+                       "uid_id" => ["uid", "id"],
+                       "uid_contactid_id" => ["uid", "contact-id", "id"],
+                       "uid_received" => ["uid", "received"],
+                       "uid_commented" => ["uid", "commented"],
+                       "uid_unseen_contactid" => ["uid", "unseen", "contact-id"],
+                       "uid_network_received" => ["uid", "network", "received"],
+                       "uid_network_commented" => ["uid", "network", "commented"],
+                       "uid_thrparent" => ["uid", "thr-parent(190)"],
+                       "uid_parenturi" => ["uid", "parent-uri(190)"],
+                       "uid_contactid_received" => ["uid", "contact-id", "received"],
+                       "authorid_received" => ["author-id", "received"],
+                       "ownerid" => ["owner-id"],
+                       "contact-id" => ["contact-id"],
+                       "uid_uri" => ["uid", "uri(190)"],
+                       "resource-id" => ["resource-id"],
+                       "deleted_changed" => ["deleted", "changed"],
+                       "uid_wall_changed" => ["uid", "wall", "changed"],
+                       "uid_eventid" => ["uid", "event-id"],
+                       "icid" => ["icid"],
+                       "iaid" => ["iaid"],
+                       "psid_wall" => ["psid", "wall"],
+               ]
+       ],
+       "item-activity" => [
+               "comment" => "Activities for items",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "relation" => ["thread" => "iid"]],
+                       "uri" => ["type" => "varchar(255)", "comment" => ""],
+                       "uri-id" => ["type" => "int unsigned", "relation" => ["item-uri" => "id"], "comment" => "Id of the item-uri table entry that contains the item uri"],
+                       "uri-hash" => ["type" => "varchar(80)", "not null" => "1", "default" => "", "comment" => "RIPEMD-128 hash from uri"],
+                       "activity" => ["type" => "smallint unsigned", "not null" => "1", "default" => "0", "comment" => ""]
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "uri-hash" => ["UNIQUE", "uri-hash"],
+                       "uri" => ["uri(191)"],
+                       "uri-id" => ["uri-id"]
+               ]
+       ],
+       "item-content" => [
+               "comment" => "Content for all posts",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "relation" => ["thread" => "iid"]],
+                       "uri" => ["type" => "varchar(255)", "comment" => ""],
+                       "uri-id" => ["type" => "int unsigned", "relation" => ["item-uri" => "id"], "comment" => "Id of the item-uri table entry that contains the item uri"],
+                       "uri-plink-hash" => ["type" => "varchar(80)", "not null" => "1", "default" => "", "comment" => "RIPEMD-128 hash from uri"],
+                       "title" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "item title"],
+                       "content-warning" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "body" => ["type" => "mediumtext", "comment" => "item body content"],
+                       "location" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "text location where this item originated"],
+                       "coord" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "longitude/latitude pair representing location where this item originated"],
+                       "language" => ["type" => "text", "comment" => "Language information about this post"],
+                       "app" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "application which generated this item"],
+                       "rendered-hash" => ["type" => "varchar(32)", "not null" => "1", "default" => "", "comment" => ""],
+                       "rendered-html" => ["type" => "mediumtext", "comment" => "item.body converted to html"],
+                       "object-type" => ["type" => "varchar(100)", "not null" => "1", "default" => "", "comment" => "ActivityStreams object type"],
+                       "object" => ["type" => "text", "comment" => "JSON encoded object structure unless it is an implied object (normal post)"],
+                       "target-type" => ["type" => "varchar(100)", "not null" => "1", "default" => "", "comment" => "ActivityStreams target type if applicable (URI)"],
+                       "target" => ["type" => "text", "comment" => "JSON encoded target structure if used"],
+                       "plink" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "permalink or URL to a displayable copy of the message at its source"],
+                       "verb" => ["type" => "varchar(100)", "not null" => "1", "default" => "", "comment" => "ActivityStreams verb"]
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "uri-plink-hash" => ["UNIQUE", "uri-plink-hash"],
+                       "uri" => ["uri(191)"],
+                       "plink" => ["plink(191)"],
+                       "uri-id" => ["uri-id"]
+               ]
+       ],
+       "item-delivery-data" => [
+               "comment" => "Delivery data for items",
+               "fields" => [
+                       "iid" => ["type" => "int unsigned", "not null" => "1", "primary" => "1", "relation" => ["item" => "id"], "comment" => "Item id"],
+                       "postopts" => ["type" => "text", "comment" => "External post connectors add their network name to this comma-separated string to identify that they should be delivered to these networks during delivery"],
+                       "inform" => ["type" => "mediumtext", "comment" => "Additional receivers of the linked item"],
+                       "queue_count" => ["type" => "mediumint", "not null" => "1", "default" => "0", "comment" => "Initial number of delivery recipients, used as item.delivery_queue_count"],
+                       "queue_done" => ["type" => "mediumint", "not null" => "1", "default" => "0", "comment" => "Number of successful deliveries, used as item.delivery_queue_done"],
+                       "queue_failed" => ["type" => "mediumint", "not null" => "1", "default" => "0", "comment" => "Number of unsuccessful deliveries, used as item.delivery_queue_failed"],
+                       "activitypub" => ["type" => "mediumint", "not null" => "1", "default" => "0", "comment" => "Number of successful deliveries via ActivityPub"],
+                       "dfrn" => ["type" => "mediumint", "not null" => "1", "default" => "0", "comment" => "Number of successful deliveries via DFRN"],
+                       "legacy_dfrn" => ["type" => "mediumint", "not null" => "1", "default" => "0", "comment" => "Number of successful deliveries via legacy DFRN"],
+                       "diaspora" => ["type" => "mediumint", "not null" => "1", "default" => "0", "comment" => "Number of successful deliveries via Diaspora"],
+                       "ostatus" => ["type" => "mediumint", "not null" => "1", "default" => "0", "comment" => "Number of successful deliveries via OStatus"],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["iid"],
+               ]
+       ],
+       "item-uri" => [
+               "comment" => "URI and GUID for items",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1"],
+                       "uri" => ["type" => "varbinary(255)", "not null" => "1", "comment" => "URI of an item"],
+                       "guid" => ["type" => "varbinary(255)", "comment" => "A unique identifier for an item"]
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "uri" => ["UNIQUE", "uri"],
+                       "guid" => ["guid"]
+               ]
+       ],
+       "locks" => [
+               "comment" => "",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
+                       "name" => ["type" => "varchar(128)", "not null" => "1", "default" => "", "comment" => ""],
+                       "locked" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "pid" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "comment" => "Process ID"],
+                       "expires" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "datetime of cache expiration"],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "name_expires" => ["name", "expires"]
+               ]
+       ],
+       "mail" => [
+               "comment" => "private messages",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
+                       "uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "relation" => ["user" => "uid"], "comment" => "Owner User id"],
+                       "guid" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "A unique identifier for this private message"],
+                       "from-name" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "name of the sender"],
+                       "from-photo" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "contact photo link of the sender"],
+                       "from-url" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "profile linke of the sender"],
+                       "contact-id" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "relation" => ["contact" => "id"], "comment" => "contact.id"],
+                       "convid" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "relation" => ["conv" => "id"], "comment" => "conv.id"],
+                       "title" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "body" => ["type" => "mediumtext", "comment" => ""],
+                       "seen" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "if message visited it is 1"],
+                       "reply" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "replied" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "unknown" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "if sender not in the contact table this is 1"],
+                       "uri" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "parent-uri" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "created" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "creation time of the private message"],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "uid_seen" => ["uid", "seen"],
+                       "convid" => ["convid"],
+                       "uri" => ["uri(64)"],
+                       "parent-uri" => ["parent-uri(64)"],
+                       "contactid" => ["contact-id(32)"],
+               ]
+       ],
+       "mailacct" => [
+               "comment" => "Mail account data for fetching mails",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
+                       "uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "relation" => ["user" => "uid"], "comment" => "User id"],
+                       "server" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "port" => ["type" => "smallint unsigned", "not null" => "1", "default" => "0", "comment" => ""],
+                       "ssltype" => ["type" => "varchar(16)", "not null" => "1", "default" => "", "comment" => ""],
+                       "mailbox" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "user" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "pass" => ["type" => "text", "comment" => ""],
+                       "reply_to" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "action" => ["type" => "tinyint unsigned", "not null" => "1", "default" => "0", "comment" => ""],
+                       "movetofolder" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "pubmail" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "last_check" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => ""],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+               ]
+       ],
+       "manage" => [
+               "comment" => "table of accounts that can manage each other",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
+                       "uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "relation" => ["user" => "uid"], "comment" => "User id"],
+                       "mid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "relation" => ["user" => "uid"], "comment" => "User id"],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "uid_mid" => ["UNIQUE", "uid", "mid"],
+               ]
+       ],
+       "notify" => [
+               "comment" => "notifications",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
+                       "hash" => ["type" => "varchar(64)", "not null" => "1", "default" => "", "comment" => ""],
+                       "type" => ["type" => "smallint unsigned", "not null" => "1", "default" => "0", "comment" => ""],
+                       "name" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "url" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "photo" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "date" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => ""],
+                       "msg" => ["type" => "mediumtext", "comment" => ""],
+                       "uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "relation" => ["user" => "uid"], "comment" => "Owner User id"],
+                       "link" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "iid" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "relation" => ["item" => "id"], "comment" => "item.id"],
+                       "parent" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "relation" => ["item" => "id"], "comment" => ""],
+                       "seen" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "verb" => ["type" => "varchar(100)", "not null" => "1", "default" => "", "comment" => ""],
+                       "otype" => ["type" => "varchar(10)", "not null" => "1", "default" => "", "comment" => ""],
+                       "name_cache" => ["type" => "tinytext", "comment" => "Cached bbcode parsing of name"],
+                       "msg_cache" => ["type" => "mediumtext", "comment" => "Cached bbcode parsing of msg"]
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "hash_uid" => ["hash", "uid"],
+                       "seen_uid_date" => ["seen", "uid", "date"],
+                       "uid_date" => ["uid", "date"],
+                       "uid_type_link" => ["uid", "type", "link(190)"],
+               ]
+       ],
+       "notify-threads" => [
+               "comment" => "",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
+                       "notify-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "relation" => ["notify" => "id"], "comment" => ""],
+                       "master-parent-item" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "relation" => ["item" => "id"],
+                               "comment" => ""],
+                       "parent-item" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "comment" => ""],
+                       "receiver-uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "relation" => ["user" => "uid"],
+                               "comment" => "User id"],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+               ]
+       ],
+       "oembed" => [
+               "comment" => "cache for OEmbed queries",
+               "fields" => [
+                       "url" => ["type" => "varbinary(255)", "not null" => "1", "primary" => "1", "comment" => "page url"],
+                       "maxwidth" => ["type" => "mediumint unsigned", "not null" => "1", "primary" => "1", "comment" => "Maximum width passed to Oembed"],
+                       "content" => ["type" => "mediumtext", "comment" => "OEmbed data of the page"],
+                       "created" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "datetime of creation"],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["url", "maxwidth"],
+                       "created" => ["created"],
+               ]
+       ],
+       "openwebauth-token" => [
+               "comment" => "Store OpenWebAuth token to verify contacts",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
+                       "uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "relation" => ["user" => "uid"], "comment" => "User id"],
+                       "type" => ["type" => "varchar(32)", "not null" => "1", "default" => "", "comment" => "Verify type"],
+                       "token" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "A generated token"],
+                       "meta" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "created" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "datetime of creation"],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+               ]
+       ],
+       "parsed_url" => [
+               "comment" => "cache for 'parse_url' queries",
+               "fields" => [
+                       "url" => ["type" => "varbinary(255)", "not null" => "1", "primary" => "1", "comment" => "page url"],
+                       "guessing" => ["type" => "boolean", "not null" => "1", "default" => "0", "primary" => "1", "comment" => "is the 'guessing' mode active?"],
+                       "oembed" => ["type" => "boolean", "not null" => "1", "default" => "0", "primary" => "1", "comment" => "is the data the result of oembed?"],
+                       "content" => ["type" => "mediumtext", "comment" => "page data"],
+                       "created" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "datetime of creation"],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["url", "guessing", "oembed"],
+                       "created" => ["created"],
+               ]
+       ],
+       "participation" => [
+               "comment" => "Storage for participation messages from Diaspora",
+               "fields" => [
+                       "iid" => ["type" => "int unsigned", "not null" => "1", "primary" => "1", "relation" => ["item" => "id"], "comment" => ""],
+                       "server" => ["type" => "varchar(60)", "not null" => "1", "primary" => "1", "comment" => ""],
+                       "cid" => ["type" => "int unsigned", "not null" => "1", "relation" => ["contact" => "id"], "comment" => ""],
+                       "fid" => ["type" => "int unsigned", "not null" => "1", "relation" => ["fcontact" => "id"], "comment" => ""],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["iid", "server"],
+                       "cid" => ["cid"],
+                       "fid" => ["fid"]
+               ]
+       ],
+       "pconfig" => [
+               "comment" => "personal (per user) configuration storage",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => ""],
+                       "uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "relation" => ["user" => "uid"], "comment" => "User id"],
+                       "cat" => ["type" => "varbinary(50)", "not null" => "1", "default" => "", "comment" => ""],
+                       "k" => ["type" => "varbinary(100)", "not null" => "1", "default" => "", "comment" => ""],
+                       "v" => ["type" => "mediumtext", "comment" => ""],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "uid_cat_k" => ["UNIQUE", "uid", "cat", "k"],
+               ]
+       ],
+       "permissionset" => [
+               "comment" => "",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
+                       "uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "relation" => ["user" => "uid"], "comment" => "Owner id of this permission set"],
+                       "allow_cid" => ["type" => "mediumtext", "comment" => "Access Control - list of allowed contact.id '<19><78>'"],
+                       "allow_gid" => ["type" => "mediumtext", "comment" => "Access Control - list of allowed groups"],
+                       "deny_cid" => ["type" => "mediumtext", "comment" => "Access Control - list of denied contact.id"],
+                       "deny_gid" => ["type" => "mediumtext", "comment" => "Access Control - list of denied groups"],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "uid_allow_cid_allow_gid_deny_cid_deny_gid" => ["allow_cid(50)", "allow_gid(30)", "deny_cid(50)", "deny_gid(30)"],
+               ]
+       ],
+       "photo" => [
+               "comment" => "photo storage",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
+                       "uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "relation" => ["user" => "uid"], "comment" => "Owner User id"],
+                       "contact-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "relation" => ["contact" => "id"], "comment" => "contact.id"],
+                       "guid" => ["type" => "char(16)", "not null" => "1", "default" => "", "comment" => "A unique identifier for this photo"],
+                       "resource-id" => ["type" => "char(32)", "not null" => "1", "default" => "", "comment" => ""],
+                       "created" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "creation date"],
+                       "edited" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "last edited date"],
+                       "title" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "desc" => ["type" => "text", "comment" => ""],
+                       "album" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "The name of the album to which the photo belongs"],
+                       "filename" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "type" => ["type" => "varchar(30)", "not null" => "1", "default" => "image/jpeg"],
+                       "height" => ["type" => "smallint unsigned", "not null" => "1", "default" => "0", "comment" => ""],
+                       "width" => ["type" => "smallint unsigned", "not null" => "1", "default" => "0", "comment" => ""],
+                       "datasize" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "comment" => ""],
+                       "data" => ["type" => "mediumblob", "not null" => "1", "comment" => ""],
+                       "scale" => ["type" => "tinyint unsigned", "not null" => "1", "default" => "0", "comment" => ""],
+                       "profile" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "allow_cid" => ["type" => "mediumtext", "comment" => "Access Control - list of allowed contact.id '<19><78>'"],
+                       "allow_gid" => ["type" => "mediumtext", "comment" => "Access Control - list of allowed groups"],
+                       "deny_cid" => ["type" => "mediumtext", "comment" => "Access Control - list of denied contact.id"],
+                       "deny_gid" => ["type" => "mediumtext", "comment" => "Access Control - list of denied groups"],
+                       "backend-class" => ["type" => "tinytext", "comment" => "Storage backend class"],
+                       "backend-ref" => ["type" => "text", "comment" => "Storage backend data reference"],
+                       "updated" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => ""]
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "contactid" => ["contact-id"],
+                       "uid_contactid" => ["uid", "contact-id"],
+                       "uid_profile" => ["uid", "profile"],
+                       "uid_album_scale_created" => ["uid", "album(32)", "scale", "created"],
+                       "uid_album_resource-id_created" => ["uid", "album(32)", "resource-id", "created"],
+                       "resource-id" => ["resource-id"],
+               ]
+       ],
+       "poll" => [
+               "comment" => "Currently unused table for storing poll results",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => ""],
+                       "uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "relation" => ["user" => "uid"], "comment" => "User id"],
+                       "q0" => ["type" => "text", "comment" => ""],
+                       "q1" => ["type" => "text", "comment" => ""],
+                       "q2" => ["type" => "text", "comment" => ""],
+                       "q3" => ["type" => "text", "comment" => ""],
+                       "q4" => ["type" => "text", "comment" => ""],
+                       "q5" => ["type" => "text", "comment" => ""],
+                       "q6" => ["type" => "text", "comment" => ""],
+                       "q7" => ["type" => "text", "comment" => ""],
+                       "q8" => ["type" => "text", "comment" => ""],
+                       "q9" => ["type" => "text", "comment" => ""],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "uid" => ["uid"],
+               ]
+       ],
+       "poll_result" => [
+               "comment" => "data for polls - currently unused",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
+                       "poll_id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "relation" => ["poll" => "id"]],
+                       "choice" => ["type" => "tinyint unsigned", "not null" => "1", "default" => "0", "comment" => ""],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "poll_id" => ["poll_id"],
+               ]
+       ],
+       "process" => [
+               "comment" => "Currently running system processes",
+               "fields" => [
+                       "pid" => ["type" => "int unsigned", "not null" => "1", "primary" => "1", "comment" => ""],
+                       "command" => ["type" => "varbinary(32)", "not null" => "1", "default" => "", "comment" => ""],
+                       "created" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => ""],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["pid"],
+                       "command" => ["command"],
+               ]
+       ],
+       "profile" => [
+               "comment" => "user profiles data",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
+                       "uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "relation" => ["user" => "uid"], "comment" => "Owner User id"],
+                       "profile-name" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "Name of the profile"],
+                       "is-default" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "Mark this profile as default profile"],
+                       "hide-friends" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "Hide friend list from viewers of this profile"],
+                       "name" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "pdesc" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "Title or description"],
+                       "dob" => ["type" => "varchar(32)", "not null" => "1", "default" => "0000-00-00", "comment" => "Day of birth"],
+                       "address" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "locality" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "region" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "postal-code" => ["type" => "varchar(32)", "not null" => "1", "default" => "", "comment" => ""],
+                       "country-name" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "hometown" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "gender" => ["type" => "varchar(32)", "not null" => "1", "default" => "", "comment" => ""],
+                       "marital" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "with" => ["type" => "text", "comment" => ""],
+                       "howlong" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => ""],
+                       "sexual" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "politic" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "religion" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "pub_keywords" => ["type" => "text", "comment" => ""],
+                       "prv_keywords" => ["type" => "text", "comment" => ""],
+                       "likes" => ["type" => "text", "comment" => ""],
+                       "dislikes" => ["type" => "text", "comment" => ""],
+                       "about" => ["type" => "text", "comment" => ""],
+                       "summary" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "music" => ["type" => "text", "comment" => ""],
+                       "book" => ["type" => "text", "comment" => ""],
+                       "tv" => ["type" => "text", "comment" => ""],
+                       "film" => ["type" => "text", "comment" => ""],
+                       "interest" => ["type" => "text", "comment" => ""],
+                       "romance" => ["type" => "text", "comment" => ""],
+                       "work" => ["type" => "text", "comment" => ""],
+                       "education" => ["type" => "text", "comment" => ""],
+                       "contact" => ["type" => "text", "comment" => ""],
+                       "homepage" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "xmpp" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "photo" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "thumb" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "publish" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "publish default profile in local directory"],
+                       "net-publish" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "publish profile in global directory"],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "uid_is-default" => ["uid", "is-default"],
+                       "pub_keywords" => ["FULLTEXT", "pub_keywords"],
+               ]
+       ],
+       "profile_check" => [
+               "comment" => "DFRN remote auth use",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
+                       "uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "relation" => ["user" => "uid"], "comment" => "User id"],
+                       "cid" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "relation" => ["contact" => "id"], "comment" => "contact.id"],
+                       "dfrn_id" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "sec" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "expire" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "comment" => ""],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+               ]
+       ],
+       "push_subscriber" => [
+               "comment" => "Used for OStatus: Contains feed subscribers",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
+                       "uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "relation" => ["user" => "uid"], "comment" => "User id"],
+                       "callback_url" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "topic" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "nickname" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "push" => ["type" => "tinyint", "not null" => "1", "default" => "0", "comment" => "Retrial counter"],
+                       "last_update" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "Date of last successful trial"],
+                       "next_try" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "Next retrial date"],
+                       "renewed" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "Date of last subscription renewal"],
+                       "secret" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "next_try" => ["next_try"],
+               ]
+       ],
+       "register" => [
+               "comment" => "registrations requiring admin approval",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
+                       "hash" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "created" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => ""],
+                       "uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "relation" => ["user" => "uid"], "comment" => "User id"],
+                       "password" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "language" => ["type" => "varchar(16)", "not null" => "1", "default" => "", "comment" => ""],
+                       "note" => ["type" => "text", "comment" => ""],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+               ]
+       ],
+       "search" => [
+               "comment" => "",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
+                       "uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "relation" => ["user" => "uid"], "comment" => "User id"],
+                       "term" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "uid" => ["uid"],
+               ]
+       ],
+       "session" => [
+               "comment" => "web session storage",
+               "fields" => [
+                       "id" => ["type" => "bigint unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
+                       "sid" => ["type" => "varbinary(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "data" => ["type" => "text", "comment" => ""],
+                       "expire" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "comment" => ""],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "sid" => ["sid(64)"],
+                       "expire" => ["expire"],
+               ]
+       ],
+       "sign" => [
+               "comment" => "Diaspora signatures",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
+                       "iid" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "relation" => ["item" => "id"], "comment" => "item.id"],
+                       "signed_text" => ["type" => "mediumtext", "comment" => ""],
+                       "signature" => ["type" => "text", "comment" => ""],
+                       "signer" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "iid" => ["UNIQUE", "iid"],
+               ]
+       ],
+       "term" => [
+               "comment" => "item taxonomy (categories, tags, etc.) table",
+               "fields" => [
+                       "tid" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => ""],
+                       "oid" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "relation" => ["item" => "id"], "comment" => ""],
+                       "otype" => ["type" => "tinyint unsigned", "not null" => "1", "default" => "0", "comment" => ""],
+                       "type" => ["type" => "tinyint unsigned", "not null" => "1", "default" => "0", "comment" => ""],
+                       "term" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "url" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "guid" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "created" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => ""],
+                       "received" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => ""],
+                       "global" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "relation" => ["user" => "uid"], "comment" => "User id"],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["tid"],
+                       "term_type" => ["term(64)", "type"],
+                       "oid_otype_type_term" => ["oid", "otype", "type", "term(32)"],
+                       "uid_otype_type_term_global_created" => ["uid", "otype", "type", "term(32)", "global", "created"],
+                       "uid_otype_type_url" => ["uid", "otype", "type", "url(64)"],
+                       "guid" => ["guid(64)"],
+               ]
+       ],
+       "thread" => [
+               "comment" => "Thread related data",
+               "fields" => [
+                       "iid" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "primary" => "1", "relation" => ["item" => "id"],
+                               "comment" => "sequential ID"],
+                       "uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "relation" => ["user" => "uid"], "comment" => "User id"],
+                       "contact-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "relation" => ["contact" => "id"], "comment" => ""],
+                       "owner-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "relation" => ["contact" => "id"], "comment" => "Item owner"],
+                       "author-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "relation" => ["contact" => "id"], "comment" => "Item author"],
+                       "created" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => ""],
+                       "edited" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => ""],
+                       "commented" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => ""],
+                       "received" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => ""],
+                       "changed" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => ""],
+                       "wall" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "private" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "pubmail" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "moderated" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "visible" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "starred" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "ignored" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "post-type" => ["type" => "tinyint unsigned", "not null" => "1", "default" => "0", "comment" => "Post type (personal note, bookmark, ...)"],
+                       "unseen" => ["type" => "boolean", "not null" => "1", "default" => "1", "comment" => ""],
+                       "deleted" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "origin" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "forum_mode" => ["type" => "tinyint unsigned", "not null" => "1", "default" => "0", "comment" => ""],
+                       "mention" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "network" => ["type" => "char(4)", "not null" => "1", "default" => "", "comment" => ""],
+                       "bookmark" => ["type" => "boolean", "comment" => ""],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["iid"],
+                       "uid_network_commented" => ["uid", "network", "commented"],
+                       "uid_network_received" => ["uid", "network", "received"],
+                       "uid_contactid_commented" => ["uid", "contact-id", "commented"],
+                       "uid_contactid_received" => ["uid", "contact-id", "received"],
+                       "contactid" => ["contact-id"],
+                       "ownerid" => ["owner-id"],
+                       "authorid" => ["author-id"],
+                       "uid_received" => ["uid", "received"],
+                       "uid_commented" => ["uid", "commented"],
+                       "uid_wall_received" => ["uid", "wall", "received"],
+                       "private_wall_origin_commented" => ["private", "wall", "origin", "commented"],
+               ]
+       ],
+       "tokens" => [
+               "comment" => "OAuth usage",
+               "fields" => [
+                       "id" => ["type" => "varchar(40)", "not null" => "1", "primary" => "1", "comment" => ""],
+                       "secret" => ["type" => "text", "comment" => ""],
+                       "client_id" => ["type" => "varchar(20)", "not null" => "1", "default" => "", "relation" => ["clients" => "client_id"]],
+                       "expires" => ["type" => "int", "not null" => "1", "default" => "0", "comment" => ""],
+                       "scope" => ["type" => "varchar(200)", "not null" => "1", "default" => "", "comment" => ""],
+                       "uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "relation" => ["user" => "uid"], "comment" => "User id"],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+               ]
+       ],
+       "user" => [
+               "comment" => "The local users",
+               "fields" => [
+                       "uid" => ["type" => "mediumint unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
+                       "parent-uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "relation" => ["user" => "uid"],
+                               "comment" => "The parent user that has full control about this user"],
+                       "guid" => ["type" => "varchar(64)", "not null" => "1", "default" => "", "comment" => "A unique identifier for this user"],
+                       "username" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "Name that this user is known by"],
+                       "password" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "encrypted password"],
+                       "legacy_password" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "Is the password hash double-hashed?"],
+                       "nickname" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "nick- and user name"],
+                       "email" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "the users email address"],
+                       "openid" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
+                       "timezone" => ["type" => "varchar(128)", "not null" => "1", "default" => "", "comment" => "PHP-legal timezone"],
+                       "language" => ["type" => "varchar(32)", "not null" => "1", "default" => "en", "comment" => "default language"],
+                       "register_date" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "timestamp of registration"],
+                       "login_date" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "timestamp of last login"],
+                       "default-location" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "Default for item.location"],
+                       "allow_location" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "1 allows to display the location"],
+                       "theme" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "user theme preference"],
+                       "pubkey" => ["type" => "text", "comment" => "RSA public key 4096 bit"],
+                       "prvkey" => ["type" => "text", "comment" => "RSA private key 4096 bit"],
+                       "spubkey" => ["type" => "text", "comment" => ""],
+                       "sprvkey" => ["type" => "text", "comment" => ""],
+                       "verified" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "user is verified through email"],
+                       "blocked" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "1 for user is blocked"],
+                       "blockwall" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "Prohibit contacts to post to the profile page of the user"],
+                       "hidewall" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "Hide profile details from unkown viewers"],
+                       "blocktags" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "Prohibit contacts to tag the post of this user"],
+                       "unkmail" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "Permit unknown people to send private mails to this user"],
+                       "cntunkmail" => ["type" => "int unsigned", "not null" => "1", "default" => "10", "comment" => ""],
+                       "notify-flags" => ["type" => "smallint unsigned", "not null" => "1", "default" => "65535", "comment" => "email notification options"],
+                       "page-flags" => ["type" => "tinyint unsigned", "not null" => "1", "default" => "0", "comment" => "page/profile type"],
+                       "account-type" => ["type" => "tinyint unsigned", "not null" => "1", "default" => "0", "comment" => ""],
+                       "prvnets" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "pwdreset" => ["type" => "varchar(255)", "comment" => "Password reset request token"],
+                       "pwdreset_time" => ["type" => "datetime", "comment" => "Timestamp of the last password reset request"],
+                       "maxreq" => ["type" => "int unsigned", "not null" => "1", "default" => "10", "comment" => ""],
+                       "expire" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "comment" => ""],
+                       "account_removed" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "if 1 the account is removed"],
+                       "account_expired" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
+                       "account_expires_on" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "timestamp when account expires and will be deleted"],
+                       "expire_notification_sent" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "timestamp of last warning of account expiration"],
+                       "def_gid" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "comment" => ""],
+                       "allow_cid" => ["type" => "mediumtext", "comment" => "default permission for this user"],
+                       "allow_gid" => ["type" => "mediumtext", "comment" => "default permission for this user"],
+                       "deny_cid" => ["type" => "mediumtext", "comment" => "default permission for this user"],
+                       "deny_gid" => ["type" => "mediumtext", "comment" => "default permission for this user"],
+                       "openidserver" => ["type" => "text", "comment" => ""],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["uid"],
+                       "nickname" => ["nickname(32)"],
+               ]
+       ],
+       "userd" => [
+               "comment" => "Deleted usernames",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "sequential ID"],
+                       "username" => ["type" => "varchar(255)", "not null" => "1", "comment" => ""],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "username" => ["username(32)"],
+               ]
+       ],
+       "user-contact" => [
+               "comment" => "User specific public contact data",
+               "fields" => [
+                       "cid" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "primary" => "1", "relation" => ["contact" => "id"], "comment" => "Contact id of the linked public contact"],
+                       "uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "primary" => "1", "relation" => ["user" => "uid"], "comment" => "User id"],
+                       "blocked" => ["type" => "boolean", "comment" => "Contact is completely blocked for this user"],
+                       "ignored" => ["type" => "boolean", "comment" => "Posts from this contact are ignored"],
+                       "collapsed" => ["type" => "boolean", "comment" => "Posts from this contact are collapsed"]
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["uid", "cid"]
+               ]
+       ],
+       "user-item" => [
+               "comment" => "User specific item data",
+               "fields" => [
+                       "iid" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "primary" => "1", "relation" => ["item" => "id"], "comment" => "Item id"],
+                       "uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "primary" => "1", "relation" => ["user" => "uid"], "comment" => "User id"],
+                       "hidden" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "Marker to hide an item from the user"],
+                       "ignored" => ["type" => "boolean", "comment" => "Ignore this thread if set"],
+                       "pinned" => ["type" => "boolean", "comment" => "The item is pinned on the profile page"]
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["uid", "iid"]
+               ]
+       ],
+       "worker-ipc" => [
+               "comment" => "Inter process communication between the frontend and the worker",
+               "fields" => [
+                       "key" => ["type" => "int", "not null" => "1", "primary" => "1", "comment" => ""],
+                       "jobs" => ["type" => "boolean", "comment" => "Flag for outstanding jobs"],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["key"],
+               ],
+               "engine" => "MEMORY",
+       ],
+       "workerqueue" => [
+               "comment" => "Background tasks queue entries",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "Auto incremented worker task id"],
+                       "parameter" => ["type" => "mediumtext", "comment" => "Task command"],
+                       "priority" => ["type" => "tinyint unsigned", "not null" => "1", "default" => "0", "comment" => "Task priority"],
+                       "created" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "Creation date"],
+                       "pid" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "comment" => "Process id of the worker"],
+                       "executed" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "Execution date"],
+                       "next_try" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "Next retrial date"],
+                       "retrial" => ["type" => "tinyint", "not null" => "1", "default" => "0", "comment" => "Retrial counter"],
+                       "done" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "Marked 1 when the task was done - will be deleted later"],
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"],
+                       "done_parameter" => ["done", "parameter(64)"],
+                       "done_executed" => ["done", "executed"],
+                       "done_priority_created" => ["done", "priority", "created"],
+                       "done_priority_next_try" => ["done", "priority", "next_try"],
+                       "done_pid_next_try" => ["done", "pid", "next_try"],
+                       "done_pid_priority_created" => ["done", "pid", "priority", "created"]
+               ]
+       ],
+       "storage" => [
+               "comment" => "Data stored by Database storage backend",
+               "fields" => [
+                       "id" => ["type" => "int unsigned", "not null" => "1", "extra" => "auto_increment", "primary" => "1", "comment" => "Auto incremented image data id"],
+                       "data" => ["type" => "longblob", "not null" => "1", "comment" => "file data"]
+               ],
+               "indexes" => [
+                       "PRIMARY" => ["id"]
+               ]
+       ]
+];
+
diff --git a/static/routes.config.php.sic b/static/routes.config.php.sic
new file mode 100644 (file)
index 0000000..339860a
--- /dev/null
@@ -0,0 +1,236 @@
+<?php
+
+use Friendica\App\Router as R;
+use Friendica\Module;
+
+/**
+* Configuration for the default routes in Friendica
+*
+* The syntax is either
+* - 'route' => [ Module::class , [ HTTPMethod(s) ] ]
+* - 'group' => [ 'route' => [ Module::class, [ HTTPMethod(s) ] ]
+*
+* It's possible to create recursive groups
+*/
+return [
+       '/' => [Module\Home::class, [R::GET]],
+
+       '/.well-known' => [
+               '/host-meta'      => [Module\WellKnown\HostMeta::class,     [R::GET]],
+               '/nodeinfo[/1.0]' => [Module\NodeInfo::class,               [R::GET]],
+               '/webfinger'      => [Module\Xrd::class,                    [R::GET]],
+               '/x-social-relay' => [Module\WellKnown\XSocialRelay::class, [R::GET]],
+       ],
+
+       '/2fa' => [
+               '[/]'       => [Module\TwoFactor\Verify::class,   [R::GET, R::POST]],
+               '/recovery' => [Module\TwoFactor\Recovery::class, [R::GET, R::POST]],
+       ],
+
+       '/admin'               => [
+               '[/]' => [Module\Admin\Summary::class, [R::GET]],
+
+               '/addons'         => [Module\Admin\Addons\Index::class,   [R::GET, R::POST]],
+               '/addons/{addon}' => [Module\Admin\Addons\Details::class, [R::GET, R::POST]],
+
+
+               '/blocklist/contact' => [Module\Admin\Blocklist\Contact::class, [R::GET, R::POST]],
+               '/blocklist/server'  => [Module\Admin\Blocklist\Server::class,  [R::GET, R::POST]],
+
+               '/dbsync[/check]'           => [Module\Admin\DBSync::class, [R::GET]],
+               '/dbsync/{update:\d+}'      => [Module\Admin\DBSync::class, [R::GET]],
+               '/dbsync/mark/{update:\d+}' => [Module\Admin\DBSync::class, [R::GET]],
+
+               '/features'   => [Module\Admin\Features::class,   [R::GET, R::POST]],
+               '/federation' => [Module\Admin\Federation::class, [R::GET]],
+
+               '/item/delete'          => [Module\Admin\Item\Delete::class, [R::GET, R::POST]],
+               '/item/source[/{guid}]' => [Module\Admin\Item\Source::class, [R::GET, R::POST]],
+
+               '/logs/view' => [Module\Admin\Logs\View::class,     [R::GET]],
+               '/logs'      => [Module\Admin\Logs\Settings::class, [R::GET, R::POST]],
+
+               '/phpinfo' => [Module\Admin\PhpInfo::class, [R::GET]],
+
+               '/queue[/deferred]' => [Module\Admin\Queue::class, [R::GET]],
+
+               '/site' => [Module\Admin\Site::class, [R::GET, R::POST]],
+
+               '/themes'               => [Module\Admin\Themes\Index::class,   [R::GET, R::POST]],
+               '/themes/{theme}'       => [Module\Admin\Themes\Details::class, [R::GET, R::POST]],
+               '/themes/{theme}/embed' => [Module\Admin\Themes\Embed::class,   [R::GET, R::POST]],
+
+               '/tos' => [Module\Admin\Tos::class, [R::GET, R::POST]],
+
+               '/users[/{action}/{uid}]' => [Module\Admin\Users::class, [R::GET, R::POST]],
+       ],
+       '/amcd'                => [Module\AccountManagementControlDocument::class, [R::GET]],
+       '/acctlink'            => [Module\Acctlink::class,     [R::GET]],
+       '/allfriends/{id:\d+}' => [Module\AllFriends::class,   [R::GET]],
+       '/apps'                => [Module\Apps::class,         [R::GET]],
+       '/attach/{item:\d+}'   => [Module\Attach::class,       [R::GET]],
+       '/babel'               => [Module\Debug\Babel::class,  [R::GET, R::POST]],
+       '/bookmarklet'         => [Module\Bookmarklet::class,  [R::GET]],
+       '/compose[/{type}]'    => [Module\Item\Compose::class, [R::GET, R::POST]],
+
+       '/contact'   => [
+               '[/]'                     => [Module\Contact::class,           [R::GET]],
+               '/{id:\d+}[/]'            => [Module\Contact::class,           [R::GET, R::POST]],
+               '/{id:\d+}/archive'       => [Module\Contact::class,           [R::GET]],
+               '/{id:\d+}/block'         => [Module\Contact::class,           [R::GET]],
+               '/{id:\d+}/conversations' => [Module\Contact::class,           [R::GET]],
+               '/{id:\d+}/drop'          => [Module\Contact::class,           [R::GET]],
+               '/{id:\d+}/ignore'        => [Module\Contact::class,           [R::GET]],
+               '/{id:\d+}/posts'         => [Module\Contact::class,           [R::GET]],
+               '/{id:\d+}/update'        => [Module\Contact::class,           [R::GET]],
+               '/{id:\d+}/updateprofile' => [Module\Contact::class,           [R::GET]],
+               '/archived'               => [Module\Contact::class,           [R::GET]],
+               '/batch'                  => [Module\Contact::class,           [R::GET, R::POST]],
+               '/pending'                => [Module\Contact::class,           [R::GET]],
+               '/blocked'                => [Module\Contact::class,           [R::GET]],
+               '/hidden'                 => [Module\Contact::class,           [R::GET]],
+               '/ignored'                => [Module\Contact::class,           [R::GET]],
+               '/hovercard'              => [Module\Contact\Hovercard::class, [R::GET]],
+       ],
+
+       '/credits'   => [Module\Credits::class,          [R::GET]],
+       '/delegation'=> [Module\Delegation::class,       [R::GET, R::POST]],
+       '/dirfind'   => [Module\Search\Directory::class, [R::GET]],
+       '/directory' => [Module\Directory::class,        [R::GET]],
+
+       '/feed'     => [
+               '/{nickname}'          => [Module\Feed::class, [R::GET]],
+               '/{nickname}/posts'    => [Module\Feed::class, [R::GET]],
+               '/{nickname}/comments' => [Module\Feed::class, [R::GET]],
+               '/{nickname}/replies'  => [Module\Feed::class, [R::GET]],
+               '/{nickname}/activity' => [Module\Feed::class, [R::GET]],
+       ],
+       '/feedtest' => [Module\Debug\Feed::class, [R::GET]],
+
+       '/fetch'             => [
+               '/post/{guid}'           => [Module\Diaspora\Fetch::class, [R::GET]],
+               '/status_message/{guid}' => [Module\Diaspora\Fetch::class, [R::GET]],
+               '/reshare/{guid}'        => [Module\Diaspora\Fetch::class, [R::GET]],
+       ],
+       '/filer[/{id:\d+}]'  => [Module\Filer\SaveTag::class,   [R::GET]],
+       '/filerm/{id:\d+}'   => [Module\Filer\RemoveTag::class, [R::GET]],
+       '/follow_confirm'    => [Module\FollowConfirm::class,   [R::GET, R::POST]],
+       '/followers/{owner}' => [Module\Followers::class,       [R::GET]],
+       '/following/{owner}' => [Module\Following::class,       [R::GET]],
+       '/friendica[/json]'  => [Module\Friendica::class,       [R::GET]],
+
+       '/group'              => [
+               '[/]'                        => [Module\Group::class, [R::GET, R::POST]],
+               '/{group:\d+}'               => [Module\Group::class, [R::GET, R::POST]],
+               '/none'                      => [Module\Group::class, [R::GET, R::POST]],
+               '/new'                       => [Module\Group::class, [R::GET, R::POST]],
+               '/drop/{group:\d+}'          => [Module\Group::class, [R::GET, R::POST]],
+               '/{group:\d+}/{contact:\d+}' => [Module\Group::class, [R::GET, R::POST]],
+
+               '/{group:\d+}/add/{contact:\d+}'    => [Module\Group::class, [R::GET, R::POST]],
+               '/{group:\d+}/remove/{contact:\d+}' => [Module\Group::class, [R::GET, R::POST]],
+       ],
+       '/hashtag'            => [Module\Hashtag::class,      [R::GET]],
+       '/home'               => [Module\Home::class,         [R::GET]],
+       '/help[/{doc:.+}]'    => [Module\Help::class,         [R::GET]],
+       '/inbox[/{nickname}]' => [Module\Inbox::class,        [R::GET, R::POST]],
+       '/invite'             => [Module\Invite::class,       [R::GET, R::POST]],
+
+       '/install'         => [
+               '[/]'                    => [Module\Install::class, [R::GET, R::POST]],
+               '/testrewrite'           => [Module\Install::class, [R::GET]],
+       ],
+
+       '/item'            => [
+               '/ignore/{id}' => [Module\Item\Ignore::class, [R::GET]],
+       ],
+
+       '/like/{item:\d+}' => [Module\Like::class,            [R::GET]],
+       '/localtime'       => [Module\Debug\Localtime::class, [R::GET, R::POST]],
+       '/login'           => [Module\Login::class,           [R::GET, R::POST]],
+       '/logout'          => [Module\Logout::class,          [R::GET, R::POST]],
+       '/magic'           => [Module\Magic::class,           [R::GET]],
+       '/maintenance'     => [Module\Maintenance::class,     [R::GET]],
+       '/manifest'        => [Module\Manifest::class,        [R::GET]],
+       '/modexp/{nick}'   => [Module\PublicRSAKey::class,    [R::GET]],
+       '/newmember'       => [Module\Welcome::class,         [R::GET]],
+       '/nodeinfo/1.0'    => [Module\NodeInfo::class,        [R::GET]],
+       '/nogroup'         => [Module\Group::class,           [R::GET]],
+
+       '/notify'         => [
+               '[/]'            => [Module\Notifications\Notify::class, [R::GET]],
+               '/view/{id:\d+}' => [Module\Notifications\Notify::class, [R::GET]],
+               '/mark/all'      => [Module\Notifications\Notify::class, [R::GET]],
+       ],
+       '/objects/{guid}' => [Module\Objects::class, [R::GET]],
+
+       '/oembed'         => [
+               '/b2h'    => [Module\Oembed::class, [R::GET]],
+               '/h2b'    => [Module\Oembed::class, [R::GET]],
+               '/{hash}' => [Module\Oembed::class, [R::GET]],
+       ],
+       '/outbox/{owner}' => [Module\Outbox::class,     [R::GET]],
+       '/owa'            => [Module\Owa::class,        [R::GET]],
+       '/opensearch'     => [Module\OpenSearch::class, [R::GET]],
+
+       '/photo' => [
+               '/{name}'                    => [Module\Photo::class, [R::GET]],
+               '/{type}/{name}'             => [Module\Photo::class, [R::GET]],
+               '/{type}/{customize}/{name}' => [Module\Photo::class, [R::GET]],
+       ],
+
+       '/pinned/{item:\d+}' => [Module\Pinned::class,       [R::GET]],
+       '/pretheme'          => [Module\ThemeDetails::class, [R::GET]],
+       '/probe'             => [Module\Debug\Probe::class,  [R::GET]],
+
+       '/profile' => [
+               '/{nickname}'                                                 => [Module\Profile::class,          [R::GET]],
+               '/{nickname}/{to:\d{4}-\d{2}-\d{2}}/{from:\d{4}-\d{2}-\d{2}}' => [Module\Profile::class,          [R::GET]],
+               '/{nickname}/contacts[/{type}]'                               => [Module\Profile\Contacts::class, [R::GET]],
+               '/{profile:\d+}/view'                                         => [Module\Profile::class,          [R::GET]],
+       ],
+
+       '/proxy' => [
+               '[/]'                  => [Module\Proxy::class, [R::GET]],
+               '/{url}'               => [Module\Proxy::class, [R::GET]],
+               '/{sub1}/{url}'        => [Module\Proxy::class, [R::GET]],
+               '/{sub1}/{sub2}/{url}' => [Module\Proxy::class, [R::GET]],
+       ],
+
+       '/search' => [
+               '[/]'                  => [Module\Search\Index::class, [R::GET]],
+               '/acl'                 => [Module\Search\Acl::class,   [R::GET, R::POST]],
+               '/saved/add'           => [Module\Search\Saved::class, [R::GET]],
+               '/saved/remove'        => [Module\Search\Saved::class, [R::GET]],
+       ],
+
+       '/receive' => [
+               '/public'       => [Module\Diaspora\Receive::class, [R::POST]],
+               '/users/{guid}' => [Module\Diaspora\Receive::class, [R::POST]],
+       ],
+
+       '/settings' => [
+               '/2fa' => [
+                       '[/]'           => [Module\Settings\TwoFactor\Index::class,       [R::GET, R::POST]],
+                       '/recovery'     => [Module\Settings\TwoFactor\Recovery::class,    [R::GET, R::POST]],
+                       '/app_specific' => [Module\Settings\TwoFactor\AppSpecific::class, [R::GET, R::POST]],
+                       '/verify'       => [Module\Settings\TwoFactor\Verify::class,      [R::GET, R::POST]],
+               ],
+               '/delegation[/{action}/{user_id}]' => [Module\Settings\Delegation::class,       [R::GET, R::POST]],
+               '/userexport[/{action}]' => [Module\Settings\UserExport::class,             [R::GET, R::POST]],
+       ],
+
+       '/randprof'                      => [Module\RandomProfile::class,         [R::GET]],
+       '/register'                      => [Module\Register::class,              [R::GET, R::POST]],
+       '/robots.txt'                    => [Module\RobotsTxt::class,             [R::GET]],
+       '/rsd.xml'                       => [Module\ReallySimpleDiscovery::class, [R::GET]],
+       '/smilies[/json]'                => [Module\Smilies::class,               [R::GET]],
+       '/statistics.json'               => [Module\Statistics::class,            [R::GET]],
+       '/starred/{item:\d+}'            => [Module\Starred::class,               [R::GET]],
+       '/toggle_mobile'                 => [Module\ToggleMobile::class,          [R::GET]],
+       '/tos'                           => [Module\Tos::class,                   [R::GET]],
+       '/view/theme/{theme}/style.pcss' => [Module\Theme::class,                 [R::GET]],
+       '/viewsrc/{item:\d+}'            => [Module\Debug\ItemBody::class,        [R::GET]],
+       '/webfinger'                     => [Module\Debug\WebFinger::class,       [R::GET]],
+       '/xrd'                           => [Module\Xrd::class,                   [R::GET]],
+];