diff --git a/newscoop/src/Newscoop/GimmeBundle/Controller/ArticlesListController.php b/newscoop/src/Newscoop/GimmeBundle/Controller/ArticlesListController.php index 77b0d258bc..72d80846fd 100644 --- a/newscoop/src/Newscoop/GimmeBundle/Controller/ArticlesListController.php +++ b/newscoop/src/Newscoop/GimmeBundle/Controller/ArticlesListController.php @@ -134,8 +134,7 @@ public function getPlaylistsArticlesAction(Request $request, $id) if ($user && $user->isAdmin()) { $onlyPublished = false; } - } catch (\Newscoop\NewscoopException $e) { - } + } catch (\Newscoop\NewscoopException $e) {} $playlistArticles = $em->getRepository('Newscoop\Entity\Playlist') ->articles($playlist, null, true, null, null, $onlyPublished, true)->getResult(); diff --git a/newscoop/src/Newscoop/GimmeBundle/Controller/UsersController.php b/newscoop/src/Newscoop/GimmeBundle/Controller/UsersController.php index 64256bb72f..4f95743e61 100644 --- a/newscoop/src/Newscoop/GimmeBundle/Controller/UsersController.php +++ b/newscoop/src/Newscoop/GimmeBundle/Controller/UsersController.php @@ -60,6 +60,50 @@ public function getUsersAction(Request $request) return $users; } + /** + * Search for users + * + * Get list of users for search query + * + * @ApiDoc( + * statusCodes={ + * 200="Returned when successful" + * }, + * filters={ + * {"name"="query", "dataType"="string", "description"="search query"} + * }, + * ) + * + * @Route("/search/users.{_format}", defaults={"_format"="json"}, options={"expose"=true}) + * @Method("GET") + * @View(serializerGroups={"list"}) + */ + public function searchUsersAction(Request $request) + { + $em = $this->container->get('em'); + + $onlyPublic = true; + try { + $user = $this->container->get('user')->getCurrentUser(); + if ($user && $user->isAdmin()) { + $onlyPublic = null; + } + } catch (\Newscoop\NewscoopException $e) {} + + $criteria = new \Newscoop\User\UserCriteria(); + $criteria->is_public = $onlyPublic; + $criteria->query_name = $request->query->get('query', ''); + + $results = $em->getRepository('Newscoop\Entity\User') + ->getListByCriteria($criteria, false); + $users = $results[0]->getQuery(); + + $paginator = $this->get('newscoop.paginator.paginator_service'); + $users = $paginator->paginate($users, array('distinct' => false)); + + return $users; + } + /** * Get user by given id *