From bfa33fe456049e1dbc2f8240549baa6062457574 Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Thu, 17 May 2018 18:04:13 +0200 Subject: Made friend query a bit more efficient --- .../admin/src/Controller/UserController.php | 29 ++++++++-------------- .../sprinkles/core/assets/SiteAssets/js/main.js | 11 +++----- .../core/src/Controller/CoreController.php | 7 ------ .../sprinkles/core/templates/pages/index.html.twig | 6 ----- .../sprinkles/core/templates/pages/test.html.twig | 18 +++++++------- 5 files changed, 24 insertions(+), 47 deletions(-) (limited to 'main/app/sprinkles') diff --git a/main/app/sprinkles/admin/src/Controller/UserController.php b/main/app/sprinkles/admin/src/Controller/UserController.php index b733d78..45bedf5 100644 --- a/main/app/sprinkles/admin/src/Controller/UserController.php +++ b/main/app/sprinkles/admin/src/Controller/UserController.php @@ -1129,26 +1129,19 @@ class UserController extends SimpleController $UsersFriends = Capsule::select("SELECT id FROM (SELECT user_id AS id FROM user_follow WHERE followed_by_id = $user->id UNION ALL SELECT followed_by_id FROM user_follow WHERE user_id = $user->id) t GROUP BY id HAVING COUNT(id) > 1"); + /** @var UserFrosting\Sprinkle\Core\Util\ClassMapper $classMapper */ + $classMapper = $this->ci->classMapper; + foreach ($UsersFriends as $Key => $UsersFriendId) { // NOT THAT EFFICIENT... - $UsersFriendInformation = Capsule::table('users') - ->where('id', "=", $UsersFriendId->id) - ->select("users.id", "users.user_name as username") + $UsersFriendInformation = $classMapper->createInstance('user')// select doesnt work with instance + ->where('id', $UsersFriendId->id) ->get(); - $UsersFriends[$Key] = $UsersFriendInformation[0]; - } - - /* - $UsersFriends = Capsule::table('user_follow as f1') - ->select("u1.user_name as username", "u2.user_name as username") - ->leftJoin("users as u1", "u1.id", "=", "f1.user_id") - ->leftJoin("users as u2", "u2.id", "=", "f1.followed_by_id") - ->whereExists(function ($query) { - $query->select(Capsule::raw(1)) - ->from("user_follow as f2") - ->where("f2.user_id", "=", "f1.followed_by_id"); - }) - //->select("user_follow.user_id as id", "users.user_name as username") - ->get();*/ + + $UsersFriends[$Key]->id = $UsersFriendInformation[0]->id; + $UsersFriends[$Key]->username = $UsersFriendInformation[0]->user_name; + $UsersFriends[$Key]->avatar = $UsersFriendInformation[0]->avatar; + $UsersFriends[$Key]->full_name = $UsersFriendInformation[0]->full_name; + } $result = $UsersFriends; diff --git a/main/app/sprinkles/core/assets/SiteAssets/js/main.js b/main/app/sprinkles/core/assets/SiteAssets/js/main.js index 9493644..ccb80d4 100644 --- a/main/app/sprinkles/core/assets/SiteAssets/js/main.js +++ b/main/app/sprinkles/core/assets/SiteAssets/js/main.js @@ -5,6 +5,7 @@ var NavbarLine = $(".NavbarLine"); var UserSearchBar = $("#UserSearchBar"); var SearchResults = $(".SearchResults"); var SelectReceiver = $(".SelectReceiver"); +var FriendList = $(".FriendList"); var alerts = $("#alerts-page"); var ExploreData = $("#ExploreData"); @@ -193,13 +194,9 @@ $(document).ready(function () { $.ajax({ url: site.uri.public + "/api/users/u/" + current_username + "/friends", success: function (receivers) { - receivers.forEach(function (receiver) { - $.ajax({ // not that efficient... - url: site.uri.public + "/api/users/u/" + receiver.username, - success: function (receiversInfo) { - SelectReceiver.append("