From 6bb970c0d96b7dc3c189e6ba3755b1a9d9e016c2 Mon Sep 17 00:00:00 2001 From: n1rwana Date: Wed, 2 Aug 2023 22:53:47 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B4=D1=83=D0=B1=D0=BB=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=BF=D0=BE=D0=B4=D0=BF?= =?UTF-8?q?=D0=B8=D1=81=D1=87=D0=B8=D0=BA=D0=BE=D0=B2/=D0=BB=D0=B0=D0=B9?= =?UTF-8?q?=D0=BA=D0=BE=D0=B2/=D0=B4=D1=80=D1=83=D0=B7=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Web/Models/Entities/Club.php | 2 +- Web/Models/Entities/Postable.php | 2 +- Web/Models/Entities/User.php | 5 ++++- Web/Models/sql/get-followers.tsql | 2 +- Web/Models/sql/get-friends.tsql | 2 +- Web/Models/sql/get-online-friends.tsql | 2 +- Web/Models/sql/get-subscriptions-user.tsql | 2 +- 7 files changed, 10 insertions(+), 7 deletions(-) diff --git a/Web/Models/Entities/Club.php b/Web/Models/Entities/Club.php index 15c458a9..06b2f49b 100644 --- a/Web/Models/Entities/Club.php +++ b/Web/Models/Entities/Club.php @@ -272,7 +272,7 @@ class Club extends RowModel return false; } - return $query; + return $query->group("follower"); } function getFollowersCount(): int diff --git a/Web/Models/Entities/Postable.php b/Web/Models/Entities/Postable.php index b4f8b4c6..b743793f 100644 --- a/Web/Models/Entities/Postable.php +++ b/Web/Models/Entities/Postable.php @@ -84,7 +84,7 @@ abstract class Postable extends Attachable return sizeof(DB::i()->getContext()->table("likes")->where([ "model" => static::class, "target" => $this->getRecord()->id, - ])); + ])->group("origin")); } # TODO add pagination diff --git a/Web/Models/Entities/User.php b/Web/Models/Entities/User.php index 348631e4..d132e015 100644 --- a/Web/Models/Entities/User.php +++ b/Web/Models/Entities/User.php @@ -39,11 +39,14 @@ class User extends RowModel $query = "SELECT id FROM\n" . file_get_contents(__DIR__ . "/../sql/$filename.tsql"); $query .= "\n LIMIT " . $limit . " OFFSET " . ( ($page - 1) * $limit ); + $ids = []; $rels = DatabaseConnection::i()->getConnection()->query($query, $id, $id); foreach($rels as $rel) { $rel = (new Users)->get($rel->id); if(!$rel) continue; - + if(in_array($rel->getId(), $ids)) continue; + $ids[] = $rel->getId(); + yield $rel; } } diff --git a/Web/Models/sql/get-followers.tsql b/Web/Models/sql/get-followers.tsql index ae23d63a..552aafb8 100644 --- a/Web/Models/sql/get-followers.tsql +++ b/Web/Models/sql/get-followers.tsql @@ -1,4 +1,4 @@ - (SELECT follower AS __id FROM + (SELECT DISTINCT(follower) AS __id FROM (SELECT follower FROM subscriptions WHERE target=? AND model="openvk\\Web\\Models\\Entities\\User") u0 LEFT JOIN (SELECT target FROM subscriptions WHERE follower=? AND model="openvk\\Web\\Models\\Entities\\User") u1 diff --git a/Web/Models/sql/get-friends.tsql b/Web/Models/sql/get-friends.tsql index dc7b0730..4831c968 100644 --- a/Web/Models/sql/get-friends.tsql +++ b/Web/Models/sql/get-friends.tsql @@ -1,4 +1,4 @@ - (SELECT follower AS __id FROM + (SELECT DISTINCT(follower) AS __id FROM (SELECT follower FROM subscriptions WHERE target=? AND model="openvk\\Web\\Models\\Entities\\User") u0 INNER JOIN (SELECT target FROM subscriptions WHERE follower=? AND model="openvk\\Web\\Models\\Entities\\User") u1 diff --git a/Web/Models/sql/get-online-friends.tsql b/Web/Models/sql/get-online-friends.tsql index ad646554..7e81c621 100755 --- a/Web/Models/sql/get-online-friends.tsql +++ b/Web/Models/sql/get-online-friends.tsql @@ -1,4 +1,4 @@ - (SELECT follower AS __id FROM + (SELECT DISTINCT(follower) AS __id FROM (SELECT follower FROM subscriptions WHERE target=? AND model="openvk\\Web\\Models\\Entities\\User") u0 INNER JOIN (SELECT target FROM subscriptions WHERE follower=? AND model="openvk\\Web\\Models\\Entities\\User") u1 diff --git a/Web/Models/sql/get-subscriptions-user.tsql b/Web/Models/sql/get-subscriptions-user.tsql index 722db194..ecf8ad79 100644 --- a/Web/Models/sql/get-subscriptions-user.tsql +++ b/Web/Models/sql/get-subscriptions-user.tsql @@ -1,4 +1,4 @@ - (SELECT target AS __id FROM + (SELECT DISTINCT(target) AS __id FROM (SELECT follower FROM subscriptions WHERE target=? AND model="openvk\\Web\\Models\\Entities\\User") u0 RIGHT JOIN (SELECT target FROM subscriptions WHERE follower=? AND model="openvk\\Web\\Models\\Entities\\User") u1