protected function CreateList($p_start = 0, $p_limit = 0, array $p_parameters, &$p_count)
{
$criteria = new UserCriteria();
$criteria->status = User::STATUS_ACTIVE;
$criteria->is_public = true;
$criteria->firstResult = $p_start;
$criteria->maxResults = $p_limit;
$criteria->orderBy = $this->m_order;
if (array_key_exists('search', $p_parameters)) {
$criteria->query = $p_parameters['search'];
} else {
if (array_key_exists('filter', $p_parameters)) {
$filter = $p_parameters['filter'];
$criteria->groups = !empty($p_parameters['editor_groups']) ? array_map('intval', explode(',', $p_parameters['editor_groups'])) : array();
switch ($filter) {
case 'active':
$criteria->orderBy = array('comments' => 'desc');
$criteria->excludeGroups = true;
break;
case 'editors':
$criteria->excludeGroups = false;
break;
default:
$criteria->groups = array();
// example: filter="a-c"
if (preg_match('/([a-z])-([a-z])/', $filter, $matches)) {
$criteria->nameRange = range($matches[1], $matches[2]);
} else {
CampTemplate::singleton()->trigger_error("invalid parameter {$filter} in filter", $p_smarty);
}
break;
}
}
}
$service = \Zend_Registry::get('container')->get('user.list');
$list = $service->findByCriteria($criteria);
$p_count = count($list);
$metaUsers = array();
foreach ($list as $user) {
$metaUsers[] = new MetaUser($user);
}
return $metaUsers;
}