diff --git a/xmlrpc.php b/xmlrpc.php new file mode 100644 index 000000000..484be7000 --- /dev/null +++ b/xmlrpc.php @@ -0,0 +1,274 @@ +IXR_Server(array( + 'blogger.getUsersBlogs' => 'this:blogger_getUsersBlogs', + 'blogger.getUserInfo' => 'this:blogger_getUserInfo', + 'blogger.getPost' => 'this:blogger_getPost', + 'blogger.getRecentPosts' => 'this:blogger_getRecentPosts', + 'demo.sayHello' => 'this:sayHello', + 'demo.addTwoNumbers' => 'this:addTwoNumbers' + )); + } + + function sayHello($args) { + return 'Hello!'; + } + + function addTwoNumbers($args) { + $number1 = $args[0]; + $number2 = $args[1]; + return $number1 + $number2; + } + + function login_pass_ok($user_login, $user_pass) { + if (!user_pass_ok($user_login, $user_pass)) { + $this->error = new IXR_Error(403, 'Bad login/pass combination.'); + return false; + } + return true; + } + + + + + /* Blogger API functions + * specs on http://plant.blogger.com/api and http://groups.yahoo.com/group/bloggerDev/ + */ + + + /* blogger.getUsersBlogs will make more sense once we support multiple blogs */ + function blogger_getUsersBlogs($args) { + + $user_login = $args[1]; + $user_pass = $args[2]; + + if (!$this->login_pass_ok($user_login, $user_pass)) { + return $this->error; + } + + $user_data = get_userdatabylogin($user_login); + $is_admin = $user_data->user_level > 3; + + $struct = array( + 'isAdmin' => $is_admin, + 'url' => get_settings('home') .'/'.get_settings('blogfilename'), + 'blogid' => 1, + 'blogName' => get_settings('blogname') + ); + + return array($struct); + } + + + /* blogger.getUsersInfo gives your client some info about you, so you don't have to */ + function blogger_getUserInfo($args) { + + $user_login = $args[1]; + $user_pass = $args[2]; + + if (!$this->login_pass_ok($user_login, $user_pass)) { + return $this->error; + } + + $user_data = get_userdatabylogin($user_login); + + $struct = array( + 'nickname' => $user_data->user_nickname, + 'userid' => $user_data->ID, + 'url' => $user_data->user_url, + 'email' => $user_data->user_email, + 'lastname' => $user_data->user_lastname, + 'firstname' => $user_data->user_firstname + ); + + return $struct; + } + + + /* blogger.getPost ...gets a post */ + function blogger_getPost($args) { + + $post_ID = $args[1]; + $user_login = $args[2]; + $user_pass = $args[3]; + + if (!$this->login_pass_ok($user_login, $user_pass)) { + return $this->error; + } + + $user_data = get_userdatabylogin($user_login); + $post_data = get_postdata($post_ID); + + $post_date = mysql2date('Ymd\TH:i:s', $post_data['Date']); + + $categories = implode(',', wp_get_post_cats(1, $post_ID)); + + $content = '