function display_default() { // Get parameters $sort = optional_param('sort', 'lastname', PARAM_ALPHA); $dir = optional_param('dir', 'ASC', PARAM_ALPHA); $page = optional_param('page', 0, PARAM_INT); $perpage = optional_param('perpage', 30, PARAM_INT); // how many per page // Define columns // todo: support display values of country and language plus accurate sorting $columns = array('idnumber' => array('header' => get_string('id', 'local_elisprogram')), 'name' => array('header' => array('firstname' => array('header' => get_string('firstname')), 'lastname' => array('header' => get_string('lastname'))), 'display_function' => array('display_table', 'display_user_fullname_item')), 'country' => array('header' => get_string('country')), 'language' => array('header' => get_string('language')), 'timecreated' => array('header' => get_string('registered_date', 'local_elisprogram'), 'display_function' => array(new display_date_item(), 'display'))); // set sorting if ($dir !== 'DESC') { $dir = 'ASC'; } if (isset($columns[$sort])) { $columns[$sort]['sortable'] = $dir; } elseif (isset($columns['name']['header'][$sort])) { $columns['name']['header'][$sort]['sortable'] = $dir; } else { $sort = 'lastname'; $columns['name']['header']['lastname']['sortable'] = $dir; } // Generate SQL filter $filter = new pm_user_filtering(null, 'index.php', array('s' => 'usr')); $extrasql = $filter->get_sql_filter(); // Get list of users $contextset = userpage::get_contexts('local/elisprogram:user_view'); $userfilter = new AND_filter(array(new select_filter($extrasql[0], $extrasql[1]), $contextset->get_filter('id'))); $items = user::find($userfilter, array($sort => $dir), $page * $perpage, $perpage); $numitems = user::count($userfilter); // cache the context capabilities userpage::get_contexts('local/elisprogram:user_edit'); userpage::get_contexts('local/elisprogram:user_delete'); $this->print_list_view($items, $numitems, $columns, $filter); }