]> git.mxchange.org Git - friendica.git/commitdiff
we now have got an uri-id field for the contact table
authorMichael <heluecht@pirati.ca>
Thu, 8 Jul 2021 18:59:58 +0000 (18:59 +0000)
committerMichael <heluecht@pirati.ca>
Thu, 8 Jul 2021 18:59:58 +0000 (18:59 +0000)
database.sql
doc/database/db_contact.md
src/Model/Contact.php
src/Object/Api/Mastodon/Account.php
static/dbstructure.config.php

index 160d59aae1d919712f02f1f78938471b14653d9f..352f1d44ae71b303351a9a1c36508ad4fb7957ca 100644 (file)
@@ -126,6 +126,7 @@ CREATE TABLE IF NOT EXISTS `contact` (
        `dfrn-id` varchar(255) NOT NULL DEFAULT '' COMMENT '',
        `url` varchar(255) NOT NULL DEFAULT '' COMMENT '',
        `nurl` varchar(255) NOT NULL DEFAULT '' COMMENT '',
+       `uri-id` int unsigned COMMENT 'Id of the item-uri table entry that contains the contact url',
        `addr` varchar(255) NOT NULL DEFAULT '' COMMENT '',
        `alias` varchar(255) NOT NULL DEFAULT '' COMMENT '',
        `pubkey` text COMMENT 'RSA public key 4096 bit',
@@ -202,7 +203,9 @@ CREATE TABLE IF NOT EXISTS `contact` (
         INDEX `uid_self_contact-type` (`uid`,`self`,`contact-type`),
         INDEX `self_network_uid` (`self`,`network`,`uid`),
         INDEX `gsid` (`gsid`),
+        INDEX `uri-id` (`uri-id`),
        FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON UPDATE RESTRICT ON DELETE CASCADE,
+       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='contact table';
 
index 23a3b533af5942c86265ea5141593620f6438299..5a97c6e4dd70b1876501735545ea64e7744611e3 100644 (file)
@@ -6,89 +6,90 @@ contact table
 Fields
 ------
 
-| Field                     | Description                                               | Type               | Null | Key | Default             | Extra          |
-| ------------------------- | --------------------------------------------------------- | ------------------ | ---- | --- | ------------------- | -------------- |
-| id                        | sequential ID                                             | int unsigned       | NO   | PRI | NULL                | auto_increment |
-| uid                       | Owner User id                                             | mediumint unsigned | NO   |     | 0                   |                |
-| created                   |                                                           | datetime           | NO   |     | 0001-01-01 00:00:00 |                |
-| updated                   | Date of last contact update                               | datetime           | YES  |     | 0001-01-01 00:00:00 |                |
-| self                      | 1 if the contact is the user him/her self                 | boolean            | NO   |     | 0                   |                |
-| remote_self               |                                                           | boolean            | NO   |     | 0                   |                |
-| rel                       | The kind of the relation between the user and the contact | tinyint unsigned   | NO   |     | 0                   |                |
-| duplex                    |                                                           | boolean            | NO   |     | 0                   |                |
-| network                   | Network of the contact                                    | char(4)            | NO   |     |                     |                |
-| protocol                  | Protocol of the contact                                   | char(4)            | NO   |     |                     |                |
-| name                      | Name that this contact is known by                        | varchar(255)       | NO   |     |                     |                |
-| nick                      | Nick- and user name of the contact                        | varchar(255)       | NO   |     |                     |                |
-| location                  |                                                           | varchar(255)       | YES  |     |                     |                |
-| about                     |                                                           | text               | YES  |     | NULL                |                |
-| keywords                  | public keywords (interests) of the contact                | text               | YES  |     | NULL                |                |
-| gender                    | Deprecated                                                | varchar(32)        | NO   |     |                     |                |
-| xmpp                      |                                                           | varchar(255)       | NO   |     |                     |                |
-| attag                     |                                                           | varchar(255)       | NO   |     |                     |                |
-| avatar                    |                                                           | varchar(255)       | NO   |     |                     |                |
-| photo                     | Link to the profile photo of the contact                  | varchar(255)       | YES  |     |                     |                |
-| thumb                     | Link to the profile photo (thumb size)                    | varchar(255)       | YES  |     |                     |                |
-| micro                     | Link to the profile photo (micro size)                    | varchar(255)       | YES  |     |                     |                |
-| header                    | Header picture                                            | varchar(255)       | YES  |     | NULL                |                |
-| site-pubkey               |                                                           | text               | YES  |     | NULL                |                |
-| issued-id                 |                                                           | varchar(255)       | NO   |     |                     |                |
-| dfrn-id                   |                                                           | varchar(255)       | NO   |     |                     |                |
-| url                       |                                                           | varchar(255)       | NO   |     |                     |                |
-| nurl                      |                                                           | varchar(255)       | NO   |     |                     |                |
-| addr                      |                                                           | varchar(255)       | NO   |     |                     |                |
-| alias                     |                                                           | varchar(255)       | NO   |     |                     |                |
-| pubkey                    | RSA public key 4096 bit                                   | text               | YES  |     | NULL                |                |
-| prvkey                    | RSA private key 4096 bit                                  | text               | YES  |     | NULL                |                |
-| batch                     |                                                           | varchar(255)       | NO   |     |                     |                |
-| request                   |                                                           | varchar(255)       | YES  |     | NULL                |                |
-| notify                    |                                                           | varchar(255)       | YES  |     | NULL                |                |
-| poll                      |                                                           | varchar(255)       | YES  |     | NULL                |                |
-| confirm                   |                                                           | varchar(255)       | YES  |     | NULL                |                |
-| subscribe                 |                                                           | varchar(255)       | YES  |     | NULL                |                |
-| poco                      |                                                           | varchar(255)       | YES  |     | NULL                |                |
-| aes_allow                 |                                                           | boolean            | NO   |     | 0                   |                |
-| ret-aes                   |                                                           | boolean            | NO   |     | 0                   |                |
-| usehub                    |                                                           | boolean            | NO   |     | 0                   |                |
-| subhub                    |                                                           | boolean            | NO   |     | 0                   |                |
-| hub-verify                |                                                           | varchar(255)       | NO   |     |                     |                |
-| last-update               | Date of the last try to update the contact info           | datetime           | NO   |     | 0001-01-01 00:00:00 |                |
-| success_update            | Date of the last successful contact update                | datetime           | NO   |     | 0001-01-01 00:00:00 |                |
-| failure_update            | Date of the last failed update                            | datetime           | NO   |     | 0001-01-01 00:00:00 |                |
-| failed                    | Connection failed                                         | boolean            | YES  |     | NULL                |                |
-| name-date                 |                                                           | datetime           | NO   |     | 0001-01-01 00:00:00 |                |
-| uri-date                  |                                                           | datetime           | NO   |     | 0001-01-01 00:00:00 |                |
-| avatar-date               |                                                           | datetime           | NO   |     | 0001-01-01 00:00:00 |                |
-| term-date                 |                                                           | datetime           | NO   |     | 0001-01-01 00:00:00 |                |
-| last-item                 | date of the last post                                     | datetime           | NO   |     | 0001-01-01 00:00:00 |                |
-| last-discovery            | date of the last follower discovery                       | datetime           | NO   |     | 0001-01-01 00:00:00 |                |
-| priority                  |                                                           | tinyint unsigned   | NO   |     | 0                   |                |
-| blocked                   | Node-wide block status                                    | boolean            | NO   |     | 1                   |                |
-| block_reason              | Node-wide block reason                                    | text               | YES  |     | NULL                |                |
-| readonly                  | posts of the contact are readonly                         | boolean            | NO   |     | 0                   |                |
-| writable                  |                                                           | boolean            | NO   |     | 0                   |                |
-| forum                     | contact is a forum                                        | boolean            | NO   |     | 0                   |                |
-| prv                       | contact is a private group                                | boolean            | NO   |     | 0                   |                |
-| contact-type              |                                                           | tinyint            | NO   |     | 0                   |                |
-| manually-approve          |                                                           | boolean            | YES  |     | NULL                |                |
-| hidden                    |                                                           | boolean            | NO   |     | 0                   |                |
-| archive                   |                                                           | boolean            | NO   |     | 0                   |                |
-| pending                   |                                                           | boolean            | NO   |     | 1                   |                |
-| deleted                   | Contact has been deleted                                  | boolean            | NO   |     | 0                   |                |
-| rating                    |                                                           | tinyint            | NO   |     | 0                   |                |
-| unsearchable              | Contact prefers to not be searchable                      | boolean            | NO   |     | 0                   |                |
-| sensitive                 | Contact posts sensitive content                           | boolean            | NO   |     | 0                   |                |
-| baseurl                   | baseurl of the contact                                    | varchar(255)       | YES  |     |                     |                |
-| gsid                      | Global Server ID                                          | int unsigned       | YES  |     | NULL                |                |
-| reason                    |                                                           | text               | YES  |     | NULL                |                |
-| closeness                 |                                                           | tinyint unsigned   | NO   |     | 99                  |                |
-| info                      |                                                           | mediumtext         | YES  |     | NULL                |                |
-| profile-id                | Deprecated                                                | int unsigned       | YES  |     | NULL                |                |
-| bdyear                    |                                                           | varchar(4)         | NO   |     |                     |                |
-| bd                        |                                                           | date               | NO   |     | 0001-01-01          |                |
-| notify_new_posts          |                                                           | boolean            | NO   |     | 0                   |                |
-| fetch_further_information |                                                           | tinyint unsigned   | NO   |     | 0                   |                |
-| ffi_keyword_denylist      |                                                           | text               | YES  |     | NULL                |                |
+| Field                     | Description                                                  | Type               | Null | Key | Default             | Extra          |
+| ------------------------- | ------------------------------------------------------------ | ------------------ | ---- | --- | ------------------- | -------------- |
+| id                        | sequential ID                                                | int unsigned       | NO   | PRI | NULL                | auto_increment |
+| uid                       | Owner User id                                                | mediumint unsigned | NO   |     | 0                   |                |
+| created                   |                                                              | datetime           | NO   |     | 0001-01-01 00:00:00 |                |
+| updated                   | Date of last contact update                                  | datetime           | YES  |     | 0001-01-01 00:00:00 |                |
+| self                      | 1 if the contact is the user him/her self                    | boolean            | NO   |     | 0                   |                |
+| remote_self               |                                                              | boolean            | NO   |     | 0                   |                |
+| rel                       | The kind of the relation between the user and the contact    | tinyint unsigned   | NO   |     | 0                   |                |
+| duplex                    |                                                              | boolean            | NO   |     | 0                   |                |
+| network                   | Network of the contact                                       | char(4)            | NO   |     |                     |                |
+| protocol                  | Protocol of the contact                                      | char(4)            | NO   |     |                     |                |
+| name                      | Name that this contact is known by                           | varchar(255)       | NO   |     |                     |                |
+| nick                      | Nick- and user name of the contact                           | varchar(255)       | NO   |     |                     |                |
+| location                  |                                                              | varchar(255)       | YES  |     |                     |                |
+| about                     |                                                              | text               | YES  |     | NULL                |                |
+| keywords                  | public keywords (interests) of the contact                   | text               | YES  |     | NULL                |                |
+| gender                    | Deprecated                                                   | varchar(32)        | NO   |     |                     |                |
+| xmpp                      |                                                              | varchar(255)       | NO   |     |                     |                |
+| attag                     |                                                              | varchar(255)       | NO   |     |                     |                |
+| avatar                    |                                                              | varchar(255)       | NO   |     |                     |                |
+| photo                     | Link to the profile photo of the contact                     | varchar(255)       | YES  |     |                     |                |
+| thumb                     | Link to the profile photo (thumb size)                       | varchar(255)       | YES  |     |                     |                |
+| micro                     | Link to the profile photo (micro size)                       | varchar(255)       | YES  |     |                     |                |
+| header                    | Header picture                                               | varchar(255)       | YES  |     | NULL                |                |
+| site-pubkey               |                                                              | text               | YES  |     | NULL                |                |
+| issued-id                 |                                                              | varchar(255)       | NO   |     |                     |                |
+| dfrn-id                   |                                                              | varchar(255)       | NO   |     |                     |                |
+| url                       |                                                              | varchar(255)       | NO   |     |                     |                |
+| nurl                      |                                                              | varchar(255)       | NO   |     |                     |                |
+| uri-id                    | Id of the item-uri table entry that contains the contact url | int unsigned       | YES  |     | NULL                |                |
+| addr                      |                                                              | varchar(255)       | NO   |     |                     |                |
+| alias                     |                                                              | varchar(255)       | NO   |     |                     |                |
+| pubkey                    | RSA public key 4096 bit                                      | text               | YES  |     | NULL                |                |
+| prvkey                    | RSA private key 4096 bit                                     | text               | YES  |     | NULL                |                |
+| batch                     |                                                              | varchar(255)       | NO   |     |                     |                |
+| request                   |                                                              | varchar(255)       | YES  |     | NULL                |                |
+| notify                    |                                                              | varchar(255)       | YES  |     | NULL                |                |
+| poll                      |                                                              | varchar(255)       | YES  |     | NULL                |                |
+| confirm                   |                                                              | varchar(255)       | YES  |     | NULL                |                |
+| subscribe                 |                                                              | varchar(255)       | YES  |     | NULL                |                |
+| poco                      |                                                              | varchar(255)       | YES  |     | NULL                |                |
+| aes_allow                 |                                                              | boolean            | NO   |     | 0                   |                |
+| ret-aes                   |                                                              | boolean            | NO   |     | 0                   |                |
+| usehub                    |                                                              | boolean            | NO   |     | 0                   |                |
+| subhub                    |                                                              | boolean            | NO   |     | 0                   |                |
+| hub-verify                |                                                              | varchar(255)       | NO   |     |                     |                |
+| last-update               | Date of the last try to update the contact info              | datetime           | NO   |     | 0001-01-01 00:00:00 |                |
+| success_update            | Date of the last successful contact update                   | datetime           | NO   |     | 0001-01-01 00:00:00 |                |
+| failure_update            | Date of the last failed update                               | datetime           | NO   |     | 0001-01-01 00:00:00 |                |
+| failed                    | Connection failed                                            | boolean            | YES  |     | NULL                |                |
+| name-date                 |                                                              | datetime           | NO   |     | 0001-01-01 00:00:00 |                |
+| uri-date                  |                                                              | datetime           | NO   |     | 0001-01-01 00:00:00 |                |
+| avatar-date               |                                                              | datetime           | NO   |     | 0001-01-01 00:00:00 |                |
+| term-date                 |                                                              | datetime           | NO   |     | 0001-01-01 00:00:00 |                |
+| last-item                 | date of the last post                                        | datetime           | NO   |     | 0001-01-01 00:00:00 |                |
+| last-discovery            | date of the last follower discovery                          | datetime           | NO   |     | 0001-01-01 00:00:00 |                |
+| priority                  |                                                              | tinyint unsigned   | NO   |     | 0                   |                |
+| blocked                   | Node-wide block status                                       | boolean            | NO   |     | 1                   |                |
+| block_reason              | Node-wide block reason                                       | text               | YES  |     | NULL                |                |
+| readonly                  | posts of the contact are readonly                            | boolean            | NO   |     | 0                   |                |
+| writable                  |                                                              | boolean            | NO   |     | 0                   |                |
+| forum                     | contact is a forum                                           | boolean            | NO   |     | 0                   |                |
+| prv                       | contact is a private group                                   | boolean            | NO   |     | 0                   |                |
+| contact-type              |                                                              | tinyint            | NO   |     | 0                   |                |
+| manually-approve          |                                                              | boolean            | YES  |     | NULL                |                |
+| hidden                    |                                                              | boolean            | NO   |     | 0                   |                |
+| archive                   |                                                              | boolean            | NO   |     | 0                   |                |
+| pending                   |                                                              | boolean            | NO   |     | 1                   |                |
+| deleted                   | Contact has been deleted                                     | boolean            | NO   |     | 0                   |                |
+| rating                    |                                                              | tinyint            | NO   |     | 0                   |                |
+| unsearchable              | Contact prefers to not be searchable                         | boolean            | NO   |     | 0                   |                |
+| sensitive                 | Contact posts sensitive content                              | boolean            | NO   |     | 0                   |                |
+| baseurl                   | baseurl of the contact                                       | varchar(255)       | YES  |     |                     |                |
+| gsid                      | Global Server ID                                             | int unsigned       | YES  |     | NULL                |                |
+| reason                    |                                                              | text               | YES  |     | NULL                |                |
+| closeness                 |                                                              | tinyint unsigned   | NO   |     | 99                  |                |
+| info                      |                                                              | mediumtext         | YES  |     | NULL                |                |
+| profile-id                | Deprecated                                                   | int unsigned       | YES  |     | NULL                |                |
+| bdyear                    |                                                              | varchar(4)         | NO   |     |                     |                |
+| bd                        |                                                              | date               | NO   |     | 0001-01-01          |                |
+| notify_new_posts          |                                                              | boolean            | NO   |     | 0                   |                |
+| fetch_further_information |                                                              | tinyint unsigned   | NO   |     | 0                   |                |
+| ffi_keyword_denylist      |                                                              | text               | YES  |     | NULL                |                |
 
 Indexes
 ------------
@@ -118,6 +119,7 @@ Indexes
 | uid_self_contact-type       | uid, self, contact-type              |
 | self_network_uid            | self, network, uid                   |
 | gsid                        | gsid                                 |
+| uri-id                      | uri-id                               |
 
 Foreign Keys
 ------------
@@ -125,6 +127,7 @@ Foreign Keys
 | Field | Target Table | Target Field |
 |-------|--------------|--------------|
 | uid | [user](help/database/db_user) | uid |
+| uri-id | [item-uri](help/database/db_item-uri) | id |
 | gsid | [gserver](help/database/db_gserver) | id |
 
 Return to [database documentation](help/database)
index 92f3a48bf53e73263f60324c33b61dcd8cad3ac9..094146dff215e5cd92cfc29ddf59f55b5617fce1 100644 (file)
@@ -185,6 +185,12 @@ class Contact
                        $fields['gsid'] = GServer::getID($fields['baseurl'], true);
                }
 
+               if (!empty($fields['url']) && !empty($fields['guid'])) {
+                       $fields['uri-id'] = ItemURI::insert(['uri' => $fields['url'], 'guid' => $fields['guid']]);
+               } elseif (!empty($fields['url'])) {
+                       $fields['uri-id'] = ItemURI::getIdByURI($fields['url']);
+               }
+
                if (empty($fields['created'])) {
                        $fields['created'] = DateTimeFormat::utcNow();
                }
@@ -2144,9 +2150,10 @@ class Contact
                        return true;
                }
 
