UsersList::CreateList PHP Method

CreateList() protected method

Creates the list of objects. Sets the parameter $p_hasNextElements to true if this list is limited and elements still exist in the original list (from which this was truncated) after the last element of this list.
protected CreateList ( integer $p_start, integer $p_limit, array $p_parameters, &$p_count ) : array
$p_start integer
$p_limit integer
$p_parameters array
return array
    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;
    }