Make WordPress Core

Ticket #35692: 35692.1.diff

File 35692.1.diff, 2.8 KB (added by hlashbrooke, 8 years ago)

Adding new parse_orderby parameter to function comments

  • query.php

     
    14571457                        , 'fields'
    14581458                        , 'menu_order'
    14591459                        , 'embed'
     1460                        , 'seed'
    14601461                );
    14611462
    14621463                foreach ( $keys as $key ) {
     
    15681569         *                                                 return posts containing 'pillow' but not 'sofa'.
    15691570         *     @type int          $second                  Second of the minute. Default empty. Accepts numbers 0-60.
    15701571         *     @type bool         $sentence                Whether to search by phrase. Default false.
     1572         *     @type int                  $seed                                    A seed value to pass to MySQL's `RAND()` function
    15711573         *     @type bool         $suppress_filters        Whether to suppress filters. Default false.
    15721574         *     @type string       $tag                     Tag slug. Comma-separated (either), Plus-separated (all).
    15731575         *     @type array        $tag__and                An array of tag ids (AND in).
     
    16141616                $qv['pagename'] = trim( $qv['pagename'] );
    16151617                $qv['name'] = trim( $qv['name'] );
    16161618                $qv['title'] = trim( $qv['title'] );
     1619                $qv['seed'] =  absint( $qv['seed'] );
    16171620                if ( '' !== $qv['hour'] ) $qv['hour'] = absint($qv['hour']);
    16181621                if ( '' !== $qv['minute'] ) $qv['minute'] = absint($qv['minute']);
    16191622                if ( '' !== $qv['second'] ) $qv['second'] = absint($qv['second']);
     
    23212324         *
    23222325         * @global wpdb $wpdb WordPress database abstraction object.
    23232326         *
    2324          * @param string $orderby Alias for the field to order by.
     2327         * @param string  $orderby Alias for the field to order by.
     2328         * @param integer $seed    Seed value for random ordering
    23252329         * @return string|false Table-prefixed value to used in the ORDER clause. False otherwise.
    23262330         */
    2327         protected function parse_orderby( $orderby ) {
     2331        protected function parse_orderby( $orderby, $seed ) {
    23282332                global $wpdb;
    23292333
    23302334                // Used to filter values.
     
    23682372                                $orderby_clause = "$wpdb->posts.{$orderby}";
    23692373                                break;
    23702374                        case 'rand':
    2371                                 $orderby_clause = 'RAND()';
     2375                                $seed_value = '';
     2376                                if( $seed ) {
     2377                                        $seed_value = $seed;
     2378                                }
     2379                                $orderby_clause = 'RAND(' . esc_sql( $seed_value ) . ')';
    23722380                                break;
    23732381                        case $primary_meta_key:
    23742382                        case 'meta_value':
     
    29702978                        if ( is_array( $q['orderby'] ) ) {
    29712979                                foreach ( $q['orderby'] as $_orderby => $order ) {
    29722980                                        $orderby = addslashes_gpc( urldecode( $_orderby ) );
    2973                                         $parsed  = $this->parse_orderby( $orderby );
     2981                                        $parsed  = $this->parse_orderby( $orderby, $q['seed'] );
    29742982
    29752983                                        if ( ! $parsed ) {
    29762984                                                continue;
     
    29852993                                $q['orderby'] = addslashes_gpc( $q['orderby'] );
    29862994
    29872995                                foreach ( explode( ' ', $q['orderby'] ) as $i => $orderby ) {
    2988                                         $parsed = $this->parse_orderby( $orderby );
     2996                                        $parsed = $this->parse_orderby( $orderby, $q['seed'] );
    29892997                                        // Only allow certain values for safety.
    29902998                                        if ( ! $parsed ) {
    29912999                                                continue;