mirror of
https://github.com/moodle/moodle.git
synced 2025-04-21 16:32:18 +02:00
MDL-34914 cohorts: more understandable filter of user list by cohort
This commit is contained in:
parent
a929fd50f9
commit
88de944a21
@ -50,7 +50,8 @@ class user_filter_cohort extends user_filter_type {
|
||||
1 => get_string('doesnotcontain', 'filters'),
|
||||
2 => get_string('isequalto', 'filters'),
|
||||
3 => get_string('startswith', 'filters'),
|
||||
4 => get_string('endswith', 'filters'));
|
||||
4 => get_string('endswith', 'filters'),
|
||||
5 => get_string('isempty', 'filters'));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -80,10 +81,16 @@ class user_filter_cohort extends user_filter_type {
|
||||
$operator = $field.'_op';
|
||||
|
||||
if (array_key_exists($operator, $formdata)) {
|
||||
if ($formdata->$field == '') {
|
||||
if ($formdata->$operator != 5 and $formdata->$field == '') {
|
||||
// No data - no change except for empty filter.
|
||||
return false;
|
||||
}
|
||||
return array('operator' => (int)$formdata->$operator, 'value' => $formdata->$field);
|
||||
// If field value is set then use it, else it's null.
|
||||
$fieldvalue = null;
|
||||
if (isset($formdata->$field)) {
|
||||
$fieldvalue = $formdata->$field;
|
||||
}
|
||||
return array('operator' => (int)$formdata->$operator, 'value' => $fieldvalue);
|
||||
}
|
||||
|
||||
return false;
|
||||
@ -108,13 +115,15 @@ class user_filter_cohort extends user_filter_type {
|
||||
return '';
|
||||
}
|
||||
|
||||
$not = '';
|
||||
switch($operator) {
|
||||
case 0: // Contains.
|
||||
$res = $DB->sql_like('idnumber', ":$name", false, false);
|
||||
$params[$name] = "%$value%";
|
||||
break;
|
||||
case 1: // Does not contain.
|
||||
$res = $DB->sql_like('idnumber', ":$name", false, false, true);
|
||||
$not = 'NOT';
|
||||
$res = $DB->sql_like('idnumber', ":$name", false, false);
|
||||
$params[$name] = "%$value%";
|
||||
break;
|
||||
case 2: // Equal to.
|
||||
@ -129,11 +138,16 @@ class user_filter_cohort extends user_filter_type {
|
||||
$res = $DB->sql_like('idnumber', ":$name", false, false);
|
||||
$params[$name] = "%$value";
|
||||
break;
|
||||
case 5: // Empty.
|
||||
$not = 'NOT';
|
||||
$res = '(idnumber IS NOT NULL AND idnumber <> :'.$name.')';
|
||||
$params[$name] = '';
|
||||
break;
|
||||
default:
|
||||
return '';
|
||||
}
|
||||
|
||||
$sql = "id IN (SELECT userid
|
||||
$sql = "id $not IN (SELECT userid
|
||||
FROM {cohort_members}
|
||||
JOIN {cohort} ON {cohort_members}.cohortid = {cohort}.id
|
||||
WHERE $res)";
|
||||
@ -163,6 +177,8 @@ class user_filter_cohort extends user_filter_type {
|
||||
case 3: // Starts with.
|
||||
case 4: // Ends with.
|
||||
return get_string('textlabel', 'filters', $a);
|
||||
case 5: // Empty.
|
||||
return get_string('textlabelnovalue', 'filters', $a);
|
||||
}
|
||||
|
||||
return '';
|
||||
|
Loading…
x
Reference in New Issue
Block a user