|
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_text extends user_filter_type { 00009 var $_field; 00010 00018 function user_filter_text($name, $label, $advanced, $field) { 00019 parent::user_filter_type($name, $label, $advanced); 00020 $this->_field = $field; 00021 } 00022 00027 function getOperators() { 00028 return array(0 => get_string('contains', 'filters'), 00029 1 => get_string('doesnotcontain','filters'), 00030 2 => get_string('isequalto','filters'), 00031 3 => get_string('startswith','filters'), 00032 4 => get_string('endswith','filters'), 00033 5 => get_string('isempty','filters')); 00034 } 00035 00040 function setupForm(&$mform) { 00041 $objs = array(); 00042 $objs[] =& $mform->createElement('select', $this->_name.'_op', null, $this->getOperators()); 00043 $objs[] =& $mform->createElement('text', $this->_name, null); 00044 $grp =& $mform->addElement('group', $this->_name.'_grp', $this->_label, $objs, '', false); 00045 $mform->disabledIf($this->_name, $this->_name.'_op', 'eq', 5); 00046 if ($this->_advanced) { 00047 $mform->setAdvanced($this->_name.'_grp'); 00048 } 00049 } 00050 00056 function check_data($formdata) { 00057 $field = $this->_name; 00058 $operator = $field.'_op'; 00059 00060 if (array_key_exists($operator, $formdata)) { 00061 if ($formdata->$operator != 5 and $formdata->$field == '') { 00062 // no data - no change except for empty filter 00063 return false; 00064 } 00065 return array('operator'=>(int)$formdata->$operator, 'value'=>$formdata->$field); 00066 } 00067 00068 return false; 00069 } 00070 00076 function get_sql_filter($data) { 00077 global $DB; 00078 static $counter = 0; 00079 $name = 'ex_text'.$counter++; 00080 00081 $operator = $data['operator']; 00082 $value = $data['value']; 00083 $field = $this->_field; 00084 00085 $params = array(); 00086 00087 if ($operator != 5 and $value === '') { 00088 return ''; 00089 } 00090 00091 switch($operator) { 00092 case 0: // contains 00093 $res = $DB->sql_like($field, ":$name", false, false); 00094 $params[$name] = "%$value%"; 00095 break; 00096 case 1: // does not contain 00097 $res = $DB->sql_like($field, ":$name", false, false, true); 00098 $params[$name] = "%$value%"; 00099 break; 00100 case 2: // equal to 00101 $res = $DB->sql_like($field, ":$name", false, false); 00102 $params[$name] = "$value"; 00103 break; 00104 case 3: // starts with 00105 $res = $DB->sql_like($field, ":$name", false, false); 00106 $params[$name] = "$value%"; 00107 break; 00108 case 4: // ends with 00109 $res = $DB->sql_like($field, ":$name", false, false); 00110 $params[$name] = "%$value"; 00111 break; 00112 case 5: // empty 00113 $res = "$field = :$name"; 00114 $params[$name] = $DB->sql_empty(); 00115 break; 00116 default: 00117 return ''; 00118 } 00119 return array($res, $params); 00120 } 00121 00127 function get_label($data) { 00128 $operator = $data['operator']; 00129 $value = $data['value']; 00130 $operators = $this->getOperators(); 00131 00132 $a = new stdClass(); 00133 $a->label = $this->_label; 00134 $a->value = '"'.s($value).'"'; 00135 $a->operator = $operators[$operator]; 00136 00137 00138 switch ($operator) { 00139 case 0: // contains 00140 case 1: // doesn't contain 00141 case 2: // equal to 00142 case 3: // starts with 00143 case 4: // ends with 00144 return get_string('textlabel', 'filters', $a); 00145 case 5: // empty 00146 return get_string('textlabelnovalue', 'filters', $a); 00147 } 00148 00149 return ''; 00150 } 00151 }