From 5dd1aeed623821c2bce410e20926c97a656bcbed Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Sun, 3 Jun 2018 00:25:14 +0200 Subject: Improved searching query (added 'like wildcards') --- main/app/sprinkles/admin/routes/search.php | 4 +- .../admin/src/Controller/SearchController.php | 56 ++++++++++++++++++++++ .../admin/src/Controller/WormholeController.php | 2 +- .../sprinkles/core/assets/SiteAssets/css/main.css | 1 + .../sprinkles/core/assets/SiteAssets/js/main.js | 27 ++++++----- .../sprinkles/core/templates/pages/index.html.twig | 2 +- 6 files changed, 77 insertions(+), 15 deletions(-) create mode 100644 main/app/sprinkles/admin/src/Controller/SearchController.php (limited to 'main') diff --git a/main/app/sprinkles/admin/routes/search.php b/main/app/sprinkles/admin/routes/search.php index 4dc1519..05793c1 100644 --- a/main/app/sprinkles/admin/routes/search.php +++ b/main/app/sprinkles/admin/routes/search.php @@ -3,6 +3,6 @@ /** * Routes for searching any kind of data we have */ -$app->group('/search', function () { - $this->get('/user/{user_name}', 'UserFrosting\Sprinkle\Admin\Controller\UserController:pageInfo'); +$app->group('/api/search', function () { + $this->get('/user/{search_term}', 'UserFrosting\Sprinkle\Admin\Controller\SearchController:ByUsername'); })->add('authGuard'); diff --git a/main/app/sprinkles/admin/src/Controller/SearchController.php b/main/app/sprinkles/admin/src/Controller/SearchController.php new file mode 100644 index 0000000..2398a56 --- /dev/null +++ b/main/app/sprinkles/admin/src/Controller/SearchController.php @@ -0,0 +1,56 @@ +ci->classMapper; + $users = $classMapper->createInstance('user') + ->where("first_name", "like", "%" . $args["search_term"] . "%") + ->orWhere("last_name", "like", "%" . $args["search_term"] . "%") + ->orWhere(DB::raw("CONCAT(`first_name`, ' ', `last_name`)"), 'LIKE', "%" . $args["search_term"] . "%") + ->orWhere("user_name", "like", "%" . $args["search_term"] . "%") + ->get(); + + foreach ($users as $number => $user) { + $users[$number]["avatar"] = $user->avatar; + } + + if (count($users) === 0) throw new NotFoundException(); + return $response->withJson($users, 200, JSON_PRETTY_PRINT); + } +} diff --git a/main/app/sprinkles/admin/src/Controller/WormholeController.php b/main/app/sprinkles/admin/src/Controller/WormholeController.php index 47e6fcb..ec33f3e 100644 --- a/main/app/sprinkles/admin/src/Controller/WormholeController.php +++ b/main/app/sprinkles/admin/src/Controller/WormholeController.php @@ -110,7 +110,7 @@ class WormholeController extends SimpleController $classMapper = $this->ci->classMapper; foreach ($UsersFriends as $Key => $UsersFriendId) { // NOT THAT EFFICIENT... $UsersFriendInformation = $classMapper->createInstance('user')// select doesnt work with instance - ->where('id', $UsersFriendId->id) + ->where('id', $UsersFriendId->id) ->get(); $UsersFriends[$Key]->id = $UsersFriendInformation[0]->id; $UsersFriends[$Key]->username = $UsersFriendInformation[0]->user_name; diff --git a/main/app/sprinkles/core/assets/SiteAssets/css/main.css b/main/app/sprinkles/core/assets/SiteAssets/css/main.css index da6243e..2afc962 100644 --- a/main/app/sprinkles/core/assets/SiteAssets/css/main.css +++ b/main/app/sprinkles/core/assets/SiteAssets/css/main.css @@ -223,6 +223,7 @@ hr.ChatHeaderDivider { /* main chat */ .SelectedReceiver { display: none; + height: 100%; } .ChatMessages { diff --git a/main/app/sprinkles/core/assets/SiteAssets/js/main.js b/main/app/sprinkles/core/assets/SiteAssets/js/main.js index b7ebd1f..0f3dfd8 100644 --- a/main/app/sprinkles/core/assets/SiteAssets/js/main.js +++ b/main/app/sprinkles/core/assets/SiteAssets/js/main.js @@ -143,26 +143,31 @@ $("#ImageUploadButton").on("click", function () { * SEARCH */ UserSearchBar.keyup(function () { - SearchResults.empty(); const RequestedUser = UserSearchBar.val(); - if (RequestedUser !== " " && RequestedUser !== "") + if (RequestedUser !== " " && RequestedUser !== "") { $.ajax({ - url: site.uri.public + "/api/users/u/" + RequestedUser, - success: function (answer) { - console.log("%c[SEARCH LOGGER] User " + RequestedUser + " was found!", "color: green"); - //var GifUrls = ["https://media.giphy.com/media/xUPGcg01dIAot4zyZG/giphy.gif", "https://media.giphy.com/media/IS9LfP9oSLdcY/giphy.gif", "https://media.giphy.com/media/5wWf7H0WTquIU1DFY4g/giphy.gif"]; - //var RandomGif = Math.floor((Math.random() * GifUrls.length)); - //var RandomGifUrl = GifUrls[RandomGif]; - //console.image(RandomGifUrl, 0.5); - - SearchResults.append("
" + answer.full_name + "
"); + url: site.uri.public + "/api/search/user/" + RequestedUser, + success: function (UserArray) { + SearchResults.empty(); + UserArray.forEach(function(User) { + console.log("%c[SEARCH LOGGER] User " + RequestedUser + " was found!", "color: green"); + //var GifUrls = ["https://media.giphy.com/media/xUPGcg01dIAot4zyZG/giphy.gif", "https://media.giphy.com/media/IS9LfP9oSLdcY/giphy.gif", "https://media.giphy.com/media/5wWf7H0WTquIU1DFY4g/giphy.gif"]; + //var RandomGif = Math.floor((Math.random() * GifUrls.length)); + //var RandomGifUrl = GifUrls[RandomGif]; + //console.image(RandomGifUrl, 0.5); + SearchResults.append("
" + User.full_name + "
"); + }) }, error: function () { + SearchResults.empty(); console.log("%c[SEARCH LOGGER] User " + RequestedUser + " was not found!", "color: red"); alerts.ufAlerts().ufAlerts('fetch'); } }); + } else { + SearchResults.empty(); + } }); /** diff --git a/main/app/sprinkles/core/templates/pages/index.html.twig b/main/app/sprinkles/core/templates/pages/index.html.twig index c77fa4d..5f8fe76 100644 --- a/main/app/sprinkles/core/templates/pages/index.html.twig +++ b/main/app/sprinkles/core/templates/pages/index.html.twig @@ -42,7 +42,7 @@ title="{{ translate("EXPLORE_TAB.USER_SEARCH_PH") }}" placeholder="{{ translate("EXPLORE_TAB.USER_SEARCH_PH") }}">
- {#
#} +
-- cgit v1.2.3