Add xmlrpc methods to discover the valid post and page statuses. See #5569 props josephscott.

git-svn-id: http://svn.automattic.com/wordpress/trunk@6594 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
westi 2008-01-10 21:46:25 +00:00
parent 484a252c4b
commit ac2d661ee9
2 changed files with 135 additions and 0 deletions

View File

@ -260,6 +260,51 @@ function get_post_status($ID = '') {
return false;
}
/**
* get_post_statuses( ) - Retuns the possible user post status values
*
* Posts have a limited set of valid status values, this provides the
* post_status values and descriptions.
*
* @package WordPress
* @subpackage Post
* @since 2.4
*
* @return array
*/
function get_post_statuses( ) {
$status = array(
'draft' => __('Draft'),
'pending' => __('Pending Review'),
'private' => __('Private'),
'publish' => __('Published')
);
return $status;
}
/**
* get_page_statuses( ) - Retuns the possible user page status values
*
* Pages have a limited set of valid status values, this provides the
* post_status values and descriptions.
*
* @package WordPress
* @subpackage Page
* @since 2.4
*
* @return array
*/
function get_page_statuses( ) {
$status = array(
'draft' => __('Draft'),
'private' => __('Private'),
'publish' => __('Published')
);
return $status;
}
/**
* get_post_type() - Returns post type
*

View File

@ -88,6 +88,8 @@ class wp_xmlrpc_server extends IXR_Server {
'wp.suggestCategories' => 'this:wp_suggestCategories',
'wp.uploadFile' => 'this:mw_newMediaObject', // Alias
'wp.getCommentCount' => 'this:wp_getCommentCount',
'wp.getPostStatusList' => 'this:wp_getPostStatusList',
'wp.getPageStatusList' => 'this:wp_getPageStatusList',
// Blogger API
'blogger.getUsersBlogs' => 'this:blogger_getUsersBlogs',
@ -698,6 +700,46 @@ class wp_xmlrpc_server extends IXR_Server {
}
function wp_getPostStatusList( $args ) {
$this->escape( $args );
$blog_id = (int) $args[0];
$username = $args[1];
$password = $args[2];
if( !$this->login_pass_ok( $username, $password ) ) {
return new IXR_Error( 403, __( 'Bad login/pass combination.' ) );
}
set_current_user( 0, $username );
if( !current_user_can( 'edit_posts' ) ) {
return new IXR_Error( 403, __( 'You are not allowed access to details about this blog.' ) );
}
return get_post_statuses( );
}
function wp_getPageStatusList( $args ) {
$this->escape( $args );
$blog_id = (int) $args[0];
$username = $args[1];
$password = $args[2];
if( !$this->login_pass_ok( $username, $password ) ) {
return new IXR_Error( 403, __( 'Bad login/pass combination.' ) );
}
set_current_user( 0, $username );
if( !current_user_can( 'edit_posts' ) ) {
return new IXR_Error( 403, __( 'You are not allowed acces to details about this blog.' ) );
}
return get_page_statuses( );
}
/* Blogger API functions
* specs on http://plant.blogger.com/api and http://groups.yahoo.com/group/bloggerDev/
*/
@ -1147,7 +1189,26 @@ class wp_xmlrpc_server extends IXR_Server {
$post_title = $content_struct['title'];
$post_content = apply_filters( 'content_save_pre', $content_struct['description'] );
$post_status = $publish ? 'publish' : 'draft';
if( isset( $content_struct['post_status'] ) ) {
switch( $content_struct['post_status'] ) {
case 'draft':
case 'private':
case 'publish':
$post_status = $content_struct['post_status'];
break;
case 'pending':
// Pending is only valid for posts, not pages.
if( $post_type === 'post' ) {
$post_status = $content_struct['post_status'];
}
break;
default:
$post_status = $publish ? 'publish' : 'draft';
break;
}
}
$post_excerpt = $content_struct['mt_excerpt'];
$post_more = $content_struct['mt_text_more'];
@ -1447,7 +1508,26 @@ class wp_xmlrpc_server extends IXR_Server {
$post_excerpt = $content_struct['mt_excerpt'];
$post_more = $content_struct['mt_text_more'];
$post_status = $publish ? 'publish' : 'draft';
if( isset( $content_struct['post_status'] ) ) {
switch( $content_struct['post_status'] ) {
case 'draft':
case 'private':
case 'publish':
$post_status = $content_struct['post_status'];
break;
case 'pending':
// Pending is only valid for posts, not pages.
if( $post_type === 'post' ) {
$post_status = $content_struct['post_status'];
}
break;
default:
$post_status = $publish ? 'publish' : 'draft';
break;
}
}
$tags_input = $content_struct['mt_keywords'];
@ -1545,6 +1625,11 @@ class wp_xmlrpc_server extends IXR_Server {
$allow_comments = ('open' == $postdata['comment_status']) ? 1 : 0;
$allow_pings = ('open' == $postdata['ping_status']) ? 1 : 0;
// Consider future posts as published
if( $postdata['post_status'] === 'future' ) {
$postdata['post_status'] = 'publish';
}
$resp = array(
'dateCreated' => new IXR_Date($post_date),
@ -1636,6 +1721,11 @@ class wp_xmlrpc_server extends IXR_Server {
$allow_comments = ('open' == $entry['comment_status']) ? 1 : 0;
$allow_pings = ('open' == $entry['ping_status']) ? 1 : 0;
// Consider future posts as published
if( $entry['post_status'] === 'future' ) {
$entry['post_status'] = 'publish';
}
$struct[] = array(
'dateCreated' => new IXR_Date($post_date),
'userid' => $entry['post_author'],