wp-admin/revision.php
Lines:
1 to 100 of 177
<?php /** * Revisions administration panel * * Requires wp-admin/includes/revision.php. * * @package WordPress * @subpackage Administration * @since 2.6.0 */ /** WordPress Administration Bootstrap */ require_once __DIR__ . '/admin.php'; require ABSPATH . 'wp-admin/includes/revision.php'; /** * @global int $revision Optional. The revision ID. * @global string $action The action to take. * Accepts 'restore', 'view' or 'edit'. * @global int $from The revision to compare from. * @global int $to Optional, required if revision missing. The revision to compare to. */ wp_reset_vars( array( 'revision', 'action', 'from', 'to' ) ); $revision_id = absint( $revision ); $from = is_numeric( $from ) ? absint( $from ) : null; if ( ! $revision_id ) { $revision_id = absint( $to ); } $redirect = 'edit.php'; switch ( $action ) { case 'restore': $revision = wp_get_post_revision( $revision_id ); if ( ! $revision ) { break; } if ( ! current_user_can( 'edit_post', $revision->post_parent ) ) { break; } $post = get_post( $revision->post_parent ); if ( ! $post ) { break; } // Don't restore if revisions are disabled and this is not an autosave. if ( ! wp_revisions_enabled( $post ) && ! wp_is_post_autosave( $revision ) ) { $redirect = 'edit.php?post_type=' . $post->post_type; break; } // Don't restore if the post is locked. if ( wp_check_post_lock( $post->ID ) ) { break; } check_admin_referer( "restore-post_{$revision->ID}" ); /* * Ensure the global $post remains the same after revision is restored. * Because wp_insert_post() and wp_transition_post_status() are called * during the process, plugins can unexpectedly modify $post. */ $backup_global_post = clone $post; wp_restore_post_revision( $revision->ID ); // Restore the global $post as it was before. $post = $backup_global_post; $redirect = add_query_arg( array( 'message' => 5, 'revision' => $revision->ID, ), get_edit_post_link( $post->ID, 'url' ) ); break; case 'view': case 'edit': default: $revision = wp_get_post_revision( $revision_id ); if ( ! $revision ) { break; } $post = get_post( $revision->post_parent ); if ( ! $post ) { break; } if ( ! current_user_can( 'read_post', $revision->ID ) || ! current_user_can( 'edit_post', $revision->post_parent ) ) { break;