Ticket #25386: 25386-tests.diff
File 25386-tests.diff, 5.6 KB (added by , 11 years ago) |
---|
-
src/wp-includes/author-template.php
336 336 'orderby' => 'name', 'order' => 'ASC', 'number' => '', 337 337 'optioncount' => false, 'exclude_admin' => true, 338 338 'show_fullname' => false, 'hide_empty' => true, 339 'feed' => '', 'feed_image' => '', 'feed_type' => '', ' echo' => true,339 'feed' => '', 'feed_image' => '', 'feed_type' => '', 'post_type' => '', 'echo' => true, 340 340 'style' => 'list', 'html' => true, 'exclude' => '', 'include' => '' 341 341 ); 342 342 … … 348 348 $query_args['fields'] = 'ids'; 349 349 $authors = get_users( $query_args ); 350 350 351 if( is_array( $post_type ) ) { 352 353 $post_type = 'post_type IN ( ' . implode( ',', array_map( 'sanitize_key', $args['post_type'] ) ) . ' )'; 354 355 } else { 356 357 $post_type = 'post_type = ' . sanitize_key( $args['post_type'] ); 358 359 } 360 351 361 $author_count = array(); 352 foreach ( (array) $wpdb->get_results( "SELECT DISTINCT post_author, COUNT(ID) AS count FROM $wpdb->posts WHERE post_type = 'post' AND " . get_private_posts_cap_sql( 'post' ) . " GROUP BY post_author" ) as $row ) {362 foreach ( (array) $wpdb->get_results( "SELECT DISTINCT post_author, COUNT(ID) AS count FROM $wpdb->posts WHERE $post_type " . get_private_posts_cap_sql( 'any' ) . " GROUP BY post_author" ) as $row ) { 353 363 $author_count[$row->post_author] = $row->count; 354 364 } 355 365 foreach ( $authors as $author_id ) { … … 440 450 global $wpdb; 441 451 442 452 if ( false === ( $is_multi_author = get_transient( 'is_multi_author' ) ) ) { 443 $rows = (array) $wpdb->get_col("SELECT DISTINCT post_author FROM $wpdb->posts WHERE post_ type = 'post' AND post_status = 'publish' LIMIT 2");453 $rows = (array) $wpdb->get_col("SELECT DISTINCT post_author FROM $wpdb->posts WHERE post_status = 'publish' LIMIT 2"); 444 454 $is_multi_author = 1 < count( $rows ) ? 1 : 0; 445 455 set_transient( 'is_multi_author', $is_multi_author ); 446 456 } -
src/wp-includes/post.php
5046 5046 * @param bool $public_only Optional. Only return public posts. Skips cap checks for $current_user. Default is false. 5047 5047 * @return string SQL WHERE code that can be added to a query. 5048 5048 */ 5049 function get_posts_by_author_sql( $post_type , $full = true, $post_author = null, $public_only = false ) {5049 function get_posts_by_author_sql( $post_type = 'post', $full = true, $post_author = null, $public_only = false ) { 5050 5050 global $wpdb; 5051 5051 5052 5052 // Private posts … … 5067 5067 $cap = $post_type_obj->cap->read_private_posts; 5068 5068 } 5069 5069 5070 if( is_array( $post_type ) ) { 5071 5072 $post_type_where = 'post_type IN ( ' . implode( ',', array_map( 'sanitize_key', $post_type ) ) . ' )'; 5073 5074 } else { 5075 5076 $post_type_where = 'post_type = ' . sanitize_key( $post_type ); 5077 5078 } 5079 5070 5080 if ( $full ) { 5071 5081 if ( null === $post_author ) { 5072 $sql = $wpdb->prepare( 'WHERE post_type = %s AND ', $post_type );5082 $sql = $wpdb->prepare( 'WHERE %s AND ', $post_type_where ); 5073 5083 } else { 5074 $sql = $wpdb->prepare( 'WHERE post_author = %d AND post_type = %s AND ', $post_author, $post_type );5084 $sql = $wpdb->prepare( 'WHERE post_author = %d AND %s AND ', $post_author, $post_type_where ); 5075 5085 } 5076 5086 } else { 5077 5087 $sql = ''; -
src/wp-includes/user.php
256 256 * @param int $userid User ID. 257 257 * @return int Amount of posts user has written. 258 258 */ 259 function count_user_posts( $userid) {259 function count_user_posts( $userid, $post_type = false ) { 260 260 global $wpdb; 261 261 262 $where = get_posts_by_author_sql( 'post', true, $userid);262 $where = get_posts_by_author_sql( $post_type, true, $userid ); 263 263 264 264 $count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts $where" ); 265 265 -
tests/phpunit/tests/comment/query.php
180 180 $this->assertEquals( $users[1], $comments[2]->user_id ); 181 181 182 182 } 183 184 /** 185 * @ticket 25386 186 */ 187 function test_get_comments_in() { 188 189 $comment_id = $this->factory->comment->create( array( 'comment_post_ID' => $this->post_id ) ); 190 $comment_id2 = $this->factory->comment->create( array( 'comment_post_ID' => $this->post_id ) ); 191 $comment_id3 = $this->factory->comment->create( array( 'comment_post_ID' => $this->post_id ) ); 192 193 $comments = get_comments( array( 'comment__in' => array( $comment_id, $comment_id2 ) ); 194 195 $this->assertCount( 2, $comments ); 196 197 $this->assertEquals( $comment_id, $comments[0]->comment_ID ); 198 $this->assertEquals( $comment_id2, $comments[1]->comment_ID ); 199 200 $comments = get_comments( array( 'comment__in' => array( $comment_id3 ) ); 201 202 $this->assertCount( 1, $comments ); 203 $this->assertEquals( $comment_id3, $comments[0]->comment_ID ); 204 205 } 206 207 /** 208 * @ticket 25386 209 */ 210 function test_get_comments_not_in() { 211 212 $comment_id = $this->factory->comment->create( array( 'comment_post_ID' => $this->post_id ) ); 213 $comment_id2 = $this->factory->comment->create( array( 'comment_post_ID' => $this->post_id ) ); 214 $comment_id3 = $this->factory->comment->create( array( 'comment_post_ID' => $this->post_id ) ); 215 216 $comments = get_comments( array( 'comment__not_in' => array( $comment_id, $comment_id2 ) ); 217 218 $this->assertCount( 1, $comments ); 219 $this->assertEquals( $comment_id3, $comments[0]->comment_ID ); 220 221 } 183 222 }