Proyectos de Subversion Moodle

Rev

Rev 1 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 1 Rev 1441
Línea 107... Línea 107...
107
     * @param array $values
107
     * @param array $values
108
     * @return array array of two elements - SQL query and named parameters
108
     * @return array array of two elements - SQL query and named parameters
109
     */
109
     */
110
    public function get_sql_filter(array $values): array {
110
    public function get_sql_filter(array $values): array {
111
        global $DB;
111
        global $DB;
112
        $name = database::generate_param_name();
-
 
Línea 113... Línea 112...
113
 
112
 
114
        $operator = (int) ($values["{$this->name}_operator"] ?? self::ANY_VALUE);
113
        $operator = (int) ($values["{$this->name}_operator"] ?? self::ANY_VALUE);
Línea 115... Línea 114...
115
        $value = trim($values["{$this->name}_value"] ?? '');
114
        $value = trim($values["{$this->name}_value"] ?? '');
Línea 121... Línea 120...
121
        if (!$this->validate_filter_values($operator, $value)) {
120
        if (!$this->validate_filter_values($operator, $value)) {
122
            // Filter configuration is invalid. Ignore the filter.
121
            // Filter configuration is invalid. Ignore the filter.
123
            return ['', []];
122
            return ['', []];
124
        }
123
        }
Línea -... Línea 124...
-
 
124
 
-
 
125
        $name = database::generate_param_name();
125
 
126
 
126
        switch($operator) {
127
        switch($operator) {
127
            case self::CONTAINS:
128
            case self::CONTAINS:
128
                $res = $DB->sql_like($fieldsql, ":$name", false, false);
129
                $res = $DB->sql_like($fieldsql, ":$name", false, false);
129
                $value = $DB->sql_like_escape($value);
130
                $value = $DB->sql_like_escape($value);
Línea 151... Línea 152...
151
                $res = $DB->sql_like($fieldsql, ":$name", false, false);
152
                $res = $DB->sql_like($fieldsql, ":$name", false, false);
152
                $value = $DB->sql_like_escape($value);
153
                $value = $DB->sql_like_escape($value);
153
                $params[$name] = "%$value";
154
                $params[$name] = "%$value";
154
                break;
155
                break;
155
            case self::IS_EMPTY:
156
            case self::IS_EMPTY:
156
                $paramempty = database::generate_param_name();
-
 
157
                $res = "COALESCE({$fieldsql}, :{$paramempty}) = :{$name}";
157
                $res = "COALESCE({$fieldsql}, '') = ''";
158
                $params[$paramempty] = $params[$name] = '';
-
 
159
                break;
158
                break;
160
            case self::IS_NOT_EMPTY:
159
            case self::IS_NOT_EMPTY:
161
                $paramempty = database::generate_param_name();
-
 
162
                $res = "COALESCE({$fieldsql}, :{$paramempty}) != :{$name}";
160
                $res = "COALESCE({$fieldsql}, '') != ''";
163
                $params[$paramempty] = $params[$name] = '';
-
 
164
                break;
161
                break;
165
            default:
162
            default:
166
                // Filter configuration is invalid. Ignore the filter.
163
                // Filter configuration is invalid. Ignore the filter.
167
                return ['', []];
164
                return ['', []];
168
        }
165
        }