+ $id = $post->ID;
+ }
+
+ if ( $do_lock && empty( $_POST['auto_draft'] ) && $id && is_numeric( $id ) ) {
+ $lock_result = wp_set_post_lock( $id );
+ $supplemental['active-post-lock'] = implode( ':', $lock_result );
+ }
+
+ if ( $nonce_age == 2 ) {
+ $supplemental['replace-autosavenonce'] = wp_create_nonce('autosave');
+ $supplemental['replace-getpermalinknonce'] = wp_create_nonce('getpermalink');
+ $supplemental['replace-samplepermalinknonce'] = wp_create_nonce('samplepermalink');
+ $supplemental['replace-closedpostboxesnonce'] = wp_create_nonce('closedpostboxes');
+ $supplemental['replace-_ajax_linking_nonce'] = wp_create_nonce( 'internal-linking' );
+ if ( $id ) {
+ if ( $_POST['post_type'] == 'post' )
+ $supplemental['replace-_wpnonce'] = wp_create_nonce('update-post_' . $id);
+ elseif ( $_POST['post_type'] == 'page' )
+ $supplemental['replace-_wpnonce'] = wp_create_nonce('update-page_' . $id);
+ }
+ }
+
+ if ( ! empty($alert) )
+ $supplemental['alert'] = $alert;
+
+ $x = new WP_Ajax_Response( array(
+ 'what' => 'autosave',
+ 'id' => $id,
+ 'data' => $id ? $data : '',
+ 'supplemental' => $supplemental
+ ) );
+ $x->send();
+ break;
+case 'closed-postboxes' :
+ check_ajax_referer( 'closedpostboxes', 'closedpostboxesnonce' );
+ $closed = isset( $_POST['closed'] ) ? explode( ',', $_POST['closed']) : array();
+ $closed = array_filter($closed);
+
+ $hidden = isset( $_POST['hidden'] ) ? explode( ',', $_POST['hidden']) : array();
+ $hidden = array_filter($hidden);
+
+ $page = isset( $_POST['page'] ) ? $_POST['page'] : '';
+
+ if ( $page != sanitize_key( $page ) )
+ die('0');
+
+ if ( ! $user = wp_get_current_user() )
+ die('-1');
+
+ if ( is_array($closed) )
+ update_user_option($user->ID, "closedpostboxes_$page", $closed, true);
+
+ if ( is_array($hidden) ) {
+ $hidden = array_diff( $hidden, array('submitdiv', 'linksubmitdiv', 'manage-menu', 'create-menu') ); // postboxes that are always shown
+ update_user_option($user->ID, "metaboxhidden_$page", $hidden, true);
+ }
+
+ die('1');
+ break;
+case 'hidden-columns' :
+ check_ajax_referer( 'screen-options-nonce', 'screenoptionnonce' );
+ $hidden = isset( $_POST['hidden'] ) ? $_POST['hidden'] : '';
+ $hidden = explode( ',', $_POST['hidden'] );
+ $page = isset( $_POST['page'] ) ? $_POST['page'] : '';
+
+ if ( $page != sanitize_key( $page ) )
+ die('0');
+
+ if ( ! $user = wp_get_current_user() )
+ die('-1');
+
+ if ( is_array($hidden) )
+ update_user_option($user->ID, "manage{$page}columnshidden", $hidden, true);
+
+ die('1');
+ break;
+case 'update-welcome-panel' :
+ check_ajax_referer( 'welcome-panel-nonce', 'welcomepanelnonce' );
+
+ if ( ! current_user_can( 'edit_theme_options' ) )
+ die('-1');
+
+ update_user_meta( get_current_user_id(), 'show_welcome_panel', empty( $_POST['visible'] ) ? 0 : 1 );
+
+ die('1');
+ break;
+case 'menu-get-metabox' :
+ if ( ! current_user_can( 'edit_theme_options' ) )
+ die('-1');
+
+ require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
+
+ if ( isset( $_POST['item-type'] ) && 'post_type' == $_POST['item-type'] ) {
+ $type = 'posttype';
+ $callback = 'wp_nav_menu_item_post_type_meta_box';
+ $items = (array) get_post_types( array( 'show_in_nav_menus' => true ), 'object' );
+ } elseif ( isset( $_POST['item-type'] ) && 'taxonomy' == $_POST['item-type'] ) {
+ $type = 'taxonomy';
+ $callback = 'wp_nav_menu_item_taxonomy_meta_box';
+ $items = (array) get_taxonomies( array( 'show_ui' => true ), 'object' );
+ }
+
+ if ( ! empty( $_POST['item-object'] ) && isset( $items[$_POST['item-object']] ) ) {
+ $item = apply_filters( 'nav_menu_meta_box_object', $items[ $_POST['item-object'] ] );
+ ob_start();
+ call_user_func_array($callback, array(
+ null,
+ array(
+ 'id' => 'add-' . $item->name,
+ 'title' => $item->labels->name,
+ 'callback' => $callback,
+ 'args' => $item,
+ )
+ ));
+
+ $markup = ob_get_clean();
+
+ echo json_encode(array(
+ 'replace-id' => $type . '-' . $item->name,
+ 'markup' => $markup,
+ ));
+ }
+
+ exit;
+ break;
+case 'menu-quick-search':
+ if ( ! current_user_can( 'edit_theme_options' ) )
+ die('-1');
+
+ require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
+
+ _wp_ajax_menu_quick_search( $_REQUEST );
+
+ exit;
+ break;
+case 'wp-link-ajax':
+ check_ajax_referer( 'internal-linking', '_ajax_linking_nonce' );
+
+ $args = array();
+
+ if ( isset( $_POST['search'] ) )
+ $args['s'] = stripslashes( $_POST['search'] );
+ $args['pagenum'] = ! empty( $_POST['page'] ) ? absint( $_POST['page'] ) : 1;
+
+ require(ABSPATH . WPINC . '/class-wp-editor.php');
+ $results = _WP_Editors::wp_link_query( $args );
+
+ if ( ! isset( $results ) )
+ die( '0' );
+
+ echo json_encode( $results );
+ echo "\n";
+
+ exit;
+ break;
+case 'menu-locations-save':
+ if ( ! current_user_can( 'edit_theme_options' ) )
+ die('-1');
+ check_ajax_referer( 'add-menu_item', 'menu-settings-column-nonce' );
+ if ( ! isset( $_POST['menu-locations'] ) )
+ die('0');
+ set_theme_mod( 'nav_menu_locations', array_map( 'absint', $_POST['menu-locations'] ) );
+ die('1');
+ break;
+case 'meta-box-order':
+ check_ajax_referer( 'meta-box-order' );
+ $order = isset( $_POST['order'] ) ? (array) $_POST['order'] : false;
+ $page_columns = isset( $_POST['page_columns'] ) ? $_POST['page_columns'] : 'auto';
+
+ if ( $page_columns != 'auto' )
+ $page_columns = (int) $page_columns;
+
+ $page = isset( $_POST['page'] ) ? $_POST['page'] : '';
+
+ if ( $page != sanitize_key( $page ) )
+ die('0');
+
+ if ( ! $user = wp_get_current_user() )
+ die('-1');
+
+ if ( $order )
+ update_user_option($user->ID, "meta-box-order_$page", $order, true);
+
+ if ( $page_columns )
+ update_user_option($user->ID, "screen_layout_$page", $page_columns, true);
+
+ die('1');
+ break;
+case 'get-permalink':
+ check_ajax_referer( 'getpermalink', 'getpermalinknonce' );
+ $post_id = isset($_POST['post_id'])? intval($_POST['post_id']) : 0;
+ die(add_query_arg(array('preview' => 'true'), get_permalink($post_id)));
+break;
+case 'sample-permalink':
+ check_ajax_referer( 'samplepermalink', 'samplepermalinknonce' );
+ $post_id = isset($_POST['post_id'])? intval($_POST['post_id']) : 0;
+ $title = isset($_POST['new_title'])? $_POST['new_title'] : '';
+ $slug = isset($_POST['new_slug'])? $_POST['new_slug'] : null;
+ die(get_sample_permalink_html($post_id, $title, $slug));
+break;
+case 'inline-save':
+ check_ajax_referer( 'inlineeditnonce', '_inline_edit' );
+
+ if ( ! isset($_POST['post_ID']) || ! ( $post_ID = (int) $_POST['post_ID'] ) )
+ exit;
+
+ if ( 'page' == $_POST['post_type'] ) {
+ if ( ! current_user_can( 'edit_page', $post_ID ) )
+ die( __('You are not allowed to edit this page.') );