Friends: Add list with friends online

This commit is contained in:
veselcraft 2022-07-31 14:33:23 +03:00
parent 4ba7c5b982
commit 22e4e76b9f
No known key found for this signature in database
GPG key ID: AED66BC1AC628A4E
6 changed files with 81 additions and 1 deletions

View file

@ -500,6 +500,16 @@ class User extends RowModel
return $this->_abstractRelationCount("get-friends"); return $this->_abstractRelationCount("get-friends");
} }
function getFriendsOnline(int $page = 1, int $limit = 6): \Traversable
{
return $this->_abstractRelationGenerator("get-online-friends", $page, $limit);
}
function getFriendsOnlineCount(): int
{
return $this->_abstractRelationCount("get-online-friends");
}
function getFollowers(int $page = 1, int $limit = 6): \Traversable function getFollowers(int $page = 1, int $limit = 6): \Traversable
{ {
return $this->_abstractRelationGenerator("get-followers", $page, $limit); return $this->_abstractRelationGenerator("get-followers", $page, $limit);

View file

@ -0,0 +1,6 @@
(SELECT 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
ON u0.follower = u1.target) u2
INNER JOIN profiles ON profiles.id = u2.__id WHERE online > (UNIX_TIMESTAMP() - 300)

View file

@ -9,6 +9,9 @@
{elseif $act == "outcoming"} {elseif $act == "outcoming"}
{var $iterator = iterator_to_array($user->getSubscriptions($page))} {var $iterator = iterator_to_array($user->getSubscriptions($page))}
{var $count = $user->getSubscriptionsCount()} {var $count = $user->getSubscriptionsCount()}
{elseif $act == "online"}
{var $iterator = iterator_to_array($user->getFriendsOnline($page))}
{var $count = $user->getFriendsOnlineCount()}
{else} {else}
{var $iterator = iterator_to_array($user->getFriends($page))} {var $iterator = iterator_to_array($user->getFriends($page))}
{var $count = $user->getFriendsCount()} {var $count = $user->getFriendsCount()}
@ -19,6 +22,8 @@
{_"incoming_req"} {_"incoming_req"}
{elseif $act == "outcoming"} {elseif $act == "outcoming"}
{_"outcoming_req"} {_"outcoming_req"}
{elseif $act == "online"}
{_"friends_online"}
{else} {else}
{_"friends"} {_"friends"}
{/if} {/if}
@ -33,6 +38,8 @@
{_"incoming_req"} {_"incoming_req"}
{elseif $act == "outcoming"} {elseif $act == "outcoming"}
{_"outcoming_req"} {_"outcoming_req"}
{elseif $act == "online"}
{_"friends_online"}
{else} {else}
{_"friends"} {_"friends"}
{/if} {/if}
@ -41,7 +48,10 @@
{block tabs} {block tabs}
<div n:attr="id => ($act === 'friends' ? 'activetabs' : 'ki')" class="tab"> <div n:attr="id => ($act === 'friends' ? 'activetabs' : 'ki')" class="tab">
<a n:attr="id => ($act === 'friends' ? 'act_tab_a' : 'ki')" href="?">{_friends}</a> <a n:attr="id => ($act === 'friends' ? 'act_tab_a' : 'ki')" href="?">{_all_friends}</a>
</div>
<div n:attr="id => ($act === 'online' ? 'activetabs' : 'ki')" class="tab">
<a n:attr="id => ($act === 'online' ? 'act_tab_a' : 'ki')" href="?act=online">{_online}</a>
</div> </div>
<div n:attr="id => ($act === 'incoming' || $act === 'outcoming' ? 'activetabs' : 'ki')" class="tab"> <div n:attr="id => ($act === 'incoming' || $act === 'outcoming' ? 'activetabs' : 'ki')" class="tab">
<a n:attr="id => ($act === 'incoming' || $act === 'outcoming' ? 'act_tab_a' : 'ki')" href="?act=incoming">{_req}</a> <a n:attr="id => ($act === 'incoming' || $act === 'outcoming' ? 'act_tab_a' : 'ki')" href="?act=incoming">{_req}</a>
@ -68,6 +78,8 @@
{tr("req", $count)} {tr("req", $count)}
{elseif $act == "outcoming"} {elseif $act == "outcoming"}
{tr("req", $count)} {tr("req", $count)}
{elseif $act == "online"}
{tr("friends_list_online", $count)}
{else} {else}
{tr("friends_list", $count)} {tr("friends_list", $count)}
{/if} {/if}

View file

@ -201,6 +201,34 @@
</div> </div>
</div> </div>
</div> </div>
<div n:if="$thisUser->getId() == $user->getId() && $user->getFriendsOnlineCount() > 0">
{var $friendOnlineCount = $user->getFriendsOnlineCount()}
<div class="content_title_expanded" onclick="hidePanel(this, {$friendOnlineCount});">
{_"friends_online"}
</div>
<div>
<div class="content_subtitle">
{tr("friends_online", $friendOnlineCount)}
<div style="float:right;">
<a href="/friends{$user->getId()}">{_"all_title"}</a>
</div>
</div>
<div class="content_list">
<div class="cl_element" n:foreach="$user->getFriendsOnline(1) as $friend">
<div class="cl_avatar">
<a href="{$friend->getURL()}">
<img class="ava" src="{$friend->getAvatarUrl('miniscule')}" />
</a>
</div>
<a href="{$friend->getURL()}" class="cl_name">
<text class="cl_fname">{$friend->getFirstName()}</text>
<text class="cl_lname">{$friend->getLastName()}</text>
</a>
</div>
</div>
</div>
</div>
<div n:if="$albumsCount > 0 && $user->getPrivacyPermission('photos.read', $thisUser ?? NULL)"> <div n:if="$albumsCount > 0 && $user->getPrivacyPermission('photos.read', $thisUser ?? NULL)">
<div class="content_title_expanded" onclick="hidePanel(this, {$albumsCount});"> <div class="content_title_expanded" onclick="hidePanel(this, {$albumsCount});">
{_"albums"} {_"albums"}

View file

@ -209,6 +209,8 @@
"incoming_req" = "Pending"; "incoming_req" = "Pending";
"outcoming_req" = "Outgoing"; "outcoming_req" = "Outgoing";
"req" = "Requests"; "req" = "Requests";
"friends_online" = "Friends online";
"all_friends" = "All friends";
"req_zero" = "No requests were found..."; "req_zero" = "No requests were found...";
"req_one" = "Found $1 request"; "req_one" = "Found $1 request";
@ -218,10 +220,18 @@
"friends_one" = "$1 friend"; "friends_one" = "$1 friend";
"friends_other" = "$1 friends"; "friends_other" = "$1 friends";
"friends_online_zero" = "No friends online";
"friends_online_one" = "$1 friend is online";
"friends_online_other" = "$1 friends are online";
"friends_list_zero" = "You have no friends yet"; "friends_list_zero" = "You have no friends yet";
"friends_list_one" = "You have $1 friend"; "friends_list_one" = "You have $1 friend";
"friends_list_other" = "You have $1 friends"; "friends_list_other" = "You have $1 friends";
"friends_list_online_zero" = "You have no friends online";
"friends_list_online_one" = "You have $1 friend online";
"friends_list_online_other" = "You have $1 friends online";
"followers_zero" = "No followers"; "followers_zero" = "No followers";
"followers_one" = "$1 follower"; "followers_one" = "$1 follower";
"followers_other" = "$1 followers"; "followers_other" = "$1 followers";

View file

@ -216,6 +216,8 @@
"incoming_req" = "Входящие"; "incoming_req" = "Входящие";
"outcoming_req" = "Исходящие"; "outcoming_req" = "Исходящие";
"req" = "Заявки"; "req" = "Заявки";
"friends_online" = "Друзья он-лайн";
"all_friends" = "Все друзья";
"req_zero" = "Не найдено ни одной заявки..."; "req_zero" = "Не найдено ни одной заявки...";
"req_one" = "Найдена $1 заявка"; "req_one" = "Найдена $1 заявка";
@ -229,6 +231,12 @@
"friends_many" = "$1 друзей"; "friends_many" = "$1 друзей";
"friends_other" = "$1 друзей"; "friends_other" = "$1 друзей";
"friends_online_zero" = "Ни одного друга он-лайн";
"friends_online_one" = "$1 друг он-лайн";
"friends_online_few" = "$1 друга он-лайн";
"friends_online_many" = "$1 друзей он-лайн";
"friends_online_other" = "$1 друзей он-лайн";
"friends_list_zero" = "У Вас пока нет друзей"; "friends_list_zero" = "У Вас пока нет друзей";
"friends_list_one" = "У Вас $1 друг"; "friends_list_one" = "У Вас $1 друг";
"friends_list_few" = "У Вас $1 друга"; "friends_list_few" = "У Вас $1 друга";
@ -247,6 +255,12 @@
"subscriptions_many" = "$1 подписок"; "subscriptions_many" = "$1 подписок";
"subscriptions_other" = "$1 подписок"; "subscriptions_other" = "$1 подписок";
"friends_list_online_zero" = "У Вас пока нет друзей он-лайн";
"friends_list_online_one" = "У Вас $1 друг он-лайн";
"friends_list_online_few" = "У Вас $1 друга он-лайн";
"friends_list_online_many" = "У Вас $1 друзей он-лайн";
"friends_list_online_other" = "У Вас $1 друзей он-лайн";
/* Group */ /* Group */
"name_group" = "Название"; "name_group" = "Название";