]> git.mxchange.org Git - friendica.git/commitdiff
We now use the new account-user-view (and fixed the function name)
authorMichael <heluecht@pirati.ca>
Sun, 11 Jul 2021 09:39:34 +0000 (09:39 +0000)
committerMichael <heluecht@pirati.ca>
Sun, 11 Jul 2021 09:39:34 +0000 (09:39 +0000)
17 files changed:
database.sql
src/Database/PostUpdate.php
src/Factory/Api/Mastodon/Account.php
src/Factory/Api/Mastodon/FollowRequest.php
src/Factory/Api/Mastodon/Relationship.php
src/Factory/Api/Twitter/User.php
src/Model/Contact.php
src/Model/Contact/User.php
src/Module/Api/Mastodon/Accounts/Lists.php
src/Module/Api/Mastodon/Accounts/Note.php
src/Module/Api/Mastodon/Accounts/VerifyCredentials.php
src/Module/Api/Twitter/ContactEndpoint.php
src/Module/Contact.php
src/Protocol/ActivityPub/Transmitter.php
src/Repository/PermissionSet.php
static/dbstructure.config.php
update.php

index 0b1a34f213e794161e5a9ccdeb0a0e82e643a8f8..2e7a189b39290ff8be6e8011acaadab30a7c244a 100644 (file)
@@ -1,6 +1,6 @@
 -- ------------------------------------------
 -- Friendica 2021.09-dev (Siberian Iris)
--- DB_UPDATE_VERSION 1428
+-- DB_UPDATE_VERSION 1429
 -- ------------------------------------------
 
 
