| 162 | 162 | * |
| 163 | 163 | * @since 1.5.0 |
| 164 | 164 | * |
| 165 | 165 | * @param array $post_data Optional. |
| 166 | 166 | * @return int Post ID. |
| 167 | 167 | */ |
| 168 | 168 | function edit_post( $post_data = null ) { |
| 169 | 169 | |
| 170 | 170 | if ( empty($post_data) ) |
| 171 | 171 | $post_data = &$_POST; |
| 172 | 172 | |
| 173 | 173 | // Clear out any data in internal vars. |
| 174 | 174 | unset( $post_data['filter'] ); |
| 175 | 175 | |
| 176 | 176 | $post_ID = (int) $post_data['post_ID']; |
| 177 | 177 | $post = get_post( $post_ID ); |
| 178 | 178 | $post_data['post_type'] = $post->post_type; |
| 179 | 179 | $post_data['post_mime_type'] = $post->post_mime_type; |
| 180 | 180 | |
| 181 | 181 | if ( ! empty( $post_data['post_status'] ) ) { |
| 182 | 182 | $post_data['post_status'] = sanitize_key( $post_data['post_status'] ); |
| 183 | 183 | |
| 184 | 184 | if ( 'inherit' == $post_data['post_status'] ) { |
| 185 | 185 | unset( $post_data['post_status'] ); |
| 186 | 186 | } |
| 187 | 189 | } |
| 188 | 190 | |
| 189 | 191 | $ptype = get_post_type_object($post_data['post_type']); |
| 190 | 192 | if ( !current_user_can( 'edit_post', $post_ID ) ) { |
| 191 | 193 | if ( 'page' == $post_data['post_type'] ) |
| 192 | 194 | wp_die( __('You are not allowed to edit this page.' )); |
| 193 | 195 | else |
| 194 | 196 | wp_die( __('You are not allowed to edit this post.' )); |
| 195 | 197 | } |
| 196 | 198 | |
| 197 | 199 | if ( post_type_supports( $ptype->name, 'revisions' ) ) { |
| 198 | 200 | $revisions = wp_get_post_revisions( $post_ID, array( 'order' => 'ASC', 'posts_per_page' => 1 ) ); |
| 199 | 201 | $revision = current( $revisions ); |
| 200 | 202 | |
| 201 | 203 | // Check if the revisions have been upgraded |
| 202 | 204 | if ( $revisions && _wp_get_post_revision_version( $revision ) < 1 ) |
| 203 | 205 | _wp_upgrade_revisions_of_post( $post, wp_get_post_revisions( $post_ID ) ); |
| 204 | 206 | } |
| 205 | 207 | |
| 206 | 208 | if ( ( empty( $post_data['action'] ) || 'autosave' != $post_data['action'] ) && 'auto-draft' == $post_data['post_status'] ) { |
| 207 | 209 | $post_data['post_status'] = 'draft'; |
| 208 | 210 | } |
| 209 | 211 | |
| 210 | 212 | if ( isset($post_data['visibility']) ) { |
| 211 | 213 | switch ( $post_data['visibility'] ) { |