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
451           $this->escape( $args );
452
453           $username = $args[0];
454           $password = $args[1];
455
456           if ( !$user = $this->login($username, $password) )
457                return $this->error;
458
459
460           do_action( 'xmlrpc_call', 'wp.getUsersBlogs' );
461
462           $blogs = (array) get_blogs_of_user( $user->ID );
463           $struct = array( );
464
465           foreach ( $blogs as $blog ) {
466                // Don't include blogs that aren't hosted at this site
467                if ( $blog->site_id != $current_site->id )
468                     continue;
469
 
Line Code
502           $password     = $args[3];
503
504           if ( !$user = $this->login($username, $password) ) {
505                return $this->error;
506           }
507
508           if ( !current_user_can( 'edit_page', $page_id ) )
509                return new IXR_Error( 401, __( 'Sorry, you cannot edit this page.' ) );
510
511           do_action('xmlrpc_call', 'wp.getPage');
512
513           // Lookup page info.
514           $page = get_page($page_id);
515
516           // If we found the page then format the data.
517           if ( $page->ID && ($page->post_type == "page") ) {
518                // Get all of the page content and link.
519                $full_page = get_extended($page->post_content);
520                $link = post_permalink($page->ID);
 
Line Code
602           $password     = $args[2];
603           $num_pages     = isset($args[3]) ? (int) $args[3] : 10;
604
605           if ( !$user = $this->login($username, $password) )
606                return $this->error;
607
608           if ( !current_user_can( 'edit_pages' ) )
609                return new IXR_Error( 401, __( 'Sorry, you cannot edit pages.' ) );
610
611           do_action('xmlrpc_call', 'wp.getPages');
612
613           $pages = get_posts( array('post_type' => 'page', 'post_status' => 'any', 'numberposts' => $num_pages) );
614           $num_pages = count($pages);
615
616           // If we have pages, put together their info.
617           if ( $num_pages >= 1 ) {
618                $pages_struct = array();
619
620                for ( $i = 0; $i < $num_pages; $i++ ) {
 
Line Code
644           // Items not escaped here will be escaped in newPost.
645           $username     = $this->escape($args[1]);
646           $password     = $this->escape($args[2]);
647           $page          = $args[3];
648           $publish     = $args[4];
649
650           if ( !$user = $this->login($username, $password) )
651                return $this->error;
652
653           do_action('xmlrpc_call', 'wp.newPage');
654
655           // Make sure the user is allowed to add new pages.
656           if ( !current_user_can("publish_pages") )
657                return(new IXR_Error(401, __("Sorry, you cannot add new pages.")));
658
659           // Mark this as content for a page.
660           $args[3]["post_type"] = "page";
661
662           // Let mw_newPost do all of the heavy lifting.
 
Line Code
676
677           $blog_id     = (int) $args[0];
678           $username     = $args[1];
679           $password     = $args[2];
680           $page_id     = (int) $args[3];
681
682           if ( !$user = $this->login($username, $password) )
683                return $this->error;
684
685           do_action('xmlrpc_call', 'wp.deletePage');
686
687           // Get the current page based on the page_id and
688           // make sure it is a page and not a post.
689           $actual_page = wp_get_single_post($page_id, ARRAY_A);
690           if ( !$actual_page || ($actual_page["post_type"] != "page") )
691                return(new IXR_Error(404, __("Sorry, no such page.")));
692
693           // Make sure the user can delete pages.
694           if ( !current_user_can("delete_page", $page_id) )
 
Line Code
716           $page_id     = (int) $this->escape($args[1]);
717           $username     = $this->escape($args[2]);
718           $password     = $this->escape($args[3]);
719           $content     = $args[4];
720           $publish     = $args[5];
721
722           if ( !$user = $this->login($username, $password) )
723                return $this->error;
724
725           do_action('xmlrpc_call', 'wp.editPage');
726
727           // Get the page data and make sure it is a page.
728           $actual_page = wp_get_single_post($page_id, ARRAY_A);
729           if ( !$actual_page || ($actual_page["post_type"] != "page") )
730                return(new IXR_Error(404, __("Sorry, no such page.")));
731
732           // Make sure the user is allowed to edit pages.
733           if ( !current_user_can("edit_page", $page_id) )
734                return(new IXR_Error(401, __("Sorry, you do not have the right to edit this page.")));
 
Line Code
766           $username                    = $args[1];
767           $password                    = $args[2];
768
769           if ( !$user = $this->login($username, $password) )
770                return $this->error;
771
772           if ( !current_user_can( 'edit_pages' ) )
773                return new IXR_Error( 401, __( 'Sorry, you cannot edit pages.' ) );
774
775           do_action('xmlrpc_call', 'wp.getPageList');
776
777           // Get list of pages ids and titles
778           $page_list = $wpdb->get_results("
779                SELECT ID page_id,
780                     post_title page_title,
781                     post_parent page_parent_id,
782                     post_date_gmt,
783                     post_date,
784                     post_status
 
Line Code
826           $username     = $args[1];
827           $password     = $args[2];
828
829           if ( !$user = $this->login($username, $password) )
830                return $this->error;
831
832           if ( !current_user_can("edit_posts") )
833                return(new IXR_Error(401, __("Sorry, you cannot edit posts on this site.")));
834
835           do_action('xmlrpc_call', 'wp.getAuthors');
836
837           $authors = array();
838           foreach ( (array) get_users_of_blog() as $row ) {
839                $authors[] = array(
840                     "user_id"       => $row->user_id,
841                     "user_login"    => $row->user_login,
842                     "display_name"  => $row->display_name
843                );
844           }
 
Line Code
861           $username          = $args[1];
862           $password          = $args[2];
863
864           if ( !$user = $this->login($username, $password) )
865                return $this->error;
866
867           if ( !current_user_can( 'edit_posts' ) )
868                return new IXR_Error( 401, __( 'Sorry, you must be able to edit posts on this site in order to view tags.' ) );
869
870           do_action( 'xmlrpc_call', 'wp.getKeywords' );
871
872           $tags = array( );
873
874           if ( $all_tags = get_tags() ) {
875                foreach( (array) $all_tags as $tag ) {
876                     $struct['tag_id']               = $tag->term_id;
877                     $struct['name']                    = $tag->name;
878                     $struct['count']               = $tag->count;
879                     $struct['slug']                    = $tag->slug;
 
Line Code
900
901           $blog_id                    = (int) $args[0];
902           $username                    = $args[1];
903           $password                    = $args[2];
904           $category                    = $args[3];
905
906           if ( !$user = $this->login($username, $password) )
907                return $this->error;
908
909           do_action('xmlrpc_call', 'wp.newCategory');
910
911           // Make sure the user is allowed to add a category.
912           if ( !current_user_can("manage_categories") )
913                return(new IXR_Error(401, __("Sorry, you do not have the right to add a category.")));
914
915           // If no slug was provided make it empty so that
916           // WordPress will generate one.
917           if ( empty($category["slug"]) )
918                $category["slug"] = "";
 
Line Code
953
954           $blog_id          = (int) $args[0];
955           $username          = $args[1];
956           $password          = $args[2];
957           $category_id     = (int) $args[3];
958
959           if ( !$user = $this->login($username, $password) )
960                return $this->error;
961
962           do_action('xmlrpc_call', 'wp.deleteCategory');
963
964           if ( !current_user_can("manage_categories") )
965                return new IXR_Error( 401, __( "Sorry, you do not have the right to delete a category." ) );
966
967           return wp_delete_category( $category_id );
968      }
969
970      /**
971       * Retrieve category list.
 
Line Code
984           $category                    = $args[3];
985           $max_results               = (int) $args[4];
986
987           if ( !$user = $this->login($username, $password) )
988                return $this->error;
989
990           if ( !current_user_can( 'edit_posts' ) )
991                return new IXR_Error( 401, __( 'Sorry, you must be able to edit posts to this site in order to view categories.' ) );
992
993           do_action('xmlrpc_call', 'wp.suggestCategories');
994
995           $category_suggestions = array();
996           $args = array('get' => 'all', 'number' => $max_results, 'name__like' => $category);
997           foreach ( (array) get_categories($args) as $cat ) {
998                $category_suggestions[] = array(
999                     "category_id"     => $cat->cat_ID,
1000                     "category_name"     => $cat->cat_name
1001                );
1002           }
 
Line Code
1020           $password     = $args[2];
1021           $comment_id     = (int) $args[3];
1022
1023           if ( !$user = $this->login($username, $password) )
1024                return $this->error;
1025
1026           if ( !current_user_can( 'moderate_comments' ) )
1027                return new IXR_Error( 403, __( 'You are not allowed to moderate comments on this site.' ) );
1028
1029           do_action('xmlrpc_call', 'wp.getComment');
1030
1031           if ( ! $comment = get_comment($comment_id) )
1032                return new IXR_Error( 404, __( 'Invalid comment ID.' ) );
1033
1034           // Format page date.
1035           $comment_date = mysql2date("Ymd\TH:i:s", $comment->comment_date, false);
1036           $comment_date_gmt = mysql2date("Ymd\TH:i:s", $comment->comment_date_gmt, false);
1037
1038           if ( '0' == $comment->comment_approved )
 
Line Code
1083           $password     = $args[2];
1084           $struct          = $args[3];
1085
1086           if ( !$user = $this->login($username, $password) )
1087                return $this->error;
1088
1089           if ( !current_user_can( 'moderate_comments' ) )
1090                return new IXR_Error( 401, __( 'Sorry, you cannot edit comments.' ) );
1091
1092           do_action('xmlrpc_call', 'wp.getComments');
1093
1094           if ( isset($struct['status']) )
1095                $status = $struct['status'];
1096           else
1097                $status = '';
1098
1099           $post_id = '';
1100           if ( isset($struct['post_id']) )
1101                $post_id = absint($struct['post_id']);
 
Line Code
1142           $password     = $args[2];
1143           $comment_ID     = (int) $args[3];
1144
1145           if ( !$user = $this->login($username, $password) )
1146                return $this->error;
1147
1148           if ( !current_user_can( 'moderate_comments' ) )
1149                return new IXR_Error( 403, __( 'You are not allowed to moderate comments on this site.' ) );
1150
1151           do_action('xmlrpc_call', 'wp.deleteComment');
1152
1153           if ( ! get_comment($comment_ID) )
1154                return new IXR_Error( 404, __( 'Invalid comment ID.' ) );
1155
1156           return wp_delete_comment($comment_ID);
1157      }
1158
1159      /**
1160       * Edit comment.
 
Line Code
1173           $comment_ID     = (int) $args[3];
1174           $content_struct = $args[4];
1175
1176           if ( !$user = $this->login($username, $password) )
1177                return $this->error;
1178
1179           if ( !current_user_can( 'moderate_comments' ) )
1180                return new IXR_Error( 403, __( 'You are not allowed to moderate comments on this site.' ) );
1181
1182           do_action('xmlrpc_call', 'wp.editComment');
1183
1184           if ( ! get_comment($comment_ID) )
1185                return new IXR_Error( 404, __( 'Invalid comment ID.' ) );
1186
1187           if ( isset($content_struct['status']) ) {
1188                $statuses = get_comment_statuses();
1189                $statuses = array_keys($statuses);
1190
1191                if ( ! in_array($content_struct['status'], $statuses) )
 
Line Code
1297                     elseif ( !is_email($comment['comment_author_email']) )
1298                          return new IXR_Error( 403, __( 'A valid email address is required' ) );
1299                }
1300           }
1301
1302           $comment['comment_parent'] = isset($content_struct['comment_parent']) ? absint($content_struct['comment_parent']) : 0;
1303
1304           $comment['comment_content'] = $content_struct['content'];
1305
1306           do_action('xmlrpc_call', 'wp.newComment');
1307
1308           return wp_new_comment($comment);
1309      }
1310
1311      /**
1312       * Retrieve all of the comment status.
1313       *
1314       * @since 2.7.0
1315       *
 
Line Code
1323           $username     = $args[1];
1324           $password     = $args[2];
1325
1326           if ( !$user = $this->login($username, $password) )
1327                return $this->error;
1328
1329           if ( !current_user_can( 'moderate_comments' ) )
1330                return new IXR_Error( 403, __( 'You are not allowed access to details about this site.' ) );
1331
1332           do_action('xmlrpc_call', 'wp.getCommentStatusList');
1333
1334           return get_comment_statuses( );
1335      }
1336
1337      /**
1338       * Retrieve comment count.
1339       *
1340       * @since 2.5.0
1341       *
 
Line Code
1350           $password     = $args[2];
1351           $post_id     = (int) $args[3];
1352
1353           if ( !$user = $this->login($username, $password) )
1354                return $this->error;
1355
1356           if ( !current_user_can( 'edit_posts' ) )
1357                return new IXR_Error( 403, __( 'You are not allowed access to details about comments.' ) );
1358
1359           do_action('xmlrpc_call', 'wp.getCommentCount');
1360
1361           $count = wp_count_comments( $post_id );
1362           return array(
1363                "approved" => $count->approved,
1364                "awaiting_moderation" => $count->moderated,
1365                "spam" => $count->spam,
1366                "total_comments" => $count->total_comments
1367           );
1368      }
 
Line Code
1382           $username     = $args[1];
1383           $password     = $args[2];
1384
1385           if ( !$user = $this->login($username, $password) )
1386                return $this->error;
1387
1388           if ( !current_user_can( 'edit_posts' ) )
1389                return new IXR_Error( 403, __( 'You are not allowed access to details about this site.' ) );
1390
1391           do_action('xmlrpc_call', 'wp.getPostStatusList');
1392
1393           return get_post_statuses( );
1394      }
1395
1396      /**
1397       * Retrieve page statuses.
1398       *
1399       * @since 2.5.0
1400       *
 
Line Code
1408           $username     = $args[1];
1409           $password     = $args[2];
1410
1411           if ( !$user = $this->login($username, $password) )
1412                return $this->error;
1413
1414           if ( !current_user_can( 'edit_posts' ) )
1415                return new IXR_Error( 403, __( 'You are not allowed access to details about this site.' ) );
1416
1417           do_action('xmlrpc_call', 'wp.getPageStatusList');
1418
1419           return get_page_statuses( );
1420      }
1421
1422      /**
1423       * Retrieve page templates.
1424       *
1425       * @since 2.6.0
1426       *
 
Line Code
1553
1554           $this->escape($args);
1555
1556           $username = $args[1];
1557           $password  = $args[2];
1558
1559           if ( !$user = $this->login($username, $password) )
1560                return $this->error;
1561
1562           do_action('xmlrpc_call', 'blogger.getUsersBlogs');
1563
1564           $is_admin = current_user_can('manage_options');
1565
1566           $struct = array(
1567                'isAdmin'  => $is_admin,
1568                'url'      => get_option('home') . '/',
1569                'blogid'   => '1',
1570                'blogName' => get_option('blogname'),
1571                'xmlrpc'   => site_url( 'xmlrpc.php' )
 
Line Code
1620           $username = $args[1];
1621           $password  = $args[2];
1622
1623           if ( !$user = $this->login($username, $password) )
1624                return $this->error;
1625
1626           if ( !current_user_can( 'edit_posts' ) )
1627                return new IXR_Error( 401, __( 'Sorry, you do not have access to user data on this site.' ) );
1628
1629           do_action('xmlrpc_call', 'blogger.getUserInfo');
1630
1631           $struct = array(
1632                'nickname'  => $user->nickname,
1633                'userid'    => $user->ID,
1634                'url'       => $user->user_url,
1635                'lastname'  => $user->last_name,
1636                'firstname' => $user->first_name
1637           );
1638
 
Line Code
1655           $username = $args[2];
1656           $password  = $args[3];
1657
1658           if ( !$user = $this->login($username, $password) )
1659                return $this->error;
1660
1661           if ( !current_user_can( 'edit_post', $post_ID ) )
1662                return new IXR_Error( 401, __( 'Sorry, you cannot edit this post.' ) );
1663
1664           do_action('xmlrpc_call', 'blogger.getPost');
1665
1666           $post_data = wp_get_single_post($post_ID, ARRAY_A);
1667
1668           $categories = implode(',', wp_get_post_categories($post_ID));
1669
1670           $content  = '<title>'.stripslashes($post_data['post_title']).'</title>';
1671           $content .= '<category>'.$categories.'</category>';
1672           $content .= stripslashes($post_data['post_content']);
1673
 
Line Code
1695
1696           $blog_ID    = (int) $args[1]; /* though we don't use it yet */
1697           $username = $args[2];
1698           $password  = $args[3];
1699           $num_posts  = $args[4];
1700
1701           if ( !$user = $this->login($username, $password) )
1702                return $this->error;
1703
1704           do_action('xmlrpc_call', 'blogger.getRecentPosts');
1705
1706           $posts_list = wp_get_recent_posts($num_posts);
1707
1708           if ( !$posts_list ) {
1709                $this->error = new IXR_Error(500, __('Either there are no posts, or something went wrong.'));
1710                return $this->error;
1711           }
1712
1713           foreach ($posts_list as $entry) {
 
Line Code
1752
1753           $blog_ID    = (int) $args[1];
1754           $username = $args[2];
1755           $password  = $args[3];
1756           $template   = $args[4]; /* could be 'main' or 'archiveIndex', but we don't use it */
1757
1758           if ( !$user = $this->login($username, $password) )
1759                return $this->error;
1760
1761           do_action('xmlrpc_call', 'blogger.getTemplate');
1762
1763           if ( !current_user_can('edit_themes') )
1764                return new IXR_Error(401, __('Sorry, this user can not edit the template.'));
1765
1766           /* warning: here we make the assumption that the blog's URL is on the same server */
1767           $filename = get_option('home') . '/';
1768           $filename = preg_replace('#https?://.+?/#', $_SERVER['DOCUMENT_ROOT'].'/', $filename);
1769
1770           $f = fopen($filename, 'r');
 
Line Code
1792           $blog_ID    = (int) $args[1];
1793           $username = $args[2];
1794           $password  = $args[3];
1795           $content    = $args[4];
1796           $template   = $args[5]; /* could be 'main' or 'archiveIndex', but we don't use it */
1797
1798           if ( !$user = $this->login($username, $password) )
1799                return $this->error;
1800
1801           do_action('xmlrpc_call', 'blogger.setTemplate');
1802
1803           if ( !current_user_can('edit_themes') )
1804                return new IXR_Error(401, __('Sorry, this user cannot edit the template.'));
1805
1806           /* warning: here we make the assumption that the blog's URL is on the same server */
1807           $filename = get_option('home') . '/';
1808           $filename = preg_replace('#https?://.+?/#', $_SERVER['DOCUMENT_ROOT'].'/', $filename);
1809
1810           if ($f = fopen($filename, 'w+')) {
 
Line Code
1832           $blog_ID    = (int) $args[1]; /* though we don't use it yet */
1833           $username = $args[2];
1834           $password  = $args[3];
1835           $content    = $args[4];
1836           $publish    = $args[5];
1837
1838           if ( !$user = $this->login($username, $password) )
1839                return $this->error;
1840
1841           do_action('xmlrpc_call', 'blogger.newPost');
1842
1843           $cap = ($publish) ? 'publish_posts' : 'edit_posts';
1844           if ( !current_user_can($cap) )
1845                return new IXR_Error(401, __('Sorry, you are not allowed to post on this site.'));
1846
1847           $post_status = ($publish) ? 'publish' : 'draft';
1848
1849           $post_author = $user->ID;
1850
 
Line Code
1886           $post_ID     = (int) $args[1];
1887           $username  = $args[2];
1888           $password   = $args[3];
1889           $content     = $args[4];
1890           $publish     = $args[5];
1891
1892           if ( !$user = $this->login($username, $password) )
1893                return $this->error;
1894
1895           do_action('xmlrpc_call', 'blogger.editPost');
1896
1897           $actual_post = wp_get_single_post($post_ID,ARRAY_A);
1898
1899           if ( !$actual_post || $actual_post['post_type'] != 'post' )
1900                return new IXR_Error(404, __('Sorry, no such post.'));
1901
1902           $this->escape($actual_post);
1903
1904           if ( !current_user_can('edit_post', $post_ID) )
 
Line Code
1938
1939           $post_ID     = (int) $args[1];
1940           $username  = $args[2];
1941           $password   = $args[3];
1942           $publish     = $args[4];
1943
1944           if ( !$user = $this->login($username, $password) )
1945                return $this->error;
1946
1947           do_action('xmlrpc_call', 'blogger.deletePost');
1948
1949           $actual_post = wp_get_single_post($post_ID,ARRAY_A);
1950
1951           if ( !$actual_post || $actual_post['post_type'] != 'post' )
1952                return new IXR_Error(404, __('Sorry, no such post.'));
1953
1954           if ( !current_user_can('edit_post', $post_ID) )
1955                return new IXR_Error(401, __('Sorry, you do not have the right to delete this post.'));
1956
 
Line Code
1980           $blog_ID     = (int) $args[0]; // we will support this in the near future
1981           $username  = $args[1];
1982           $password   = $args[2];
1983           $content_struct = $args[3];
1984           $publish     = $args[4];
1985
1986           if ( !$user = $this->login($username, $password) )
1987                return $this->error;
1988
1989           do_action('xmlrpc_call', 'metaWeblog.newPost');
1990
1991           $cap = ( $publish ) ? 'publish_posts' : 'edit_posts';
1992           $error_message = __( 'Sorry, you are not allowed to publish posts on this site.' );
1993           $post_type = 'post';
1994           $page_template = '';
1995           if ( !empty( $content_struct['post_type'] ) ) {
1996                if ( $content_struct['post_type'] == 'page' ) {
1997                     $cap = ( $publish ) ? 'publish_pages' : 'edit_pages';
1998                     $error_message = __( 'Sorry, you are not allowed to publish pages on this site.' );
 
Line Code
2255           $post_ID     = (int) $args[0];
2256           $username  = $args[1];
2257           $password   = $args[2];
2258           $content_struct = $args[3];
2259           $publish     = $args[4];
2260
2261           if ( !$user = $this->login($username, $password) )
2262                return $this->error;
2263
2264           do_action('xmlrpc_call', 'metaWeblog.editPost');
2265
2266           $cap = ( $publish ) ? 'publish_posts' : 'edit_posts';
2267           $error_message = __( 'Sorry, you are not allowed to publish posts on this site.' );
2268           $post_type = 'post';
2269           $page_template = '';
2270           if ( !empty( $content_struct['post_type'] ) ) {
2271                if ( $content_struct['post_type'] == 'page' ) {
2272                     $cap = ( $publish ) ? 'publish_pages' : 'edit_pages';
2273                     $error_message = __( 'Sorry, you are not allowed to publish pages on this site.' );
 
Line Code
2501           $username  = $args[1];
2502           $password   = $args[2];
2503
2504           if ( !$user = $this->login($username, $password) )
2505                return $this->error;
2506
2507           if ( !current_user_can( 'edit_post', $post_ID ) )
2508                return new IXR_Error( 401, __( 'Sorry, you cannot edit this post.' ) );
2509
2510           do_action('xmlrpc_call', 'metaWeblog.getPost');
2511
2512           $postdata = wp_get_single_post($post_ID, ARRAY_A);
2513
2514           if ($postdata['post_date'] != '') {
2515                $post_date = mysql2date('Ymd\TH:i:s', $postdata['post_date'], false);
2516                $post_date_gmt = mysql2date('Ymd\TH:i:s', $postdata['post_date_gmt'], false);
2517
2518                // For drafts use the GMT version of the post date
2519                if ( $postdata['post_status'] == 'draft' )
 
Line Code
2612
2613           $blog_ID     = (int) $args[0];
2614           $username  = $args[1];
2615           $password   = $args[2];
2616           $num_posts   = (int) $args[3];
2617
2618           if ( !$user = $this->login($username, $password) )
2619                return $this->error;
2620
2621           do_action('xmlrpc_call', 'metaWeblog.getRecentPosts');
2622
2623           $posts_list = wp_get_recent_posts($num_posts);
2624
2625           if ( !$posts_list )
2626                return array( );
2627
2628           foreach ($posts_list as $entry) {
2629                if ( !current_user_can( 'edit_post', $entry['ID'] ) )
2630                     continue;
 
Line Code
2716           $username  = $args[1];
2717           $password   = $args[2];
2718
2719           if ( !$user = $this->login($username, $password) )
2720                return $this->error;
2721
2722           if ( !current_user_can( 'edit_posts' ) )
2723                return new IXR_Error( 401, __( 'Sorry, you must be able to edit posts on this site in order to view categories.' ) );
2724
2725           do_action('xmlrpc_call', 'metaWeblog.getCategories');
2726
2727           $categories_struct = array();
2728
2729           if ( $cats = get_categories(array('get' => 'all')) ) {
2730                foreach ( $cats as $cat ) {
2731                     $struct['categoryId'] = $cat->term_id;
2732                     $struct['parentId'] = $cat->parent;
2733                     $struct['description'] = $cat->name;
2734                     $struct['categoryDescription'] = $cat->description;
 
Line Code
2766           $name = sanitize_file_name( $data['name'] );
2767           $type = $data['type'];
2768           $bits = $data['bits'];
2769
2770           logIO('O', '(MW) Received '.strlen($bits).' bytes');
2771
2772           if ( !$user = $this->login($username, $password) )
2773                return $this->error;
2774
2775           do_action('xmlrpc_call', 'metaWeblog.newMediaObject');
2776
2777           if ( !current_user_can('upload_files') ) {
2778                logIO('O', '(MW) User does not have upload_files capability');
2779                $this->error = new IXR_Error(401, __('You are not allowed to upload files to this site.'));
2780                return $this->error;
2781           }
2782
2783           if ( $upload_err = apply_filters( "pre_upload_error", false ) )
2784                return new IXR_Error(500, $upload_err);
 
Line Code
2844
2845           $blog_ID     = (int) $args[0];
2846           $username  = $args[1];
2847           $password   = $args[2];
2848           $num_posts   = (int) $args[3];
2849
2850           if ( !$user = $this->login($username, $password) )
2851                return $this->error;
2852
2853           do_action('xmlrpc_call', 'mt.getRecentPostTitles');
2854
2855           $posts_list = wp_get_recent_posts($num_posts);
2856
2857           if ( !$posts_list ) {
2858                $this->error = new IXR_Error(500, __('Either there are no posts, or something went wrong.'));
2859                return $this->error;
2860           }
2861
2862           foreach ($posts_list as $entry) {
 
Line Code
2904           $username  = $args[1];
2905           $password   = $args[2];
2906
2907           if ( !$user = $this->login($username, $password) )
2908                return $this->error;
2909
2910           if ( !current_user_can( 'edit_posts' ) )
2911                return new IXR_Error( 401, __( 'Sorry, you must be able to edit posts on this site in order to view categories.' ) );
2912
2913           do_action('xmlrpc_call', 'mt.getCategoryList');
2914
2915           $categories_struct = array();
2916
2917           if ( $cats = get_categories(array('hide_empty' => 0, 'hierarchical' => 0)) ) {
2918                foreach ( $cats as $cat ) {
2919                     $struct['categoryId'] = $cat->term_id;
2920                     $struct['categoryName'] = $cat->name;
2921
2922                     $categories_struct[] = $struct;
 
Line Code
2942           $username  = $args[1];
2943           $password   = $args[2];
2944
2945           if ( !$user = $this->login($username, $password) )
2946                return $this->error;
2947
2948           if ( !current_user_can( 'edit_post', $post_ID ) )
2949                return new IXR_Error( 401, __( 'Sorry, you can not edit this post.' ) );
2950
2951           do_action('xmlrpc_call', 'mt.getPostCategories');
2952
2953           $categories = array();
2954           $catids = wp_get_post_categories(intval($post_ID));
2955           // first listed category will be the primary category
2956           $isPrimary = true;
2957           foreach ( $catids as $catid ) {
2958                $categories[] = array(
2959                     'categoryName' => get_cat_name($catid),
2960                     'categoryId' => (string) $catid,
 
Line Code
2980
2981           $post_ID     = (int) $args[0];
2982           $username  = $args[1];
2983           $password   = $args[2];
2984           $categories  = $args[3];
2985
2986           if ( !$user = $this->login($username, $password) )
2987                return $this->error;
2988
2989           do_action('xmlrpc_call', 'mt.setPostCategories');
2990
2991           if ( !current_user_can('edit_post', $post_ID) )
2992                return new IXR_Error(401, __('Sorry, you cannot edit this post.'));
2993
2994           foreach ( $categories as $cat ) {
2995                $catids[] = $cat['categoryId'];
2996           }
2997
2998           wp_set_post_categories($post_ID, $catids);
 
Line Code
3004       * Retrieve an array of methods supported by this server.
3005       *
3006       * @since 1.5.0
3007       *
3008       * @param array $args Method parameters.
3009       * @return array
3010       */
3011      function mt_supportedMethods($args) {
3012
3013           do_action('xmlrpc_call', 'mt.supportedMethods');
3014
3015           $supported_methods = array();
3016           foreach ( $this->methods as $key => $value ) {
3017                $supported_methods[] = $key;
3018           }
3019
3020           return $supported_methods;
3021      }
3022
3023      /**
3024       * Retrieve an empty array because we don't support per-post text filters.
3025       *
3026       * @since 1.5.0
3027       *
3028       * @param array $args Method parameters.
3029       */
3030      function mt_supportedTextFilters($args) {
3031           do_action('xmlrpc_call', 'mt.supportedTextFilters');
3032           return apply_filters('xmlrpc_text_filters', array());
3033      }
3034
3035      /**
3036       * Retrieve trackbacks sent to a given post.
3037       *
3038       * @since 1.5.0
3039       *
3040       * @param array $args Method parameters.
3041       * @return mixed
3042       */
3043      function mt_getTrackbackPings($args) {
3044
3045           global $wpdb;
3046
3047           $post_ID = intval($args);
3048
3049           do_action('xmlrpc_call', 'mt.getTrackbackPings');
3050
3051           $actual_post = wp_get_single_post($post_ID, ARRAY_A);
3052
3053           if ( !$actual_post )
3054                return new IXR_Error(404, __('Sorry, no such post.'));
3055
3056           $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) );
3057
3058           if ( !$comments )
 
Line Code
3087           $this->escape($args);
3088
3089           $post_ID     = (int) $args[0];
3090           $username  = $args[1];
3091           $password   = $args[2];
3092
3093           if ( !$user = $this->login($username, $password) )
3094                return $this->error;
3095
3096           do_action('xmlrpc_call', 'mt.publishPost');
3097
3098           if ( !current_user_can('edit_post', $post_ID) )
3099                return new IXR_Error(401, __('Sorry, you cannot edit this post.'));
3100
3101           $postdata = wp_get_single_post($post_ID,ARRAY_A);
3102
3103           $postdata['post_status'] = 'publish';
3104
3105           // retain old cats
 
Line Code
3121       *
3122       * @since 1.5.0
3123       *
3124       * @param array $args Method parameters.
3125       * @return array
3126       */
3127      function pingback_ping($args) {
3128           global $wpdb;
3129
3130           do_action('xmlrpc_call', 'pingback.ping');
3131
3132           $this->escape($args);
3133
3134           $pagelinkedfrom = $args[0];
3135           $pagelinkedto   = $args[1];
3136
3137           $title = '';
3138
3139           $pagelinkedfrom = str_replace('&amp;', '&', $pagelinkedfrom);
 
Line Code
3291       * @since 1.5.0
3292       *
3293       * @param array $args Method parameters.
3294       * @return array
3295       */
3296      function pingback_extensions_getPingbacks($args) {
3297
3298           global $wpdb;
3299
3300           do_action('xmlrpc_call', 'pingback.extensions.getPingbacks');
3301
3302           $this->escape($args);
3303
3304           $url = $args;
3305
3306           $post_ID = url_to_postid($url);
3307           if ( !$post_ID ) {
3308                // We aren't sure that the resource is available and/or pingback enabled
3309                  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.'));