_wp_translate_postdata

Definition:
function _wp_translate_postdata( $update = false, $post_data = null ) {}

Rename $_POST data from form names to DB post columns.
Manipulates $_POST directly.

Parameters

  • bool $update: Are we updating a pre-existing post?
  • array $post_data: Array of post data. Defaults to the contents of $_POST.

Return values

returns:WP_Error on failure, true on success.

Source code

function _wp_translate_postdata( $update = false, $post_data = null ) {



	if ( empty($post_data) )

		$post_data = &$_POST;



	if ( $update )

		$post_data['ID'] = (int) $post_data['post_ID'];



	if ( isset( $post_data['content'] ) )

		$post_data['post_content'] = $post_data['content'];



	if ( isset( $post_data['excerpt'] ) )

		$post_data['post_excerpt'] = $post_data['excerpt'];



	if ( isset( $post_data['parent_id'] ) )

		$post_data['post_parent'] = (int) $post_data['parent_id'];



	if ( isset($post_data['trackback_url']) )

		$post_data['to_ping'] = $post_data['trackback_url'];



	if ( !isset($post_data['user_ID']) )

		$post_data['user_ID'] = $GLOBALS['user_ID'];



	if (!empty ( $post_data['post_author_override'] ) ) {

		$post_data['post_author'] = (int) $post_data['post_author_override'];

	} else {

		if (!empty ( $post_data['post_author'] ) ) {

			$post_data['post_author'] = (int) $post_data['post_author'];

		} else {

			$post_data['post_author'] = (int) $post_data['user_ID'];

		}

	}



	$ptype = get_post_type_object( $post_data['post_type'] );

	if ( isset($post_data['user_ID']) && ($post_data['post_author'] != $post_data['user_ID']) ) {

		if ( !current_user_can( $ptype->cap->edit_others_posts ) ) {

			if ( 'page' == $post_data['post_type'] ) {

				return new WP_Error( 'edit_others_pages', $update ?

					__( 'You are not allowed to edit pages as this user.' ) :

					__( 'You are not allowed to create pages as this user.' )

				);

			} else {

				return new WP_Error( 'edit_others_posts', $update ?

					__( 'You are not allowed to edit posts as this user.' ) :

					__( 'You are not allowed to post as this user.' )

				);

			}

		}

	}



	// What to do based on which button they pressed

	if ( isset($post_data['saveasdraft']) && '' != $post_data['saveasdraft'] )

		$post_data['post_status'] = 'draft';

	if ( isset($post_data['saveasprivate']) && '' != $post_data['saveasprivate'] )

		$post_data['post_status'] = 'private';

	if ( isset($post_data['publish']) && ( '' != $post_data['publish'] ) && ( !isset($post_data['post_status']) || $post_data['post_status'] != 'private' ) )

		$post_data['post_status'] = 'publish';

	if ( isset($post_data['advanced']) && '' != $post_data['advanced'] )

		$post_data['post_status'] = 'draft';

	if ( isset($post_data['pending']) && '' != $post_data['pending'] )

		$post_data['post_status'] = 'pending';



	if ( isset( $post_data['ID'] ) )

		$post_id = $post_data['ID'];

	else

		$post_id = false;

	$previous_status = $post_id ? get_post_field( 'post_status', $post_id ) : false;



	// Posts 'submitted for approval' present are submitted to $_POST the same as if they were being published.

	// Change status from 'publish' to 'pending' if user lacks permissions to publish or to resave published posts.

	if ( isset($post_data['post_status']) && ('publish' == $post_data['post_status'] && !current_user_can( $ptype->cap->publish_posts )) )

		if ( $previous_status != 'publish' || !current_user_can( 'edit_post', $post_id ) )

			$post_data['post_status'] = 'pending';



	if ( ! isset($post_data['post_status']) )

		$post_data['post_status'] = $previous_status;



	if (!isset( $post_data['comment_status'] ))

		$post_data['comment_status'] = 'closed';



	if (!isset( $post_data['ping_status'] ))

		$post_data['ping_status'] = 'closed';



	foreach ( array('aa', 'mm', 'jj', 'hh', 'mn') as $timeunit ) {

		if ( !empty( $post_data['hidden_' . $timeunit] ) && $post_data['hidden_' . $timeunit] != $post_data[$timeunit] ) {

			$post_data['edit_date'] = '1';

			break;

		}

	}



	if ( !empty( $post_data['edit_date'] ) ) {

		$aa = $post_data['aa'];

		$mm = $post_data['mm'];

		$jj = $post_data['jj'];

		$hh = $post_data['hh'];

		$mn = $post_data['mn'];

		$ss = $post_data['ss'];

		$aa = ($aa <= 0 ) ? date('Y') : $aa;

		$mm = ($mm <= 0 ) ? date('n') : $mm;

		$jj = ($jj > 31 ) ? 31 : $jj;

		$jj = ($jj <= 0 ) ? date('j') : $jj;

		$hh = ($hh > 23 ) ? $hh -24 : $hh;

		$mn = ($mn > 59 ) ? $mn -60 : $mn;

		$ss = ($ss > 59 ) ? $ss -60 : $ss;

		$post_data['post_date'] = sprintf( "%04d-%02d-%02d %02d:%02d:%02d", $aa, $mm, $jj, $hh, $mn, $ss );

		$post_data['post_date_gmt'] = get_gmt_from_date( $post_data['post_date'] );

	}



	return $post_data;

}

4419

Advertisements

No comments yet... Be the first to leave a reply!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: