|
Moodle
2.2.1
http://www.collinsharper.com
|
00001 <?php 00002 00003 require_once($CFG->dirroot.'/user/filters/lib.php'); 00004 00008 class user_filter_date extends user_filter_type { 00012 var $_field; 00013 00021 function user_filter_date($name, $label, $advanced, $field) { 00022 parent::user_filter_type($name, $label, $advanced); 00023 $this->_field = $field; 00024 } 00025 00030 function setupForm(&$mform) { 00031 $objs = array(); 00032 00033 $objs[] =& $mform->createElement('checkbox', $this->_name.'_sck', null, get_string('isafter', 'filters')); 00034 $objs[] =& $mform->createElement('date_selector', $this->_name.'_sdt', null); 00035 $objs[] =& $mform->createElement('static', $this->_name.'_break', null, '<br/>'); 00036 $objs[] =& $mform->createElement('checkbox', $this->_name.'_eck', null, get_string('isbefore', 'filters')); 00037 $objs[] =& $mform->createElement('date_selector', $this->_name.'_edt', null); 00038 00039 $grp =& $mform->addElement('group', $this->_name.'_grp', $this->_label, $objs, '', false); 00040 00041 if ($this->_advanced) { 00042 $mform->setAdvanced($this->_name.'_grp'); 00043 } 00044 00045 $mform->disabledIf($this->_name.'_sdt[day]', $this->_name.'_sck', 'notchecked'); 00046 $mform->disabledIf($this->_name.'_sdt[month]', $this->_name.'_sck', 'notchecked'); 00047 $mform->disabledIf($this->_name.'_sdt[year]', $this->_name.'_sck', 'notchecked'); 00048 $mform->disabledIf($this->_name.'_edt[day]', $this->_name.'_eck', 'notchecked'); 00049 $mform->disabledIf($this->_name.'_edt[month]', $this->_name.'_eck', 'notchecked'); 00050 $mform->disabledIf($this->_name.'_edt[year]', $this->_name.'_eck', 'notchecked'); 00051 } 00052 00058 function check_data($formdata) { 00059 $sck = $this->_name.'_sck'; 00060 $sdt = $this->_name.'_sdt'; 00061 $eck = $this->_name.'_eck'; 00062 $edt = $this->_name.'_edt'; 00063 00064 if (!array_key_exists($sck, $formdata) and !array_key_exists($eck, $formdata)) { 00065 return false; 00066 } 00067 00068 $data = array(); 00069 if (array_key_exists($sck, $formdata)) { 00070 $data['after'] = $formdata->$sdt; 00071 } else { 00072 $data['after'] = 0; 00073 } 00074 if (array_key_exists($eck, $formdata)) { 00075 $data['before'] = $formdata->$edt; 00076 } else { 00077 $data['before'] = 0; 00078 } 00079 00080 return $data; 00081 } 00082 00088 function get_sql_filter($data) { 00089 $after = (int)$data['after']; 00090 $before = (int)$data['before']; 00091 00092 $field = $this->_field; 00093 00094 if (empty($after) and empty($before)) { 00095 return array('', array()); 00096 } 00097 00098 $res = " $field >= 0 " ; 00099 00100 if ($after) { 00101 $res .= " AND $field >= $after"; 00102 } 00103 00104 if ($before) { 00105 $res .= " AND $field <= $before"; 00106 } 00107 return array($res, array()); 00108 } 00109 00115 function get_label($data) { 00116 $after = $data['after']; 00117 $before = $data['before']; 00118 $field = $this->_field; 00119 00120 $a = new stdClass(); 00121 $a->label = $this->_label; 00122 $a->after = userdate($after); 00123 $a->before = userdate($before); 00124 00125 if ($after and $before) { 00126 return get_string('datelabelisbetween', 'filters', $a); 00127 } else if ($after) { 00128 return get_string('datelabelisafter', 'filters', $a); 00129 } else if ($before) { 00130 return get_string('datelabelisbefore', 'filters', $a); 00131 } 00132 return ''; 00133 } 00134 }