mirror of
https://github.com/WordPress/WordPress.git
synced 2024-12-23 01:27:36 +01:00
added blogger.newPost
git-svn-id: http://svn.automattic.com/wordpress/trunk@1351 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
a4d045fe5b
commit
1387744b0d
155
xmlrpc.php
155
xmlrpc.php
@ -45,6 +45,8 @@ class wp_xmlrpc_server extends IXR_Server {
|
||||
'blogger.getRecentPosts' => 'this:blogger_getRecentPosts',
|
||||
'blogger.getTemplate' => 'this:blogger_getTemplate',
|
||||
'blogger.setTemplate' => 'this:blogger_setTemplate',
|
||||
'blogger.newPost' => 'this:blogger_newPost',
|
||||
|
||||
'demo.sayHello' => 'this:sayHello',
|
||||
'demo.addTwoNumbers' => 'this:addTwoNumbers'
|
||||
));
|
||||
@ -316,7 +318,53 @@ class wp_xmlrpc_server extends IXR_Server {
|
||||
return true;
|
||||
}
|
||||
|
||||
}}
|
||||
|
||||
/* blogger.newPost ...creates a new post */
|
||||
function blogger_newPost($args) {
|
||||
|
||||
global $tableposts, $wpdb;
|
||||
|
||||
$blog_ID = $args[1]; /* though we don't use it yet */
|
||||
$user_login = $args[2];
|
||||
$user_pass = $args[3];
|
||||
$content = $args[4];
|
||||
$publish = $args[5];
|
||||
|
||||
if (!$this->login_pass_ok($user_login, $user_pass)) {
|
||||
return $this->error;
|
||||
}
|
||||
|
||||
$user_data = get_userdatabylogin($user_login);
|
||||
if ($user_data->user_level < 1) {
|
||||
return new IXR_Error(401, 'Sorry, level 0 users can not post');
|
||||
}
|
||||
|
||||
$post_status = ($publish) ? 'publish' : 'draft';
|
||||
|
||||
$post_author = $user_data->ID;
|
||||
|
||||
$post_title = addslashes(xmlrpc_getposttitle($content));
|
||||
$post_category = xmlrpc_getpostcategory($content);
|
||||
|
||||
$content = xmlrpc_removepostdata($content);
|
||||
$post_content = format_to_post($content);
|
||||
|
||||
$post_date = current_time('mysql');
|
||||
$post_date_gmt = current_time('mysql', 1);
|
||||
|
||||
$post_data = compact('blog_ID', 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_title', 'post_category', 'post_status');
|
||||
|
||||
$post_ID = wp_insert_post($post_data);
|
||||
|
||||
if (!$post_ID) {
|
||||
return new IXR_Error(500, 'Sorry, your entry could not be posted. Something wrong happened.');
|
||||
}
|
||||
|
||||
logIO('O', "Posted ! ID: $post_ID");
|
||||
|
||||
return $post_ID;
|
||||
}
|
||||
}
|
||||
|
||||
$wp_xmlrpc_server = new wp_xmlrpc_server();
|
||||
|
||||
@ -326,6 +374,111 @@ $wp_xmlrpc_server = new wp_xmlrpc_server();
|
||||
* and/or roll into a WP class as extension of wpdb
|
||||
*/
|
||||
|
||||
function wp_insert_post($postarr = array()) {
|
||||
global $wpdb, $tableposts, $post_default_category;
|
||||
|
||||
// export array as variables
|
||||
extract($postarr);
|
||||
|
||||
// Do some escapes for safety
|
||||
$post_title = $wpdb->escape($post_title);
|
||||
$post_name = sanitize_title($post_title);
|
||||
$post_excerpt = $wpdb->escape($post_excerpt);
|
||||
$post_content = $wpdb->escape($post_content);
|
||||
$post_author = (int) $post_author;
|
||||
|
||||
// Make sure we set a valid category
|
||||
if (0 == count($post_category) || !is_array($post_category)) {
|
||||
$post_category = array($post_default_category);
|
||||
}
|
||||
|
||||
$post_cat = $post_category[0];
|
||||
|
||||
if (empty($post_date))
|
||||
$post_date = current_time('mysql');
|
||||
// Make sure we have a good gmt date:
|
||||
if (empty($post_date_gmt))
|
||||
$post_date_gmt = get_gmt_from_date($post_date);
|
||||
|
||||
$sql = "INSERT INTO $tableposts
|
||||
(post_author, post_date, post_date_gmt, post_modified, post_modified_gmt, post_content, post_title, post_excerpt, post_category, post_status, post_name)
|
||||
VALUES ('$post_author', '$post_date', '$post_date_gmt', '$post_date', '$post_date_gmt', '$post_content', '$post_title', '$post_excerpt', '$post_cat', '$post_status', '$post_name')";
|
||||
|
||||
$result = $wpdb->query($sql);
|
||||
$post_ID = $wpdb->insert_id;
|
||||
$blog_ID = (isset($blog_ID)) ? $blog_ID : 1;
|
||||
|
||||
wp_set_post_cats($blog_ID, $post_ID, $post_category);
|
||||
|
||||
// Return insert_id if we got a good result, otherwise return zero.
|
||||
return $result ? $post_ID : 0;
|
||||
}
|
||||
|
||||
|
||||
function wp_set_post_cats($blogid = '1', $post_ID = 0, $post_categories = array()) {
|
||||
global $wpdb, $tablepost2cat;
|
||||
// If $post_categories isn't already an array, make it one:
|
||||
if (!is_array($post_categories)) {
|
||||
if (!$post_categories) {
|
||||
$post_categories = 1;
|
||||
}
|
||||
$post_categories = array($post_categories);
|
||||
}
|
||||
|
||||
$post_categories = array_unique($post_categories);
|
||||
|
||||
// First the old categories
|
||||
$old_categories = $wpdb->get_col("
|
||||
SELECT category_id
|
||||
FROM $tablepost2cat
|
||||
WHERE post_id = $post_ID");
|
||||
|
||||
if (!$old_categories) {
|
||||
$old_categories = array();
|
||||
} else {
|
||||
$old_categories = array_unique($old_categories);
|
||||
}
|
||||
|
||||
|
||||
$oldies = print_r($old_categories,1);
|
||||
$newbies = print_r($post_categories,1);
|
||||
|
||||
logio("O","Old: $oldies\nNew: $newbies\n");
|
||||
|
||||
// Delete any?
|
||||
$delete_cats = array_diff($old_categories,$post_categories);
|
||||
|
||||
logio("O","Delete: " . print_r($delete_cats,1));
|
||||
|
||||
if ($delete_cats) {
|
||||
foreach ($delete_cats as $del) {
|
||||
$wpdb->query("
|
||||
DELETE FROM $tablepost2cat
|
||||
WHERE category_id = $del
|
||||
AND post_id = $post_ID
|
||||
");
|
||||
|
||||
logio("O","deleting post/cat: $post_ID, $del");
|
||||
}
|
||||
}
|
||||
|
||||
// Add any?
|
||||
$add_cats = array_diff($post_categories, $old_categories);
|
||||
|
||||
logio("O","Add: " . print_r($add_cats,1));
|
||||
|
||||
if ($add_cats) {
|
||||
foreach ($add_cats as $new_cat) {
|
||||
$wpdb->query("
|
||||
INSERT INTO $tablepost2cat (post_id, category_id)
|
||||
VALUES ($post_ID, $new_cat)");
|
||||
|
||||
logio("O","adding post/cat: $post_ID, $new_cat");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function wp_get_post_cats($blogid = '1', $post_ID = 0) {
|
||||
global $wpdb, $tablepost2cat;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user