Index: user/selector/script.js =================================================================== RCS file: user/selector/script.js diff -N user/selector/script.js --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ user/selector/script.js 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,1 @@ +// JavaScript for the user selectors. Index: user/selector/test.php =================================================================== RCS file: user/selector/test.php diff -N user/selector/test.php --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ user/selector/test.php 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,43 @@ +dirroot . '/user/selector/lib.php'); + +class test_user_selector extends user_selector_base { + public function __construct($name) { + parent::__construct($name); + } + + protected function find_users($search) { + list($wherecondition, $params) = $this->search_sql($search, 'u'); + $sql = 'SELECT ' . $this->required_fields_sql('u') . + 'FROM {user} u ' . + 'WHERE ' . $wherecondition; + $users = get_recordset_sql($sql, $params); + $groupedusers = array(); + foreach ($users as $user) { + $groupedusers['Users matching ' . s($search)][] = $user; + } + return $groupedusers; + } +} + +print_header(); + +$userselector = new test_user_selector('myuserselector'); + +$users = $userselector->get_selected_users(); +if (!empty($users)) { + print_heading('Users that were selected'); + echo ''; +} + +echo '

'; +$userselector->display(); +echo '

'; + +print_footer(); +?> Index: user/selector/lib.php =================================================================== RCS file: user/selector/lib.php diff -N user/selector/lib.php --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ user/selector/lib.php 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,106 @@ +name = $name; + if (empty($CFG->extrauserselectorfields)) { + $this->extrafields = array(); + } else { + $this->extrafields = explode(',', $CFG->extrauserselectorfields); + } + } + + public function exclude($arrayofuserids) { + $exclude = array_unique(array_merge($exclude)); + } + + public function get_selected_users() { + $this->validatinguserids = optional_param($this->name, array(), PARAM_INTEGER); + $groupedusers = $this->find_users(''); + $this->validatinguserids = null; + $users = array(); + foreach ($groupedusers as $group) { + $users = array_merge($users, $group); + } + return $users; + } + + public function display() { + // TODO + } + + protected abstract function find_users($search); + + protected function get_options() { + return array( + 'class' => get_class($this), + 'exclude' => $this->exclude, + ); + } + + protected function required_fields_sql($u) { + global $DB; + $DB = new moodle_database; + $fields = array( + $u . '.id', + $DB->sql_fullname($u . '.firstname', $u . '.lastname'), + ); + foreach ($this->extrafields as $field) { + $fields[] = $u . '.' . $field; + } + return implode(',', $fields); + } + + protected function search_sql($search, $u) { + $conditions = array( + + ); + } +} + +class role_assign_user_selector extends user_selector_base { + // TODO +} + +class group_members_user_selector extends user_selector_base { + // TODO +} +?> Index: user/selector/search.php =================================================================== RCS file: user/selector/search.php diff -N user/selector/search.php --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ user/selector/search.php 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,36 @@ +dirroot . '/user/selector/lib.php'); + +?>