Make WordPress Core

Changeset 27067


Ignore:
Timestamp:
02/02/2014 07:35:54 AM (11 years ago)
Author:
wonderboymusic
Message:

Fix an error in SQL generation when perm is set and an array is passed for post_status. Adds unit test.

Props oso96_2000.
Fixes #25523.

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/query.php

    r27018 r27067  
    27572757                    $statuswheres[$index] = "($statuswhere OR ($wpdb->posts.post_status = 'inherit' AND " . str_replace($wpdb->posts, 'p2', $statuswhere) . "))";
    27582758            }
    2759             foreach ( $statuswheres as $statuswhere )
    2760                 $where .= " AND $statuswhere";
     2759            $where_status = implode( ' OR ', $statuswheres );
     2760            if ( ! empty( $where_status ) ) {
     2761                $where .= " AND ($where_status)";
     2762            }
    27612763        } elseif ( !$this->is_singular ) {
    27622764            $where .= " AND ($wpdb->posts.post_status = 'publish'";
  • trunk/tests/phpunit/tests/query.php

    r25601 r27067  
    7777            $this->assertEquals( get_the_ID(), $post_id );
    7878        }
    79 
    8079    }
    8180}
  • trunk/tests/phpunit/tests/query/results.php

    r26479 r27067  
    534534        $this->assertFalse( $this->q->is_year );
    535535    }
     536
     537    function test_perm_with_status_array() {
     538        global $wpdb;
     539        $this->q->query( array( 'perm' => 'readable', 'post_status' => array( 'publish', 'private' ) ) );
     540        $this->assertTrue( $this->q->have_posts() );
     541        $this->assertContains( "(({$wpdb->posts}.post_status = 'publish') OR ({$wpdb->posts}.post_author = 0 AND ({$wpdb->posts}.post_status = 'private')))",
     542            $this->q->request
     543        );
     544        $this->assertNotContains( "({$wpdb->posts}.post_status = 'publish') AND", $this->q->request );
     545    }
    536546}
Note: See TracChangeset for help on using the changeset viewer.