Conversation/context is now stored
This commit is contained in:
parent
54cebf5a88
commit
7eb410bed7
11 changed files with 161 additions and 84 deletions
18
database.sql
18
database.sql
|
@ -1323,6 +1323,7 @@ CREATE TABLE IF NOT EXISTS `post-tag` (
|
||||||
--
|
--
|
||||||
CREATE TABLE IF NOT EXISTS `post-thread` (
|
CREATE TABLE IF NOT EXISTS `post-thread` (
|
||||||
`uri-id` int unsigned NOT NULL COMMENT 'Id of the item-uri table entry that contains the item uri',
|
`uri-id` int unsigned NOT NULL COMMENT 'Id of the item-uri table entry that contains the item uri',
|
||||||
|
`conversation-id` int unsigned COMMENT 'Id of the item-uri table entry that contains the conversation uri',
|
||||||
`owner-id` int unsigned NOT NULL DEFAULT 0 COMMENT 'Item owner',
|
`owner-id` int unsigned NOT NULL DEFAULT 0 COMMENT 'Item owner',
|
||||||
`author-id` int unsigned NOT NULL DEFAULT 0 COMMENT 'Item author',
|
`author-id` int unsigned NOT NULL DEFAULT 0 COMMENT 'Item author',
|
||||||
`causer-id` int unsigned COMMENT 'Link to the contact table with uid=0 of the contact that caused the item creation',
|
`causer-id` int unsigned COMMENT 'Link to the contact table with uid=0 of the contact that caused the item creation',
|
||||||
|
@ -1332,12 +1333,14 @@ CREATE TABLE IF NOT EXISTS `post-thread` (
|
||||||
`changed` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Date that something in the conversation changed, indicating clients should fetch the conversation again',
|
`changed` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Date that something in the conversation changed, indicating clients should fetch the conversation again',
|
||||||
`commented` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
|
`commented` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
|
||||||
PRIMARY KEY(`uri-id`),
|
PRIMARY KEY(`uri-id`),
|
||||||
|
INDEX `conversation-id` (`conversation-id`),
|
||||||
INDEX `owner-id` (`owner-id`),
|
INDEX `owner-id` (`owner-id`),
|
||||||
INDEX `author-id` (`author-id`),
|
INDEX `author-id` (`author-id`),
|
||||||
INDEX `causer-id` (`causer-id`),
|
INDEX `causer-id` (`causer-id`),
|
||||||
INDEX `received` (`received`),
|
INDEX `received` (`received`),
|
||||||
INDEX `commented` (`commented`),
|
INDEX `commented` (`commented`),
|
||||||
FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
|
FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
|
||||||
|
FOREIGN KEY (`conversation-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
|
||||||
FOREIGN KEY (`owner-id`) REFERENCES `contact` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT,
|
FOREIGN KEY (`owner-id`) REFERENCES `contact` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT,
|
||||||
FOREIGN KEY (`author-id`) REFERENCES `contact` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT,
|
FOREIGN KEY (`author-id`) REFERENCES `contact` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT,
|
||||||
FOREIGN KEY (`causer-id`) REFERENCES `contact` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT
|
FOREIGN KEY (`causer-id`) REFERENCES `contact` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT
|
||||||
|
@ -1416,6 +1419,7 @@ CREATE TABLE IF NOT EXISTS `post-user` (
|
||||||
--
|
--
|
||||||
CREATE TABLE IF NOT EXISTS `post-thread-user` (
|
CREATE TABLE IF NOT EXISTS `post-thread-user` (
|
||||||
`uri-id` int unsigned NOT NULL COMMENT 'Id of the item-uri table entry that contains the item uri',
|
`uri-id` int unsigned NOT NULL COMMENT 'Id of the item-uri table entry that contains the item uri',
|
||||||
|
`conversation-id` int unsigned COMMENT 'Id of the item-uri table entry that contains the conversation uri',
|
||||||
`owner-id` int unsigned NOT NULL DEFAULT 0 COMMENT 'Item owner',
|
`owner-id` int unsigned NOT NULL DEFAULT 0 COMMENT 'Item owner',
|
||||||
`author-id` int unsigned NOT NULL DEFAULT 0 COMMENT 'Item author',
|
`author-id` int unsigned NOT NULL DEFAULT 0 COMMENT 'Item author',
|
||||||
`causer-id` int unsigned COMMENT 'Link to the contact table with uid=0 of the contact that caused the item creation',
|
`causer-id` int unsigned COMMENT 'Link to the contact table with uid=0 of the contact that caused the item creation',
|
||||||
|
@ -1440,6 +1444,7 @@ CREATE TABLE IF NOT EXISTS `post-thread-user` (
|
||||||
`post-user-id` int unsigned COMMENT 'Id of the post-user table',
|
`post-user-id` int unsigned COMMENT 'Id of the post-user table',
|
||||||
PRIMARY KEY(`uid`,`uri-id`),
|
PRIMARY KEY(`uid`,`uri-id`),
|
||||||
INDEX `uri-id` (`uri-id`),
|
INDEX `uri-id` (`uri-id`),
|
||||||
|
INDEX `conversation-id` (`conversation-id`),
|
||||||
INDEX `owner-id` (`owner-id`),
|
INDEX `owner-id` (`owner-id`),
|
||||||
INDEX `author-id` (`author-id`),
|
INDEX `author-id` (`author-id`),
|
||||||
INDEX `causer-id` (`causer-id`),
|
INDEX `causer-id` (`causer-id`),
|
||||||
|
@ -1454,6 +1459,7 @@ CREATE TABLE IF NOT EXISTS `post-thread-user` (
|
||||||
INDEX `uid_starred` (`uid`,`starred`),
|
INDEX `uid_starred` (`uid`,`starred`),
|
||||||
INDEX `uid_mention` (`uid`,`mention`),
|
INDEX `uid_mention` (`uid`,`mention`),
|
||||||
FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
|
FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
|
||||||
|
FOREIGN KEY (`conversation-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
|
||||||
FOREIGN KEY (`owner-id`) REFERENCES `contact` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT,
|
FOREIGN KEY (`owner-id`) REFERENCES `contact` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT,
|
||||||
FOREIGN KEY (`author-id`) REFERENCES `contact` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT,
|
FOREIGN KEY (`author-id`) REFERENCES `contact` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT,
|
||||||
FOREIGN KEY (`causer-id`) REFERENCES `contact` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT,
|
FOREIGN KEY (`causer-id`) REFERENCES `contact` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT,
|
||||||
|
@ -1745,6 +1751,8 @@ CREATE VIEW `post-user-view` AS SELECT
|
||||||
`post-user`.`parent-uri-id` AS `parent-uri-id`,
|
`post-user`.`parent-uri-id` AS `parent-uri-id`,
|
||||||
`thr-parent-item-uri`.`uri` AS `thr-parent`,
|
`thr-parent-item-uri`.`uri` AS `thr-parent`,
|
||||||
`post-user`.`thr-parent-id` AS `thr-parent-id`,
|
`post-user`.`thr-parent-id` AS `thr-parent-id`,
|
||||||
|
`conversation-item-uri`.`uri` AS `conversation`,
|
||||||
|
`post-thread-user`.`conversation-id` AS `conversation-id`,
|
||||||
`item-uri`.`guid` AS `guid`,
|
`item-uri`.`guid` AS `guid`,
|
||||||
`post-user`.`wall` AS `wall`,
|
`post-user`.`wall` AS `wall`,
|
||||||
`post-user`.`gravity` AS `gravity`,
|
`post-user`.`gravity` AS `gravity`,
|
||||||
|
@ -1893,6 +1901,7 @@ CREATE VIEW `post-user-view` AS SELECT
|
||||||
LEFT JOIN `item-uri` ON `item-uri`.`id` = `post-user`.`uri-id`
|
LEFT JOIN `item-uri` ON `item-uri`.`id` = `post-user`.`uri-id`
|
||||||
LEFT JOIN `item-uri` AS `thr-parent-item-uri` ON `thr-parent-item-uri`.`id` = `post-user`.`thr-parent-id`
|
LEFT JOIN `item-uri` AS `thr-parent-item-uri` ON `thr-parent-item-uri`.`id` = `post-user`.`thr-parent-id`
|
||||||
LEFT JOIN `item-uri` AS `parent-item-uri` ON `parent-item-uri`.`id` = `post-user`.`parent-uri-id`
|
LEFT JOIN `item-uri` AS `parent-item-uri` ON `parent-item-uri`.`id` = `post-user`.`parent-uri-id`
|
||||||
|
LEFT JOIN `item-uri` AS `conversation-item-uri` ON `conversation-item-uri`.`id` = `post-thread-user`.`conversation-id`
|
||||||
LEFT JOIN `item-uri` AS `external-item-uri` ON `external-item-uri`.`id` = `post-user`.`external-id`
|
LEFT JOIN `item-uri` AS `external-item-uri` ON `external-item-uri`.`id` = `post-user`.`external-id`
|
||||||
LEFT JOIN `verb` ON `verb`.`id` = `post-user`.`vid`
|
LEFT JOIN `verb` ON `verb`.`id` = `post-user`.`vid`
|
||||||
LEFT JOIN `event` ON `event`.`id` = `post-user`.`event-id`
|
LEFT JOIN `event` ON `event`.`id` = `post-user`.`event-id`
|
||||||
|
@ -1919,6 +1928,8 @@ CREATE VIEW `post-thread-user-view` AS SELECT
|
||||||
`post-user`.`parent-uri-id` AS `parent-uri-id`,
|
`post-user`.`parent-uri-id` AS `parent-uri-id`,
|
||||||
`thr-parent-item-uri`.`uri` AS `thr-parent`,
|
`thr-parent-item-uri`.`uri` AS `thr-parent`,
|
||||||
`post-user`.`thr-parent-id` AS `thr-parent-id`,
|
`post-user`.`thr-parent-id` AS `thr-parent-id`,
|
||||||
|
`conversation-item-uri`.`uri` AS `conversation`,
|
||||||
|
`post-thread-user`.`conversation-id` AS `conversation-id`,
|
||||||
`item-uri`.`guid` AS `guid`,
|
`item-uri`.`guid` AS `guid`,
|
||||||
`post-thread-user`.`wall` AS `wall`,
|
`post-thread-user`.`wall` AS `wall`,
|
||||||
`post-user`.`gravity` AS `gravity`,
|
`post-user`.`gravity` AS `gravity`,
|
||||||
|
@ -2066,6 +2077,7 @@ CREATE VIEW `post-thread-user-view` AS SELECT
|
||||||
LEFT JOIN `item-uri` ON `item-uri`.`id` = `post-thread-user`.`uri-id`
|
LEFT JOIN `item-uri` ON `item-uri`.`id` = `post-thread-user`.`uri-id`
|
||||||
LEFT JOIN `item-uri` AS `thr-parent-item-uri` ON `thr-parent-item-uri`.`id` = `post-user`.`thr-parent-id`
|
LEFT JOIN `item-uri` AS `thr-parent-item-uri` ON `thr-parent-item-uri`.`id` = `post-user`.`thr-parent-id`
|
||||||
LEFT JOIN `item-uri` AS `parent-item-uri` ON `parent-item-uri`.`id` = `post-user`.`parent-uri-id`
|
LEFT JOIN `item-uri` AS `parent-item-uri` ON `parent-item-uri`.`id` = `post-user`.`parent-uri-id`
|
||||||
|
LEFT JOIN `item-uri` AS `conversation-item-uri` ON `conversation-item-uri`.`id` = `post-thread-user`.`conversation-id`
|
||||||
LEFT JOIN `item-uri` AS `external-item-uri` ON `external-item-uri`.`id` = `post-user`.`external-id`
|
LEFT JOIN `item-uri` AS `external-item-uri` ON `external-item-uri`.`id` = `post-user`.`external-id`
|
||||||
LEFT JOIN `verb` ON `verb`.`id` = `post-user`.`vid`
|
LEFT JOIN `verb` ON `verb`.`id` = `post-user`.`vid`
|
||||||
LEFT JOIN `event` ON `event`.`id` = `post-user`.`event-id`
|
LEFT JOIN `event` ON `event`.`id` = `post-user`.`event-id`
|
||||||
|
@ -2088,6 +2100,8 @@ CREATE VIEW `post-view` AS SELECT
|
||||||
`post`.`parent-uri-id` AS `parent-uri-id`,
|
`post`.`parent-uri-id` AS `parent-uri-id`,
|
||||||
`thr-parent-item-uri`.`uri` AS `thr-parent`,
|
`thr-parent-item-uri`.`uri` AS `thr-parent`,
|
||||||
`post`.`thr-parent-id` AS `thr-parent-id`,
|
`post`.`thr-parent-id` AS `thr-parent-id`,
|
||||||
|
`conversation-item-uri`.`uri` AS `conversation`,
|
||||||
|
`post-thread`.`conversation-id` AS `conversation-id`,
|
||||||
`item-uri`.`guid` AS `guid`,
|
`item-uri`.`guid` AS `guid`,
|
||||||
`post`.`gravity` AS `gravity`,
|
`post`.`gravity` AS `gravity`,
|
||||||
`external-item-uri`.`uri` AS `extid`,
|
`external-item-uri`.`uri` AS `extid`,
|
||||||
|
@ -2205,6 +2219,7 @@ CREATE VIEW `post-view` AS SELECT
|
||||||
LEFT JOIN `item-uri` ON `item-uri`.`id` = `post`.`uri-id`
|
LEFT JOIN `item-uri` ON `item-uri`.`id` = `post`.`uri-id`
|
||||||
LEFT JOIN `item-uri` AS `thr-parent-item-uri` ON `thr-parent-item-uri`.`id` = `post`.`thr-parent-id`
|
LEFT JOIN `item-uri` AS `thr-parent-item-uri` ON `thr-parent-item-uri`.`id` = `post`.`thr-parent-id`
|
||||||
LEFT JOIN `item-uri` AS `parent-item-uri` ON `parent-item-uri`.`id` = `post`.`parent-uri-id`
|
LEFT JOIN `item-uri` AS `parent-item-uri` ON `parent-item-uri`.`id` = `post`.`parent-uri-id`
|
||||||
|
LEFT JOIN `item-uri` AS `conversation-item-uri` ON `conversation-item-uri`.`id` = `post-thread`.`conversation-id`
|
||||||
LEFT JOIN `item-uri` AS `external-item-uri` ON `external-item-uri`.`id` = `post`.`external-id`
|
LEFT JOIN `item-uri` AS `external-item-uri` ON `external-item-uri`.`id` = `post`.`external-id`
|
||||||
LEFT JOIN `verb` ON `verb`.`id` = `post`.`vid`
|
LEFT JOIN `verb` ON `verb`.`id` = `post`.`vid`
|
||||||
LEFT JOIN `diaspora-interaction` ON `diaspora-interaction`.`uri-id` = `post`.`uri-id`
|
LEFT JOIN `diaspora-interaction` ON `diaspora-interaction`.`uri-id` = `post`.`uri-id`
|
||||||
|
@ -2224,6 +2239,8 @@ CREATE VIEW `post-thread-view` AS SELECT
|
||||||
`post`.`parent-uri-id` AS `parent-uri-id`,
|
`post`.`parent-uri-id` AS `parent-uri-id`,
|
||||||
`thr-parent-item-uri`.`uri` AS `thr-parent`,
|
`thr-parent-item-uri`.`uri` AS `thr-parent`,
|
||||||
`post`.`thr-parent-id` AS `thr-parent-id`,
|
`post`.`thr-parent-id` AS `thr-parent-id`,
|
||||||
|
`conversation-item-uri`.`uri` AS `conversation`,
|
||||||
|
`post-thread`.`conversation-id` AS `conversation-id`,
|
||||||
`item-uri`.`guid` AS `guid`,
|
`item-uri`.`guid` AS `guid`,
|
||||||
`post`.`gravity` AS `gravity`,
|
`post`.`gravity` AS `gravity`,
|
||||||
`external-item-uri`.`uri` AS `extid`,
|
`external-item-uri`.`uri` AS `extid`,
|
||||||
|
@ -2341,6 +2358,7 @@ CREATE VIEW `post-thread-view` AS SELECT
|
||||||
LEFT JOIN `item-uri` ON `item-uri`.`id` = `post-thread`.`uri-id`
|
LEFT JOIN `item-uri` ON `item-uri`.`id` = `post-thread`.`uri-id`
|
||||||
LEFT JOIN `item-uri` AS `thr-parent-item-uri` ON `thr-parent-item-uri`.`id` = `post`.`thr-parent-id`
|
LEFT JOIN `item-uri` AS `thr-parent-item-uri` ON `thr-parent-item-uri`.`id` = `post`.`thr-parent-id`
|
||||||
LEFT JOIN `item-uri` AS `parent-item-uri` ON `parent-item-uri`.`id` = `post`.`parent-uri-id`
|
LEFT JOIN `item-uri` AS `parent-item-uri` ON `parent-item-uri`.`id` = `post`.`parent-uri-id`
|
||||||
|
LEFT JOIN `item-uri` AS `conversation-item-uri` ON `conversation-item-uri`.`id` = `post-thread`.`conversation-id`
|
||||||
LEFT JOIN `item-uri` AS `external-item-uri` ON `external-item-uri`.`id` = `post`.`external-id`
|
LEFT JOIN `item-uri` AS `external-item-uri` ON `external-item-uri`.`id` = `post`.`external-id`
|
||||||
LEFT JOIN `verb` ON `verb`.`id` = `post`.`vid`
|
LEFT JOIN `verb` ON `verb`.`id` = `post`.`vid`
|
||||||
LEFT JOIN `diaspora-interaction` ON `diaspora-interaction`.`uri-id` = `post-thread`.`uri-id`
|
LEFT JOIN `diaspora-interaction` ON `diaspora-interaction`.`uri-id` = `post-thread`.`uri-id`
|
||||||
|
|
|
@ -7,8 +7,9 @@ Fields
|
||||||
------
|
------
|
||||||
|
|
||||||
| Field | Description | Type | Null | Key | Default | Extra |
|
| Field | Description | Type | Null | Key | Default | Extra |
|
||||||
| ------------ | ------------------------------------------------------------------------------------------------------- | ------------------ | ---- | --- | ------------------- | ----- |
|
| --------------- | ------------------------------------------------------------------------------------------------------- | ------------------ | ---- | --- | ------------------- | ----- |
|
||||||
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | PRI | NULL | |
|
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | PRI | NULL | |
|
||||||
|
| conversation-id | Id of the item-uri table entry that contains the conversation uri | int unsigned | YES | | NULL | |
|
||||||
| owner-id | Item owner | int unsigned | NO | | 0 | |
|
| owner-id | Item owner | int unsigned | NO | | 0 | |
|
||||||
| author-id | Item author | int unsigned | NO | | 0 | |
|
| author-id | Item author | int unsigned | NO | | 0 | |
|
||||||
| causer-id | Link to the contact table with uid=0 of the contact that caused the item creation | int unsigned | YES | | NULL | |
|
| causer-id | Link to the contact table with uid=0 of the contact that caused the item creation | int unsigned | YES | | NULL | |
|
||||||
|
@ -39,6 +40,7 @@ Indexes
|
||||||
| ----------------- | ------------------- |
|
| ----------------- | ------------------- |
|
||||||
| PRIMARY | uid, uri-id |
|
| PRIMARY | uid, uri-id |
|
||||||
| uri-id | uri-id |
|
| uri-id | uri-id |
|
||||||
|
| conversation-id | conversation-id |
|
||||||
| owner-id | owner-id |
|
| owner-id | owner-id |
|
||||||
| author-id | author-id |
|
| author-id | author-id |
|
||||||
| causer-id | causer-id |
|
| causer-id | causer-id |
|
||||||
|
@ -59,6 +61,7 @@ Foreign Keys
|
||||||
| Field | Target Table | Target Field |
|
| Field | Target Table | Target Field |
|
||||||
|-------|--------------|--------------|
|
|-------|--------------|--------------|
|
||||||
| uri-id | [item-uri](help/database/db_item-uri) | id |
|
| uri-id | [item-uri](help/database/db_item-uri) | id |
|
||||||
|
| conversation-id | [item-uri](help/database/db_item-uri) | id |
|
||||||
| owner-id | [contact](help/database/db_contact) | id |
|
| owner-id | [contact](help/database/db_contact) | id |
|
||||||
| author-id | [contact](help/database/db_contact) | id |
|
| author-id | [contact](help/database/db_contact) | id |
|
||||||
| causer-id | [contact](help/database/db_contact) | id |
|
| causer-id | [contact](help/database/db_contact) | id |
|
||||||
|
|
|
@ -7,8 +7,9 @@ Fields
|
||||||
------
|
------
|
||||||
|
|
||||||
| Field | Description | Type | Null | Key | Default | Extra |
|
| Field | Description | Type | Null | Key | Default | Extra |
|
||||||
| --------- | ------------------------------------------------------------------------------------------------------- | ------------ | ---- | --- | ------------------- | ----- |
|
| --------------- | ------------------------------------------------------------------------------------------------------- | ------------ | ---- | --- | ------------------- | ----- |
|
||||||
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | PRI | NULL | |
|
| uri-id | Id of the item-uri table entry that contains the item uri | int unsigned | NO | PRI | NULL | |
|
||||||
|
| conversation-id | Id of the item-uri table entry that contains the conversation uri | int unsigned | YES | | NULL | |
|
||||||
| owner-id | Item owner | int unsigned | NO | | 0 | |
|
| owner-id | Item owner | int unsigned | NO | | 0 | |
|
||||||
| author-id | Item author | int unsigned | NO | | 0 | |
|
| author-id | Item author | int unsigned | NO | | 0 | |
|
||||||
| causer-id | Link to the contact table with uid=0 of the contact that caused the item creation | int unsigned | YES | | NULL | |
|
| causer-id | Link to the contact table with uid=0 of the contact that caused the item creation | int unsigned | YES | | NULL | |
|
||||||
|
@ -22,8 +23,9 @@ Indexes
|
||||||
------------
|
------------
|
||||||
|
|
||||||
| Name | Fields |
|
| Name | Fields |
|
||||||
| --------- | --------- |
|
| --------------- | --------------- |
|
||||||
| PRIMARY | uri-id |
|
| PRIMARY | uri-id |
|
||||||
|
| conversation-id | conversation-id |
|
||||||
| owner-id | owner-id |
|
| owner-id | owner-id |
|
||||||
| author-id | author-id |
|
| author-id | author-id |
|
||||||
| causer-id | causer-id |
|
| causer-id | causer-id |
|
||||||
|
@ -36,6 +38,7 @@ Foreign Keys
|
||||||
| Field | Target Table | Target Field |
|
| Field | Target Table | Target Field |
|
||||||
|-------|--------------|--------------|
|
|-------|--------------|--------------|
|
||||||
| uri-id | [item-uri](help/database/db_item-uri) | id |
|
| uri-id | [item-uri](help/database/db_item-uri) | id |
|
||||||
|
| conversation-id | [item-uri](help/database/db_item-uri) | id |
|
||||||
| owner-id | [contact](help/database/db_contact) | id |
|
| owner-id | [contact](help/database/db_contact) | id |
|
||||||
| author-id | [contact](help/database/db_contact) | id |
|
| author-id | [contact](help/database/db_contact) | id |
|
||||||
| causer-id | [contact](help/database/db_contact) | id |
|
| causer-id | [contact](help/database/db_contact) | id |
|
||||||
|
|
|
@ -83,7 +83,7 @@ class Item
|
||||||
// Field list that is used to display the items
|
// Field list that is used to display the items
|
||||||
const DISPLAY_FIELDLIST = [
|
const DISPLAY_FIELDLIST = [
|
||||||
'uid', 'id', 'parent', 'guid', 'network', 'gravity',
|
'uid', 'id', 'parent', 'guid', 'network', 'gravity',
|
||||||
'uri-id', 'uri', 'thr-parent-id', 'thr-parent', 'parent-uri-id', 'parent-uri',
|
'uri-id', 'uri', 'thr-parent-id', 'thr-parent', 'parent-uri-id', 'parent-uri', 'conversation',
|
||||||
'commented', 'created', 'edited', 'received', 'verb', 'object-type', 'postopts', 'plink',
|
'commented', 'created', 'edited', 'received', 'verb', 'object-type', 'postopts', 'plink',
|
||||||
'wall', 'private', 'starred', 'origin', 'parent-origin', 'title', 'body', 'language',
|
'wall', 'private', 'starred', 'origin', 'parent-origin', 'title', 'body', 'language',
|
||||||
'content-warning', 'location', 'coord', 'app', 'rendered-hash', 'rendered-html', 'object',
|
'content-warning', 'location', 'coord', 'app', 'rendered-hash', 'rendered-html', 'object',
|
||||||
|
@ -103,7 +103,7 @@ class Item
|
||||||
|
|
||||||
// Field list that is used to deliver items via the protocols
|
// Field list that is used to deliver items via the protocols
|
||||||
const DELIVER_FIELDLIST = ['uid', 'id', 'parent', 'uri-id', 'uri', 'thr-parent', 'parent-uri', 'guid',
|
const DELIVER_FIELDLIST = ['uid', 'id', 'parent', 'uri-id', 'uri', 'thr-parent', 'parent-uri', 'guid',
|
||||||
'parent-guid', 'received', 'created', 'edited', 'verb', 'object-type', 'object', 'target',
|
'parent-guid', 'conversation', 'received', 'created', 'edited', 'verb', 'object-type', 'object', 'target',
|
||||||
'private', 'title', 'body', 'raw-body', 'location', 'coord', 'app',
|
'private', 'title', 'body', 'raw-body', 'location', 'coord', 'app',
|
||||||
'inform', 'deleted', 'extid', 'post-type', 'post-reason', 'gravity',
|
'inform', 'deleted', 'extid', 'post-type', 'post-reason', 'gravity',
|
||||||
'allow_cid', 'allow_gid', 'deny_cid', 'deny_gid',
|
'allow_cid', 'allow_gid', 'deny_cid', 'deny_gid',
|
||||||
|
@ -116,7 +116,7 @@ class Item
|
||||||
|
|
||||||
// All fields in the item table
|
// All fields in the item table
|
||||||
const ITEM_FIELDLIST = ['id', 'uid', 'parent', 'uri', 'parent-uri', 'thr-parent',
|
const ITEM_FIELDLIST = ['id', 'uid', 'parent', 'uri', 'parent-uri', 'thr-parent',
|
||||||
'guid', 'uri-id', 'parent-uri-id', 'thr-parent-id', 'vid',
|
'guid', 'uri-id', 'parent-uri-id', 'thr-parent-id', 'conversation', 'vid',
|
||||||
'contact-id', 'wall', 'gravity', 'extid', 'psid',
|
'contact-id', 'wall', 'gravity', 'extid', 'psid',
|
||||||
'created', 'edited', 'commented', 'received', 'changed', 'verb',
|
'created', 'edited', 'commented', 'received', 'changed', 'verb',
|
||||||
'postopts', 'plink', 'resource-id', 'event-id', 'inform',
|
'postopts', 'plink', 'resource-id', 'event-id', 'inform',
|
||||||
|
@ -687,6 +687,11 @@ class Item
|
||||||
$params = ['order' => ['id' => false]];
|
$params = ['order' => ['id' => false]];
|
||||||
$parent = Post::selectFirst($fields, $condition, $params);
|
$parent = Post::selectFirst($fields, $condition, $params);
|
||||||
|
|
||||||
|
if (!DBA::isResult($parent) && ($item['thr-parent-id'] != $item['parent-uri-id'])) {
|
||||||
|
$condition = ['uri-id' => $item['parent-uri-id'], 'uid' => $item['uid']];
|
||||||
|
$parent = Post::selectFirst($fields, $condition, $params);
|
||||||
|
}
|
||||||
|
|
||||||
if (!DBA::isResult($parent) && $item['origin']) {
|
if (!DBA::isResult($parent) && $item['origin']) {
|
||||||
$stored = Item::storeForUserByUriId($item['thr-parent-id'], $item['uid']);
|
$stored = Item::storeForUserByUriId($item['thr-parent-id'], $item['uid']);
|
||||||
Logger::info('Stored thread parent item for user', ['uri-id' => $item['thr-parent-id'], 'uid' => $item['uid'], 'stored' => $stored]);
|
Logger::info('Stored thread parent item for user', ['uri-id' => $item['thr-parent-id'], 'uid' => $item['uid'], 'stored' => $stored]);
|
||||||
|
@ -787,10 +792,13 @@ class Item
|
||||||
|
|
||||||
// Backward compatibility: parent-uri used to be the direct parent uri.
|
// Backward compatibility: parent-uri used to be the direct parent uri.
|
||||||
// If it is provided without a thr-parent, it probably is the old behavior.
|
// If it is provided without a thr-parent, it probably is the old behavior.
|
||||||
|
if (empty($item['thr-parent']) || empty($item['parent-uri'])) {
|
||||||
$item['thr-parent'] = trim($item['thr-parent'] ?? $item['parent-uri'] ?? $item['uri']);
|
$item['thr-parent'] = trim($item['thr-parent'] ?? $item['parent-uri'] ?? $item['uri']);
|
||||||
$item['parent-uri'] = $item['thr-parent'];
|
$item['parent-uri'] = $item['thr-parent'];
|
||||||
|
}
|
||||||
|
|
||||||
$item['thr-parent-id'] = $item['parent-uri-id'] = ItemURI::getIdByURI($item['thr-parent']);
|
$item['thr-parent-id'] = ItemURI::getIdByURI($item['thr-parent']);
|
||||||
|
$item['parent-uri-id'] = ItemURI::getIdByURI($item['parent-uri']);
|
||||||
|
|
||||||
// Store conversation data
|
// Store conversation data
|
||||||
$item = Conversation::insert($item);
|
$item = Conversation::insert($item);
|
||||||
|
@ -966,11 +974,19 @@ class Item
|
||||||
} else {
|
} else {
|
||||||
$parent_id = 0;
|
$parent_id = 0;
|
||||||
$parent_origin = $item['origin'];
|
$parent_origin = $item['origin'];
|
||||||
|
|
||||||
|
if ($item['wall'] && empty($item['conversation'])) {
|
||||||
|
$item['conversation'] = $item['parent-uri'] . '#context';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$item['parent-uri-id'] = ItemURI::getIdByURI($item['parent-uri']);
|
$item['parent-uri-id'] = ItemURI::getIdByURI($item['parent-uri']);
|
||||||
$item['thr-parent-id'] = ItemURI::getIdByURI($item['thr-parent']);
|
$item['thr-parent-id'] = ItemURI::getIdByURI($item['thr-parent']);
|
||||||
|
|
||||||
|
if (!empty($item['conversation']) && empty($item['conversation-id'])) {
|
||||||
|
$item['conversation-id'] = ItemURI::getIdByURI($item['conversation']);
|
||||||
|
}
|
||||||
|
|
||||||
// Is this item available in the global items (with uid=0)?
|
// Is this item available in the global items (with uid=0)?
|
||||||
if ($item['uid'] == 0) {
|
if ($item['uid'] == 0) {
|
||||||
$item['global'] = true;
|
$item['global'] = true;
|
||||||
|
|
|
@ -280,15 +280,26 @@ class Processor
|
||||||
$item['object-type'] = Activity\ObjectType::COMMENT;
|
$item['object-type'] = Activity\ObjectType::COMMENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($activity['directmessage']) && ($activity['id'] != $activity['reply-to-id']) && !Post::exists(['uri' => $activity['reply-to-id']])) {
|
if (!empty($activity['context'])) {
|
||||||
if (Queue::hasWorker($activity)) {
|
$item['conversation'] = $activity['context'];
|
||||||
Logger::notice('There is already a worker task to dfetch the post.', ['parent' => $activity['reply-to-id']]);
|
} elseif(!empty($activity['conversation'])) {
|
||||||
return [];
|
$item['conversation'] = $activity['conversation'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!empty($item['conversation'])) {
|
||||||
|
$conversation = Post::selectFirstThread(['uri'], ['conversation' => $item['conversation']]);
|
||||||
|
if (!empty($conversation)) {
|
||||||
|
Logger::debug('Got conversation', ['conversation' => $item['conversation'], 'parent' => $conversation]);
|
||||||
|
$item['parent-uri'] = $conversation['uri'];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$conversation = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($activity['directmessage']) && ($activity['id'] != $activity['reply-to-id']) && !Post::exists(['uri' => $activity['reply-to-id']])) {
|
||||||
$recursion_depth = $activity['recursion-depth'] ?? 0;
|
$recursion_depth = $activity['recursion-depth'] ?? 0;
|
||||||
Logger::notice('Parent not found. Try to refetch it.', ['parent' => $activity['reply-to-id'], 'recursion-depth' => $recursion_depth]);
|
Logger::notice('Parent not found. Try to refetch it.', ['parent' => $activity['reply-to-id'], 'recursion-depth' => $recursion_depth]);
|
||||||
if ($recursion_depth < 10) {
|
if ($recursion_depth < 10000) {
|
||||||
$result = self::fetchMissingActivity($activity['reply-to-id'], $activity, '', Receiver::COMPLETION_AUTO);
|
$result = self::fetchMissingActivity($activity['reply-to-id'], $activity, '', Receiver::COMPLETION_AUTO);
|
||||||
$fetch_by_worker = empty($result);
|
$fetch_by_worker = empty($result);
|
||||||
} else {
|
} else {
|
||||||
|
@ -296,19 +307,32 @@ class Processor
|
||||||
$fetch_by_worker = true;
|
$fetch_by_worker = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($fetch_by_worker && Queue::hasWorker($activity)) {
|
||||||
|
Logger::notice('There is already a worker task to fetch the post.', ['id' => $activity['id'], 'parent' => $activity['reply-to-id']]);
|
||||||
|
$fetch_by_worker = false;
|
||||||
|
if (!empty($conversation)) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($fetch_by_worker) {
|
if ($fetch_by_worker) {
|
||||||
Logger::notice('Fetching is done by worker.', ['parent' => $activity['reply-to-id'], 'recursion-depth' => $recursion_depth]);
|
Logger::notice('Fetching is done by worker.', ['parent' => $activity['reply-to-id'], 'recursion-depth' => $recursion_depth]);
|
||||||
$activity['recursion-depth'] = 0;
|
$activity['recursion-depth'] = 0;
|
||||||
$wid = Worker::add(PRIORITY_HIGH, 'FetchMissingActivity', $activity['reply-to-id'], $activity, '', Receiver::COMPLETION_AUTO);
|
$wid = Worker::add(PRIORITY_HIGH, 'FetchMissingActivity', $activity['reply-to-id'], $activity, '', Receiver::COMPLETION_AUTO);
|
||||||
Queue::setWorkerId($activity, $wid);
|
Queue::setWorkerId($activity, $wid);
|
||||||
|
if (!empty($conversation)) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
} elseif (!empty($result)) {
|
||||||
|
if (($item['thr-parent'] != $result) && Post::exists(['uri' => $result])) {
|
||||||
|
$item['thr-parent'] = $result;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$item['diaspora_signed_text'] = $activity['diaspora:comment'] ?? '';
|
$item['diaspora_signed_text'] = $activity['diaspora:comment'] ?? '';
|
||||||
|
|
||||||
/// @todo What to do with $activity['context']?
|
if (empty($conversation) && empty($activity['directmessage']) && ($item['gravity'] != GRAVITY_PARENT) && !Post::exists(['uri' => $item['thr-parent']])) {
|
||||||
if (empty($activity['directmessage']) && ($item['gravity'] != GRAVITY_PARENT) && !Post::exists(['uri' => $item['thr-parent']])) {
|
|
||||||
Logger::info('Parent not found, message will be discarded.', ['thr-parent' => $item['thr-parent']]);
|
Logger::info('Parent not found, message will be discarded.', ['thr-parent' => $item['thr-parent']]);
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
@ -484,6 +508,7 @@ class Processor
|
||||||
*/
|
*/
|
||||||
public static function createActivity(array $activity, string $verb)
|
public static function createActivity(array $activity, string $verb)
|
||||||
{
|
{
|
||||||
|
$activity['reply-to-id'] = $activity['object_id'];
|
||||||
$item = self::createItem($activity);
|
$item = self::createItem($activity);
|
||||||
if (empty($item)) {
|
if (empty($item)) {
|
||||||
return;
|
return;
|
||||||
|
@ -663,10 +688,11 @@ class Processor
|
||||||
$item['raw-body'] = $content;
|
$item['raw-body'] = $content;
|
||||||
$item['body'] = Item::improveSharedDataInBody($item);
|
$item['body'] = Item::improveSharedDataInBody($item);
|
||||||
} else {
|
} else {
|
||||||
if (empty($activity['directmessage']) && ($item['thr-parent'] != $item['uri']) && ($item['gravity'] == GRAVITY_COMMENT)) {
|
$parent_uri = $item['parent-uri'] ?? $item['thr-parent'];
|
||||||
$parent = Post::selectFirst(['id', 'uri-id', 'private', 'author-link', 'alias'], ['uri' => $item['thr-parent']]);
|
if (empty($activity['directmessage']) && ($parent_uri != $item['uri']) && ($item['gravity'] == GRAVITY_COMMENT)) {
|
||||||
|
$parent = Post::selectFirst(['id', 'uri-id', 'private', 'author-link', 'alias'], ['uri' => $parent_uri]);
|
||||||
if (!DBA::isResult($parent)) {
|
if (!DBA::isResult($parent)) {
|
||||||
Logger::warning('Unknown parent item.', ['uri' => $item['thr-parent']]);
|
Logger::warning('Unknown parent item.', ['uri' => $parent_uri]);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (($parent['private'] == Item::PRIVATE) && ($parent['private'] != Item::PRIVATE)) {
|
if (($parent['private'] == Item::PRIVATE) && ($parent['private'] != Item::PRIVATE)) {
|
||||||
|
@ -1327,8 +1353,8 @@ class Processor
|
||||||
if (empty($contact)) {
|
if (empty($contact)) {
|
||||||
Contact::update(['hub-verify' => $activity['id'], 'protocol' => Protocol::ACTIVITYPUB], ['id' => $cid]);
|
Contact::update(['hub-verify' => $activity['id'], 'protocol' => Protocol::ACTIVITYPUB], ['id' => $cid]);
|
||||||
}
|
}
|
||||||
|
|
||||||
Logger::notice('Follow user ' . $uid . ' from contact ' . $cid . ' with id ' . $activity['id']);
|
Logger::notice('Follow user ' . $uid . ' from contact ' . $cid . ' with id ' . $activity['id']);
|
||||||
|
Queue::remove($activity);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1426,6 +1452,7 @@ class Processor
|
||||||
Contact\User::setIsBlocked($cid, $uid, true);
|
Contact\User::setIsBlocked($cid, $uid, true);
|
||||||
|
|
||||||
Logger::info('Contact blocked user', ['contact' => $cid, 'user' => $uid]);
|
Logger::info('Contact blocked user', ['contact' => $cid, 'user' => $uid]);
|
||||||
|
Queue::remove($activity);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1450,6 +1477,7 @@ class Processor
|
||||||
Contact\User::setIsBlocked($cid, $uid, false);
|
Contact\User::setIsBlocked($cid, $uid, false);
|
||||||
|
|
||||||
Logger::info('Contact unblocked user', ['contact' => $cid, 'user' => $uid]);
|
Logger::info('Contact unblocked user', ['contact' => $cid, 'user' => $uid]);
|
||||||
|
Queue::remove($activity);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -140,6 +140,14 @@ class Queue
|
||||||
$activity['entry-id'] = $entry['id'];
|
$activity['entry-id'] = $entry['id'];
|
||||||
$activity['worker-id'] = $entry['wid'];
|
$activity['worker-id'] = $entry['wid'];
|
||||||
|
|
||||||
|
$receivers = DBA::select('inbox-entry-receiver', ['uid'], ['queue-id' => $entry['id']]);
|
||||||
|
while ($receiver = DBA::fetch($receivers)) {
|
||||||
|
if (!in_array($receiver['uid'], $activity['receiver'])) {
|
||||||
|
$activity['receiver'][] = $receiver['uid'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
DBA::close($receivers);
|
||||||
|
|
||||||
if (!Receiver::routeActivities($activity, $type, $push)) {
|
if (!Receiver::routeActivities($activity, $type, $push)) {
|
||||||
self::remove($activity);
|
self::remove($activity);
|
||||||
}
|
}
|
||||||
|
|
|
@ -516,6 +516,10 @@ class Receiver
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (($type == 'as:Add') && is_array($activity['as:object']) && (count($activity['as:object']) == 1)) {
|
||||||
|
$trust_source = false;
|
||||||
|
}
|
||||||
|
|
||||||
// $trust_source is called by reference and is set to true if the content was retrieved successfully
|
// $trust_source is called by reference and is set to true if the content was retrieved successfully
|
||||||
$object_data = self::prepareObjectData($activity, $uid, $push, $trust_source);
|
$object_data = self::prepareObjectData($activity, $uid, $push, $trust_source);
|
||||||
if (empty($object_data)) {
|
if (empty($object_data)) {
|
||||||
|
|
|
@ -1515,26 +1515,6 @@ class Transmitter
|
||||||
return $body;
|
return $body;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Fetches the "context" value for a givem item array from the "conversation" table
|
|
||||||
*
|
|
||||||
* @param array $item Item array
|
|
||||||
* @return string with context url
|
|
||||||
* @throws \Exception
|
|
||||||
*/
|
|
||||||
private static function fetchContextURLForItem(array $item): string
|
|
||||||
{
|
|
||||||
$conversation = DBA::selectFirst('conversation', ['conversation-href', 'conversation-uri'], ['item-uri' => $item['parent-uri']]);
|
|
||||||
if (DBA::isResult($conversation) && !empty($conversation['conversation-href'])) {
|
|
||||||
$context_uri = $conversation['conversation-href'];
|
|
||||||
} elseif (DBA::isResult($conversation) && !empty($conversation['conversation-uri'])) {
|
|
||||||
$context_uri = $conversation['conversation-uri'];
|
|
||||||
} else {
|
|
||||||
$context_uri = $item['parent-uri'] . '#context';
|
|
||||||
}
|
|
||||||
return $context_uri;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns if the post contains sensitive content ("nsfw")
|
* Returns if the post contains sensitive content ("nsfw")
|
||||||
*
|
*
|
||||||
|
@ -1646,7 +1626,7 @@ class Transmitter
|
||||||
$data['url'] = $link ?? $item['plink'];
|
$data['url'] = $link ?? $item['plink'];
|
||||||
$data['attributedTo'] = $item['author-link'];
|
$data['attributedTo'] = $item['author-link'];
|
||||||
$data['sensitive'] = self::isSensitive($item['uri-id']);
|
$data['sensitive'] = self::isSensitive($item['uri-id']);
|
||||||
$data['context'] = self::fetchContextURLForItem($item);
|
$data['conversation'] = $data['context'] = $item['conversation'];
|
||||||
|
|
||||||
if (!empty($item['title'])) {
|
if (!empty($item['title'])) {
|
||||||
$data['name'] = BBCode::toPlaintext($item['title'], false);
|
$data['name'] = BBCode::toPlaintext($item['title'], false);
|
||||||
|
|
|
@ -183,6 +183,7 @@ class ExpirePosts
|
||||||
AND NOT EXISTS(SELECT `parent-uri-id` FROM `post-user` WHERE `parent-uri-id` = `item-uri`.`id`)
|
AND NOT EXISTS(SELECT `parent-uri-id` FROM `post-user` WHERE `parent-uri-id` = `item-uri`.`id`)
|
||||||
AND NOT EXISTS(SELECT `thr-parent-id` FROM `post-user` WHERE `thr-parent-id` = `item-uri`.`id`)
|
AND NOT EXISTS(SELECT `thr-parent-id` FROM `post-user` WHERE `thr-parent-id` = `item-uri`.`id`)
|
||||||
AND NOT EXISTS(SELECT `external-id` FROM `post-user` WHERE `external-id` = `item-uri`.`id`)
|
AND NOT EXISTS(SELECT `external-id` FROM `post-user` WHERE `external-id` = `item-uri`.`id`)
|
||||||
|
AND NOT EXISTS(SELECT `conversation-id` FROM `post-thread` WHERE `conversation-id` = `item-uri`.`id`)
|
||||||
AND NOT EXISTS(SELECT `uri-id` FROM `mail` WHERE `uri-id` = `item-uri`.`id`)
|
AND NOT EXISTS(SELECT `uri-id` FROM `mail` WHERE `uri-id` = `item-uri`.`id`)
|
||||||
AND NOT EXISTS(SELECT `uri-id` FROM `event` WHERE `uri-id` = `item-uri`.`id`)
|
AND NOT EXISTS(SELECT `uri-id` FROM `event` WHERE `uri-id` = `item-uri`.`id`)
|
||||||
AND NOT EXISTS(SELECT `uri-id` FROM `user-contact` WHERE `uri-id` = `item-uri`.`id`)
|
AND NOT EXISTS(SELECT `uri-id` FROM `user-contact` WHERE `uri-id` = `item-uri`.`id`)
|
||||||
|
|
|
@ -1355,6 +1355,7 @@ return [
|
||||||
"comment" => "Thread related data",
|
"comment" => "Thread related data",
|
||||||
"fields" => [
|
"fields" => [
|
||||||
"uri-id" => ["type" => "int unsigned", "not null" => "1", "primary" => "1", "foreign" => ["item-uri" => "id"], "comment" => "Id of the item-uri table entry that contains the item uri"],
|
"uri-id" => ["type" => "int unsigned", "not null" => "1", "primary" => "1", "foreign" => ["item-uri" => "id"], "comment" => "Id of the item-uri table entry that contains the item uri"],
|
||||||
|
"conversation-id" => ["type" => "int unsigned", "foreign" => ["item-uri" => "id"], "comment" => "Id of the item-uri table entry that contains the conversation uri"],
|
||||||
"owner-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "foreign" => ["contact" => "id", "on delete" => "restrict"], "comment" => "Item owner"],
|
"owner-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "foreign" => ["contact" => "id", "on delete" => "restrict"], "comment" => "Item owner"],
|
||||||
"author-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "foreign" => ["contact" => "id", "on delete" => "restrict"], "comment" => "Item author"],
|
"author-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "foreign" => ["contact" => "id", "on delete" => "restrict"], "comment" => "Item author"],
|
||||||
"causer-id" => ["type" => "int unsigned", "foreign" => ["contact" => "id", "on delete" => "restrict"], "comment" => "Link to the contact table with uid=0 of the contact that caused the item creation"],
|
"causer-id" => ["type" => "int unsigned", "foreign" => ["contact" => "id", "on delete" => "restrict"], "comment" => "Link to the contact table with uid=0 of the contact that caused the item creation"],
|
||||||
|
@ -1366,6 +1367,7 @@ return [
|
||||||
],
|
],
|
||||||
"indexes" => [
|
"indexes" => [
|
||||||
"PRIMARY" => ["uri-id"],
|
"PRIMARY" => ["uri-id"],
|
||||||
|
"conversation-id" => ["conversation-id"],
|
||||||
"owner-id" => ["owner-id"],
|
"owner-id" => ["owner-id"],
|
||||||
"author-id" => ["author-id"],
|
"author-id" => ["author-id"],
|
||||||
"causer-id" => ["causer-id"],
|
"causer-id" => ["causer-id"],
|
||||||
|
@ -1434,6 +1436,7 @@ return [
|
||||||
"comment" => "Thread related data per user",
|
"comment" => "Thread related data per user",
|
||||||
"fields" => [
|
"fields" => [
|
||||||
"uri-id" => ["type" => "int unsigned", "not null" => "1", "primary" => "1", "foreign" => ["item-uri" => "id"], "comment" => "Id of the item-uri table entry that contains the item uri"],
|
"uri-id" => ["type" => "int unsigned", "not null" => "1", "primary" => "1", "foreign" => ["item-uri" => "id"], "comment" => "Id of the item-uri table entry that contains the item uri"],
|
||||||
|
"conversation-id" => ["type" => "int unsigned", "foreign" => ["item-uri" => "id"], "comment" => "Id of the item-uri table entry that contains the conversation uri"],
|
||||||
"owner-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "foreign" => ["contact" => "id", "on delete" => "restrict"], "comment" => "Item owner"],
|
"owner-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "foreign" => ["contact" => "id", "on delete" => "restrict"], "comment" => "Item owner"],
|
||||||
"author-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "foreign" => ["contact" => "id", "on delete" => "restrict"], "comment" => "Item author"],
|
"author-id" => ["type" => "int unsigned", "not null" => "1", "default" => "0", "foreign" => ["contact" => "id", "on delete" => "restrict"], "comment" => "Item author"],
|
||||||
"causer-id" => ["type" => "int unsigned", "foreign" => ["contact" => "id", "on delete" => "restrict"], "comment" => "Link to the contact table with uid=0 of the contact that caused the item creation"],
|
"causer-id" => ["type" => "int unsigned", "foreign" => ["contact" => "id", "on delete" => "restrict"], "comment" => "Link to the contact table with uid=0 of the contact that caused the item creation"],
|
||||||
|
@ -1460,6 +1463,7 @@ return [
|
||||||
"indexes" => [
|
"indexes" => [
|
||||||
"PRIMARY" => ["uid", "uri-id"],
|
"PRIMARY" => ["uid", "uri-id"],
|
||||||
"uri-id" => ["uri-id"],
|
"uri-id" => ["uri-id"],
|
||||||
|
"conversation-id" => ["conversation-id"],
|
||||||
"owner-id" => ["owner-id"],
|
"owner-id" => ["owner-id"],
|
||||||
"author-id" => ["author-id"],
|
"author-id" => ["author-id"],
|
||||||
"causer-id" => ["causer-id"],
|
"causer-id" => ["causer-id"],
|
||||||
|
|
|
@ -70,6 +70,8 @@
|
||||||
"parent-uri-id" => ["post-user", "parent-uri-id"],
|
"parent-uri-id" => ["post-user", "parent-uri-id"],
|
||||||
"thr-parent" => ["thr-parent-item-uri", "uri"],
|
"thr-parent" => ["thr-parent-item-uri", "uri"],
|
||||||
"thr-parent-id" => ["post-user", "thr-parent-id"],
|
"thr-parent-id" => ["post-user", "thr-parent-id"],
|
||||||
|
"conversation" => ["conversation-item-uri", "uri"],
|
||||||
|
"conversation-id" => ["post-thread-user", "conversation-id"],
|
||||||
"guid" => ["item-uri", "guid"],
|
"guid" => ["item-uri", "guid"],
|
||||||
"wall" => ["post-user", "wall"],
|
"wall" => ["post-user", "wall"],
|
||||||
"gravity" => ["post-user", "gravity"],
|
"gravity" => ["post-user", "gravity"],
|
||||||
|
@ -220,6 +222,7 @@
|
||||||
LEFT JOIN `item-uri` ON `item-uri`.`id` = `post-user`.`uri-id`
|
LEFT JOIN `item-uri` ON `item-uri`.`id` = `post-user`.`uri-id`
|
||||||
LEFT JOIN `item-uri` AS `thr-parent-item-uri` ON `thr-parent-item-uri`.`id` = `post-user`.`thr-parent-id`
|
LEFT JOIN `item-uri` AS `thr-parent-item-uri` ON `thr-parent-item-uri`.`id` = `post-user`.`thr-parent-id`
|
||||||
LEFT JOIN `item-uri` AS `parent-item-uri` ON `parent-item-uri`.`id` = `post-user`.`parent-uri-id`
|
LEFT JOIN `item-uri` AS `parent-item-uri` ON `parent-item-uri`.`id` = `post-user`.`parent-uri-id`
|
||||||
|
LEFT JOIN `item-uri` AS `conversation-item-uri` ON `conversation-item-uri`.`id` = `post-thread-user`.`conversation-id`
|
||||||
LEFT JOIN `item-uri` AS `external-item-uri` ON `external-item-uri`.`id` = `post-user`.`external-id`
|
LEFT JOIN `item-uri` AS `external-item-uri` ON `external-item-uri`.`id` = `post-user`.`external-id`
|
||||||
LEFT JOIN `verb` ON `verb`.`id` = `post-user`.`vid`
|
LEFT JOIN `verb` ON `verb`.`id` = `post-user`.`vid`
|
||||||
LEFT JOIN `event` ON `event`.`id` = `post-user`.`event-id`
|
LEFT JOIN `event` ON `event`.`id` = `post-user`.`event-id`
|
||||||
|
@ -243,6 +246,8 @@
|
||||||
"parent-uri-id" => ["post-user", "parent-uri-id"],
|
"parent-uri-id" => ["post-user", "parent-uri-id"],
|
||||||
"thr-parent" => ["thr-parent-item-uri", "uri"],
|
"thr-parent" => ["thr-parent-item-uri", "uri"],
|
||||||
"thr-parent-id" => ["post-user", "thr-parent-id"],
|
"thr-parent-id" => ["post-user", "thr-parent-id"],
|
||||||
|
"conversation" => ["conversation-item-uri", "uri"],
|
||||||
|
"conversation-id" => ["post-thread-user", "conversation-id"],
|
||||||
"guid" => ["item-uri", "guid"],
|
"guid" => ["item-uri", "guid"],
|
||||||
"wall" => ["post-thread-user", "wall"],
|
"wall" => ["post-thread-user", "wall"],
|
||||||
"gravity" => ["post-user", "gravity"],
|
"gravity" => ["post-user", "gravity"],
|
||||||
|
@ -392,6 +397,7 @@
|
||||||
LEFT JOIN `item-uri` ON `item-uri`.`id` = `post-thread-user`.`uri-id`
|
LEFT JOIN `item-uri` ON `item-uri`.`id` = `post-thread-user`.`uri-id`
|
||||||
LEFT JOIN `item-uri` AS `thr-parent-item-uri` ON `thr-parent-item-uri`.`id` = `post-user`.`thr-parent-id`
|
LEFT JOIN `item-uri` AS `thr-parent-item-uri` ON `thr-parent-item-uri`.`id` = `post-user`.`thr-parent-id`
|
||||||
LEFT JOIN `item-uri` AS `parent-item-uri` ON `parent-item-uri`.`id` = `post-user`.`parent-uri-id`
|
LEFT JOIN `item-uri` AS `parent-item-uri` ON `parent-item-uri`.`id` = `post-user`.`parent-uri-id`
|
||||||
|
LEFT JOIN `item-uri` AS `conversation-item-uri` ON `conversation-item-uri`.`id` = `post-thread-user`.`conversation-id`
|
||||||
LEFT JOIN `item-uri` AS `external-item-uri` ON `external-item-uri`.`id` = `post-user`.`external-id`
|
LEFT JOIN `item-uri` AS `external-item-uri` ON `external-item-uri`.`id` = `post-user`.`external-id`
|
||||||
LEFT JOIN `verb` ON `verb`.`id` = `post-user`.`vid`
|
LEFT JOIN `verb` ON `verb`.`id` = `post-user`.`vid`
|
||||||
LEFT JOIN `event` ON `event`.`id` = `post-user`.`event-id`
|
LEFT JOIN `event` ON `event`.`id` = `post-user`.`event-id`
|
||||||
|
@ -411,6 +417,8 @@
|
||||||
"parent-uri-id" => ["post", "parent-uri-id"],
|
"parent-uri-id" => ["post", "parent-uri-id"],
|
||||||
"thr-parent" => ["thr-parent-item-uri", "uri"],
|
"thr-parent" => ["thr-parent-item-uri", "uri"],
|
||||||
"thr-parent-id" => ["post", "thr-parent-id"],
|
"thr-parent-id" => ["post", "thr-parent-id"],
|
||||||
|
"conversation" => ["conversation-item-uri", "uri"],
|
||||||
|
"conversation-id" => ["post-thread", "conversation-id"],
|
||||||
"guid" => ["item-uri", "guid"],
|
"guid" => ["item-uri", "guid"],
|
||||||
"gravity" => ["post", "gravity"],
|
"gravity" => ["post", "gravity"],
|
||||||
"extid" => ["external-item-uri", "uri"],
|
"extid" => ["external-item-uri", "uri"],
|
||||||
|
@ -530,6 +538,7 @@
|
||||||
LEFT JOIN `item-uri` ON `item-uri`.`id` = `post`.`uri-id`
|
LEFT JOIN `item-uri` ON `item-uri`.`id` = `post`.`uri-id`
|
||||||
LEFT JOIN `item-uri` AS `thr-parent-item-uri` ON `thr-parent-item-uri`.`id` = `post`.`thr-parent-id`
|
LEFT JOIN `item-uri` AS `thr-parent-item-uri` ON `thr-parent-item-uri`.`id` = `post`.`thr-parent-id`
|
||||||
LEFT JOIN `item-uri` AS `parent-item-uri` ON `parent-item-uri`.`id` = `post`.`parent-uri-id`
|
LEFT JOIN `item-uri` AS `parent-item-uri` ON `parent-item-uri`.`id` = `post`.`parent-uri-id`
|
||||||
|
LEFT JOIN `item-uri` AS `conversation-item-uri` ON `conversation-item-uri`.`id` = `post-thread`.`conversation-id`
|
||||||
LEFT JOIN `item-uri` AS `external-item-uri` ON `external-item-uri`.`id` = `post`.`external-id`
|
LEFT JOIN `item-uri` AS `external-item-uri` ON `external-item-uri`.`id` = `post`.`external-id`
|
||||||
LEFT JOIN `verb` ON `verb`.`id` = `post`.`vid`
|
LEFT JOIN `verb` ON `verb`.`id` = `post`.`vid`
|
||||||
LEFT JOIN `diaspora-interaction` ON `diaspora-interaction`.`uri-id` = `post`.`uri-id`
|
LEFT JOIN `diaspora-interaction` ON `diaspora-interaction`.`uri-id` = `post`.`uri-id`
|
||||||
|
@ -546,6 +555,8 @@
|
||||||
"parent-uri-id" => ["post", "parent-uri-id"],
|
"parent-uri-id" => ["post", "parent-uri-id"],
|
||||||
"thr-parent" => ["thr-parent-item-uri", "uri"],
|
"thr-parent" => ["thr-parent-item-uri", "uri"],
|
||||||
"thr-parent-id" => ["post", "thr-parent-id"],
|
"thr-parent-id" => ["post", "thr-parent-id"],
|
||||||
|
"conversation" => ["conversation-item-uri", "uri"],
|
||||||
|
"conversation-id" => ["post-thread", "conversation-id"],
|
||||||
"guid" => ["item-uri", "guid"],
|
"guid" => ["item-uri", "guid"],
|
||||||
"gravity" => ["post", "gravity"],
|
"gravity" => ["post", "gravity"],
|
||||||
"extid" => ["external-item-uri", "uri"],
|
"extid" => ["external-item-uri", "uri"],
|
||||||
|
@ -665,6 +676,7 @@
|
||||||
LEFT JOIN `item-uri` ON `item-uri`.`id` = `post-thread`.`uri-id`
|
LEFT JOIN `item-uri` ON `item-uri`.`id` = `post-thread`.`uri-id`
|
||||||
LEFT JOIN `item-uri` AS `thr-parent-item-uri` ON `thr-parent-item-uri`.`id` = `post`.`thr-parent-id`
|
LEFT JOIN `item-uri` AS `thr-parent-item-uri` ON `thr-parent-item-uri`.`id` = `post`.`thr-parent-id`
|
||||||
LEFT JOIN `item-uri` AS `parent-item-uri` ON `parent-item-uri`.`id` = `post`.`parent-uri-id`
|
LEFT JOIN `item-uri` AS `parent-item-uri` ON `parent-item-uri`.`id` = `post`.`parent-uri-id`
|
||||||
|
LEFT JOIN `item-uri` AS `conversation-item-uri` ON `conversation-item-uri`.`id` = `post-thread`.`conversation-id`
|
||||||
LEFT JOIN `item-uri` AS `external-item-uri` ON `external-item-uri`.`id` = `post`.`external-id`
|
LEFT JOIN `item-uri` AS `external-item-uri` ON `external-item-uri`.`id` = `post`.`external-id`
|
||||||
LEFT JOIN `verb` ON `verb`.`id` = `post`.`vid`
|
LEFT JOIN `verb` ON `verb`.`id` = `post`.`vid`
|
||||||
LEFT JOIN `diaspora-interaction` ON `diaspora-interaction`.`uri-id` = `post-thread`.`uri-id`
|
LEFT JOIN `diaspora-interaction` ON `diaspora-interaction`.`uri-id` = `post-thread`.`uri-id`
|
||||||
|
|
Loading…
Reference in a new issue