mirror of
https://github.com/WordPress/WordPress.git
synced 2024-12-22 17:18:32 +01:00
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:
parent
484a252c4b
commit
ac2d661ee9
@ -260,6 +260,51 @@ function get_post_status($ID = '') {
|
|||||||
return false;
|
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
|
* get_post_type() - Returns post type
|
||||||
*
|
*
|
||||||
|
90
xmlrpc.php
90
xmlrpc.php
@ -88,6 +88,8 @@ class wp_xmlrpc_server extends IXR_Server {
|
|||||||
'wp.suggestCategories' => 'this:wp_suggestCategories',
|
'wp.suggestCategories' => 'this:wp_suggestCategories',
|
||||||
'wp.uploadFile' => 'this:mw_newMediaObject', // Alias
|
'wp.uploadFile' => 'this:mw_newMediaObject', // Alias
|
||||||
'wp.getCommentCount' => 'this:wp_getCommentCount',
|
'wp.getCommentCount' => 'this:wp_getCommentCount',
|
||||||
|
'wp.getPostStatusList' => 'this:wp_getPostStatusList',
|
||||||
|
'wp.getPageStatusList' => 'this:wp_getPageStatusList',
|
||||||
|
|
||||||
// Blogger API
|
// Blogger API
|
||||||
'blogger.getUsersBlogs' => 'this:blogger_getUsersBlogs',
|
'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
|
/* Blogger API functions
|
||||||
* specs on http://plant.blogger.com/api and http://groups.yahoo.com/group/bloggerDev/
|
* 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_title = $content_struct['title'];
|
||||||
$post_content = apply_filters( 'content_save_pre', $content_struct['description'] );
|
$post_content = apply_filters( 'content_save_pre', $content_struct['description'] );
|
||||||
|
|
||||||
$post_status = $publish ? 'publish' : 'draft';
|
$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_excerpt = $content_struct['mt_excerpt'];
|
||||||
$post_more = $content_struct['mt_text_more'];
|
$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_excerpt = $content_struct['mt_excerpt'];
|
||||||
$post_more = $content_struct['mt_text_more'];
|
$post_more = $content_struct['mt_text_more'];
|
||||||
|
|
||||||
$post_status = $publish ? 'publish' : 'draft';
|
$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'];
|
$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_comments = ('open' == $postdata['comment_status']) ? 1 : 0;
|
||||||
$allow_pings = ('open' == $postdata['ping_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(
|
$resp = array(
|
||||||
'dateCreated' => new IXR_Date($post_date),
|
'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_comments = ('open' == $entry['comment_status']) ? 1 : 0;
|
||||||
$allow_pings = ('open' == $entry['ping_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(
|
$struct[] = array(
|
||||||
'dateCreated' => new IXR_Date($post_date),
|
'dateCreated' => new IXR_Date($post_date),
|
||||||
'userid' => $entry['post_author'],
|
'userid' => $entry['post_author'],
|
||||||
|
Loading…
Reference in New Issue
Block a user