-               $ret['nurl'] = Strings::normaliseLink($ret['url']);
+               $ret['nurl']    = Strings::normaliseLink($ret['url']);
+               $ret['uri-id']  = ItemURI::getIdByURI($ret['url']);
                $ret['updated'] = $updated;
-               $ret['failed'] = false;
+               $ret['failed']  = false;
 
                // Only fill the pubkey if it had been empty before. We have to prevent identity theft.
                if (empty($pubkey) && !empty($new_pubkey)) {
index d2053647a5a9a074c7608dff8e5e9a3906a331db..9307375752cdad581031ee5707fb7d2db0495a28 100644 (file)
@@ -111,7 +111,7 @@ class Account extends BaseDataTransferObject
                $created = $userContactCreated < $publicContactCreated && ($userContactCreated != DBA::NULL_DATETIME) ? $userContactCreated : $publicContactCreated;
                $this->created_at      = DateTimeFormat::utc($created, DateTimeFormat::JSON);
 
-               $this->note            = BBCode::convert($publicContact['about'], false);
+               $this->note            = BBCode::convertForItem($publicContact['uri-id'] ?? 0, $publicContact['about'], BBCode::API);
                $this->url             = $publicContact['url'];
                $this->avatar          = Contact::getAvatarUrlForId($userContact['id'] ?? 0 ?: $publicContact['id'], Proxy::SIZE_SMALL, $userContact['updated'] ?? '' ?: $publicContact['updated']);
                $this->avatar_static   = $this->avatar;
index 7821774e75712b9e35afe0d9df47bedde9594db3..5a569b002c124ad590abac94063ff5492797c3c5 100644 (file)
@@ -183,6 +183,7 @@ return [
                        "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" => ""],
+                       "uri-id" => ["type" => "int unsigned", "foreign" => ["item-uri" => "id"], "comment" => "Id of the item-uri table entry that contains the contact url"],
                        "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"],
@@ -260,7 +261,8 @@ return [
                        "uid_contact-type" => ["uid", "contact-type"],
                        "uid_self_contact-type" => ["uid", "self", "contact-type"],
                        "self_network_uid" => ["self", "network", "uid"],
-                       "gsid" => ["gsid"]
+                       "gsid" => ["gsid"],
+                       "uri-id" => ["uri-id"],
                ]
        ],
        "item-uri" => [