Ticket #34560: 34560.6.diff
File 34560.6.diff, 6.4 KB (added by , 9 years ago) |
---|
-
src/wp-admin/edit-form-advanced.php
217 217 218 218 $publish_callback_args = null; 219 219 if ( post_type_supports($post_type, 'revisions') && 'auto-draft' != $post->post_status ) { 220 $revisions = wp_get_post_revisions( $post_ID ); 221 220 $revision_count = wp_get_post_revision_count( $post_id ); 222 221 // We should aim to show the revisions metabox only when there are revisions. 223 if ( count( $revisions )> 1 ) {224 reset( $revisions ); // Reset pointer for key()225 $publish_callback_args = array( 'revisions_count' => count( $revisions ), 'revision_id' => key( $revisions ));222 if ( $revision_count > 1 ) { 223 $last_revision = wp_get_last_revision_id( $post_id ); 224 $publish_callback_args = array( 'revisions_count' => $revision_count, 'revision_id' => $last_revision ? $last_revision: 0 ); 226 225 add_meta_box('revisionsdiv', __('Revisions'), 'post_revisions_meta_box', null, 'normal', 'core'); 227 226 } 228 227 } -
src/wp-includes/post-template.php
1633 1633 * @return string|false gravatar, user, i18n formatted datetimestamp or localized 'Current Revision'. 1634 1634 */ 1635 1635 function wp_post_revision_title_expanded( $revision, $link = true ) { 1636 if ( !$revision = get_post( $revision ) )1637 return $revision;1638 1636 1639 1637 if ( !in_array( $revision->post_type, array( 'post', 'page', 'revision' ) ) ) 1640 1638 return false; 1641 1642 1639 $author = get_the_author_meta( 'display_name', $revision->post_author ); 1643 1640 /* translators: revision date format, see http://php.net/date */ 1644 1641 $datef = _x( 'F j, Y @ H:i:s', 'revision date format' ); 1645 1646 1642 $gravatar = get_avatar( $revision->post_author, 24 ); 1647 1648 1643 $date = date_i18n( $datef, strtotime( $revision->post_modified ) ); 1649 if ( $link && current_user_can( 'edit_post', $revision->ID ) && $link = get_edit_post_link( $revision->ID) )1644 if ( $link && $link = admin_url( sprintf( 'revision.php?revision=%d&action=edit', $revision->ID ) ) ) 1650 1645 $date = "<a href='$link'>$date</a>"; 1651 1646 1652 1647 $revision_date_author = sprintf( … … 1694 1689 if ( ! $post = get_post( $post_id ) ) 1695 1690 return; 1696 1691 1692 if ( ! current_user_can( 'read_post', $post->ID ) ) 1693 return; 1694 1697 1695 // $args array with (parent, format, right, left, type) deprecated since 3.6 1698 1696 if ( is_array( $type ) ) { 1699 1697 $type = ! empty( $type['type'] ) ? $type['type'] : $type; … … 1700 1698 _deprecated_argument( __FUNCTION__, '3.6' ); 1701 1699 } 1702 1700 1703 if ( ! $revisions = wp_get_post_revisions ( $post->ID ) )1701 if ( ! $revisions = wp_get_post_revisions_details( $post->ID ) ) 1704 1702 return; 1705 1703 1706 1704 $rows = ''; 1707 1705 foreach ( $revisions as $revision ) { 1708 if ( ! current_user_can( 'read_post', $revision->ID ) )1709 continue;1710 1711 1706 $is_autosave = wp_is_post_autosave( $revision ); 1712 1707 if ( ( 'revision' === $type && $is_autosave ) || ( 'autosave' === $type && ! $is_autosave ) ) 1713 1708 continue; -
src/wp-includes/revision.php
198 198 * @return WP_Post|false The autosaved data or false on failure or when no autosave exists. 199 199 */ 200 200 function wp_get_post_autosave( $post_id, $user_id = 0 ) { 201 $revisions = wp_get_post_revisions( $post_id, array( 'check_enabled' => false ) );201 global $wpdb; 202 202 203 foreach ( $revisions as $revision ) { 204 if ( false !== strpos( $revision->post_name, "{$post_id}-autosave" ) ) { 205 if ( $user_id && $user_id != $revision->post_author ) 206 continue; 203 // Contruct the autosave query. 204 $autosave_query = " 205 SELECT * 206 FROM $wpdb->posts 207 WHERE post_parent = %d 208 AND post_type = 'revision' 209 AND post_status = 'inherit' 210 AND post_name = %s 211 AND post_author = %s 212 LIMIT 1"; 207 213 208 return $revision; 209 } 214 $autosave_details = $wpdb->get_results( 215 $wpdb->prepare( 216 $autosave_query, 217 $post_id, 218 $post_id . '-autosave-v1', 219 ( 0 !== $user_id ) ? $user_id : get_current_user_id() 220 ) 221 ); 222 223 if ( empty( $autosave_details ) ) { 224 return false; 210 225 } 211 226 212 return false;227 return $autosave_details[0]; 213 228 } 214 229 215 230 /** … … 434 449 } 435 450 436 451 /** 452 * Returns the revision details of specified post. 453 * 454 * Data includes details about each revision on a post. Includes ID, post_author, 455 * post_date, post_date_gmt, post_title, post_status, post_parent, and post_modified. 456 * 457 * @since 4.5.0 458 * 459 * @param int $post_id The post id. 460 * @return array An array of revision details, or an empty array if post invalid. 461 */ 462 function wp_get_post_revisions_details( $post_id = 0, $args = null ) { 463 global $wpdb; 464 465 $revision_details = $wpdb->get_results( 466 $wpdb->prepare( " 467 SELECT ID, post_author, post_date, post_date_gmt, post_title, post_status, post_parent, post_modified, post_type 468 FROM $wpdb->posts 469 WHERE post_parent = %d 470 AND post_type = 'revision' 471 AND post_status = 'inherit' 472 ORDER BY post_date DESC, ID DESC", 473 $post_id 474 ) 475 ); 476 477 return $revision_details; 478 } 479 480 /** 481 * Return the count of revisions for a given post. 482 * 483 * @since 4.5.0 484 * 485 * @param int $post_id The post id. 486 * @return int The count of revisions for this post, false if post invalid. 487 */ 488 function wp_get_post_revision_count( $post_id = 0 ) { 489 global $wpdb; 490 491 $revision_count = $wpdb->get_row( 492 $wpdb->prepare( " 493 SELECT COUNT(*) as count 494 FROM $wpdb->posts 495 WHERE post_parent = %d 496 AND post_type = 'revision' 497 AND post_status = 'inherit'", 498 $post_id 499 ) 500 ); 501 return intval( $revision_count->count ); 502 } 503 504 /** 505 * Return the id of the last stored revision. 506 * 507 * @since 4.5.0 508 * 509 * @param int $post_id The post id. 510 * @return int The id of the last stored revision for this post, false if post invalid. 511 */ 512 function wp_get_last_revision_id( $post_id = 0 ) { 513 global $wpdb; 514 515 $last_revision_id = intval( 516 $wpdb->get_var( 517 $wpdb->prepare( " 518 SELECT ID, post_date 519 FROM $wpdb->posts 520 WHERE post_parent = %d 521 AND post_type = 'revision' 522 AND post_status = 'inherit' 523 ORDER BY post_date DESC, ID DESC 524 LIMIT 1", 525 $post_id 526 ) 527 ) 528 ); 529 return $last_revision_id; 530 } 531 532 /** 437 533 * Determine if revisions are enabled for a given post. 438 534 * 439 535 * @since 3.6.0