Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Merge branch 'wip-mdl-29244-m21' of git://github.com/rajeshtaneja/moo…

…dle into MOODLE_21_STABLE
  • Loading branch information...
commit 4cb89f4df4272a815c898305a3c1e330701dc261 2 parents 7d9cb20 + 1f2d15d
@nebgor nebgor authored
View
2  lang/en/filters.php
@@ -64,6 +64,8 @@
$string['isequalto'] = 'is equal to';
$string['isnotdefined'] = 'isn\'t defined';
$string['isnotequalto'] = 'isn\'t equal to';
+$string['neveraccessed'] = 'Never accessed';
+$string['nevermodified'] = 'Never modified';
$string['newfilter'] = 'New filter';
$string['nofiltersenabled'] = 'No filter plugins have been enabled on this site.';
$string['off'] = 'Off';
View
139 user/filters/checkbox.php
@@ -0,0 +1,139 @@
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Generic checkbox filter.
+ *
+ * This will create generic filter with checkbox option and can be used for
+ * disabling other elements for specific condition.
+ *
+ * @package user
+ * @copyright 2011 Rajesh Taneja
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die();
+
+require_once($CFG->dirroot.'/user/filters/lib.php');
+
+/**
+ * Generic filter based for checkbox and can be used for disabling items
+ */
+class user_filter_checkbox extends user_filter_type {
+ /**
+ * list of all the fields which needs to be disabled, if checkbox is checked
+ * @var array
+ */
+ protected $disableelements = array();
+
+ /**
+ * name of user table field/fields on which data needs to be compared
+ * @var mixed
+ */
+ protected $field;
+
+ /**
+ * Constructor, initalize user_filter_type and sets $disableelements array
+ * with list of elements to be diabled by checkbox.
+ *
+ * @param string $name the name of the filter instance
+ * @param string $label the label of the filter instance
+ * @param boolean $advanced advanced form element flag
+ * @param mixed $field user table field/fields name for comparison
+ * @param array $disableelements name of fields which should be disabled if this checkbox is checked.
+ */
+ public function __construct($name, $label, $advanced, $field, $disableelements=null) {
+ parent::__construct($name, $label, $advanced);
+ $this->field = $field;
+ if (!empty($disableelements)) {
+ if (!is_array($disableelements)) {
+ $this->disableelements = array($disableelements);
+ } else {
+ $this->disableelements = $disableelements;
+ }
+ }
+ }
+
+ /**
+ * Adds controls specific to this filter in the form.
+ *
+ * @param moodleform $mform a MoodleQuickForm object in which element will be added
+ */
+ public function setupForm(MoodleQuickForm &$mform) {
+ $objs = array();
+
+ $objs[] = $mform->createElement('checkbox', $this->_name, null, '');
+ $grp = $mform->addElement('group', $this->_name.'_grp', $this->_label, $objs, '', false);
+
+ if ($this->_advanced) {
+ $mform->setAdvanced($this->_name.'_grp');
+ }
+ //Check if disable if options are set. if yes then set rules
+ if (!empty($this->disableelements) && is_array($this->disableelements)) {
+ foreach ($this->disableelements as $disableelement) {
+ $mform->disabledIf($disableelement, $this->_name, 'checked');
+ }
+ }
+ }
+
+ /**
+ * Retrieves data from the form data
+ *
+ * @param object $formdata data submited with the form
+ * @return mixed array filter data or false when filter not set
+ */
+ public function check_data($formdata) {
+ $field = $this->_name;
+ //Check if disable if options are set. if yes then don't add this.
+ if (!empty($this->disableelements) && is_array($this->disableelements)) {
+ foreach ($this->disableelements as $disableelement) {
+ if (array_key_exists($disableelement, $formdata)) {
+ return false;
+ }
+ }
+ }
+ if (array_key_exists($field, $formdata) and $formdata->$field !== '') {
+ return array('value' => (string)$formdata->$field);
+ }
+ return false;
+ }
+
+ /**
+ * Returns the condition to be used with SQL where
+ *
+ * @param array $data filter settings
+ * @return array sql string and $params
+ */
+ public function get_sql_filter($data) {
+ $field = $this->field;
+ if (is_array($field)) {
+ $res = " {$field[0]} = {$field[1]} ";
+ } else {
+ $res = " {$field} = 0 ";
+ }
+ return array($res, array());
+ }
+
+ /**
+ * Returns a human friendly description of the filter used as label.
+ *
+ * @param array $data filter settings
+ * @return string active filter label
+ */
+ public function get_label($data) {
+ return $this->_label;
+ }
+}
View
2  user/filters/courserole.php
@@ -22,7 +22,7 @@ function user_filter_courserole($name, $label, $advanced) {
*/
function get_roles() {
$context = get_context_instance(CONTEXT_SYSTEM);
- $roles = array(0=> get_string('anyrole','filters')) + get_assignable_roles($context);
+ $roles = array(0=> get_string('anyrole','filters')) + get_default_enrol_roles($context);
return $roles;
}
View
33 user/filters/date.php
@@ -35,7 +35,6 @@ function setupForm(&$mform) {
$objs[] =& $mform->createElement('static', $this->_name.'_break', null, '<br/>');
$objs[] =& $mform->createElement('checkbox', $this->_name.'_eck', null, get_string('isbefore', 'filters'));
$objs[] =& $mform->createElement('date_selector', $this->_name.'_edt', null);
- $objs[] = & $mform->createElement('checkbox', $this->_name.'_never', null, get_string('includenever', 'filters'));
$grp =& $mform->addElement('group', $this->_name.'_grp', $this->_label, $objs, '', false);
@@ -49,8 +48,6 @@ function setupForm(&$mform) {
$mform->disabledIf($this->_name.'_edt[day]', $this->_name.'_eck', 'notchecked');
$mform->disabledIf($this->_name.'_edt[month]', $this->_name.'_eck', 'notchecked');
$mform->disabledIf($this->_name.'_edt[year]', $this->_name.'_eck', 'notchecked');
-
- $mform->disabledIf($this->_name.'_never', $this->_name.'_eck', 'notchecked');
}
/**
@@ -63,7 +60,6 @@ function check_data($formdata) {
$sdt = $this->_name.'_sdt';
$eck = $this->_name.'_eck';
$edt = $this->_name.'_edt';
- $never = $this->_name.'_never';
if (!array_key_exists($sck, $formdata) and !array_key_exists($eck, $formdata)) {
return false;
@@ -80,11 +76,6 @@ function check_data($formdata) {
} else {
$data['before'] = 0;
}
- if (array_key_exists($never, $formdata)) {
- $data['never'] = $formdata->$never;
- } else {
- $data['never'] = 0;
- }
return $data;
}
@@ -97,7 +88,6 @@ function check_data($formdata) {
function get_sql_filter($data) {
$after = (int)$data['after'];
$before = (int)$data['before'];
- $never = (int)$data['never'];
$field = $this->_field;
@@ -105,13 +95,7 @@ function get_sql_filter($data) {
return array('', array());
}
- $res = '';
-
- if (!empty($never)) {
- $res .= " $field >= 0 " ;
- } else {
- $res .= " $field > 0 " ;
- }
+ $res = " $field >= 0 " ;
if ($after) {
$res .= " AND $field >= $after";
@@ -131,7 +115,6 @@ function get_sql_filter($data) {
function get_label($data) {
$after = $data['after'];
$before = $data['before'];
- $never = $data['never'];
$field = $this->_field;
$a = new stdClass();
@@ -139,20 +122,12 @@ function get_label($data) {
$a->after = userdate($after);
$a->before = userdate($before);
- if ($never) {
- $strnever = ' ('.get_string('includenever', 'filters').')';
- } else {
- $strnever = '';
- }
-
if ($after and $before) {
- return get_string('datelabelisbetween', 'filters', $a).$strnever;
-
+ return get_string('datelabelisbetween', 'filters', $a);
} else if ($after) {
- return get_string('datelabelisafter', 'filters', $a).$strnever;;
-
+ return get_string('datelabelisafter', 'filters', $a);
} else if ($before) {
- return get_string('datelabelisbefore', 'filters', $a).$strnever;;
+ return get_string('datelabelisbefore', 'filters', $a);
}
return '';
}
View
8 user/filters/lib.php
@@ -10,7 +10,7 @@
require_once($CFG->dirroot.'/user/filters/yesno.php');
require_once($CFG->dirroot.'/user/filters/cohort.php');
require_once($CFG->dirroot.'/user/filters/user_filter_forms.php');
-
+require_once($CFG->dirroot.'/user/filters/checkbox.php');
/**
* User filtering wrapper class.
@@ -36,7 +36,8 @@ function user_filtering($fieldnames=null, $baseurl=null, $extraparams=null) {
if (empty($fieldnames)) {
$fieldnames = array('realname'=>0, 'lastname'=>1, 'firstname'=>1, 'email'=>1, 'city'=>1, 'country'=>1,
'confirmed'=>1, 'profile'=>1, 'courserole'=>1, 'systemrole'=>1, 'cohort'=>1,
- 'firstaccess'=>1, 'lastaccess'=>1, 'lastlogin'=>1, 'timemodified'=>1, 'username'=>1, 'auth'=>1, 'mnethostid'=>1);
+ 'firstaccess'=>1, 'lastaccess'=>1, 'neveraccessed'=>1, 'timemodified'=>1,
+ 'nevermodified'=>1, 'username'=>1, 'auth'=>1, 'mnethostid'=>1);
}
$this->_fields = array();
@@ -114,8 +115,9 @@ function get_field($fieldname, $advanced) {
case 'systemrole': return new user_filter_globalrole('systemrole', get_string('globalrole', 'role'), $advanced);
case 'firstaccess': return new user_filter_date('firstaccess', get_string('firstaccess', 'filters'), $advanced, 'firstaccess');
case 'lastaccess': return new user_filter_date('lastaccess', get_string('lastaccess'), $advanced, 'lastaccess');
- case 'lastlogin': return new user_filter_date('lastlogin', get_string('lastlogin'), $advanced, 'lastlogin');
+ case 'neveraccessed': return new user_filter_checkbox('neveraccessed', get_string('neveraccessed', 'filters'), $advanced, 'firstaccess', array('lastaccess_sck', 'lastaccess_eck', 'firstaccess_eck', 'firstaccess_sck'));
case 'timemodified': return new user_filter_date('timemodified', get_string('lastmodified'), $advanced, 'timemodified');
+ case 'nevermodified': return new user_filter_checkbox('nevermodified', get_string('nevermodified', 'filters'), $advanced, array('timemodified', 'timecreated'), array('timemodified_sck', 'timemodified_eck'));
case 'cohort': return new user_filter_cohort($advanced);
case 'auth':
$plugins = get_plugin_list('auth');
Please sign in to comment.
Something went wrong with that request. Please try again.