function get_records($filter) { global $USER; $sort = optional_param('sort', 'name', PARAM_ALPHA); $dir = optional_param('dir', 'ASC', PARAM_ALPHA); $pagenum = optional_param('page', 0, PARAM_INT); if ($sort == 'name') { $sort = 'lastname'; } $extrasql = $filter->get_sql_filter(); //filter based on cluster role assignments $context_set = cm_context_set::for_user_with_capability('cluster', 'block/curr_admin:user:edit', $USER->id); // Get list of users $items = usermanagement_get_users($sort, $dir, 30 * $pagenum, 30, $extrasql, $context_set); $numitems = usermanagement_count_users($extrasql, $context_set); return array($items, $numitems); }
function action_default() { // Get parameters $sort = optional_param('sort', 'name', 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 $columns = array('idnumber' => get_string('id', 'block_curr_admin'), 'name' => get_string('name', 'block_curr_admin'), 'country' => get_string('country', 'block_curr_admin'), 'language' => get_string('user_language', 'block_curr_admin'), 'timecreated' => get_string('registered_date', 'block_curr_admin')); // Generate SQL filter $filter = new cm_user_filtering(null, 'index.php', array('s' => 'usr', 'section' => 'users')); $extrasql = $filter->get_sql_filter(); // Get list of users $items = usermanagement_get_users($sort, $dir, $page * $perpage, $perpage, $extrasql, usermanagementpage::get_contexts('block/curr_admin:user:view')); $numitems = usermanagement_count_users($extrasql, usermanagementpage::get_contexts('block/curr_admin:user:view')); usermanagementpage::get_contexts('block/curr_admin:user:edit'); usermanagementpage::get_contexts('block/curr_admin:user:delete'); $this->print_list_view($items, $numitems, $columns, $filter); }
/** * Test the basic functionality of the methods for fetching and counting * users when applying userset permissions and an appropriate SQL filter */ public function test_usermanagementgetsusersrespectsfilters() { global $USER, $DB; require_once elispm::lib('data/clusterassignment.class.php'); require_once elispm::lib('data/user.class.php'); require_once elispm::lib('lib.php'); // Make sure we don't hit corner-cases with permissions. set_config('siteguest', ''); set_config('siteadmins', ''); // Prevent accesslib caching. accesslib_clear_all_caches(true); // Data setup. $this->load_csv_data(); $this->set_up_users(); // Assign a second user to the user set. $secondclusteruser = new user(array('idnumber' => 'secondclusteruser', 'username' => 'secondclusteruser', 'firstname' => 'Secondcluster', 'lastname' => 'User', 'email' => '*****@*****.**', 'country' => 'CA')); $secondclusteruser->save(); $clusterassignment = new clusterassignment(array('clusterid' => 1, 'userid' => $secondclusteruser->id)); $clusterassignment->save(); // The context set our user set administrator has access to. $contextset = pm_context_set::for_user_with_capability('cluster', 'local/elisprogram:user_edit', $USER->id); // Add a filter to filter down to only our first test user. $extrasql = array('username = :testusername', array('testusername' => 'clusteruser')); // Validate count. $count = usermanagement_count_users($extrasql, $contextset); $this->assertEquals(1, $count); // Validate record. $users = usermanagement_get_users('name', 'ASC', 0, 0, $extrasql, $contextset); $this->assertEquals(1, count($users)); $user = reset($users); $this->assertEquals('clusteruser', $user->idnumber); }