| [ Index ] |
PHP Cross Reference of Wordpress 2.9.1 |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * Revisions administration panel. 4 * 5 * @package WordPress 6 * @subpackage Administration 7 */ 8 9 /** WordPress Administration Bootstrap */ 10 require_once ('admin.php'); 11 12 wp_reset_vars(array('revision', 'left', 'right', 'diff', 'action')); 13 $revision_id = absint($revision); 14 $diff = absint($diff); 15 $left = absint($left); 16 $right = absint($right); 17 18 $parent_file = $redirect = 'edit.php'; 19 20 switch ( $action ) : 21 case 'delete' : // stubs 22 case 'edit' : 23 if ( constant('WP_POST_REVISIONS') ) // stub 24 $redirect = remove_query_arg( 'action' ); 25 else // Revisions disabled 26 $redirect = 'edit.php'; 27 break; 28 case 'restore' : 29 if ( !$revision = wp_get_post_revision( $revision_id ) ) 30 break; 31 if ( !current_user_can( 'edit_post', $revision->post_parent ) ) 32 break; 33 if ( !$post = get_post( $revision->post_parent ) ) 34 break; 35 36 if ( !constant('WP_POST_REVISIONS') && !wp_is_post_autosave( $revision ) ) // Revisions disabled and we're not looking at an autosave 37 break; 38 39 check_admin_referer( "restore-post_$post->ID|$revision->ID" ); 40 41 wp_restore_post_revision( $revision->ID ); 42 $redirect = add_query_arg( array( 'message' => 5, 'revision' => $revision->ID ), get_edit_post_link( $post->ID, 'url' ) ); 43 break; 44 case 'diff' : 45 if ( !$left_revision = get_post( $left ) ) 46 break; 47 if ( !$right_revision = get_post( $right ) ) 48 break; 49 50 if ( !current_user_can( 'read_post', $left_revision->ID ) || !current_user_can( 'read_post', $right_revision->ID ) ) 51 break; 52 53 // If we're comparing a revision to itself, redirect to the 'view' page for that revision or the edit page for that post 54 if ( $left_revision->ID == $right_revision->ID ) { 55 $redirect = get_edit_post_link( $left_revision->ID ); 56 include ( 'js/revisions-js.php' ); 57 break; 58 } 59 60 // Don't allow reverse diffs? 61 if ( strtotime($right_revision->post_modified_gmt) < strtotime($left_revision->post_modified_gmt) ) { 62 $redirect = add_query_arg( array( 'left' => $right, 'right' => $left ) ); 63 break; 64 } 65 66 if ( $left_revision->ID == $right_revision->post_parent ) // right is a revision of left 67 $post =& $left_revision; 68 elseif ( $left_revision->post_parent == $right_revision->ID ) // left is a revision of right 69 $post =& $right_revision; 70 elseif ( $left_revision->post_parent == $right_revision->post_parent ) // both are revisions of common parent 71 $post = get_post( $left_revision->post_parent ); 72 else 73 break; // Don't diff two unrelated revisions 74 75 if ( !constant('WP_POST_REVISIONS') ) { // Revisions disabled 76 if ( 77 // we're not looking at an autosave 78 ( !wp_is_post_autosave( $left_revision ) && !wp_is_post_autosave( $right_revision ) ) 79 || 80 // we're not comparing an autosave to the current post 81 ( $post->ID !== $left_revision->ID && $post->ID !== $right_revision->ID ) 82 ) 83 break; 84 } 85 86 if ( 87 // They're the same 88 $left_revision->ID == $right_revision->ID 89 || 90 // Neither is a revision 91 ( !wp_get_post_revision( $left_revision->ID ) && !wp_get_post_revision( $right_revision->ID ) ) 92 ) 93 break; 94 95 $post_title = '<a href="' . get_edit_post_link() . '">' . get_the_title() . '</a>'; 96 $h2 = sprintf( __( 'Compare Revisions of “%1$s”' ), $post_title ); 97 98 $left = $left_revision->ID; 99 $right = $right_revision->ID; 100 101 $redirect = false; 102 break; 103 case 'view' : 104 default : 105 if ( !$revision = wp_get_post_revision( $revision_id ) ) 106 break; 107 if ( !$post = get_post( $revision->post_parent ) ) 108 break; 109 110 if ( !current_user_can( 'read_post', $revision->ID ) || !current_user_can( 'read_post', $post->ID ) ) 111 break; 112 113 if ( !constant('WP_POST_REVISIONS') && !wp_is_post_autosave( $revision ) ) // Revisions disabled and we're not looking at an autosave 114 break; 115 116 $post_title = '<a href="' . get_edit_post_link() . '">' . get_the_title() . '</a>'; 117 $revision_title = wp_post_revision_title( $revision, false ); 118 $h2 = sprintf( __( 'Post Revision for “%1$s” created on %2$s' ), $post_title, $revision_title ); 119 120 // Sets up the diff radio buttons 121 $left = $revision->ID; 122 $right = $post->ID; 123 124 $redirect = false; 125 break; 126 endswitch; 127 128 if ( !$redirect && !in_array( $post->post_type, array( 'post', 'page' ) ) ) 129 $redirect = 'edit.php'; 130 131 if ( $redirect ) { 132 wp_redirect( $redirect ); 133 exit; 134 } 135 136 if ( 'page' == $post->post_type ) { 137 $submenu_file = 'edit-pages.php'; 138 $title = __( 'Page Revisions' ); 139 } else { 140 $submenu_file = 'edit.php'; 141 $title = __( 'Post Revisions' ); 142 } 143 144 require_once ( 'admin-header.php' ); 145 146 ?> 147 148 <div class="wrap"> 149 150 <h2 class="long-header"><?php echo $h2; ?></h2> 151 152 <table class="form-table ie-fixed"> 153 <col class="th" /> 154 <?php if ( 'diff' == $action ) : ?> 155 <tr id="revision"> 156 <th scope="row"></th> 157 <th scope="col" class="th-full"> 158 <span class="alignleft"><?php printf( __('Older: %s'), wp_post_revision_title( $left_revision ) ); ?></span> 159 <span class="alignright"><?php printf( __('Newer: %s'), wp_post_revision_title( $right_revision ) ); ?></span> 160 </th> 161 </tr> 162 <?php endif; 163 164 // use get_post_to_edit filters? 165 $identical = true; 166 foreach ( _wp_post_revision_fields() as $field => $field_title ) : 167 if ( 'diff' == $action ) { 168 $left_content = apply_filters( "_wp_post_revision_field_$field", $left_revision->$field, $field ); 169 $right_content = apply_filters( "_wp_post_revision_field_$field", $right_revision->$field, $field ); 170 if ( !$content = wp_text_diff( $left_content, $right_content ) ) 171 continue; // There is no difference between left and right 172 $identical = false; 173 } else { 174 add_filter( "_wp_post_revision_field_$field", 'htmlspecialchars' ); 175 $content = apply_filters( "_wp_post_revision_field_$field", $revision->$field, $field ); 176 } 177 ?> 178 179 <tr id="revision-field-<?php echo $field; ?>"> 180 <th scope="row"><?php echo esc_html( $field_title ); ?></th> 181 <td><div class="pre"><?php echo $content; ?></div></td> 182 </tr> 183 184 <?php 185 186 endforeach; 187 188 if ( 'diff' == $action && $identical ) : 189 190 ?> 191 192 <tr><td colspan="2"><div class="updated"><p><?php _e( 'These revisions are identical.' ); ?></p></div></td></tr> 193 194 <?php 195 196 endif; 197 198 ?> 199 200 </table> 201 202 <br class="clear" /> 203 204 <h2><?php echo $title; ?></h2> 205 206 <?php 207 208 $args = array( 'format' => 'form-table', 'parent' => true, 'right' => $right, 'left' => $left ); 209 if ( !constant( 'WP_POST_REVISIONS' ) ) 210 $args['type'] = 'autosave'; 211 212 wp_list_post_revisions( $post, $args ); 213 214 ?> 215 216 </div> 217 218 <?php 219 220 require_once ( 'admin-footer.php' );
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Fri Jan 8 00:19:48 2010 | Cross-referenced by PHPXref 0.7 |