add xmlrpc method for importing red comments

This commit is contained in:
friendica 2013-11-27 16:32:17 -08:00
parent 64b467ea98
commit b67347d9a0

View File

@ -259,6 +259,87 @@ add_action('add_meta_boxes', 'post_to_red_post_checkbox');
add_action('save_post', 'post_to_red_post_field_data');
add_action('before_delete_post', 'post_to_red_delete_post');
add_filter('xmlrpc_methods', 'red_xmlrpc_methods');
function red_xmlrpc_methods($methods) {
$methods['red.Comment'] = 'red_comment';
return $methods;
}
function red_comment($args) {
global $wp_xmlrpc_server;
$wp_xmlrpc_server->escape( $args );
$blog_id = $args[0];
$username = $args[1];
$password = $args[2];
$post = $args[3];
$content_struct = $args[4];
if ( ! $user = $wp_xmlrpc_server->login( $username, $password ) )
return $wp_xmlrpc_server->error;
if ( is_numeric($post) )
$post_id = absint($post);
else
$post_id = url_to_postid($post);
if ( ! $post_id )
return new IXR_Error( 404, __( 'Invalid post ID.' ) );
if ( ! get_post($post_id) )
return new IXR_Error( 404, __( 'Invalid post ID.' ) );
$comment['comment_post_ID'] = $post_id;
$comment['comment_author'] = '';
if ( isset($content_struct['author']) )
$comment['comment_author'] = $content_struct['author'];
$comment['comment_author_email'] = '';
if ( isset($content_struct['author_email']) )
$comment['comment_author_email'] = $content_struct['author_email'];
$comment['comment_author_url'] = '';
if ( isset($content_struct['author_url']) )
$comment['comment_author_url'] = $content_struct['author_url'];
$comment['user_ID'] = 0;
if ( get_option('require_name_email') ) {
if ( 6 > strlen($comment['comment_author_email']) || '' == $comment['comment_author'] )
return new IXR_Error( 403, __( 'Comment author name and email are required' ) );
elseif ( !is_email($comment['comment_author_email']) )
return new IXR_Error( 403, __( 'A valid email address is required' ) );
}
if(isset($content_struct['comment_id'])) {
$comment['comment_ID'] = intval($content_struct['comment_id']);
$edit = true;
}
$comment['comment_post_ID'] = $post_id;
$comment['comment_parent'] = isset($content_struct['comment_parent']) ? absint($content_struct['comment_parent']) : 0;
$comment['comment_content'] = isset($content_struct['content']) ? $content_struct['content'] : null;
do_action('xmlrpc_call', 'red.Comment');
if($edit) {
$result = wp_update_comment($comment);
$comment_ID = $comment['comment_ID'];
}
else {
$comment_ID = wp_new_comment( $comment );
if($comment_ID)
wp_set_comment_status($comment_ID,'approve');
}
do_action( 'xmlrpc_call_success_red_Comment', $comment_ID, $args );
return $comment_ID;
}
// from:
// http://www.docgate.com/tutorial/php/how-to-convert-html-to-bbcode-with-php-script.html
function xpost_to_html2bbcode($text) {