/**
* @ApiDoc(
* section="ACL Management",
* description="Search user and group"
* )
*
* @Rest\QueryParam(name="q", requirements=".*", description="Search query")
*
* @Rest\Get("/user/acl/search")
*
* @param string $q
*
* @return array array('users' => array, 'groups' => array())
*/
public function getSearch($q)
{
$q = str_replace("*", "%", $q);
$userFilter = array();
$groupFilter = array();
if ($q) {
$userFilter = array(array('username', 'like', "{$q}%"), 'OR', array('first_name', 'like', "{$q}%"), 'OR', array('last_name', 'like', "{$q}%"), 'OR', array('email', 'like', "{$q}%"));
$groupFilter = array(array('name', 'like', "{$q}%"));
}
$users = $this->objects->getList('jarves/user', $userFilter, array('limit' => 10, 'fields' => 'id,username,email,groups.name,firstName,lastName'));
$this->setAclCount($users, 0);
$groups = $this->objects->getList('jarves/group', $groupFilter, array('fields' => 'name', 'limit' => 10));
$this->setAclCount($groups, 1);
return array('users' => $users, 'groups' => $groups);
}