]> git.mxchange.org Git - friendica.git/blobdiff - database.sql
Improved basepath detection for Magic Auth
[friendica.git] / database.sql
index 2ae33689c19ca53cd75d0b3d3a5bd2cc0774ddc6..2528b0145e0204e2dccdb71357e47611cdb0bbdc 100644 (file)
@@ -1,6 +1,6 @@
 -- ------------------------------------------
--- Friendica 2023.03-dev (Giant Rhubarb)
--- DB_UPDATE_VERSION 1505
+-- Friendica 2023.09-dev (Giant Rhubarb)
+-- DB_UPDATE_VERSION 1520
 -- ------------------------------------------
 
 
@@ -34,6 +34,7 @@ CREATE TABLE IF NOT EXISTS `gserver` (
        `last_poco_query` datetime DEFAULT '0001-01-01 00:00:00' COMMENT '',
        `last_contact` datetime DEFAULT '0001-01-01 00:00:00' COMMENT 'Last successful connection request',
        `last_failure` datetime DEFAULT '0001-01-01 00:00:00' COMMENT 'Last failed connection request',
+       `blocked` boolean COMMENT 'Server is blocked',
        `failed` boolean COMMENT 'Connection failed',
        `next_contact` datetime DEFAULT '0001-01-01 00:00:00' COMMENT 'Next connection request',
         PRIMARY KEY(`id`),
@@ -70,7 +71,7 @@ CREATE TABLE IF NOT EXISTS `user` (
        `verified` boolean NOT NULL DEFAULT '0' COMMENT 'user is verified through email',
        `blocked` boolean NOT NULL DEFAULT '0' COMMENT '1 for user is blocked',
        `blockwall` boolean NOT NULL DEFAULT '0' COMMENT 'Prohibit contacts to post to the profile page of the user',
-       `hidewall` boolean NOT NULL DEFAULT '0' COMMENT 'Hide profile details from unkown viewers',
+       `hidewall` boolean NOT NULL DEFAULT '0' COMMENT 'Hide profile details from unknown viewers',
        `blocktags` boolean NOT NULL DEFAULT '0' COMMENT 'Prohibit contacts to tag the post of this user',
        `unkmail` boolean NOT NULL DEFAULT '0' COMMENT 'Permit unknown people to send private mails to this user',
        `cntunkmail` int unsigned NOT NULL DEFAULT 10 COMMENT '',
@@ -189,7 +190,7 @@ CREATE TABLE IF NOT EXISTS `contact` (
        `confirm` varbinary(383) COMMENT '',
        `poco` varbinary(383) COMMENT '',
        `writable` boolean NOT NULL DEFAULT '0' COMMENT '',
-       `forum` boolean NOT NULL DEFAULT '0' COMMENT 'contact is a forum. Deprecated, use \'contact-type\' = \'community\' and \'manually-approve\' = false instead',
+       `forum` boolean NOT NULL DEFAULT '0' COMMENT 'contact is a group. Deprecated, use \'contact-type\' = \'community\' and \'manually-approve\' = false instead',
        `prv` boolean NOT NULL DEFAULT '0' COMMENT 'contact is a private group. Deprecated, use \'contact-type\' = \'community\' and \'manually-approve\' = true instead',
        `bdyear` varchar(4) NOT NULL DEFAULT '' COMMENT '',
        `site-pubkey` text COMMENT 'Deprecated',
@@ -251,9 +252,9 @@ CREATE TABLE IF NOT EXISTS `permissionset` (
        `id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
        `uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'Owner id of this permission set',
        `allow_cid` mediumtext COMMENT 'Access Control - list of allowed contact.id \'<19><78>\'',
-       `allow_gid` mediumtext COMMENT 'Access Control - list of allowed groups',
+       `allow_gid` mediumtext COMMENT 'Access Control - list of allowed circles',
        `deny_cid` mediumtext COMMENT 'Access Control - list of denied contact.id',
-       `deny_gid` mediumtext COMMENT 'Access Control - list of denied groups',
+       `deny_gid` mediumtext COMMENT 'Access Control - list of denied circles',
         PRIMARY KEY(`id`),
         INDEX `uid_allow_cid_allow_gid_deny_cid_deny_gid` (`uid`,`allow_cid`(50),`allow_gid`(30),`deny_cid`(50),`deny_gid`(30)),
        FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON UPDATE RESTRICT ON DELETE CASCADE
@@ -339,22 +340,6 @@ CREATE TABLE IF NOT EXISTS `account-user` (
        FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON UPDATE RESTRICT ON DELETE CASCADE
 ) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Remote and local accounts';
 
---
--- TABLE addon
---
-CREATE TABLE IF NOT EXISTS `addon` (
-       `id` int unsigned NOT NULL auto_increment COMMENT '',
-       `name` varchar(50) NOT NULL DEFAULT '' COMMENT 'addon base (file)name',
-       `version` varchar(50) NOT NULL DEFAULT '' COMMENT 'currently unused',
-       `installed` boolean NOT NULL DEFAULT '0' COMMENT 'currently always 1',
-       `hidden` boolean NOT NULL DEFAULT '0' COMMENT 'currently unused',
-       `timestamp` int unsigned NOT NULL DEFAULT 0 COMMENT 'file timestamp to check for reloads',
-       `plugin_admin` boolean NOT NULL DEFAULT '0' COMMENT '1 = has admin config, 0 = has no admin config',
-        PRIMARY KEY(`id`),
-        INDEX `installed_name` (`installed`,`name`),
-        UNIQUE INDEX `name` (`name`)
-) DEFAULT COLLATE utf8mb4_general_ci COMMENT='registered addons';
-
 --
 -- TABLE apcontact
 --
@@ -472,9 +457,9 @@ CREATE TABLE IF NOT EXISTS `attach` (
        `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'creation time',
        `edited` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'last edit time',
        `allow_cid` mediumtext COMMENT 'Access Control - list of allowed contact.id \'<19><78>',
-       `allow_gid` mediumtext COMMENT 'Access Control - list of allowed groups',
+       `allow_gid` mediumtext COMMENT 'Access Control - list of allowed circles',
        `deny_cid` mediumtext COMMENT 'Access Control - list of denied contact.id',
-       `deny_gid` mediumtext COMMENT 'Access Control - list of denied groups',
+       `deny_gid` mediumtext COMMENT 'Access Control - list of denied circles',
        `backend-class` tinytext COMMENT 'Storage backend class',
        `backend-ref` text COMMENT 'Storage backend data reference',
         PRIMARY KEY(`id`),
@@ -499,8 +484,8 @@ CREATE TABLE IF NOT EXISTS `cache` (
 --
 CREATE TABLE IF NOT EXISTS `config` (
        `id` int unsigned NOT NULL auto_increment COMMENT '',
-       `cat` varbinary(50) NOT NULL DEFAULT '' COMMENT '',
-       `k` varbinary(50) NOT NULL DEFAULT '' COMMENT '',
+       `cat` varbinary(50) NOT NULL DEFAULT '' COMMENT 'The category of the entry',
+       `k` varbinary(50) NOT NULL DEFAULT '' COMMENT 'The key of the entry',
        `v` mediumtext COMMENT '',
         PRIMARY KEY(`id`),
         UNIQUE INDEX `cat_k` (`cat`,`k`)
@@ -579,6 +564,27 @@ CREATE TABLE IF NOT EXISTS `delayed-post` (
        FOREIGN KEY (`wid`) REFERENCES `workerqueue` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE
 ) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Posts that are about to be distributed at a later time';
 
+--
+-- TABLE delivery-queue
+--
+CREATE TABLE IF NOT EXISTS `delivery-queue` (
+       `gsid` int unsigned NOT NULL COMMENT 'Target server',
+       `uri-id` int unsigned NOT NULL COMMENT 'Delivered post',
+       `created` datetime COMMENT '',
+       `command` varbinary(32) COMMENT '',
+       `cid` int unsigned COMMENT 'Target contact',
+       `uid` mediumint unsigned COMMENT 'Delivering user',
+       `failed` tinyint DEFAULT 0 COMMENT 'Number of times the delivery has failed',
+        PRIMARY KEY(`uri-id`,`gsid`),
+        INDEX `gsid_created` (`gsid`,`created`),
+        INDEX `uid` (`uid`),
+        INDEX `cid` (`cid`),
+       FOREIGN KEY (`gsid`) REFERENCES `gserver` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT,
+       FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
+       FOREIGN KEY (`cid`) REFERENCES `contact` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
+       FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON UPDATE RESTRICT ON DELETE CASCADE
+) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Delivery data for posts for the batch processing';
+
 --
 -- TABLE diaspora-contact
 --
@@ -602,7 +608,7 @@ CREATE TABLE IF NOT EXISTS `diaspora-contact` (
        `gsid` int unsigned COMMENT 'Global Server ID',
        `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
        `updated` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
-       `interacting_count` int unsigned DEFAULT 0 COMMENT 'Number of contacts this contact interactes with',
+       `interacting_count` int unsigned DEFAULT 0 COMMENT 'Number of contacts this contact interacts with',
        `interacted_count` int unsigned DEFAULT 0 COMMENT 'Number of contacts that interacted with this contact',
        `post_count` int unsigned DEFAULT 0 COMMENT 'Number of posts and comments',
         PRIMARY KEY(`uri-id`),
@@ -656,9 +662,9 @@ CREATE TABLE IF NOT EXISTS `event` (
        `nofinish` boolean NOT NULL DEFAULT '0' COMMENT 'if event does have no end this is 1',
        `ignore` boolean NOT NULL DEFAULT '0' COMMENT '0 or 1',
        `allow_cid` mediumtext COMMENT 'Access Control - list of allowed contact.id \'<19><78>\'',
-       `allow_gid` mediumtext COMMENT 'Access Control - list of allowed groups',
+       `allow_gid` mediumtext COMMENT 'Access Control - list of allowed circles',
        `deny_cid` mediumtext COMMENT 'Access Control - list of denied contact.id',
-       `deny_gid` mediumtext COMMENT 'Access Control - list of denied groups',
+       `deny_gid` mediumtext COMMENT 'Access Control - list of denied circles',
         PRIMARY KEY(`id`),
         INDEX `uid_start` (`uid`,`start`),
         INDEX `cid` (`cid`),
@@ -710,29 +716,29 @@ CREATE TABLE IF NOT EXISTS `group` (
        `id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
        `uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'Owner User id',
        `visible` boolean NOT NULL DEFAULT '0' COMMENT '1 indicates the member list is not private',
-       `deleted` boolean NOT NULL DEFAULT '0' COMMENT '1 indicates the group has been deleted',
-       `cid` int unsigned COMMENT 'Contact id of forum. When this field is filled then the members are synced automatically.',
-       `name` varchar(255) NOT NULL DEFAULT '' COMMENT 'human readable name of group',
+       `deleted` boolean NOT NULL DEFAULT '0' COMMENT '1 indicates the circle has been deleted',
+       `cid` int unsigned COMMENT 'Contact id of group. When this field is filled then the members are synced automatically.',
+       `name` varchar(255) NOT NULL DEFAULT '' COMMENT 'human readable name of circle',
         PRIMARY KEY(`id`),
         INDEX `uid` (`uid`),
         INDEX `cid` (`cid`),
        FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON UPDATE RESTRICT ON DELETE CASCADE,
        FOREIGN KEY (`cid`) REFERENCES `contact` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE
-) DEFAULT COLLATE utf8mb4_general_ci COMMENT='privacy groups, group info';
+) DEFAULT COLLATE utf8mb4_general_ci COMMENT='privacy circles, circle info';
 
 --
 -- TABLE group_member
 --
 CREATE TABLE IF NOT EXISTS `group_member` (
        `id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
-       `gid` int unsigned NOT NULL DEFAULT 0 COMMENT 'groups.id of the associated group',
-       `contact-id` int unsigned NOT NULL DEFAULT 0 COMMENT 'contact.id of the member assigned to the associated group',
+       `gid` int unsigned NOT NULL DEFAULT 0 COMMENT 'group.id of the associated circle',
+       `contact-id` int unsigned NOT NULL DEFAULT 0 COMMENT 'contact.id of the member assigned to the associated circle',
         PRIMARY KEY(`id`),
         INDEX `contactid` (`contact-id`),
         UNIQUE INDEX `gid_contactid` (`gid`,`contact-id`),
        FOREIGN KEY (`gid`) REFERENCES `group` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
        FOREIGN KEY (`contact-id`) REFERENCES `contact` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE
-) DEFAULT COLLATE utf8mb4_general_ci COMMENT='privacy groups, member info';
+) DEFAULT COLLATE utf8mb4_general_ci COMMENT='privacy circles, member info';
 
 --
 -- TABLE gserver-tag
@@ -803,6 +809,7 @@ CREATE TABLE IF NOT EXISTS `inbox-entry-receiver` (
 CREATE TABLE IF NOT EXISTS `inbox-status` (
        `url` varbinary(383) NOT NULL COMMENT 'URL of the inbox',
        `uri-id` int unsigned COMMENT 'Item-uri id of inbox url',
+       `gsid` int unsigned COMMENT 'ID of the related server',
        `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Creation date of this entry',
        `success` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Date of the last successful delivery',
        `failure` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Date of the last failed delivery',
@@ -811,7 +818,9 @@ CREATE TABLE IF NOT EXISTS `inbox-status` (
        `shared` boolean NOT NULL DEFAULT '0' COMMENT 'Is it a shared inbox?',
         PRIMARY KEY(`url`),
         INDEX `uri-id` (`uri-id`),
-       FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE
+        INDEX `gsid` (`gsid`),
+       FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
+       FOREIGN KEY (`gsid`) REFERENCES `gserver` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT
 ) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Status of ActivityPub inboxes';
 
 --
@@ -871,7 +880,7 @@ CREATE TABLE IF NOT EXISTS `mail` (
        `guid` varbinary(255) NOT NULL DEFAULT '' COMMENT 'A unique identifier for this private message',
        `from-name` varchar(255) NOT NULL DEFAULT '' COMMENT 'name of the sender',
        `from-photo` varbinary(383) NOT NULL DEFAULT '' COMMENT 'contact photo link of the sender',
-       `from-url` varbinary(383) NOT NULL DEFAULT '' COMMENT 'profile linke of the sender',
+       `from-url` varbinary(383) NOT NULL DEFAULT '' COMMENT 'profile link of the sender',
        `contact-id` varbinary(255) COMMENT 'contact.id',
        `author-id` int unsigned COMMENT 'Link to the contact table with uid=0 of the author of the mail',
        `convid` int unsigned COMMENT 'conv.id',
@@ -1105,9 +1114,9 @@ CREATE TABLE IF NOT EXISTS `photo` (
        `scale` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '',
        `profile` boolean NOT NULL DEFAULT '0' COMMENT '',
        `allow_cid` mediumtext COMMENT 'Access Control - list of allowed contact.id \'<19><78>\'',
-       `allow_gid` mediumtext COMMENT 'Access Control - list of allowed groups',
+       `allow_gid` mediumtext COMMENT 'Access Control - list of allowed circles',
        `deny_cid` mediumtext COMMENT 'Access Control - list of denied contact.id',
-       `deny_gid` mediumtext COMMENT 'Access Control - list of denied groups',
+       `deny_gid` mediumtext COMMENT 'Access Control - list of denied circles',
        `accessible` boolean NOT NULL DEFAULT '0' COMMENT 'Make photo publicly accessible, ignoring permissions',
        `backend-class` tinytext COMMENT 'Storage backend class',
        `backend-ref` text COMMENT 'Storage backend data reference',
@@ -1561,7 +1570,7 @@ CREATE TABLE IF NOT EXISTS `post-user-notification` (
 --
 CREATE TABLE IF NOT EXISTS `process` (
        `pid` int unsigned NOT NULL COMMENT 'The ID of the process',
-       `hostname` varchar(32) NOT NULL COMMENT 'The name of the host the process is ran on',
+       `hostname` varchar(255) NOT NULL COMMENT 'The name of the host the process is ran on',
        `command` varbinary(32) NOT NULL DEFAULT '' COMMENT '',
        `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
         PRIMARY KEY(`pid`,`hostname`),
@@ -1873,7 +1882,7 @@ CREATE VIEW `post-user-view` AS SELECT
        `post-user`.`id` AS `id`,
        `post-user`.`id` AS `post-user-id`,
        `post-user`.`uid` AS `uid`,
-       `parent-post`.`id` AS `parent`,
+       `post-thread-user`.`post-user-id` AS `parent`,
        `item-uri`.`uri` AS `uri`,
        `post-user`.`uri-id` AS `uri-id`,
        `parent-item-uri`.`uri` AS `parent-uri`,
@@ -2016,14 +2025,14 @@ CREATE VIEW `post-user-view` AS SELECT
        EXISTS(SELECT `id` FROM `post-media` WHERE `post-media`.`uri-id` = `post-user`.`uri-id`) AS `has-media`,
        `diaspora-interaction`.`interaction` AS `signed_text`,
        `parent-item-uri`.`guid` AS `parent-guid`,
-       `parent-post`.`network` AS `parent-network`,
-       `parent-post`.`author-id` AS `parent-author-id`,
+       `post-thread-user`.`network` AS `parent-network`,
+       `post-thread-user`.`author-id` AS `parent-author-id`,
        `parent-post-author`.`url` AS `parent-author-link`,
        `parent-post-author`.`name` AS `parent-author-name`,
        `parent-post-author`.`nick` AS `parent-author-nick`,
        `parent-post-author`.`network` AS `parent-author-network`
        FROM `post-user`
-                       STRAIGHT_JOIN `post-thread-user` ON `post-thread-user`.`uri-id` = `post-user`.`parent-uri-id` AND `post-thread-user`.`uid` = `post-user`.`uid`
+                       INNER JOIN `post-thread-user` ON `post-thread-user`.`uri-id` = `post-user`.`parent-uri-id` AND `post-thread-user`.`uid` = `post-user`.`uid`
                        STRAIGHT_JOIN `contact` ON `contact`.`id` = `post-user`.`contact-id`
                        STRAIGHT_JOIN `contact` AS `author` ON `author`.`id` = `post-user`.`author-id`
                        STRAIGHT_JOIN `contact` AS `owner` ON `owner`.`id` = `post-user`.`owner-id`
@@ -2041,8 +2050,7 @@ CREATE VIEW `post-user-view` AS SELECT
                        LEFT JOIN `post-delivery-data` ON `post-delivery-data`.`uri-id` = `post-user`.`uri-id` AND `post-user`.`origin`
                        LEFT JOIN `post-question` ON `post-question`.`uri-id` = `post-user`.`uri-id`
                        LEFT JOIN `permissionset` ON `permissionset`.`id` = `post-user`.`psid`
-                       LEFT JOIN `post-user` AS `parent-post` ON `parent-post`.`uri-id` = `post-user`.`parent-uri-id` AND `parent-post`.`uid` = `post-user`.`uid`
-                       LEFT JOIN `contact` AS `parent-post-author` ON `parent-post-author`.`id` = `parent-post`.`author-id`;
+                       LEFT JOIN `contact` AS `parent-post-author` ON `parent-post-author`.`id` = `post-thread-user`.`author-id`;
 
 --
 -- VIEW post-thread-user-view
@@ -2052,7 +2060,7 @@ CREATE VIEW `post-thread-user-view` AS SELECT
        `post-user`.`id` AS `id`,
        `post-user`.`id` AS `post-user-id`,
        `post-thread-user`.`uid` AS `uid`,
-       `parent-post`.`id` AS `parent`,
+       `post-thread-user`.`post-user-id` AS `parent`,
        `item-uri`.`uri` AS `uri`,
        `post-thread-user`.`uri-id` AS `uri-id`,
        `parent-item-uri`.`uri` AS `parent-uri`,
@@ -2194,11 +2202,12 @@ CREATE VIEW `post-thread-user-view` AS SELECT
        EXISTS(SELECT `id` FROM `post-media` WHERE `post-media`.`uri-id` = `post-thread-user`.`uri-id`) AS `has-media`,
        `diaspora-interaction`.`interaction` AS `signed_text`,
        `parent-item-uri`.`guid` AS `parent-guid`,
-       `parent-post`.`network` AS `parent-network`,
-       `parent-post`.`author-id` AS `parent-author-id`,
-       `parent-post-author`.`url` AS `parent-author-link`,
-       `parent-post-author`.`name` AS `parent-author-name`,
-       `parent-post-author`.`network` AS `parent-author-network`
+       `post-thread-user`.`network` AS `parent-network`,
+       `post-thread-user`.`author-id` AS `parent-author-id`,
+       `author`.`url` AS `parent-author-link`,
+       `author`.`name` AS `parent-author-name`,
+       `author`.`nick` AS `parent-author-nick`,
+       `author`.`network` AS `parent-author-network`
        FROM `post-thread-user`
                        INNER JOIN `post-user` ON `post-user`.`id` = `post-thread-user`.`post-user-id`
                        STRAIGHT_JOIN `contact` ON `contact`.`id` = `post-thread-user`.`contact-id`
@@ -2217,9 +2226,7 @@ CREATE VIEW `post-thread-user-view` AS SELECT
                        LEFT JOIN `item-uri` AS `quote-item-uri` ON `quote-item-uri`.`id` = `post-content`.`quote-uri-id`
                        LEFT JOIN `post-delivery-data` ON `post-delivery-data`.`uri-id` = `post-thread-user`.`uri-id` AND `post-thread-user`.`origin`
                        LEFT JOIN `post-question` ON `post-question`.`uri-id` = `post-thread-user`.`uri-id`
-                       LEFT JOIN `permissionset` ON `permissionset`.`id` = `post-thread-user`.`psid`
-                       LEFT JOIN `post-user` AS `parent-post` ON `parent-post`.`uri-id` = `post-user`.`parent-uri-id` AND `parent-post`.`uid` = `post-thread-user`.`uid`
-                       LEFT JOIN `contact` AS `parent-post-author` ON `parent-post-author`.`id` = `parent-post`.`author-id`;
+                       LEFT JOIN `permissionset` ON `permissionset`.`id` = `post-thread-user`.`psid`;
 
 --
 -- VIEW post-view
@@ -2338,10 +2345,11 @@ CREATE VIEW `post-view` AS SELECT
        EXISTS(SELECT `id` FROM `post-media` WHERE `post-media`.`uri-id` = `post`.`uri-id`) AS `has-media`,
        `diaspora-interaction`.`interaction` AS `signed_text`,
        `parent-item-uri`.`guid` AS `parent-guid`,
-       `parent-post`.`network` AS `parent-network`,
-       `parent-post`.`author-id` AS `parent-author-id`,
+       `post-thread`.`network` AS `parent-network`,
+       `post-thread`.`author-id` AS `parent-author-id`,
        `parent-post-author`.`url` AS `parent-author-link`,
        `parent-post-author`.`name` AS `parent-author-name`,
+       `parent-post-author`.`nick` AS `parent-author-nick`,
        `parent-post-author`.`network` AS `parent-author-network`
        FROM `post`
                        STRAIGHT_JOIN `post-thread` ON `post-thread`.`uri-id` = `post`.`parent-uri-id`
@@ -2358,8 +2366,7 @@ CREATE VIEW `post-view` AS SELECT
                        LEFT JOIN `post-content` ON `post-content`.`uri-id` = `post`.`uri-id`
                        LEFT JOIN `item-uri` AS `quote-item-uri` ON `quote-item-uri`.`id` = `post-content`.`quote-uri-id`
                        LEFT JOIN `post-question` ON `post-question`.`uri-id` = `post`.`uri-id`
-                       LEFT JOIN `post` AS `parent-post` ON `parent-post`.`uri-id` = `post`.`parent-uri-id`
-                       LEFT JOIN `contact` AS `parent-post-author` ON `parent-post-author`.`id` = `parent-post`.`author-id`;
+                       LEFT JOIN `contact` AS `parent-post-author` ON `parent-post-author`.`id` = `post-thread`.`author-id`;
 
 --
 -- VIEW post-thread-view
@@ -2480,11 +2487,12 @@ CREATE VIEW `post-thread-view` AS SELECT
        (SELECT COUNT(DISTINCT(`author-id`)) FROM `post` WHERE `parent-uri-id` = `post-thread`.`uri-id` AND `gravity` = 6) AS `total-actors`,
        `diaspora-interaction`.`interaction` AS `signed_text`,
        `parent-item-uri`.`guid` AS `parent-guid`,
-       `parent-post`.`network` AS `parent-network`,
-       `parent-post`.`author-id` AS `parent-author-id`,
-       `parent-post-author`.`url` AS `parent-author-link`,
-       `parent-post-author`.`name` AS `parent-author-name`,
-       `parent-post-author`.`network` AS `parent-author-network`
+       `post-thread`.`network` AS `parent-network`,
+       `post-thread`.`author-id` AS `parent-author-id`,
+       `author`.`url` AS `parent-author-link`,
+       `author`.`name` AS `parent-author-name`,
+       `author`.`nick` AS `parent-author-nick`,
+       `author`.`network` AS `parent-author-network`
        FROM `post-thread`
                        INNER JOIN `post` ON `post`.`uri-id` = `post-thread`.`uri-id`
                        STRAIGHT_JOIN `contact` AS `author` ON `author`.`id` = `post-thread`.`author-id`
@@ -2499,9 +2507,7 @@ CREATE VIEW `post-thread-view` AS SELECT
                        LEFT JOIN `diaspora-interaction` ON `diaspora-interaction`.`uri-id` = `post-thread`.`uri-id`
                        LEFT JOIN `post-content` ON `post-content`.`uri-id` = `post-thread`.`uri-id`
                        LEFT JOIN `item-uri` AS `quote-item-uri` ON `quote-item-uri`.`id` = `post-content`.`quote-uri-id`
-                       LEFT JOIN `post-question` ON `post-question`.`uri-id` = `post-thread`.`uri-id`
-                       LEFT JOIN `post` AS `parent-post` ON `parent-post`.`uri-id` = `post`.`parent-uri-id`
-                       LEFT JOIN `contact` AS `parent-post-author` ON `parent-post-author`.`id` = `parent-post`.`author-id`;
+                       LEFT JOIN `post-question` ON `post-question`.`uri-id` = `post-thread`.`uri-id`;
 
 --
 -- VIEW category-view
@@ -2578,7 +2584,7 @@ CREATE VIEW `tag-view` AS SELECT
 DROP VIEW IF EXISTS `network-item-view`;
 CREATE VIEW `network-item-view` AS SELECT 
        `post-user`.`uri-id` AS `uri-id`,
-       `parent-post`.`id` AS `parent`,
+       `post-thread-user`.`post-user-id` AS `parent`,
        `post-user`.`received` AS `received`,
        `post-thread-user`.`commented` AS `commented`,
        `post-user`.`created` AS `created`,
@@ -2591,12 +2597,11 @@ CREATE VIEW `network-item-view` AS SELECT
        `post-user`.`contact-id` AS `contact-id`,
        `ownercontact`.`contact-type` AS `contact-type`
        FROM `post-user`
-                       STRAIGHT_JOIN `post-thread-user` ON `post-thread-user`.`uri-id` = `post-user`.`parent-uri-id` AND `post-thread-user`.`uid` = `post-user`.`uid`                  
+                       INNER JOIN `post-thread-user` ON `post-thread-user`.`uri-id` = `post-user`.`parent-uri-id` AND `post-thread-user`.`uid` = `post-user`.`uid`                     
                        INNER JOIN `contact` ON `contact`.`id` = `post-thread-user`.`contact-id`
                        LEFT JOIN `user-contact` AS `author` ON `author`.`uid` = `post-thread-user`.`uid` AND `author`.`cid` = `post-thread-user`.`author-id`
                        LEFT JOIN `user-contact` AS `owner` ON `owner`.`uid` = `post-thread-user`.`uid` AND `owner`.`cid` = `post-thread-user`.`owner-id`
                        INNER JOIN `contact` AS `ownercontact` ON `ownercontact`.`id` = `post-thread-user`.`owner-id`
-                       LEFT JOIN `post-user` AS `parent-post` ON `parent-post`.`uri-id` = `post-user`.`parent-uri-id` AND `parent-post`.`uid` = `post-user`.`uid`
                        WHERE `post-user`.`visible` AND NOT `post-user`.`deleted`
                        AND (NOT `contact`.`readonly` AND NOT `contact`.`blocked` AND NOT `contact`.`pending`)
                        AND (`post-user`.`hidden` IS NULL OR NOT `post-user`.`hidden`)
@@ -2609,7 +2614,7 @@ CREATE VIEW `network-item-view` AS SELECT
 DROP VIEW IF EXISTS `network-thread-view`;
 CREATE VIEW `network-thread-view` AS SELECT 
        `post-thread-user`.`uri-id` AS `uri-id`,
-       `parent-post`.`id` AS `parent`,
+       `post-thread-user`.`post-user-id` AS `parent`,
        `post-thread-user`.`received` AS `received`,
        `post-thread-user`.`commented` AS `commented`,
        `post-thread-user`.`created` AS `created`,
@@ -2625,7 +2630,6 @@ CREATE VIEW `network-thread-view` AS SELECT
                        LEFT JOIN `user-contact` AS `author` ON `author`.`uid` = `post-thread-user`.`uid` AND `author`.`cid` = `post-thread-user`.`author-id`
                        LEFT JOIN `user-contact` AS `owner` ON `owner`.`uid` = `post-thread-user`.`uid` AND `owner`.`cid` = `post-thread-user`.`owner-id`
                        LEFT JOIN `contact` AS `ownercontact` ON `ownercontact`.`id` = `post-thread-user`.`owner-id`
-                       LEFT JOIN `post-user` AS `parent-post` ON `parent-post`.`uri-id` = `post-user`.`parent-uri-id` AND `parent-post`.`uid` = `post-user`.`uid`
                        WHERE `post-user`.`visible` AND NOT `post-user`.`deleted`
                        AND (NOT `contact`.`readonly` AND NOT `contact`.`blocked` AND NOT `contact`.`pending`)
                        AND (`post-thread-user`.`hidden` IS NULL OR NOT `post-thread-user`.`hidden`)
@@ -2840,7 +2844,9 @@ CREATE VIEW `account-view` AS SELECT
        `apcontact`.`statuses_count` AS `ap-statuses_count`,
        `gserver`.`site_name` AS `site_name`,
        `gserver`.`platform` AS `platform`,
-       `gserver`.`version` AS `version`
+       `gserver`.`version` AS `version`,
+       `gserver`.`blocked` AS `server-blocked`,
+       `gserver`.`failed` AS `server-failed`
        FROM `contact`
                        LEFT JOIN `item-uri` ON `item-uri`.`id` = `contact`.`uri-id`
                        LEFT JOIN `apcontact` ON `apcontact`.`uri-id` = `contact`.`uri-id`
@@ -2944,7 +2950,9 @@ CREATE VIEW `account-user-view` AS SELECT
        `apcontact`.`statuses_count` AS `ap-statuses_count`,
        `gserver`.`site_name` AS `site_name`,
        `gserver`.`platform` AS `platform`,
-       `gserver`.`version` AS `version`
+       `gserver`.`version` AS `version`,
+       `gserver`.`blocked` AS `server-blocked`,
+       `gserver`.`failed` AS `server-failed`
        FROM `contact` AS `ucontact`
                        INNER JOIN `contact` ON `contact`.`uri-id` = `ucontact`.`uri-id` AND `contact`.`uid` = 0
                        LEFT JOIN `item-uri` ON `item-uri`.`id` = `ucontact`.`uri-id`