Ticket #34560: 34560.7.diff
File 34560.7.diff, 6.1 KB (added by , 8 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 222 220 // 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 ) ); 221 $revision_count = wp_get_post_revision_count( $post->ID ); 222 if ( $revision_count > 1 ) { 223 $last_revision = wp_get_last_revision_id( $post->ID ); 224 $publish_callback_args = array( 225 'revisions_count' => $revision_count, 226 'revision_id' => $last_revision, 227 ); 226 228 add_meta_box('revisionsdiv', __('Revisions'), 'post_revisions_meta_box', null, 'normal', 'core'); 227 229 } 228 230 } -
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; … … 1646 1644 $gravatar = get_avatar( $revision->post_author, 24 ); 1647 1645 1648 1646 $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) )1647 if ( $link && $link = admin_url( sprintf( 'revision.php?revision=%d&action=edit', $revision->ID ) ) ) 1650 1648 $date = "<a href='$link'>$date</a>"; 1651 1649 1652 1650 $revision_date_author = sprintf( … … 1694 1692 if ( ! $post = get_post( $post_id ) ) 1695 1693 return; 1696 1694 1695 if ( ! current_user_can( 'read_post', $post->ID ) ) 1696 return; 1697 1697 1698 // $args array with (parent, format, right, left, type) deprecated since 3.6 1698 1699 if ( is_array( $type ) ) { 1699 1700 $type = ! empty( $type['type'] ) ? $type['type'] : $type; … … 1700 1701 _deprecated_argument( __FUNCTION__, '3.6' ); 1701 1702 } 1702 1703 1703 if ( ! $revisions = wp_get_post_revisions ( $post->ID ) )1704 if ( ! $revisions = wp_get_post_revisions_details( $post->ID ) ) 1704 1705 return; 1705 1706 1706 1707 $rows = ''; 1707 1708 foreach ( $revisions as $revision ) { 1708 if ( ! current_user_can( 'read_post', $revision->ID ) )1709 continue;1710 1711 1709 $is_autosave = wp_is_post_autosave( $revision ); 1712 1710 if ( ( 'revision' === $type && $is_autosave ) || ( 'autosave' === $type && ! $is_autosave ) ) 1713 1711 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. 461 */ 462 function wp_get_post_revisions_details( $post_id ) { 463 global $wpdb; 464 465 $revision_details = $wpdb->get_results( 466 $wpdb->prepare( " 467 SELECT ID, post_author, post_date, post_date_gmt, 468 post_title, post_status, post_parent, post_modified, post_type 469 FROM $wpdb->posts 470 WHERE post_parent = %d 471 AND post_type = 'revision' 472 AND post_status = 'inherit' 473 ORDER BY post_date DESC, ID DESC", 474 $post_id 475 ) 476 ); 477 478 return $revision_details; 479 } 480 481 /** 482 * Returns the count of revisions for a given post. 483 * 484 * @since 4.5.0 485 * 486 * @param int $post_id The post id. 487 * @return int The count of revisions for this post. 488 */ 489 function wp_get_post_revision_count( $post_id ) { 490 global $wpdb; 491 492 $revision_count = $wpdb->get_row( 493 $wpdb->prepare( " 494 SELECT COUNT(*) as count 495 FROM $wpdb->posts 496 WHERE post_parent = %d 497 AND post_type = 'revision' 498 AND post_status = 'inherit'", 499 $post_id 500 ) 501 ); 502 return intval( $revision_count->count ); 503 } 504 505 /** 506 * Returns the id of the last stored revision. 507 * 508 * @since 4.5.0 509 * 510 * @param int $post_id The post id. 511 * @return int The id of the last stored revision for this post. 512 */ 513 function wp_get_last_revision_id( $post_id ) { 514 global $wpdb; 515 516 $last_revision_id = intval( 517 $wpdb->get_var( 518 $wpdb->prepare( " 519 SELECT ID, post_date 520 FROM $wpdb->posts 521 WHERE post_parent = %d 522 AND post_type = 'revision' 523 AND post_status = 'inherit' 524 ORDER BY post_date DESC, ID DESC 525 LIMIT 1", 526 $post_id 527 ) 528 ) 529 ); 530 return $last_revision_id; 531 } 532 533 /** 437 534 * Determine if revisions are enabled for a given post. 438 535 * 439 536 * @since 3.6.0