Menu Adam R Brown

WP hooks navigation: Home/browseActions indexFilters index

Source View: xmlrpc_call

To save our bandwidth, we show only a snippet of code around each occurence of the hook. View complete file in SVN (without highlighting).

Understanding Source Code

The best way to understand what a hook does is to look at where it occurs in the source code.

Remember, this hook may occur in more than one file. Moreover, the hook's context may change from version to version.

Source View

This hook occurs 46 times in this file.

Line Code
443           $this->escape( $args );
444
445           $username = $args[0];
446           $password = $args[1];
447
448           if ( !$user = $this->login($username, $password) ) {
449                return $this->error;
450           }
451
452           do_action( 'xmlrpc_call', 'wp.getUsersBlogs' );
453
454           $blogs = (array) get_blogs_of_user( $user->ID );
455           $struct = array( );
456
457           foreach( $blogs as $blog ) {
458                // Don't include blogs that aren't hosted at this site
459                if( $blog->site_id != $current_site->id )
460                     continue;
461
 
Line Code
494           $password     = $args[3];
495
496           if ( !$user = $this->login($username, $password) ) {
497                return $this->error;
498           }
499
500           if( !current_user_can( 'edit_page', $page_id ) )
501                return new IXR_Error( 401, __( 'Sorry, you cannot edit this page.' ) );
502
503           do_action('xmlrpc_call', 'wp.getPage');
504
505           // Lookup page info.
506           $page = get_page($page_id);
507
508           // If we found the page then format the data.
509           if($page->ID && ($page->post_type == "page")) {
510                // Get all of the page content and link.
511                $full_page = get_extended($page->post_content);
512                $link = post_permalink($page->ID);
 
Line Code
591           $num_pages     = (int) $args[3];
592
593           if ( !$user = $this->login($username, $password) ) {
594                return $this->error;
595           }
596
597           if( !current_user_can( 'edit_pages' ) )
598                return new IXR_Error( 401, __( 'Sorry, you cannot edit pages.' ) );
599
600           do_action('xmlrpc_call', 'wp.getPages');
601
602           $page_limit = 10;
603           if( isset( $num_pages ) ) {
604                $page_limit = $num_pages;
605           }
606
607           $pages = get_posts( array('post_type' => 'page', 'post_status' => 'all', 'numberposts' => $page_limit) );
608           $num_pages = count($pages);
609
 
Line Code
639           $username     = $this->escape($args[1]);
640           $password     = $this->escape($args[2]);
641           $page          = $args[3];
642           $publish     = $args[4];
643
644           if ( !$user = $this->login($username, $password) ) {
645                return $this->error;
646           }
647
648           do_action('xmlrpc_call', 'wp.newPage');
649
650           // Make sure the user is allowed to add new pages.
651           if(!current_user_can("publish_pages")) {
652                return(new IXR_Error(401, __("Sorry, you cannot add new pages.")));
653           }
654
655           // Mark this as content for a page.
656           $args[3]["post_type"] = "page";
657
 
Line Code
673           $blog_id     = (int) $args[0];
674           $username     = $args[1];
675           $password     = $args[2];
676           $page_id     = (int) $args[3];
677
678           if ( !$user = $this->login($username, $password) ) {
679                return $this->error;
680           }
681
682           do_action('xmlrpc_call', 'wp.deletePage');
683
684           // Get the current page based on the page_id and
685           // make sure it is a page and not a post.
686           $actual_page = wp_get_single_post($page_id, ARRAY_A);
687           if(
688                !$actual_page
689                || ($actual_page["post_type"] != "page")
690           ) {
691                return(new IXR_Error(404, __("Sorry, no such page.")));
 
Line Code
720           $username     = $this->escape($args[2]);
721           $password     = $this->escape($args[3]);
722           $content     = $args[4];
723           $publish     = $args[5];
724
725           if ( !$user = $this->login($username, $password) ) {
726                return $this->error;
727           }
728
729           do_action('xmlrpc_call', 'wp.editPage');
730
731           // Get the page data and make sure it is a page.
732           $actual_page = wp_get_single_post($page_id, ARRAY_A);
733           if(
734                !$actual_page
735                || ($actual_page["post_type"] != "page")
736           ) {
737                return(new IXR_Error(404, __("Sorry, no such page.")));
738           }
 
Line Code
776           $password                    = $args[2];
777
778           if ( !$user = $this->login($username, $password) ) {
779                return $this->error;
780           }
781
782           if( !current_user_can( 'edit_pages' ) )
783                return new IXR_Error( 401, __( 'Sorry, you cannot edit pages.' ) );
784
785           do_action('xmlrpc_call', 'wp.getPageList');
786
787           // Get list of pages ids and titles
788           $page_list = $wpdb->get_results("
789                SELECT ID page_id,
790                     post_title page_title,
791                     post_parent page_parent_id,
792                     post_date_gmt,
793                     post_date
794                FROM {$wpdb->posts}
 
Line Code
830
831           if ( !$user = $this->login($username, $password) ) {
832                return $this->error;
833           }
834
835           if(!current_user_can("edit_posts")) {
836                return(new IXR_Error(401, __("Sorry, you cannot edit posts on this blog.")));
837           }
838
839           do_action('xmlrpc_call', 'wp.getAuthors');
840
841           $authors = array();
842           foreach( (array) get_users_of_blog() as $row ) {
843                $authors[] = array(
844                     "user_id"       => $row->user_id,
845                     "user_login"    => $row->user_login,
846                     "display_name"  => $row->display_name
847                );
848           }
 
Line Code
867
868           if ( !$user = $this->login($username, $password) ) {
869                return $this->error;
870           }
871
872           if( !current_user_can( 'edit_posts' ) ) {
873                return new IXR_Error( 401, __( 'Sorry, you must be able to edit posts on this blog in order to view tags.' ) );
874           }
875
876           do_action( 'xmlrpc_call', 'wp.getKeywords' );
877
878           $tags = array( );
879
880           if( $all_tags = get_tags( ) ) {
881                foreach( (array) $all_tags as $tag ) {
882                     $struct['tag_id']               = $tag->term_id;
883                     $struct['name']                    = $tag->name;
884                     $struct['count']               = $tag->count;
885                     $struct['slug']                    = $tag->slug;
 
Line Code
907           $blog_id                    = (int) $args[0];
908           $username                    = $args[1];
909           $password                    = $args[2];
910           $category                    = $args[3];
911
912           if ( !$user = $this->login($username, $password) ) {
913                return $this->error;
914           }
915
916           do_action('xmlrpc_call', 'wp.newCategory');
917
918           // Make sure the user is allowed to add a category.
919           if(!current_user_can("manage_categories")) {
920                return(new IXR_Error(401, __("Sorry, you do not have the right to add a category.")));
921           }
922
923           // If no slug was provided make it empty so that
924           // WordPress will generate one.
925           if(empty($category["slug"])) {
 
Line Code
965           $blog_id          = (int) $args[0];
966           $username          = $args[1];
967           $password          = $args[2];
968           $category_id     = (int) $args[3];
969
970           if ( !$user = $this->login($username, $password) ) {
971                return $this->error;
972           }
973
974           do_action('xmlrpc_call', 'wp.deleteCategory');
975
976           if( !current_user_can("manage_categories") ) {
977                return new IXR_Error( 401, __( "Sorry, you do not have the right to delete a category." ) );
978           }
979
980           return wp_delete_category( $category_id );
981      }
982
983      /**
 
Line Code
998           $max_results               = (int) $args[4];
999
1000           if ( !$user = $this->login($username, $password) ) {
1001                return $this->error;
1002           }
1003
1004           if( !current_user_can( 'edit_posts' ) )
1005                return new IXR_Error( 401, __( 'Sorry, you must be able to edit posts to this blog in order to view categories.' ) );
1006
1007           do_action('xmlrpc_call', 'wp.suggestCategories');
1008
1009           $category_suggestions = array();
1010           $args = array('get' => 'all', 'number' => $max_results, 'name__like' => $category);
1011           foreach ( (array) get_categories($args) as $cat ) {
1012                $category_suggestions[] = array(
1013                     "category_id"     => $cat->cat_ID,
1014                     "category_name"     => $cat->cat_name
1015                );
1016           }
 
Line Code
1035           $comment_id     = (int) $args[3];
1036
1037           if ( !$user = $this->login($username, $password) ) {
1038                return $this->error;
1039           }
1040
1041           if ( !current_user_can( 'moderate_comments' ) )
1042                return new IXR_Error( 403, __( 'You are not allowed to moderate comments on this blog.' ) );
1043
1044           do_action('xmlrpc_call', 'wp.getComment');
1045
1046           if ( ! $comment = get_comment($comment_id) )
1047                return new IXR_Error( 404, __( 'Invalid comment ID.' ) );
1048
1049           // Format page date.
1050           $comment_date = mysql2date("Ymd\TH:i:s", $comment->comment_date, false);
1051           $comment_date_gmt = mysql2date("Ymd\TH:i:s", $comment->comment_date_gmt, false);
1052
1053           if ( 0 == $comment->comment_approved )
 
Line Code
1098           $struct          = $args[3];
1099
1100           if ( !$user = $this->login($username, $password) ) {
1101                return $this->error;
1102           }
1103
1104           if ( !current_user_can( 'moderate_comments' ) )
1105                return new IXR_Error( 401, __( 'Sorry, you cannot edit comments.' ) );
1106
1107           do_action('xmlrpc_call', 'wp.getComments');
1108
1109           if ( isset($struct['status']) )
1110                $status = $struct['status'];
1111           else
1112                $status = '';
1113
1114           $post_id = '';
1115           if ( isset($struct['post_id']) )
1116                $post_id = absint($struct['post_id']);
 
Line Code
1158           $comment_ID     = (int) $args[3];
1159
1160           if ( !$user = $this->login($username, $password) ) {
1161                return $this->error;
1162           }
1163
1164           if ( !current_user_can( 'moderate_comments' ) )
1165                return new IXR_Error( 403, __( 'You are not allowed to moderate comments on this blog.' ) );
1166
1167           do_action('xmlrpc_call', 'wp.deleteComment');
1168
1169           if ( ! get_comment($comment_ID) )
1170                return new IXR_Error( 404, __( 'Invalid comment ID.' ) );
1171
1172           return wp_delete_comment($comment_ID);
1173      }
1174
1175      /**
1176       * Edit comment.
 
Line Code
1190           $content_struct = $args[4];
1191
1192           if ( !$user = $this->login($username, $password) ) {
1193                return $this->error;
1194           }
1195
1196           if ( !current_user_can( 'moderate_comments' ) )
1197                return new IXR_Error( 403, __( 'You are not allowed to moderate comments on this blog.' ) );
1198
1199           do_action('xmlrpc_call', 'wp.editComment');
1200
1201           if ( ! get_comment($comment_ID) )
1202                return new IXR_Error( 404, __( 'Invalid comment ID.' ) );
1203
1204           if ( isset($content_struct['status']) ) {
1205                $statuses = get_comment_statuses();
1206                $statuses = array_keys($statuses);
1207
1208                if ( ! in_array($content_struct['status'], $statuses) )
 
Line Code
1314                     elseif ( !is_email($comment['comment_author_email']) )
1315                          return new IXR_Error( 403, __( 'A valid email address is required' ) );
1316                }
1317           }
1318
1319           $comment['comment_parent'] = isset($content_struct['comment_parent']) ? absint($content_struct['comment_parent']) : 0;
1320
1321           $comment['comment_content'] = $content_struct['content'];
1322
1323           do_action('xmlrpc_call', 'wp.newComment');
1324
1325           return wp_new_comment($comment);
1326      }
1327
1328      /**
1329       * Retrieve all of the comment status.
1330       *
1331       * @since 2.7.0
1332       *
 
Line Code
1341           $password     = $args[2];
1342
1343           if ( !$user = $this->login($username, $password) ) {
1344                return $this->error;
1345           }
1346
1347           if ( !current_user_can( 'moderate_comments' ) )
1348                return new IXR_Error( 403, __( 'You are not allowed access to details about this blog.' ) );
1349
1350           do_action('xmlrpc_call', 'wp.getCommentStatusList');
1351
1352           return get_comment_statuses( );
1353      }
1354
1355      /**
1356       * Retrieve comment count.
1357       *
1358       * @since 2.5.0
1359       *
 
Line Code
1370
1371           if ( !$user = $this->login($username, $password) ) {
1372                return $this->error;
1373           }
1374
1375           if( !current_user_can( 'edit_posts' ) ) {
1376                return new IXR_Error( 403, __( 'You are not allowed access to details about comments.' ) );
1377           }
1378
1379           do_action('xmlrpc_call', 'wp.getCommentCount');
1380
1381           $count = wp_count_comments( $post_id );
1382           return array(
1383                "approved" => $count->approved,
1384                "awaiting_moderation" => $count->moderated,
1385                "spam" => $count->spam,
1386                "total_comments" => $count->total_comments
1387           );
1388      }
 
Line Code
1404
1405           if ( !$user = $this->login($username, $password) ) {
1406                return $this->error;
1407           }
1408
1409           if( !current_user_can( 'edit_posts' ) ) {
1410                return new IXR_Error( 403, __( 'You are not allowed access to details about this blog.' ) );
1411           }
1412
1413           do_action('xmlrpc_call', 'wp.getPostStatusList');
1414
1415           return get_post_statuses( );
1416      }
1417
1418      /**
1419       * Retrieve page statuses.
1420       *
1421       * @since 2.5.0
1422       *
 
Line Code
1432
1433           if ( !$user = $this->login($username, $password) ) {
1434                return $this->error;
1435           }
1436
1437           if( !current_user_can( 'edit_posts' ) ) {
1438                return new IXR_Error( 403, __( 'You are not allowed access to details about this blog.' ) );
1439           }
1440
1441           do_action('xmlrpc_call', 'wp.getPageStatusList');
1442
1443           return get_page_statuses( );
1444      }
1445
1446      /**
1447       * Retrieve page templates.
1448       *
1449       * @since 2.6.0
1450       *
 
Line Code
1586           $this->escape($args);
1587
1588           $username = $args[1];
1589           $password  = $args[2];
1590
1591           if ( !$user = $this->login($username, $password) ) {
1592                return $this->error;
1593           }
1594
1595           do_action('xmlrpc_call', 'blogger.getUsersBlogs');
1596
1597           $is_admin = current_user_can('manage_options');
1598
1599           $struct = array(
1600                'isAdmin'  => $is_admin,
1601                'url'      => get_option('home') . '/',
1602                'blogid'   => '1',
1603                'blogName' => get_option('blogname'),
1604                'xmlrpc'   => site_url( 'xmlrpc.php' )
 
Line Code
1625           $password  = $args[2];
1626
1627           if ( !$user = $this->login($username, $password) ) {
1628                return $this->error;
1629           }
1630
1631           if( !current_user_can( 'edit_posts' ) )
1632                return new IXR_Error( 401, __( 'Sorry, you do not have access to user data on this blog.' ) );
1633
1634           do_action('xmlrpc_call', 'blogger.getUserInfo');
1635
1636           $struct = array(
1637                'nickname'  => $user->nickname,
1638                'userid'    => $user->ID,
1639                'url'       => $user->user_url,
1640                'lastname'  => $user->last_name,
1641                'firstname' => $user->first_name
1642           );
1643
 
Line Code
1661           $password  = $args[3];
1662
1663           if ( !$user = $this->login($username, $password) ) {
1664                return $this->error;
1665           }
1666
1667           if( !current_user_can( 'edit_post', $post_ID ) )
1668                return new IXR_Error( 401, __( 'Sorry, you cannot edit this post.' ) );
1669
1670           do_action('xmlrpc_call', 'blogger.getPost');
1671
1672           $post_data = wp_get_single_post($post_ID, ARRAY_A);
1673
1674           $categories = implode(',', wp_get_post_categories($post_ID));
1675
1676           $content  = '<title>'.stripslashes($post_data['post_title']).'</title>';
1677           $content .= '<category>'.$categories.'</category>';
1678           $content .= stripslashes($post_data['post_content']);
1679
 
Line Code
1702           $blog_ID    = (int) $args[1]; /* though we don't use it yet */
1703           $username = $args[2];
1704           $password  = $args[3];
1705           $num_posts  = $args[4];
1706
1707           if ( !$user = $this->login($username, $password) ) {
1708                return $this->error;
1709           }
1710
1711           do_action('xmlrpc_call', 'blogger.getRecentPosts');
1712
1713           $posts_list = wp_get_recent_posts($num_posts);
1714
1715           if (!$posts_list) {
1716                $this->error = new IXR_Error(500, __('Either there are no posts, or something went wrong.'));
1717                return $this->error;
1718           }
1719
1720           foreach ($posts_list as $entry) {
 
Line Code
1760           $blog_ID    = (int) $args[1];
1761           $username = $args[2];
1762           $password  = $args[3];
1763           $template   = $args[4]; /* could be 'main' or 'archiveIndex', but we don't use it */
1764
1765           if ( !$user = $this->login($username, $password) ) {
1766                return $this->error;
1767           }
1768
1769           do_action('xmlrpc_call', 'blogger.getTemplate');
1770
1771           if ( !current_user_can('edit_themes') ) {
1772                return new IXR_Error(401, __('Sorry, this user can not edit the template.'));
1773           }
1774
1775           /* warning: here we make the assumption that the blog's URL is on the same server */
1776           $filename = get_option('home') . '/';
1777           $filename = preg_replace('#https?://.+?/#', $_SERVER['DOCUMENT_ROOT'].'/', $filename);
1778
 
Line Code
1802           $username = $args[2];
1803           $password  = $args[3];
1804           $content    = $args[4];
1805           $template   = $args[5]; /* could be 'main' or 'archiveIndex', but we don't use it */
1806
1807           if ( !$user = $this->login($username, $password) ) {
1808                return $this->error;
1809           }
1810
1811           do_action('xmlrpc_call', 'blogger.setTemplate');
1812
1813           if ( !current_user_can('edit_themes') ) {
1814                return new IXR_Error(401, __('Sorry, this user cannot edit the template.'));
1815           }
1816
1817           /* warning: here we make the assumption that the blog's URL is on the same server */
1818           $filename = get_option('home') . '/';
1819           $filename = preg_replace('#https?://.+?/#', $_SERVER['DOCUMENT_ROOT'].'/', $filename);
1820
 
Line Code
1844           $username = $args[2];
1845           $password  = $args[3];
1846           $content    = $args[4];
1847           $publish    = $args[5];
1848
1849           if ( !$user = $this->login($username, $password) ) {
1850                return $this->error;
1851           }
1852
1853           do_action('xmlrpc_call', 'blogger.newPost');
1854
1855           $cap = ($publish) ? 'publish_posts' : 'edit_posts';
1856           if ( !current_user_can($cap) )
1857                return new IXR_Error(401, __('Sorry, you are not allowed to post on this blog.'));
1858
1859           $post_status = ($publish) ? 'publish' : 'draft';
1860
1861           $post_author = $user->ID;
1862
 
Line Code
1899           $username  = $args[2];
1900           $password   = $args[3];
1901           $content     = $args[4];
1902           $publish     = $args[5];
1903
1904           if ( !$user = $this->login($username, $password) ) {
1905                return $this->error;
1906           }
1907
1908           do_action('xmlrpc_call', 'blogger.editPost');
1909
1910           $actual_post = wp_get_single_post($post_ID,ARRAY_A);
1911
1912           if (!$actual_post || $actual_post['post_type'] != 'post') {
1913                return new IXR_Error(404, __('Sorry, no such post.'));
1914           }
1915
1916           $this->escape($actual_post);
1917
 
Line Code
1953           $post_ID     = (int) $args[1];
1954           $username  = $args[2];
1955           $password   = $args[3];
1956           $publish     = $args[4];
1957
1958           if ( !$user = $this->login($username, $password) ) {
1959                return $this->error;
1960           }
1961
1962           do_action('xmlrpc_call', 'blogger.deletePost');
1963
1964           $actual_post = wp_get_single_post($post_ID,ARRAY_A);
1965
1966           if (!$actual_post || $actual_post['post_type'] != 'post') {
1967                return new IXR_Error(404, __('Sorry, no such post.'));
1968           }
1969
1970           if ( !current_user_can('edit_post', $post_ID) )
1971                return new IXR_Error(401, __('Sorry, you do not have the right to delete this post.'));
 
Line Code
1998           $username  = $args[1];
1999           $password   = $args[2];
2000           $content_struct = $args[3];
2001           $publish     = $args[4];
2002
2003           if ( !$user = $this->login($username, $password) ) {
2004                return $this->error;
2005           }
2006
2007           do_action('xmlrpc_call', 'metaWeblog.newPost');
2008
2009           $cap = ( $publish ) ? 'publish_posts' : 'edit_posts';
2010           $error_message = __( 'Sorry, you are not allowed to publish posts on this blog.' );
2011           $post_type = 'post';
2012           $page_template = '';
2013           if( !empty( $content_struct['post_type'] ) ) {
2014                if( $content_struct['post_type'] == 'page' ) {
2015                     $cap = ( $publish ) ? 'publish_pages' : 'edit_pages';
2016                     $error_message = __( 'Sorry, you are not allowed to publish pages on this blog.' );
 
Line Code
2295           $username  = $args[1];
2296           $password   = $args[2];
2297           $content_struct = $args[3];
2298           $publish     = $args[4];
2299
2300           if ( !$user = $this->login($username, $password) ) {
2301                return $this->error;
2302           }
2303
2304           do_action('xmlrpc_call', 'metaWeblog.editPost');
2305
2306           $cap = ( $publish ) ? 'publish_posts' : 'edit_posts';
2307           $error_message = __( 'Sorry, you are not allowed to publish posts on this blog.' );
2308           $post_type = 'post';
2309           $page_template = '';
2310           if( !empty( $content_struct['post_type'] ) ) {
2311                if( $content_struct['post_type'] == 'page' ) {
2312                     $cap = ( $publish ) ? 'publish_pages' : 'edit_pages';
2313                     $error_message = __( 'Sorry, you are not allowed to publish pages on this blog.' );
 
Line Code
2560           $password   = $args[2];
2561
2562           if ( !$user = $this->login($username, $password) ) {
2563                return $this->error;
2564           }
2565
2566           if( !current_user_can( 'edit_post', $post_ID ) )
2567                return new IXR_Error( 401, __( 'Sorry, you cannot edit this post.' ) );
2568
2569           do_action('xmlrpc_call', 'metaWeblog.getPost');
2570
2571           $postdata = wp_get_single_post($post_ID, ARRAY_A);
2572
2573           if ($postdata['post_date'] != '') {
2574                $post_date = mysql2date('Ymd\TH:i:s', $postdata['post_date'], false);
2575                $post_date_gmt = mysql2date('Ymd\TH:i:s', $postdata['post_date_gmt'], false);
2576
2577                $categories = array();
2578                $catids = wp_get_post_categories($post_ID);
 
Line Code
2669           $blog_ID     = (int) $args[0];
2670           $username  = $args[1];
2671           $password   = $args[2];
2672           $num_posts   = (int) $args[3];
2673
2674           if ( !$user = $this->login($username, $password) ) {
2675                return $this->error;
2676           }
2677
2678           do_action('xmlrpc_call', 'metaWeblog.getRecentPosts');
2679
2680           $posts_list = wp_get_recent_posts($num_posts);
2681
2682           if (!$posts_list) {
2683                return array( );
2684           }
2685
2686           foreach ($posts_list as $entry) {
2687                if( !current_user_can( 'edit_post', $entry['ID'] ) )
 
Line Code
2773           $password   = $args[2];
2774
2775           if ( !$user = $this->login($username, $password) ) {
2776                return $this->error;
2777           }
2778
2779           if( !current_user_can( 'edit_posts' ) )
2780                return new IXR_Error( 401, __( 'Sorry, you must be able to edit posts on this blog in order to view categories.' ) );
2781
2782           do_action('xmlrpc_call', 'metaWeblog.getCategories');
2783
2784           $categories_struct = array();
2785
2786           if ( $cats = get_categories('get=all') ) {
2787                foreach ( $cats as $cat ) {
2788                     $struct['categoryId'] = $cat->term_id;
2789                     $struct['parentId'] = $cat->parent;
2790                     $struct['description'] = $cat->name;
2791                     $struct['categoryDescription'] = $cat->description;
 
Line Code
2824           $type = $data['type'];
2825           $bits = $data['bits'];
2826
2827           logIO('O', '(MW) Received '.strlen($bits).' bytes');
2828
2829           if ( !$user = $this->login($username, $password) ) {
2830                return $this->error;
2831           }
2832
2833           do_action('xmlrpc_call', 'metaWeblog.newMediaObject');
2834
2835           if ( !current_user_can('upload_files') ) {
2836                logIO('O', '(MW) User does not have upload_files capability');
2837                $this->error = new IXR_Error(401, __('You are not allowed to upload files to this site.'));
2838                return $this->error;
2839           }
2840
2841           if ( $upload_err = apply_filters( "pre_upload_error", false ) )
2842                return new IXR_Error(500, $upload_err);
 
Line Code
2903           $blog_ID     = (int) $args[0];
2904           $username  = $args[1];
2905           $password   = $args[2];
2906           $num_posts   = (int) $args[3];
2907
2908           if ( !$user = $this->login($username, $password) ) {
2909                return $this->error;
2910           }
2911
2912           do_action('xmlrpc_call', 'mt.getRecentPostTitles');
2913
2914           $posts_list = wp_get_recent_posts($num_posts);
2915
2916           if (!$posts_list) {
2917                $this->error = new IXR_Error(500, __('Either there are no posts, or something went wrong.'));
2918                return $this->error;
2919           }
2920
2921           foreach ($posts_list as $entry) {
 
Line Code
2960           $password   = $args[2];
2961
2962           if ( !$user = $this->login($username, $password) ) {
2963                return $this->error;
2964           }
2965
2966           if( !current_user_can( 'edit_posts' ) )
2967                return new IXR_Error( 401, __( 'Sorry, you must be able to edit posts on this blog in order to view categories.' ) );
2968
2969           do_action('xmlrpc_call', 'mt.getCategoryList');
2970
2971           $categories_struct = array();
2972
2973           if ( $cats = get_categories('hide_empty=0&hierarchical=0') ) {
2974                foreach ($cats as $cat) {
2975                     $struct['categoryId'] = $cat->term_id;
2976                     $struct['categoryName'] = $cat->name;
2977
2978                     $categories_struct[] = $struct;
 
Line Code
2999           $password   = $args[2];
3000
3001           if ( !$user = $this->login($username, $password) ) {
3002                return $this->error;
3003           }
3004
3005           if( !current_user_can( 'edit_post', $post_ID ) )
3006                return new IXR_Error( 401, __( 'Sorry, you can not edit this post.' ) );
3007
3008           do_action('xmlrpc_call', 'mt.getPostCategories');
3009
3010           $categories = array();
3011           $catids = wp_get_post_categories(intval($post_ID));
3012           // first listed category will be the primary category
3013           $isPrimary = true;
3014           foreach($catids as $catid) {
3015                $categories[] = array(
3016                     'categoryName' => get_cat_name($catid),
3017                     'categoryId' => (string) $catid,
 
Line Code
3038           $post_ID     = (int) $args[0];
3039           $username  = $args[1];
3040           $password   = $args[2];
3041           $categories  = $args[3];
3042
3043           if ( !$user = $this->login($username, $password) ) {
3044                return $this->error;
3045           }
3046
3047           do_action('xmlrpc_call', 'mt.setPostCategories');
3048
3049           if ( !current_user_can('edit_post', $post_ID) )
3050                return new IXR_Error(401, __('Sorry, you cannot edit this post.'));
3051
3052           foreach($categories as $cat) {
3053                $catids[] = $cat['categoryId'];
3054           }
3055
3056           wp_set_post_categories($post_ID, $catids);
 
Line Code
3062       * Retrieve an array of methods supported by this server.
3063       *
3064       * @since 1.5.0
3065       *
3066       * @param array $args Method parameters.
3067       * @return array
3068       */
3069      function mt_supportedMethods($args) {
3070
3071           do_action('xmlrpc_call', 'mt.supportedMethods');
3072
3073           $supported_methods = array();
3074           foreach($this->methods as $key=>$value) {
3075                $supported_methods[] = $key;
3076           }
3077
3078           return $supported_methods;
3079      }
3080
3081      /**
3082       * Retrieve an empty array because we don't support per-post text filters.
3083       *
3084       * @since 1.5.0
3085       *
3086       * @param array $args Method parameters.
3087       */
3088      function mt_supportedTextFilters($args) {
3089           do_action('xmlrpc_call', 'mt.supportedTextFilters');
3090           return apply_filters('xmlrpc_text_filters', array());
3091      }
3092
3093      /**
3094       * Retrieve trackbacks sent to a given post.
3095       *
3096       * @since 1.5.0
3097       *
3098       * @param array $args Method parameters.
3099       * @return mixed
3100       */
3101      function mt_getTrackbackPings($args) {
3102
3103           global $wpdb;
3104
3105           $post_ID = intval($args);
3106
3107           do_action('xmlrpc_call', 'mt.getTrackbackPings');
3108
3109           $actual_post = wp_get_single_post($post_ID, ARRAY_A);
3110
3111           if (!$actual_post) {
3112                return new IXR_Error(404, __('Sorry, no such post.'));
3113           }
3114
3115           $comments = $wpdb->get_results( $wpdb->prepare("SELECT comment_author_url, comment_content, comment_author_IP, comment_type FROM $wpdb->comments WHERE comment_post_ID = %d", $post_ID) );
3116
 
Line Code
3148
3149           $post_ID     = (int) $args[0];
3150           $username  = $args[1];
3151           $password   = $args[2];
3152
3153           if ( !$user = $this->login($username, $password) ) {
3154                return $this->error;
3155           }
3156
3157           do_action('xmlrpc_call', 'mt.publishPost');
3158
3159           if ( !current_user_can('edit_post', $post_ID) )
3160                return new IXR_Error(401, __('Sorry, you cannot edit this post.'));
3161
3162           $postdata = wp_get_single_post($post_ID,ARRAY_A);
3163
3164           $postdata['post_status'] = 'publish';
3165
3166           // retain old cats
 
Line Code
3182       *
3183       * @since 1.5.0
3184       *
3185       * @param array $args Method parameters.
3186       * @return array
3187       */
3188      function pingback_ping($args) {
3189           global $wpdb;
3190
3191           do_action('xmlrpc_call', 'pingback.ping');
3192
3193           $this->escape($args);
3194
3195           $pagelinkedfrom = $args[0];
3196           $pagelinkedto   = $args[1];
3197
3198           $title = '';
3199
3200           $pagelinkedfrom = str_replace('&amp;', '&', $pagelinkedfrom);
 
Line Code
3354       * @since 1.5.0
3355       *
3356       * @param array $args Method parameters.
3357       * @return array
3358       */
3359      function pingback_extensions_getPingbacks($args) {
3360
3361           global $wpdb;
3362
3363           do_action('xmlrpc_call', 'pingback.extensions.getPingbacks');
3364
3365           $this->escape($args);
3366
3367           $url = $args;
3368
3369           $post_ID = url_to_postid($url);
3370           if (!$post_ID) {
3371                // We aren't sure that the resource is available and/or pingback enabled
3372                  return new IXR_Error(33, __('The specified target URL cannot be used as a target. It either doesn&#8217;t exist, or it is not a pingback-enabled resource.'));