WordPress.org

Make WordPress Core

Ticket #9124: 9124.9.2.diff

File 9124.9.2.diff, 3.6 KB (added by aaroncampbell, 11 years ago)
  • wp-includes/classes.php

     
    275275
    276276                        if ( !empty( $this->query_vars[$wpvar] ) ) {
    277277                                if ( ! is_array( $this->query_vars[$wpvar] ) ) {
    278                                         $this->query_vars[$wpvar] = (string) $this->query_vars[$wpvar]; 
     278                                        $this->query_vars[$wpvar] = (string) $this->query_vars[$wpvar];
    279279                                } else {
    280280                                        foreach ( $this->query_vars[$wpvar] as $vkey => $v )
    281281                                                $this->query_vars[$wpvar][$vkey] = (string) $v;
     
    550550         * A query is an associative array:
    551551         * - 'key' string The meta key
    552552         * - 'value' string|array The meta value
    553          * - 'compare' (optional) string How to compare the key to the value. 
    554          *              Possible values: '=', '!=', '>', '>=', '<', '<=', 'LIKE', 'IN', 'BETWEEN'.
     553         * - 'compare' (optional) string How to compare the key to the value.
     554         *              Possible values: '=', '!=', '>', '>=', '<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN'.
    555555         *              Default: '='
    556556         * - 'type' string (optional) The type of the value.
    557          *              Possible values: 'NUMERIC', 'BINARY', 'CHAR', 'DATE', 'DATETIME', 'DECIMAL', 'SIGNED', 'TIME', 'UNSIGNED'. 
     557         *              Possible values: 'NUMERIC', 'BINARY', 'CHAR', 'DATE', 'DATETIME', 'DECIMAL', 'SIGNED', 'TIME', 'UNSIGNED'.
    558558         *              Default: 'CHAR'
    559559         *
    560560         * @since 3.1.0
     
    573573         *              Possible values: 'term_id', 'slug' or 'name'
    574574         *              Default: 'slug'
    575575         * - 'operator' string (optional)
    576          *              Possible values: 'IN' and 'NOT IN'. 
     576         *              Possible values: 'IN' and 'NOT IN'.
    577577         *              Default: 'IN'
    578          * - 'include_children' bool (optional) Wether to include child terms. 
     578         * - 'include_children' bool (optional) Wether to include child terms.
    579579         *              Default: true
    580580         *
    581581         * @since 3.1.0
     
    636636                        $meta_compare = isset( $q['compare'] ) ? strtoupper( $q['compare'] ) : '=';
    637637                        $meta_type = isset( $q['type'] ) ? strtoupper( $q['type'] ) : 'CHAR';
    638638
    639                         if ( ! in_array( $meta_compare, array( '=', '!=', '>', '>=', '<', '<=', 'LIKE', 'IN', 'BETWEEN' ) ) )
     639                        if ( ! in_array( $meta_compare, array( '=', '!=', '>', '>=', '<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN' ) ) )
    640640                                $meta_compare = '=';
    641641
    642642                        if ( 'NUMERIC' == $meta_type )
     
    658658                        if ( !empty( $meta_key ) )
    659659                                $where .= $wpdb->prepare( " AND $alias.meta_key = %s", $meta_key );
    660660
    661                         if ( in_array( $meta_compare, array( 'IN', 'BETWEEN' ) ) ) {
     661                        if ( in_array( $meta_compare, array( 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN' ) ) ) {
    662662                                if ( ! is_array( $meta_value ) )
    663663                                        $meta_value = preg_split( '/[,\s]+/', $meta_value );
    664664                        } else {
     
    668668                        if ( empty( $meta_value ) )
    669669                                continue;
    670670
    671                         if ( 'IN' == $meta_compare ) {
     671                        if ( 'IN' == substr( $meta_compare, -2) ) {
    672672                                $meta_field_types = substr( str_repeat( ',%s', count( $meta_value ) ), 1 );
    673673                                $meta_compare_string = "($meta_field_types)";
    674674                                unset( $meta_field_types );
    675                         } elseif ( 'BETWEEN' == $meta_compare ) {
     675                        } elseif ( 'BETWEEN' == substr( $meta_compare, -7) ) {
    676676                                $meta_value = array_slice( $meta_value, 0, 2 );
    677677                                $meta_compare_string = '%s AND %s';
    678                         } elseif ( 'LIKE' == $meta_compare ) {
     678                        } elseif ( 'LIKE' == substr( $meta_compare, -4 ) ) {
    679679                                $meta_value = '%' . like_escape( $meta_value ) . '%';
    680680                                $meta_compare_string = '%s';
    681681                        } else {
     
    708708                                $query['include_children'] = true;
    709709
    710710                        $query['do_query'] = false;
    711                        
     711
    712712                        $sql_single = get_objects_in_term( $query['terms'], $query['taxonomy'], $query );
    713713
    714714                        if ( empty( $sql_single ) )