diff options
Diffstat (limited to 'main/app/sprinkles/admin')
3 files changed, 59 insertions, 3 deletions
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 @@ +<?php +/** + * UserFrosting (http://www.userfrosting.com) + * + * @link https://github.com/userfrosting/UserFrosting + * @license https://github.com/userfrosting/UserFrosting/blob/master/licenses/UserFrosting.md (MIT License) + */ + +namespace UserFrosting\Sprinkle\Admin\Controller; + +use function GuzzleHttp\Psr7\str; +use UserFrosting\Fortress\RequestDataTransformer; +use UserFrosting\Fortress\RequestSchema; +use UserFrosting\Fortress\ServerSideValidator; +use UserFrosting\Sprinkle\Core\Controller\SimpleController; +use UserFrosting\Support\Exception\ForbiddenException; +use UserFrosting\Support\Exception\BadRequestException; +use UserFrosting\Support\Exception\NotFoundException; +use Slim\Http\Request; +use Slim\Http\Response; +use Illuminate\Database\Capsule\Manager as DB; + +/** + * Controller class for user-related requests, including listing users, CRUD for users, etc. + * + * @author Alex Weissman (https://alexanderweissman.com) + */ +class SearchController extends SimpleController +{ + + /** + * Searches a user by name, username and email // TODO: Maybe not allowed to search everyone? + * + * @param Request $request + * @param Response $response + * @param $args + * @return Response + * @throws NotFoundException + */ + public function ByUsername(Request $request, Response $response, $args) { + $classMapper = $this->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; |