Index: user/filters/date.php
===================================================================
RCS file: /cvsroot/moodle/moodle/user/filters/date.php,v
retrieving revision 1.1.2.2
diff -u -r1.1.2.2 date.php
--- user/filters/date.php	11 Dec 2007 13:01:13 -0000	1.1.2.2
+++ user/filters/date.php	8 Jan 2009 09:18:43 -0000
@@ -34,11 +34,17 @@
         $objs[] =& $mform->createElement('date_selector', $this->_name.'_sdt', null);
         $objs[] =& $mform->createElement('checkbox', $this->_name.'_eck', null, get_string('isbefore', 'filters'));
         $objs[] =& $mform->createElement('date_selector', $this->_name.'_edt', null);
-        $grp =& $mform->addElement('group', $this->_name.'_grp', $this->_label, $objs, '', false);
-        $grp->setHelpButton(array('date',$this->_label,'filters'));
+        //$objs[] =& $mform->createElement('checkbox', $this->_name.'_never', null, get_string('includenever', 'filters'));
+        $head = &$mform->addElement('static', $this->_name.'_label', $this->_label, null);
+        $head->setHelpButton(array('date',$this->_label,'filters'));
+        $grp =& $mform->addElement('group', $this->_name.'_grp', null, $objs, '', false);
+
+        $mform->addElement('checkbox', $this->_name.'_never', null, get_string('includenever', 'filters'));
 
         if ($this->_advanced) {
             $mform->setAdvanced($this->_name.'_grp');
+            $mform->setAdvanced($this->_name.'_never');
+            $mform->setAdvanced($this->_name.'_label');
         }
 
         $mform->disabledIf($this->_name.'_sdt[day]', $this->_name.'_sck', 'notchecked');
@@ -47,6 +53,8 @@
         $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');
     }
 
     /**
@@ -59,6 +67,7 @@
         $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;
@@ -75,6 +84,12 @@
         } else {
             $data['before'] = 0;
         }
+        if (array_key_exists($never, $formdata)) {
+            $data['never'] = $formdata->$never;
+        } else {
+            $data['never'] = 0;
+        }
+        
         return $data;
     }
 
@@ -86,20 +101,29 @@
     function get_sql_filter($data) {
         $after  = $data['after'];
         $before = $data['before'];
+        $never = $data['never'];
         $field  = $this->_field;
 
         if (empty($after) and empty($before)) {
             return '';
         }
 
-        $res = "$field > 0" ;
+        $res = '';
+
+        if (!empty($never)) {
+            $res .= " $field >= 0 " ;
+        } else {
+            $res .= " $field > 0 " ;
+        }
 
         if ($after) {
             $res .= " AND $field >= $after";
         }
+
         if ($before) {
             $res .= " AND $field <= $before";
         }
+
         return $res;
     }
 
@@ -111,23 +135,30 @@
     function get_label($data) {
         $after  = $data['after'];
         $before = $data['before'];
+        $never = $data['never'];
         $field  = $this->_field;
 
         $a = new object();
         $a->label  = $this->_label;
         $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);
+            return get_string('datelabelisbetween', 'filters', $a).$strnever;
 
         } else if ($after) {
-            return get_string('datelabelisafter', 'filters', $a);
+            return get_string('datelabelisafter', 'filters', $a).$strnever;;
 
         } else if ($before) {
-            return get_string('datelabelisbefore', 'filters', $a);
+            return get_string('datelabelisbefore', 'filters', $a).$strnever;;
         }
         return '';
     }
 }
-?>
\ No newline at end of file
+?>
Index: user/filters/lib.php
===================================================================
RCS file: /cvsroot/moodle/moodle/user/filters/lib.php,v
retrieving revision 1.1.2.4
diff -u -r1.1.2.4 lib.php
--- user/filters/lib.php	15 Oct 2008 05:29:48 -0000	1.1.2.4
+++ user/filters/lib.php	8 Jan 2009 09:18:43 -0000
@@ -35,7 +35,7 @@
         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,
-                                'firstaccess'=>1, 'lastaccess'=>1, 'lastlogin'=>1, 'username'=>1, 'auth'=>1, 'mnethostid'=>1);
+                                'firstaccess'=>1, 'lastaccess'=>1, 'lastlogin'=>1, 'timemodified'=>1, 'username'=>1, 'auth'=>1, 'mnethostid'=>1);
         }
 
         $this->_fields  = array();
@@ -114,6 +114,7 @@
             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 'timemodified': return new user_filter_date('timemodified', get_string('lastmodified'), $advanced, 'timemodified');
             case 'auth':
                 $plugins = get_list_of_plugins('auth');
                 $choices = array();
Index: lang/en_utf8/filters.php
===================================================================
RCS file: /cvsroot/moodle/moodle/lang/en_utf8/filters.php,v
retrieving revision 1.3.2.2
diff -u -r1.3.2.2 filters.php
--- lang/en_utf8/filters.php	19 Dec 2007 17:38:44 -0000	1.3.2.2
+++ lang/en_utf8/filters.php	8 Jan 2009 09:18:43 -0000
@@ -19,6 +19,7 @@
 $string['endswith'] = 'ends with';
 $string['firstaccess'] = 'First access';
 $string['globalrolelabel'] = '$a->label is $a->value';
+$string['includenever'] = 'Never included';
 $string['isanyvalue'] = 'is any value';
 $string['isafter'] = 'is after';
 $string['isbefore'] = 'is before';