index 0b640f187562ef647ec8d1b3419eb2baab4fdfe5..aa657b0233d9d818167887aa08c26646d9207943 100644 (file)
@@ -45,7 +45,8 @@ class PostUpdate
 {
        // Needed for the helper function to read from the legacy term table
        const OBJECT_TYPE_POST  = 1;
-       const VERSION = 1400;
+
+       const VERSION = 1427;
 
        /**
         * Calls the post update functions
index dd4ebcfaece3e512bbf3563df39cb9da32768de5..85b3d4316b0c0ae25c61f5c22348317c195df45b 100644 (file)
@@ -60,7 +60,7 @@ class Account extends BaseFactory
         */
        public function createFromContactId(int $contactId, $uid = 0): \Friendica\Object\Api\Mastodon\Account
        {
-               $cdata = Contact::getPublicAndUserContacID($contactId, $uid);
+               $cdata = Contact::getPublicAndUserContactID($contactId, $uid);
                if (!empty($cdata)) {
                        $publicContact = Contact::getById($cdata['public']);
                        $userContact   = Contact::getById($cdata['user']);
index f0724e5f18157277b2360c1bf340189c638607b0..f2be0e589aff5a40d0cfbfbdf61825deb71b4ef3 100644 (file)
@@ -49,7 +49,7 @@ class FollowRequest extends BaseFactory
         */
        public function createFromIntroduction(Introduction $introduction): \Friendica\Object\Api\Mastodon\FollowRequest
        {
-               $cdata = Contact::getPublicAndUserContacID($introduction->{'contact-id'}, $introduction->uid);
+               $cdata = Contact::getPublicAndUserContactID($introduction->{'contact-id'}, $introduction->uid);
 
                if (empty($cdata)) {
                        $this->logger->warning('Wrong introduction data', ['Introduction' => $introduction]);
index 4d08cbb1d27d6cdd837c8eda6980bae4141818d3..6f6c05d7e610772e8bafd21d11f10c4fc82681d1 100644 (file)
@@ -36,7 +36,7 @@ class Relationship extends BaseFactory
         */
        public function createFromContactId(int $contactId, int $uid): RelationshipEntity
        {
-               $cdata = Contact::getPublicAndUserContacID($contactId, $uid);
+               $cdata = Contact::getPublicAndUserContactID($contactId, $uid);
                if (!empty($cdata)) {
                        $cid = $cdata['user'];
                } else {
index 0ea8a68375d28f7b38c32cbb3d537a2c1c5f9471..ad73df1f5ab8055a1fe1c3ef9e56db7f16a8b76a 100644 (file)
@@ -39,7 +39,7 @@ class User extends BaseFactory
         */
        public function createFromContactId(int $contactId, $uid = 0, $skip_status = false, $include_user_entities = true)
        {
-               $cdata = Contact::getPublicAndUserContacID($contactId, $uid);
+               $cdata = Contact::getPublicAndUserContactID($contactId, $uid);
                if (!empty($cdata)) {
                        $publicContact = Contact::getById($cdata['public']);
                        $userContact = Contact::getById($cdata['user']);
index 0184861c3c2d8403750bb075d5c69a03781cd43c..a92a901cf5e6eea0cbb01c580196f8b1cab67700 100644 (file)
@@ -332,7 +332,7 @@ class Contact
                        return false;
                }
 
-               $cdata = self::getPublicAndUserContacID($cid, $uid);
+               $cdata = self::getPublicAndUserContactID($cid, $uid);
                if (empty($cdata['user'])) {
                        return false;
                }
@@ -378,7 +378,7 @@ class Contact
                        return false;
                }
 
-               $cdata = self::getPublicAndUserContacID($cid, $uid);
+               $cdata = self::getPublicAndUserContactID($cid, $uid);
                if (empty($cdata['user'])) {
                        return false;
                }
@@ -507,7 +507,48 @@ class Contact
         * @throws HTTPException\InternalServerErrorException
         * @throws \ImagickException
         */
-       public static function getPublicAndUserContacID($cid, $uid)
+       public static function getPublicAndUserContactID($cid, $uid)
+       {
+               // We have to use the legacy function as long as the post update hasn't finished
+               if (DI::config()->get('system', 'post_update_version') < 1427) {
+                       return self::legacyGetPublicAndUserContactID($cid, $uid);
+               }
+
+               if (empty($uid) || empty($cid)) {
+                       return [];
+               }
+
+               $contact = DBA::selectFirst('account-user-view', ['id', 'uid', 'pid'], ['id' => $cid]);
+               if (!DBA::isResult($contact) || !in_array($contact['uid'], [0, $uid])) {
+                       return [];
+               }
+
+               $pcid = $contact['pid'];
+               if ($contact['uid'] == $uid) {
+                       $ucid = $contact['id'];
+               } else {
+                       $contact = DBA::selectFirst('account-user-view', ['id', 'uid'], ['pid' => $cid, 'uid' => $uid]);
+                       if (DBA::isResult($contact)) {
+                               $ucid = $contact['id'];
+                       } else {
+                               $ucid = 0;
+                       }
+               }
+
+               return ['public' => $pcid, 'user' => $ucid];
+       }
+
+       /**
+        * Helper function for "getPublicAndUserContactID"
+        *
+        * @param int $cid Either public contact id or user's contact id
+        * @param int $uid User ID
+        *
+        * @return array with public and user's contact id
+        * @throws HTTPException\InternalServerErrorException
+        * @throws \ImagickException
+        */
+       private static function legacyGetPublicAndUserContactID($cid, $uid)
        {
                if (empty($uid) || empty($cid)) {
                        return [];
@@ -2588,7 +2629,7 @@ class Contact
         */
        public static function unfollow(int $cid, int $uid)
        {
-               $cdata = self::getPublicAndUserContacID($cid, $uid);
+               $cdata = self::getPublicAndUserContactID($cid, $uid);
                if (empty($cdata['user'])) {
                        return false;
                }
index 87688201fed17e5797baeb788a2396f32c993416..26fd96303f6610304b3303344ce0782c15cadd84 100644 (file)
@@ -39,7 +39,7 @@ class User
         */
        public static function setBlocked($cid, $uid, $blocked)
        {
-               $cdata = Contact::getPublicAndUserContacID($cid, $uid);
+               $cdata = Contact::getPublicAndUserContactID($cid, $uid);
                if (empty($cdata)) {
                        return;
                }
@@ -62,7 +62,7 @@ class User
         */
        public static function isBlocked($cid, $uid)
        {
-               $cdata = Contact::getPublicAndUserContacID($cid, $uid);
+               $cdata = Contact::getPublicAndUserContactID($cid, $uid);
                if (empty($cdata)) {
                        return false;
                }
@@ -102,7 +102,7 @@ class User
         */
        public static function setIgnored($cid, $uid, $ignored)
        {
-               $cdata = Contact::getPublicAndUserContacID($cid, $uid);
+               $cdata = Contact::getPublicAndUserContactID($cid, $uid);
                if (empty($cdata)) {
                        return;
                }
@@ -125,7 +125,7 @@ class User
         */
        public static function isIgnored($cid, $uid)
        {
-               $cdata = Contact::getPublicAndUserContacID($cid, $uid);
+               $cdata = Contact::getPublicAndUserContactID($cid, $uid);
                if (empty($cdata)) {
                        return false;
                }
@@ -165,7 +165,7 @@ class User
         */
        public static function setCollapsed($cid, $uid, $collapsed)
        {
-               $cdata = Contact::getPublicAndUserContacID($cid, $uid);
+               $cdata = Contact::getPublicAndUserContactID($cid, $uid);
                if (empty($cdata)) {
                        return;
                }
@@ -185,7 +185,7 @@ class User
         */
        public static function isCollapsed($cid, $uid)
        {
-               $cdata = Contact::getPublicAndUserContacID($cid, $uid);
+               $cdata = Contact::getPublicAndUserContactID($cid, $uid);
                if (empty($cdata)) {
                        return;
                }
index b962594ff7874786d4be2cd512302d56f3fa7cd1..9086749405fd5ad09d317cba1820c28fc579bbe2 100644 (file)
@@ -52,7 +52,7 @@ class Lists extends BaseApi
 
                $lists = [];
 
-               $cdata = Contact::getPublicAndUserContacID($id, $uid);
+               $cdata = Contact::getPublicAndUserContactID($id, $uid);
                if (!empty($cdata['user'])) {
                        $groups = DBA::select('group_member', ['gid'], ['contact-id' => $cdata['user']]);
                        while ($group = DBA::fetch($groups)) {
index f78d58bac5a95493549ad054d41e5e27459bf681..bb5778a0f70984c712146c2e4585fa8cdde5e311 100644 (file)
@@ -45,7 +45,7 @@ class Note extends BaseApi
                        'comment' => '',
                ]);
 
-               $cdata = Contact::getPublicAndUserContacID($parameters['id'], $uid);
+               $cdata = Contact::getPublicAndUserContactID($parameters['id'], $uid);
                if (empty($cdata['user'])) {
                        DI::mstdnError()->RecordNotFound();
                }
index 295cbf2afe9090a82319d061d9223734d1dea3f4..1c1945438b22accae7df80525ecd6ab57057be08 100644 (file)
@@ -46,7 +46,7 @@ class VerifyCredentials extends BaseApi
                        DI::mstdnError()->InternalError();
                }
 
-               $cdata = Contact::getPublicAndUserContacID($self['id'], $uid);
+               $cdata = Contact::getPublicAndUserContactID($self['id'], $uid);
                if (empty($cdata)) {
                        DI::mstdnError()->InternalError();
                }
index 4641bf813f12221ce099c0338107588699a8af90..7e5f11cc6578ff71b9005db575fd2ec9e3dd395c 100644 (file)
@@ -205,7 +205,7 @@ abstract class ContactEndpoint extends BaseApi
 
                        // Conversion to public contact ids
                        array_walk($ids, function (&$contactId) use ($uid, $stringify_ids) {
-                               $cdata = Contact::getPublicAndUserContacID($contactId, $uid);
+                               $cdata = Contact::getPublicAndUserContactID($contactId, $uid);
                                if ($stringify_ids) {
                                        $contactId = (string)$cdata['public'];
                                } else {
index 2609a5b8bfc3da6086516b24bf9d1b343bde159e..47f244a9191755212ab32d645506d4a7863f305c 100644 (file)
@@ -283,7 +283,7 @@ class Contact extends BaseModule
                        $contact_id = intval($a->argv[1]);
 
                        // Ensure to use the user contact when the public contact was provided
-                       $data = Model\Contact::getPublicAndUserContacID($contact_id, local_user());
+                       $data = Model\Contact::getPublicAndUserContactID($contact_id, local_user());
                        if (!empty($data['user']) && ($contact_id == $data['public'])) {
                                $contact_id = $data['user'];
                        }
@@ -915,7 +915,7 @@ class Contact extends BaseModule
        public static function getTabsHTML(array $contact, int $active_tab)
        {
                $cid = $pcid = $contact['id'];
-               $data = Model\Contact::getPublicAndUserContacID($contact['id'], local_user());
+               $data = Model\Contact::getPublicAndUserContactID($contact['id'], local_user());
                if (!empty($data['user']) && ($contact['id'] == $data['public'])) {
                        $cid = $data['user'];
                } elseif (!empty($data['public'])) {
index 29fb1a11a7a47688704e73d56ca3d38e4a57dbee..a65f85542296cc79a047f33db4b92fcdfde58946 100644 (file)
@@ -345,7 +345,7 @@ class Transmitter
                }
 
                if (!empty($owner['about'])) {
-                       $data['summary'] = BBCode::convertForUriId($owner['uri-id'], $owner['about'], BBCode::EXTERNAL);
+                       $data['summary'] = BBCode::convertForUriId($owner['uri-id'] ?? 0, $owner['about'], BBCode::EXTERNAL);
                }
 
                $data['url'] = $owner['url'];
index c83e901765daa05e546993d7e6d68ff492d42267..828247fb43861b300ddc8dac0deca9a00bd8c593 100644 (file)
@@ -161,7 +161,7 @@ class PermissionSet extends BaseRepository
         */
        public function selectByContactId($contact_id, $uid)
        {
-               $cdata = Model\Contact::getPublicAndUserContacID($contact_id, $uid);
+               $cdata = Model\Contact::getPublicAndUserContactID($contact_id, $uid);
                if (!empty($cdata)) {
                        $public_contact_str = '<' . $cdata['public'] . '>';
                        $user_contact_str = '<' . $cdata['user'] . '>';
index 66bed073d9d3c02c4b0a201c2dc9facedd11ca37..19688e698cac1ecf34b758b85fc66d241eb33d7b 100644 (file)
@@ -55,7 +55,7 @@
 use Friendica\Database\DBA;
 
 if (!defined('DB_UPDATE_VERSION')) {
-       define('DB_UPDATE_VERSION', 1428);
+       define('DB_UPDATE_VERSION', 1429);
 }
 
 return [
index aa043468caa9e40ba64483ffba8a406c5fcd666f..3f601b1f1ccc042c4d5355da9575006edfc73353 100644 (file)
@@ -251,7 +251,7 @@ function update_1348()
        // Insert a permissionset with id=0
        // Inserting it without an ID and then changing the value to 0 tricks the auto increment
        if (!DBA::exists('permissionset', ['id' => 0])) {
-               DBA::insert('permissionset', ['allow_cid' => '', 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => '']);       
+               DBA::insert('permissionset', ['allow_cid' => '', 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => '']);
                $lastid = DBA::lastInsertId();
                if ($lastid != 0) {
                        DBA::update('permissionset', ['id' => 0], ['id' => $lastid]);
@@ -767,8 +767,8 @@ function update_1398()
 function update_1399()
 {
        if (!DBA::e("UPDATE `post-thread-user` INNER JOIN `post-user` ON `post-user`.`uid` = `post-thread-user`.`uid` AND `post-user`.`uri-id` = `post-thread-user`.`uri-id`
-               SET `post-thread-user`.`contact-id` = `post-user`.`contact-id`, `post-thread-user`.`unseen` = `post-user`.`unseen`, 
-               `post-thread-user`.`hidden` = `post-user`.`hidden`, `post-thread-user`.`origin` = `post-user`.`origin`, 
+               SET `post-thread-user`.`contact-id` = `post-user`.`contact-id`, `post-thread-user`.`unseen` = `post-user`.`unseen`,
+               `post-thread-user`.`hidden` = `post-user`.`hidden`, `post-thread-user`.`origin` = `post-user`.`origin`,
                `post-thread-user`.`psid` = `post-user`.`psid`, `post-thread-user`.`post-user-id` = `post-user`.`id`")) {
                        return Update::FAILED;
        }
@@ -780,7 +780,7 @@ function update_1400()
 {
        if (!DBA::e("INSERT IGNORE INTO `post` (`uri-id`, `parent-uri-id`, `thr-parent-id`, `owner-id`, `author-id`, `network`,
                `created`, `received`, `edited`, `gravity`, `causer-id`, `post-type`, `vid`, `private`, `visible`, `deleted`, `global`)
-               SELECT `uri-id`, `parent-uri-id`, `thr-parent-id`, `owner-id`, `author-id`, `network`, `created`, `received`, `edited`, 
+               SELECT `uri-id`, `parent-uri-id`, `thr-parent-id`, `owner-id`, `author-id`, `network`, `created`, `received`, `edited`,
                        `gravity`, `causer-id`, `post-type`, `vid`, `private`, `visible`, `deleted`, `global` FROM `item`")) {
                        return Update::FAILED;
        }
@@ -838,11 +838,11 @@ function update_1404()
        $tasks = DBA::select('workerqueue', ['id', 'command', 'parameter'], ['command' => ['notifier', 'delivery', 'apdelivery', 'done' => false]]);
        while ($task = DBA::fetch($tasks)) {
                $parameters = json_decode($task['parameter'], true);
-       
+
                if (is_array($parameters) && count($parameters) && in_array($parameters[0], [Delivery::MAIL, Delivery::SUGGESTION, Delivery::REMOVAL, Delivery::RELOCATION])) {
                        continue;
                }
-       
+
                switch (strtolower($task['command'])) {
                        case 'notifier':
                                if (count($parameters) == 3) {
@@ -852,7 +852,7 @@ function update_1404()
                                if (!DBA::isResult($item)) {
                                        continue 2;
                                }
-       
+
                                $parameters[1] = $item['uri-id'];
                                $parameters[2] = $item['uid'];
                                break;
@@ -864,7 +864,7 @@ function update_1404()
                                if (!DBA::isResult($item)) {
                                        continue 2;
                                }
-       
+
                                $parameters[1] = $item['uri-id'];
                                $parameters[3] = $item['uid'];
                                break;
@@ -872,16 +872,16 @@ function update_1404()
                                if (count($parameters) == 6) {
                                        continue 2;
                                }
-       
+
                                if (empty($parameters[4])) {
                                        $parameters[4] = [];
                                }
-       
+
                                $item = DBA::selectFirst('item', ['uri-id'], ['id' => $parameters[1]]);
                                if (!DBA::isResult($item)) {
                                        continue 2;
                                }
-       
+
                                $parameters[5] = $item['uri-id'];
                                break;
                        default:
@@ -945,3 +945,22 @@ function update_1419()
        }
        return Update::SUCCESS;
 }
+
+function update_1429()
+{
+       if (!DBA::e("UPDATE `contact` SET `uri-id` = null WHERE NOT `uri-id` IS NULL")) {
+               return Update::FAILED;
+       }
+
+       if (!DBA::e("UPDATE `fcontact` SET `uri-id` = null WHERE NOT `uri-id` IS NULL")) {
+               return Update::FAILED;
+       }
+
+       if (!DBA::e("UPDATE `apcontact` SET `uri-id` = null WHERE NOT `uri-id` IS NULL")) {
+               return Update::FAILED;
+       }
+
+       DI::config()->set("system", "post_update_version", 1423);
+
+       return Update::SUCCESS;
+}
\ No newline at end of file