Moodle  2.2.1
http://www.collinsharper.com
C:/xampp/htdocs/moodle/user/filters/text.php
Go to the documentation of this file.
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 }
 All Data Structures Namespaces Files Functions Variables Enumerations