]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/Contact/Relation.php
Merge pull request #8964 from annando/contact-tabs
[friendica.git] / src / Model / Contact / Relation.php
index a98f2bfd9a2af35bbcb4ba7cbf63dd8528e83996..b6e612c7d8bd9f779610cbc3366b434c2b3bcd3e 100644 (file)
@@ -26,6 +26,8 @@ use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Database\DBA;
 use Friendica\DI;
+use Friendica\Model\APContact;
+use Friendica\Model\Contact;
 use Friendica\Protocol\ActivityPub;
 use Friendica\Util\DateTimeFormat;
 use Friendica\Util\Strings;
@@ -218,12 +220,8 @@ class Relation
        public static function countFollows(int $cid, array $condition = [])
        {
                $condition = DBA::mergeConditions($condition,
-                       ['`id` IN (
-    SELECT `relation-cid`
-    FROM `contact-relation`
-    WHERE `cid` = ?
-    AND `follows`
-)', $cid]
+                       ['`id` IN (SELECT `relation-cid` FROM `contact-relation` WHERE `cid` = ? AND `follows`)', 
+                       $cid]
                );
 
                return DI::dba()->count('contact', $condition);
@@ -233,6 +231,7 @@ class Relation
         * Returns a paginated list of contacts that are followed the provided public contact.
         *
         * @param int   $cid       Public contact id
+        * @param array $field     Field list
         * @param array $condition Additional condition on the contact table
         * @param int   $count
         * @param int   $offset
@@ -240,27 +239,16 @@ class Relation
         * @return array
         * @throws Exception
         */
-       public static function listFollows(int $cid, array $condition = [], int $count = 30, int $offset = 0, bool $shuffle = false)
+       public static function listFollows(int $cid, array $fields = [], array $condition = [], int $count = 30, int $offset = 0, bool $shuffle = false)
        {
                $condition = DBA::mergeConditions($condition,
-                       ['`id` IN (
-    SELECT `relation-cid`
-    FROM `contact-relation`
-    WHERE `cid` = ?
-    AND `follows`
-)', $cid]
+                       ['`id` IN (SELECT `relation-cid` FROM `contact-relation` WHERE `cid` = ? AND `follows`)', 
+                       $cid]
                );
 
-               $follows = DI::dba()->selectToArray(
-                       'contact',
-                       $condition,
-                       [
-                               'limit' => [$offset, $count],
-                               'order' => [$shuffle ? 'RAND()' : 'name']
-                       ]
+               return DI::dba()->selectToArray('contact', $fields, $condition,
+                       ['limit' => [$offset, $count], 'order' => [$shuffle ? 'RAND()' : 'name']]
                );
-
-               return $follows;
        }
 
        /**
@@ -274,12 +262,8 @@ class Relation
        public static function countFollowers(int $cid, array $condition = [])
        {
                $condition = DBA::mergeConditions($condition,
-                       ['`id` IN (
-    SELECT `cid`
-    FROM `contact-relation`
-    WHERE `relation-cid` = ?
-    AND `follows`
-)', $cid]
+                       ['`id` IN (SELECT `cid` FROM `contact-relation` WHERE `relation-cid` = ? AND `follows`)',
+                       $cid]
                );
 
                return DI::dba()->count('contact', $condition);
@@ -289,6 +273,7 @@ class Relation
         * Returns a paginated list of contacts that follow the provided public contact.
         *
         * @param int   $cid       Public contact id
+        * @param array $field     Field list
         * @param array $condition Additional condition on the contact table
         * @param int   $count
         * @param int   $offset
@@ -296,27 +281,15 @@ class Relation
         * @return array
         * @throws Exception
         */
-       public static function listFollowers(int $cid, array $condition = [], int $count = 30, int $offset = 0, bool $shuffle = false)
+       public static function listFollowers(int $cid, array $fields = [], array $condition = [], int $count = 30, int $offset = 0, bool $shuffle = false)
        {
                $condition = DBA::mergeConditions($condition,
-                       ['`id` IN (
-    SELECT `cid`
-    FROM `contact-relation`
-    WHERE `relation-cid` = ?
-    AND `follows`
-)', $cid]
+                       ['`id` IN (SELECT `cid` FROM `contact-relation` WHERE `relation-cid` = ? AND `follows`)', $cid]
                );
 
-               $followers = DI::dba()->selectToArray(
-                       'contact',
-                       $condition,
-                       [
-                               'limit' => [$offset, $count],
-                               'order' => [$shuffle ? 'RAND()' : 'name']
-                       ]
+               return DI::dba()->selectToArray('contact', $fields, $condition,
+                       ['limit' => [$offset, $count], 'order' => [$shuffle ? 'RAND()' : 'name']]
                );
-
-               return $followers;
        }
 
        /**
@@ -332,21 +305,12 @@ class Relation
        public static function countCommon(int $sourceId, int $targetId, array $condition = [])
        {
                $condition = DBA::mergeConditions($condition,
-                       ['`id` IN (
-    SELECT `relation-cid`
-    FROM `contact-relation`
-    WHERE `cid` = ?
-) 
-  AND `id` IN (
-    SELECT `relation-cid`
-    FROM `contact-relation`
-    WHERE `cid` = ?
-)', $sourceId, $targetId]
+                       ['`id` IN (SELECT `relation-cid` FROM `contact-relation` WHERE `cid` = ?) 
+                       AND `id` IN (SELECT `relation-cid` FROM `contact-relation` WHERE `cid` = ?)',
+                       $sourceId, $targetId]
                );
 
-               $total = DI::dba()->count('contact', $condition);
-
-               return $total;
+               return DI::dba()->count('contact', $condition);
        }
 
        /**
@@ -355,6 +319,7 @@ class Relation
         *
         * @param int   $sourceId  Public contact id
         * @param int   $targetId  Public contact id
+        * @param array $field     Field list
         * @param array $condition Additional condition on the contact table
         * @param int   $count
         * @param int   $offset
@@ -362,33 +327,17 @@ class Relation
         * @return array
         * @throws Exception
         */
-       public static function listCommon(int $sourceId, int $targetId, array $condition = [], int $count = 30, int $offset = 0, bool $shuffle = false)
+       public static function listCommon(int $sourceId, int $targetId, array $fields = [], array $condition = [], int $count = 30, int $offset = 0, bool $shuffle = false)
        {
                $condition = DBA::mergeConditions($condition,
-                       ["`id` IN (
-    SELECT `relation-cid`
-    FROM `contact-relation`
-    WHERE `cid` = ?
-      AND `follows`
-) 
-  AND `id` IN (
-    SELECT `relation-cid`
-    FROM `contact-relation`
-    WHERE `cid` = ?
-      AND `follows`
-)", $sourceId, $targetId]
+                       ["`id` IN (SELECT `relation-cid` FROM `contact-relation` WHERE `cid` = ? AND `follows`) 
+                       AND `id` IN (SELECT `relation-cid` FROM `contact-relation` WHERE `cid` = ? AND `follows`)",
+                       $sourceId, $targetId]
                );
 
-               $contacts = DI::dba()->selectToArray(
-                       'contact',
-                       $condition,
-                       [
-                               'limit' => [$offset, $count],
-                               'order' => [$shuffle ? 'name' : 'RAND()'],
-                       ]
+               return DI::dba()->selectToArray('contact', $fields, $condition,
+                       ['limit' => [$offset, $count], 'order' => [$shuffle ? 'name' : 'RAND()']]
                );
-
-               return $contacts;
        }
 
 
@@ -404,23 +353,12 @@ class Relation
        public static function countCommonFollows(int $sourceId, int $targetId, array $condition = [])
        {
                $condition = DBA::mergeConditions($condition,
-                       ['`id` IN (
-    SELECT `relation-cid`
-    FROM `contact-relation`
-    WHERE `cid` = ?
-      AND `follows`
-) 
-  AND `id` IN (
-    SELECT `relation-cid`
-    FROM `contact-relation`
-    WHERE `cid` = ?
-      AND `follows`
-)', $sourceId, $targetId]
+                       ['`id` IN (SELECT `relation-cid` FROM `contact-relation` WHERE `cid` = ? AND `follows`) 
+                       AND `id` IN (SELECT `relation-cid` FROM `contact-relation` WHERE `cid` = ? AND `follows`)',
+                       $sourceId, $targetId]
                );
 
-               $total = DI::dba()->count('contact', $condition);
-
-               return $total;
+               return DI::dba()->count('contact', $condition);
        }
 
        /**
@@ -428,6 +366,7 @@ class Relation
         *
         * @param int   $sourceId  Public contact id
         * @param int   $targetId  Public contact id
+        * @param array $field     Field list
         * @param array $condition Additional condition array on the contact table
         * @param int   $count
         * @param int   $offset
@@ -435,33 +374,17 @@ class Relation
         * @return array
         * @throws Exception
         */
-       public static function listCommonFollows(int $sourceId, int $targetId, array $condition = [], int $count = 30, int $offset = 0, bool $shuffle = false)
+       public static function listCommonFollows(int $sourceId, int $targetId, array $fields = [], array $condition = [], int $count = 30, int $offset = 0, bool $shuffle = false)
        {
                $condition = DBA::mergeConditions($condition,
-                       ["`id` IN (
-    SELECT `relation-cid`
-    FROM `contact-relation`
-    WHERE `cid` = ?
-      AND `follows`
-) 
-  AND `id` IN (
-    SELECT `relation-cid`
-    FROM `contact-relation`
-    WHERE `cid` = ?
-      AND `follows`
-)", $sourceId, $targetId]
+                       ["`id` IN (SELECT `relation-cid` FROM `contact-relation` WHERE `cid` = ? AND `follows`) 
+                       AND `id` IN (SELECT `relation-cid` FROM `contact-relation` WHERE `cid` = ? AND `follows`)",
+                       $sourceId, $targetId]
                );
 
-               $contacts = DI::dba()->selectToArray(
-                       'contact',
-                       $condition,
-                       [
-                               'limit' => [$offset, $count],
-                               'order' => [$shuffle ? 'name' : 'RAND()'],
-                       ]
+               return DI::dba()->selectToArray('contact', $fields, $condition,
+                       ['limit' => [$offset, $count], 'order' => [$shuffle ? 'name' : 'RAND()']]
                );
-
-               return $contacts;
        }
 
        /**
@@ -476,23 +399,12 @@ class Relation
        public static function countCommonFollowers(int $sourceId, int $targetId, array $condition = [])
        {
                $condition = DBA::mergeConditions($condition,
-                       ['`id` IN (
-    SELECT `cid`
-    FROM `contact-relation`
-    WHERE `relation-cid` = ?
-      AND `follows`
-) 
-  AND `id` IN (
-    SELECT `cid`
-    FROM `contact-relation`
-    WHERE `relation-cid` = ?
-      AND `follows`
-)', $sourceId, $targetId]
+                       ["`id` IN (SELECT `cid` FROM `contact-relation` WHERE `relation-cid` = ? AND `follows`) 
+                       AND `id` IN (SELECT `cid` FROM `contact-relation` WHERE `relation-cid` = ? AND `follows`)",
+                       $sourceId, $targetId]
                );
 
-               $total = DI::dba()->count('contact', $condition);
-
-               return $total;
+               return DI::dba()->count('contact', $condition);
        }
 
        /**
@@ -500,6 +412,7 @@ class Relation
         *
         * @param int   $sourceId  Public contact id
         * @param int   $targetId  Public contact id
+        * @param array $field     Field list
         * @param array $condition Additional condition on the contact table
         * @param int   $count
         * @param int   $offset
@@ -507,32 +420,16 @@ class Relation
         * @return array
         * @throws Exception
         */
-       public static function listCommonFollowers(int $sourceId, int $targetId, array $condition = [], int $count = 30, int $offset = 0, bool $shuffle = false)
+       public static function listCommonFollowers(int $sourceId, int $targetId, array $fields = [], array $condition = [], int $count = 30, int $offset = 0, bool $shuffle = false)
        {
                $condition = DBA::mergeConditions($condition,
-                       ["`id` IN (
-    SELECT `cid`
-    FROM `contact-relation`
-    WHERE `relation-cid` = ?
-      AND `follows`
-) 
-  AND `id` IN (
-    SELECT `cid`
-    FROM `contact-relation`
-    WHERE `relation-cid` = ?
-      AND `follows`
-)", $sourceId, $targetId]
+                       ["`id` IN (SELECT `cid` FROM `contact-relation` WHERE `relation-cid` = ? AND `follows`) 
+                       AND `id` IN (SELECT `cid` FROM `contact-relation` WHERE `relation-cid` = ? AND `follows`)",
+                       $sourceId, $targetId]
                );
 
-               $contacts = DI::dba()->selectToArray(
-                       'contact',
-                       $condition,
-                       [
-                               'limit' => [$offset, $count],
-                               'order' => [$shuffle ? 'name' : 'RAND()'],
-                       ]
+               return DI::dba()->selectToArray('contact', $fields, $condition,
+                       ['limit' => [$offset, $count],  'order' => [$shuffle ? 'name' : 'RAND()']]
                );
-
-               return $contacts;
        }
 }