public function extractCriteriaFromRequest($request)
{
$criteria = new \Newscoop\User\UserCriteria();
if ($request->query->has('sorts')) {
foreach ($request->get('sorts') as $key => $value) {
$criteria->orderBy[$key] = $value == '-1' ? 'desc' : 'asc';
}
}
if ($request->query->has('queries')) {
$queries = $request->query->get('queries');
if (array_key_exists('search', $queries)) {
$criteria->query = $queries['search'];
}
if (array_key_exists('search_name', $queries)) {
$criteria->query_name = $queries['search_name'];
}
if (array_key_exists('filter', $queries)) {
if ($queries['filter'] == 'active') {
$criteria->lastLoginDays = 30;
}
if ($queries['filter'] == 'registered') {
$criteria->status = User::STATUS_ACTIVE;
}
if ($queries['filter'] == 'pending') {
$criteria->status = User::STATUS_INACTIVE;
}
if ($queries['filter'] == 'deleted') {
$criteria->status = User::STATUS_DELETED;
}
}
if (array_key_exists('user-group', $queries)) {
foreach ($queries['user-group'] as $key => $value) {
$criteria->groups[$key] = $value;
}
}
}
$criteria->maxResults = $request->query->get('perPage', 10);
if ($request->query->has('offset')) {
$criteria->firstResult = $request->query->get('offset');
}
return $criteria;
}