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 67 times in this file.

Line Code
615            * the method logic begins.
616            *
617            * All built-in XML-RPC methods use the action xmlrpc_call, with a parameter
618            * equal to the method's name, e.g., wp.getUsersBlogs, wp.newPost, etc.
619            *
620            * @since 2.5.0
621            *
622            * @param string $name The method name.
623            */
624           do_action( 'xmlrpc_call', 'wp.getUsersBlogs' );
625
626           $blogs = (array) get_blogs_of_user( $user->ID );
627           $struct = array();
628           $primary_blog_id = 0;
629           $active_blog = get_active_blog_for_user( $user->ID );
630           if ( $active_blog ) {
631                $primary_blog_id = (int) $active_blog->blog_id;
632           }
633
 
Line Code
1225           if ( isset( $content_struct['post_date_gmt'] ) && ! ( $content_struct['post_date_gmt'] instanceof IXR_Date ) ) {
1226                if ( $content_struct['post_date_gmt'] == '0000-00-00 00:00:00' || isset( $content_struct['post_date'] ) ) {
1227                     unset( $content_struct['post_date_gmt'] );
1228                } else {
1229                     $content_struct['post_date_gmt'] = $this->_convert_date( $content_struct['post_date_gmt'] );
1230                }
1231           }
1232
1233           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
1234           do_action( 'xmlrpc_call', 'wp.newPost' );
1235
1236           unset( $content_struct['ID'] );
1237
1238           return $this->_insert_post( $user, $content_struct );
1239      }
1240
1241      /**
1242       * Helper method for filtering out elements from an array.
1243       *
 
Line Code
1579           $username       = $args[1];
1580           $password       = $args[2];
1581           $post_id        = (int) $args[3];
1582           $content_struct = $args[4];
1583
1584           if ( ! $user = $this->login( $username, $password ) )
1585                return $this->error;
1586
1587           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
1588           do_action( 'xmlrpc_call', 'wp.editPost' );
1589
1590           $post = get_post( $post_id, ARRAY_A );
1591
1592           if ( empty( $post['ID'] ) )
1593                return new IXR_Error( 404, __( 'Invalid post ID.' ) );
1594
1595           if ( isset( $content_struct['if_not_modified_since'] ) ) {
1596                // If the post has been modified since the date provided, return an error.
1597                if ( mysql2date( 'U', $post['post_modified_gmt'] ) > $content_struct['if_not_modified_since']->getTimestamp() ) {
 
Line Code
1646
1647           $username   = $args[1];
1648           $password   = $args[2];
1649           $post_id    = (int) $args[3];
1650
1651           if ( ! $user = $this->login( $username, $password ) )
1652                return $this->error;
1653
1654           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
1655           do_action( 'xmlrpc_call', 'wp.deletePost' );
1656
1657           $post = get_post( $post_id, ARRAY_A );
1658           if ( empty( $post['ID'] ) ) {
1659                return new IXR_Error( 404, __( 'Invalid post ID.' ) );
1660           }
1661
1662           if ( ! current_user_can( 'delete_post', $post_id ) ) {
1663                return new IXR_Error( 401, __( 'Sorry, you are not allowed to delete this post.' ) );
1664           }
 
Line Code
1743                 * @param string $method Method name.
1744                 */
1745                $fields = apply_filters( 'xmlrpc_default_post_fields', array( 'post', 'terms', 'custom_fields' ), 'wp.getPost' );
1746           }
1747
1748           if ( ! $user = $this->login( $username, $password ) )
1749                return $this->error;
1750
1751           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
1752           do_action( 'xmlrpc_call', 'wp.getPost' );
1753
1754           $post = get_post( $post_id, ARRAY_A );
1755
1756           if ( empty( $post['ID'] ) )
1757                return new IXR_Error( 404, __( 'Invalid post ID.' ) );
1758
1759           if ( ! current_user_can( 'edit_post', $post_id ) )
1760                return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit this post.' ) );
1761
 
Line Code
1799           } else {
1800                /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
1801                $fields = apply_filters( 'xmlrpc_default_post_fields', array( 'post', 'terms', 'custom_fields' ), 'wp.getPosts' );
1802           }
1803
1804           if ( ! $user = $this->login( $username, $password ) )
1805                return $this->error;
1806
1807           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
1808           do_action( 'xmlrpc_call', 'wp.getPosts' );
1809
1810           $query = array();
1811
1812           if ( isset( $filter['post_type'] ) ) {
1813                $post_type = get_post_type_object( $filter['post_type'] );
1814                if ( ! ( (bool) $post_type ) )
1815                     return new IXR_Error( 403, __( 'Invalid post type.' ) );
1816           } else {
1817                $post_type = get_post_type_object( 'post' );
 
Line Code
1887
1888           $username       = $args[1];
1889           $password       = $args[2];
1890           $content_struct = $args[3];
1891
1892           if ( ! $user = $this->login( $username, $password ) )
1893                return $this->error;
1894
1895           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
1896           do_action( 'xmlrpc_call', 'wp.newTerm' );
1897
1898           if ( ! taxonomy_exists( $content_struct['taxonomy'] ) )
1899                return new IXR_Error( 403, __( 'Invalid taxonomy.' ) );
1900
1901           $taxonomy = get_taxonomy( $content_struct['taxonomy'] );
1902
1903           if ( ! current_user_can( $taxonomy->cap->edit_terms ) ) {
1904                return new IXR_Error( 401, __( 'Sorry, you are not allowed to create terms in this taxonomy.' ) );
1905           }
 
Line Code
1975           $username       = $args[1];
1976           $password       = $args[2];
1977           $term_id        = (int) $args[3];
1978           $content_struct = $args[4];
1979
1980           if ( ! $user = $this->login( $username, $password ) )
1981                return $this->error;
1982
1983           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
1984           do_action( 'xmlrpc_call', 'wp.editTerm' );
1985
1986           if ( ! taxonomy_exists( $content_struct['taxonomy'] ) )
1987                return new IXR_Error( 403, __( 'Invalid taxonomy.' ) );
1988
1989           $taxonomy = get_taxonomy( $content_struct['taxonomy'] );
1990
1991           $taxonomy = (array) $taxonomy;
1992
1993           // hold the data of the term
 
Line Code
2072           $username           = $args[1];
2073           $password           = $args[2];
2074           $taxonomy           = $args[3];
2075           $term_id            = (int) $args[4];
2076
2077           if ( ! $user = $this->login( $username, $password ) )
2078                return $this->error;
2079
2080           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2081           do_action( 'xmlrpc_call', 'wp.deleteTerm' );
2082
2083           if ( ! taxonomy_exists( $taxonomy ) )
2084                return new IXR_Error( 403, __( 'Invalid taxonomy.' ) );
2085
2086           $taxonomy = get_taxonomy( $taxonomy );
2087           $term = get_term( $term_id, $taxonomy->name );
2088
2089           if ( is_wp_error( $term ) )
2090                return new IXR_Error( 500, $term->get_error_message() );
 
Line Code
2143           $username           = $args[1];
2144           $password           = $args[2];
2145           $taxonomy           = $args[3];
2146           $term_id            = (int) $args[4];
2147
2148           if ( ! $user = $this->login( $username, $password ) )
2149                return $this->error;
2150
2151           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2152           do_action( 'xmlrpc_call', 'wp.getTerm' );
2153
2154           if ( ! taxonomy_exists( $taxonomy ) )
2155                return new IXR_Error( 403, __( 'Invalid taxonomy.' ) );
2156
2157           $taxonomy = get_taxonomy( $taxonomy );
2158
2159           $term = get_term( $term_id , $taxonomy->name, ARRAY_A );
2160
2161           if ( is_wp_error( $term ) )
 
Line Code
2202           $username       = $args[1];
2203           $password       = $args[2];
2204           $taxonomy       = $args[3];
2205           $filter         = isset( $args[4] ) ? $args[4] : array();
2206
2207           if ( ! $user = $this->login( $username, $password ) )
2208                return $this->error;
2209
2210           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2211           do_action( 'xmlrpc_call', 'wp.getTerms' );
2212
2213           if ( ! taxonomy_exists( $taxonomy ) )
2214                return new IXR_Error( 403, __( 'Invalid taxonomy.' ) );
2215
2216           $taxonomy = get_taxonomy( $taxonomy );
2217
2218           if ( ! current_user_can( $taxonomy->cap->assign_terms ) )
2219                return new IXR_Error( 401, __( 'Sorry, you are not allowed to assign terms in this taxonomy.' ) );
2220
 
Line Code
2297                 * @param string $method The method name.
2298                 */
2299                $fields = apply_filters( 'xmlrpc_default_taxonomy_fields', array( 'labels', 'cap', 'object_type' ), 'wp.getTaxonomy' );
2300           }
2301
2302           if ( ! $user = $this->login( $username, $password ) )
2303                return $this->error;
2304
2305           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2306           do_action( 'xmlrpc_call', 'wp.getTaxonomy' );
2307
2308           if ( ! taxonomy_exists( $taxonomy ) )
2309                return new IXR_Error( 403, __( 'Invalid taxonomy.' ) );
2310
2311           $taxonomy = get_taxonomy( $taxonomy );
2312
2313           if ( ! current_user_can( $taxonomy->cap->assign_terms ) )
2314                return new IXR_Error( 401, __( 'Sorry, you are not allowed to assign terms in this taxonomy.' ) );
2315
 
Line Code
2350           } else {
2351                /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2352                $fields = apply_filters( 'xmlrpc_default_taxonomy_fields', array( 'labels', 'cap', 'object_type' ), 'wp.getTaxonomies' );
2353           }
2354
2355           if ( ! $user = $this->login( $username, $password ) )
2356                return $this->error;
2357
2358           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2359           do_action( 'xmlrpc_call', 'wp.getTaxonomies' );
2360
2361           $taxonomies = get_taxonomies( $filter, 'objects' );
2362
2363           // holds all the taxonomy data
2364           $struct = array();
2365
2366           foreach ( $taxonomies as $taxonomy ) {
2367                // capability check for post_types
2368                if ( ! current_user_can( $taxonomy->cap->assign_terms ) )
 
Line Code
2432                 * @param string $method The method name.
2433                 */
2434                $fields = apply_filters( 'xmlrpc_default_user_fields', array( 'all' ), 'wp.getUser' );
2435           }
2436
2437           if ( ! $user = $this->login( $username, $password ) )
2438                return $this->error;
2439
2440           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2441           do_action( 'xmlrpc_call', 'wp.getUser' );
2442
2443           if ( ! current_user_can( 'edit_user', $user_id ) )
2444                return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit this user.' ) );
2445
2446           $user_data = get_userdata( $user_id );
2447
2448           if ( ! $user_data )
2449                return new IXR_Error( 404, __( 'Invalid user ID.' ) );
2450
 
Line Code
2490           } else {
2491                /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2492                $fields = apply_filters( 'xmlrpc_default_user_fields', array( 'all' ), 'wp.getUsers' );
2493           }
2494
2495           if ( ! $user = $this->login( $username, $password ) )
2496                return $this->error;
2497
2498           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2499           do_action( 'xmlrpc_call', 'wp.getUsers' );
2500
2501           if ( ! current_user_can( 'list_users' ) )
2502                return new IXR_Error( 401, __( 'Sorry, you are not allowed to list users.' ) );
2503
2504           $query = array( 'fields' => 'all_with_meta' );
2505
2506           $query['number'] = ( isset( $filter['number'] ) ) ? absint( $filter['number'] ) : 50;
2507           $query['offset'] = ( isset( $filter['offset'] ) ) ? absint( $filter['offset'] ) : 0;
2508
 
Line Code
2563           } else {
2564                /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2565                $fields = apply_filters( 'xmlrpc_default_user_fields', array( 'all' ), 'wp.getProfile' );
2566           }
2567
2568           if ( ! $user = $this->login( $username, $password ) )
2569                return $this->error;
2570
2571           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2572           do_action( 'xmlrpc_call', 'wp.getProfile' );
2573
2574           if ( ! current_user_can( 'edit_user', $user->ID ) )
2575                return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit your profile.' ) );
2576
2577           $user_data = get_userdata( $user->ID );
2578
2579           return $this->_prepare_user( $user_data, $fields );
2580      }
2581
 
Line Code
2609
2610           $username       = $args[1];
2611           $password       = $args[2];
2612           $content_struct = $args[3];
2613
2614           if ( ! $user = $this->login( $username, $password ) )
2615                return $this->error;
2616
2617           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2618           do_action( 'xmlrpc_call', 'wp.editProfile' );
2619
2620           if ( ! current_user_can( 'edit_user', $user->ID ) )
2621                return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit your profile.' ) );
2622
2623           // holds data of the user
2624           $user_data = array();
2625           $user_data['ID'] = $user->ID;
2626
2627           // only set the user details if it was given
 
Line Code
2685
2686           $page = get_post($page_id);
2687           if ( ! $page )
2688                return new IXR_Error( 404, __( 'Invalid post ID.' ) );
2689
2690           if ( !current_user_can( 'edit_page', $page_id ) )
2691                return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit this page.' ) );
2692
2693           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2694           do_action( 'xmlrpc_call', 'wp.getPage' );
2695
2696           // If we found the page then format the data.
2697           if ( $page->ID && ($page->post_type == 'page') ) {
2698                return $this->_prepare_page( $page );
2699           }
2700           // If the page doesn't exist indicate that.
2701           else {
2702                return new IXR_Error( 404, __( 'Sorry, no such page.' ) );
2703           }
 
Line Code
2726           $num_pages = isset($args[3]) ? (int) $args[3] : 10;
2727
2728           if ( !$user = $this->login($username, $password) )
2729                return $this->error;
2730
2731           if ( !current_user_can( 'edit_pages' ) )
2732                return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit pages.' ) );
2733
2734           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2735           do_action( 'xmlrpc_call', 'wp.getPages' );
2736
2737           $pages = get_posts( array('post_type' => 'page', 'post_status' => 'any', 'numberposts' => $num_pages) );
2738           $num_pages = count($pages);
2739
2740           // If we have pages, put together their info.
2741           if ( $num_pages >= 1 ) {
2742                $pages_struct = array();
2743
2744                foreach ($pages as $page) {
 
Line Code
2772      public function wp_newPage( $args ) {
2773           // Items not escaped here will be escaped in newPost.
2774           $username = $this->escape( $args[1] );
2775           $password = $this->escape( $args[2] );
2776
2777           if ( !$user = $this->login($username, $password) )
2778                return $this->error;
2779
2780           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2781           do_action( 'xmlrpc_call', 'wp.newPage' );
2782
2783           // Mark this as content for a page.
2784           $args[3]["post_type"] = 'page';
2785
2786           // Let mw_newPost do all of the heavy lifting.
2787           return $this->mw_newPost( $args );
2788      }
2789
2790      /**
 
Line Code
2807
2808           $username = $args[1];
2809           $password = $args[2];
2810           $page_id  = (int) $args[3];
2811
2812           if ( !$user = $this->login($username, $password) )
2813                return $this->error;
2814
2815           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2816           do_action( 'xmlrpc_call', 'wp.deletePage' );
2817
2818           // Get the current page based on the page_id and
2819           // make sure it is a page and not a post.
2820           $actual_page = get_post($page_id, ARRAY_A);
2821           if ( !$actual_page || ($actual_page['post_type'] != 'page') )
2822                return new IXR_Error( 404, __( 'Sorry, no such page.' ) );
2823
2824           // Make sure the user can delete pages.
2825           if ( !current_user_can('delete_page', $page_id) )
 
Line Code
2870
2871           $escaped_username = $this->escape( $username );
2872           $escaped_password = $this->escape( $password );
2873
2874           if ( !$user = $this->login( $escaped_username, $escaped_password ) ) {
2875                return $this->error;
2876           }
2877
2878           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2879           do_action( 'xmlrpc_call', 'wp.editPage' );
2880
2881           // Get the page data and make sure it is a page.
2882           $actual_page = get_post($page_id, ARRAY_A);
2883           if ( !$actual_page || ($actual_page['post_type'] != 'page') )
2884                return new IXR_Error( 404, __( 'Sorry, no such page.' ) );
2885
2886           // Make sure the user is allowed to edit pages.
2887           if ( !current_user_can('edit_page', $page_id) )
2888                return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit this page.' ) );
 
Line Code
2928           $password = $args[2];
2929
2930           if ( !$user = $this->login($username, $password) )
2931                return $this->error;
2932
2933           if ( !current_user_can( 'edit_pages' ) )
2934                return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit pages.' ) );
2935
2936           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2937           do_action( 'xmlrpc_call', 'wp.getPageList' );
2938
2939           // Get list of pages ids and titles
2940           $page_list = $wpdb->get_results("
2941                SELECT ID page_id,
2942                     post_title page_title,
2943                     post_parent page_parent_id,
2944                     post_date_gmt,
2945                     post_date,
2946                     post_status
 
Line Code
2984           $password = $args[2];
2985
2986           if ( !$user = $this->login($username, $password) )
2987                return $this->error;
2988
2989           if ( !current_user_can('edit_posts') )
2990                return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit posts.' ) );
2991
2992           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2993           do_action( 'xmlrpc_call', 'wp.getAuthors' );
2994
2995           $authors = array();
2996           foreach ( get_users( array( 'fields' => array('ID','user_login','display_name') ) ) as $user ) {
2997                $authors[] = array(
2998                     'user_id'       => $user->ID,
2999                     'user_login'    => $user->user_login,
3000                     'display_name'  => $user->display_name
3001                );
3002           }
 
Line Code
3025           $password = $args[2];
3026
3027           if ( !$user = $this->login($username, $password) )
3028                return $this->error;
3029
3030           if ( !current_user_can( 'edit_posts' ) )
3031                return new IXR_Error( 401, __( 'Sorry, you must be able to edit posts on this site in order to view tags.' ) );
3032
3033           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
3034           do_action( 'xmlrpc_call', 'wp.getKeywords' );
3035
3036           $tags = array();
3037
3038           if ( $all_tags = get_tags() ) {
3039                foreach ( (array) $all_tags as $tag ) {
3040                     $struct = array();
3041                     $struct['tag_id']               = $tag->term_id;
3042                     $struct['name']                    = $tag->name;
3043                     $struct['count']               = $tag->count;
 
Line Code
3072
3073           $username = $args[1];
3074           $password = $args[2];
3075           $category = $args[3];
3076
3077           if ( !$user = $this->login($username, $password) )
3078                return $this->error;
3079
3080           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
3081           do_action( 'xmlrpc_call', 'wp.newCategory' );
3082
3083           // Make sure the user is allowed to add a category.
3084           if ( !current_user_can('manage_categories') )
3085                return new IXR_Error(401, __('Sorry, you are not allowed to add a category.'));
3086
3087           // If no slug was provided make it empty so that
3088           // WordPress will generate one.
3089           if ( empty($category['slug']) )
3090                $category['slug'] = '';
 
Line Code
3148
3149           $username    = $args[1];
3150           $password    = $args[2];
3151           $category_id = (int) $args[3];
3152
3153           if ( !$user = $this->login($username, $password) )
3154                return $this->error;
3155
3156           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
3157           do_action( 'xmlrpc_call', 'wp.deleteCategory' );
3158
3159           if ( !current_user_can('manage_categories') )
3160                return new IXR_Error( 401, __( 'Sorry, you are not allowed to delete a category.' ) );
3161
3162           $status = wp_delete_term( $category_id, 'category' );
3163
3164           if ( true == $status ) {
3165                /**
3166                 * Fires after a category has been successfully deleted via XML-RPC.
 
Line Code
3201           $max_results = (int) $args[4];
3202
3203           if ( !$user = $this->login($username, $password) )
3204                return $this->error;
3205
3206           if ( !current_user_can( 'edit_posts' ) )
3207                return new IXR_Error( 401, __( 'Sorry, you must be able to edit posts on this site in order to view categories.' ) );
3208
3209           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
3210           do_action( 'xmlrpc_call', 'wp.suggestCategories' );
3211
3212           $category_suggestions = array();
3213           $args = array('get' => 'all', 'number' => $max_results, 'name__like' => $category);
3214           foreach ( (array) get_categories($args) as $cat ) {
3215                $category_suggestions[] = array(
3216                     'category_id'     => $cat->term_id,
3217                     'category_name'     => $cat->name
3218                );
3219           }
 
Line Code
3242           $username     = $args[1];
3243           $password     = $args[2];
3244           $comment_id     = (int) $args[3];
3245
3246           if ( ! $user = $this->login( $username, $password ) ) {
3247                return $this->error;
3248           }
3249
3250           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
3251           do_action( 'xmlrpc_call', 'wp.getComment' );
3252
3253           if ( ! $comment = get_comment( $comment_id ) ) {
3254                return new IXR_Error( 404, __( 'Invalid comment ID.' ) );
3255           }
3256
3257           if ( ! current_user_can( 'edit_comment', $comment_id ) ) {
3258                return new IXR_Error( 403, __( 'Sorry, you are not allowed to moderate or edit this comment.' ) );
3259           }
3260
 
Line Code
3293           $username = $args[1];
3294           $password = $args[2];
3295           $struct       = isset( $args[3] ) ? $args[3] : array();
3296
3297           if ( ! $user = $this->login( $username, $password ) ) {
3298                return $this->error;
3299           }
3300
3301           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
3302           do_action( 'xmlrpc_call', 'wp.getComments' );
3303
3304           if ( isset( $struct['status'] ) ) {
3305                $status = $struct['status'];
3306           } else {
3307                $status = '';
3308           }
3309
3310           if ( ! current_user_can( 'moderate_comments' ) && 'approve' !== $status ) {
3311                return new IXR_Error( 401, __( 'Invalid comment status.' ) );
 
Line Code
3385           if ( ! get_comment( $comment_ID ) ) {
3386                return new IXR_Error( 404, __( 'Invalid comment ID.' ) );
3387           }
3388
3389           if ( !current_user_can( 'edit_comment', $comment_ID ) ) {
3390                return new IXR_Error( 403, __( 'Sorry, you are not allowed to moderate or edit this comment.' ) );
3391           }
3392
3393           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
3394           do_action( 'xmlrpc_call', 'wp.deleteComment' );
3395
3396           $status = wp_delete_comment( $comment_ID );
3397
3398           if ( $status ) {
3399                /**
3400                 * Fires after a comment has been successfully deleted via XML-RPC.
3401                 *
3402                 * @since 3.4.0
3403                 *
 
Line Code
3452           if ( ! get_comment( $comment_ID ) ) {
3453                return new IXR_Error( 404, __( 'Invalid comment ID.' ) );
3454           }
3455
3456           if ( ! current_user_can( 'edit_comment', $comment_ID ) ) {
3457                return new IXR_Error( 403, __( 'Sorry, you are not allowed to moderate or edit this comment.' ) );
3458           }
3459
3460           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
3461           do_action( 'xmlrpc_call', 'wp.editComment' );
3462
3463           if ( isset($content_struct['status']) ) {
3464                $statuses = get_comment_statuses();
3465                $statuses = array_keys($statuses);
3466
3467                if ( ! in_array($content_struct['status'], $statuses) )
3468                     return new IXR_Error( 401, __( 'Invalid comment status.' ) );
3469                $comment_approved = $content_struct['status'];
3470           }
 
Line Code
3614                          return new IXR_Error( 403, __( 'Comment author name and email are required.' ) );
3615                     elseif ( !is_email($comment['comment_author_email']) )
3616                          return new IXR_Error( 403, __( 'A valid email address is required.' ) );
3617                }
3618           }
3619
3620           $comment['comment_parent'] = isset($content_struct['comment_parent']) ? absint($content_struct['comment_parent']) : 0;
3621
3622           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
3623           do_action( 'xmlrpc_call', 'wp.newComment' );
3624
3625           $comment_ID = wp_new_comment( $comment, true );
3626           if ( is_wp_error( $comment_ID ) ) {
3627                return new IXR_Error( 403, $comment_ID->get_error_message() );
3628           }
3629
3630           if ( ! $comment_ID ) {
3631                return new IXR_Error( 403, __( 'An unknown error occurred' ) );
3632           }
 
Line Code
3667           if ( ! $user = $this->login( $username, $password ) ) {
3668                return $this->error;
3669           }
3670
3671           if ( ! current_user_can( 'publish_posts' ) ) {
3672                return new IXR_Error( 403, __( 'Sorry, you are not allowed access to details about this site.' ) );
3673           }
3674
3675           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
3676           do_action( 'xmlrpc_call', 'wp.getCommentStatusList' );
3677
3678           return get_comment_statuses();
3679      }
3680
3681      /**
3682       * Retrieve comment count.
3683       *
3684       * @since 2.5.0
3685       *
 
Line Code
3708           if ( empty( $post['ID'] ) ) {
3709                return new IXR_Error( 404, __( 'Invalid post ID.' ) );
3710           }
3711
3712           if ( ! current_user_can( 'edit_post', $post_id ) ) {
3713                return new IXR_Error( 403, __( 'Sorry, you are not allowed access to details of this post.' ) );
3714           }
3715
3716           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
3717           do_action( 'xmlrpc_call', 'wp.getCommentCount' );
3718
3719           $count = wp_count_comments( $post_id );
3720
3721           return array(
3722                'approved' => $count->approved,
3723                'awaiting_moderation' => $count->moderated,
3724                'spam' => $count->spam,
3725                'total_comments' => $count->total_comments
3726           );
 
Line Code
3747           $password = $args[2];
3748
3749           if ( !$user = $this->login($username, $password) )
3750                return $this->error;
3751
3752           if ( !current_user_can( 'edit_posts' ) )
3753                return new IXR_Error( 403, __( 'Sorry, you are not allowed access to details about this site.' ) );
3754
3755           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
3756           do_action( 'xmlrpc_call', 'wp.getPostStatusList' );
3757
3758           return get_post_statuses();
3759      }
3760
3761      /**
3762       * Retrieve page statuses.
3763       *
3764       * @since 2.5.0
3765       *
 
Line Code
3779           $password = $args[2];
3780
3781           if ( !$user = $this->login($username, $password) )
3782                return $this->error;
3783
3784           if ( !current_user_can( 'edit_pages' ) )
3785                return new IXR_Error( 403, __( 'Sorry, you are not allowed access to details about this site.' ) );
3786
3787           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
3788           do_action( 'xmlrpc_call', 'wp.getPageStatusList' );
3789
3790           return get_page_statuses();
3791      }
3792
3793      /**
3794       * Retrieve page templates.
3795       *
3796       * @since 2.6.0
3797       *
 
Line Code
3957           $attachment_id     = (int) $args[3];
3958
3959           if ( !$user = $this->login($username, $password) )
3960                return $this->error;
3961
3962           if ( !current_user_can( 'upload_files' ) )
3963                return new IXR_Error( 403, __( 'Sorry, you are not allowed to upload files.' ) );
3964
3965           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
3966           do_action( 'xmlrpc_call', 'wp.getMediaItem' );
3967
3968           if ( ! $attachment = get_post($attachment_id) )
3969                return new IXR_Error( 404, __( 'Invalid attachment ID.' ) );
3970
3971           return $this->_prepare_media_item( $attachment );
3972      }
3973
3974      /**
3975       * Retrieves a collection of media library items (or attachments)
 
Line Code
4005           $struct          = isset( $args[3] ) ? $args[3] : array() ;
4006
4007           if ( !$user = $this->login($username, $password) )
4008                return $this->error;
4009
4010           if ( !current_user_can( 'upload_files' ) )
4011                return new IXR_Error( 401, __( 'Sorry, you are not allowed to upload files.' ) );
4012
4013           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
4014           do_action( 'xmlrpc_call', 'wp.getMediaLibrary' );
4015
4016           $parent_id = ( isset($struct['parent_id']) ) ? absint($struct['parent_id']) : '' ;
4017           $mime_type = ( isset($struct['mime_type']) ) ? $struct['mime_type'] : '' ;
4018           $offset = ( isset($struct['offset']) ) ? absint($struct['offset']) : 0 ;
4019           $number = ( isset($struct['number']) ) ? absint($struct['number']) : -1 ;
4020
4021           $attachments = get_posts( array('post_type' => 'attachment', 'post_parent' => $parent_id, 'offset' => $offset, 'numberposts' => $number, 'post_mime_type' => $mime_type ) );
4022
4023           $attachments_struct = array();
 
Line Code
4049           $password = $args[2];
4050
4051           if ( !$user = $this->login( $username, $password ) )
4052                return $this->error;
4053
4054           if ( !current_user_can( 'edit_posts' ) )
4055                return new IXR_Error( 403, __( 'Sorry, you are not allowed access to details about this site.' ) );
4056
4057           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
4058           do_action( 'xmlrpc_call', 'wp.getPostFormats' );
4059
4060           $formats = get_post_format_strings();
4061
4062           // find out if they want a list of currently supports formats
4063           if ( isset( $args[3] ) && is_array( $args[3] ) ) {
4064                if ( $args[3]['show-supported'] ) {
4065                     if ( current_theme_supports( 'post-formats' ) ) {
4066                          $supported = get_theme_support( 'post-formats' );
4067
 
Line Code
4126                 * @param string $method The method name.
4127                 */
4128                $fields = apply_filters( 'xmlrpc_default_posttype_fields', array( 'labels', 'cap', 'taxonomies' ), 'wp.getPostType' );
4129           }
4130
4131           if ( !$user = $this->login( $username, $password ) )
4132                return $this->error;
4133
4134           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
4135           do_action( 'xmlrpc_call', 'wp.getPostType' );
4136
4137           if ( ! post_type_exists( $post_type_name ) )
4138                return new IXR_Error( 403, __( 'Invalid post type.' ) );
4139
4140           $post_type = get_post_type_object( $post_type_name );
4141
4142           if ( ! current_user_can( $post_type->cap->edit_posts ) )
4143                return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit posts in this post type.' ) );
4144
 
Line Code
4178           } else {
4179                /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
4180                $fields = apply_filters( 'xmlrpc_default_posttype_fields', array( 'labels', 'cap', 'taxonomies' ), 'wp.getPostTypes' );
4181           }
4182
4183           if ( ! $user = $this->login( $username, $password ) )
4184                return $this->error;
4185
4186           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
4187           do_action( 'xmlrpc_call', 'wp.getPostTypes' );
4188
4189           $post_types = get_post_types( $filter, 'objects' );
4190
4191           $struct = array();
4192
4193           foreach ( $post_types as $post_type ) {
4194                if ( ! current_user_can( $post_type->cap->edit_posts ) )
4195                     continue;
4196
 
Line Code
4244                 * @param string $method The method name.
4245                 */
4246                $fields = apply_filters( 'xmlrpc_default_revision_fields', array( 'post_date', 'post_date_gmt' ), 'wp.getRevisions' );
4247           }
4248
4249           if ( ! $user = $this->login( $username, $password ) )
4250                return $this->error;
4251
4252           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
4253           do_action( 'xmlrpc_call', 'wp.getRevisions' );
4254
4255           if ( ! $post = get_post( $post_id ) )
4256                return new IXR_Error( 404, __( 'Invalid post ID.' ) );
4257
4258           if ( ! current_user_can( 'edit_post', $post_id ) )
4259                return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit posts.' ) );
4260
4261           // Check if revisions are enabled.
4262           if ( ! wp_revisions_enabled( $post ) )
 
Line Code
4308
4309           $username    = $args[1];
4310           $password    = $args[2];
4311           $revision_id = (int) $args[3];
4312
4313           if ( ! $user = $this->login( $username, $password ) )
4314                return $this->error;
4315
4316           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
4317           do_action( 'xmlrpc_call', 'wp.restoreRevision' );
4318
4319           if ( ! $revision = wp_get_post_revision( $revision_id ) )
4320                return new IXR_Error( 404, __( 'Invalid post ID.' ) );
4321
4322           if ( wp_is_post_autosave( $revision ) )
4323                return new IXR_Error( 404, __( 'Invalid post ID.' ) );
4324
4325           if ( ! $post = get_post( $revision->post_parent ) )
4326                return new IXR_Error( 404, __( 'Invalid post ID.' ) );
 
Line Code
4369           $this->escape($args);
4370
4371           $username = $args[1];
4372           $password = $args[2];
4373
4374           if ( !$user = $this->login($username, $password) )
4375                return $this->error;
4376
4377           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
4378           do_action( 'xmlrpc_call', 'blogger.getUsersBlogs' );
4379
4380           $is_admin = current_user_can('manage_options');
4381
4382           $struct = array(
4383                'isAdmin'  => $is_admin,
4384                'url'      => get_option('home') . '/',
4385                'blogid'   => '1',
4386                'blogName' => get_option('blogname'),
4387                'xmlrpc'   => site_url( 'xmlrpc.php', 'rpc' ),
 
Line Code
4451           $password = $args[2];
4452
4453           if ( !$user = $this->login($username, $password) )
4454                return $this->error;
4455
4456           if ( !current_user_can( 'edit_posts' ) )
4457                return new IXR_Error( 401, __( 'Sorry, you are not allowed to access user data on this site.' ) );
4458
4459           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
4460           do_action( 'xmlrpc_call', 'blogger.getUserInfo' );
4461
4462           $struct = array(
4463                'nickname'  => $user->nickname,
4464                'userid'    => $user->ID,
4465                'url'       => $user->user_url,
4466                'lastname'  => $user->last_name,
4467                'firstname' => $user->first_name
4468           );
4469
 
Line Code
4497
4498           $post_data = get_post($post_ID, ARRAY_A);
4499           if ( ! $post_data )
4500                return new IXR_Error( 404, __( 'Invalid post ID.' ) );
4501
4502           if ( !current_user_can( 'edit_post', $post_ID ) )
4503                return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit this post.' ) );
4504
4505           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
4506           do_action( 'xmlrpc_call', 'blogger.getPost' );
4507
4508           $categories = implode(',', wp_get_post_categories($post_ID));
4509
4510           $content  = '<title>'.wp_unslash($post_data['post_title']).'</title>';
4511           $content .= '<category>'.$categories.'</category>';
4512           $content .= wp_unslash($post_data['post_content']);
4513
4514           $struct = array(
4515                'userid'    => $post_data['post_author'],
 
Line Code
4550                $query = array();
4551
4552           if ( !$user = $this->login($username, $password) )
4553                return $this->error;
4554
4555           if ( ! current_user_can( 'edit_posts' ) )
4556                return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit posts.' ) );
4557
4558           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
4559           do_action( 'xmlrpc_call', 'blogger.getRecentPosts' );
4560
4561           $posts_list = wp_get_recent_posts( $query );
4562
4563           if ( !$posts_list ) {
4564                $this->error = new IXR_Error(500, __('Either there are no posts, or something went wrong.'));
4565                return $this->error;
4566           }
4567
4568           $recent_posts = array();
 
Line Code
4637           $username = $args[2];
4638           $password = $args[3];
4639           $content  = $args[4];
4640           $publish  = $args[5];
4641
4642           if ( !$user = $this->login($username, $password) )
4643                return $this->error;
4644
4645           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
4646           do_action( 'xmlrpc_call', 'blogger.newPost' );
4647
4648           $cap = ($publish) ? 'publish_posts' : 'edit_posts';
4649           if ( ! current_user_can( get_post_type_object( 'post' )->cap->create_posts ) || !current_user_can($cap) )
4650                return new IXR_Error(401, __('Sorry, you are not allowed to post on this site.'));
4651
4652           $post_status = ($publish) ? 'publish' : 'draft';
4653
4654           $post_author = $user->ID;
4655
 
Line Code
4710           $password = $args[3];
4711           $content  = $args[4];
4712           $publish  = $args[5];
4713
4714           if ( ! $user = $this->login( $username, $password ) ) {
4715                return $this->error;
4716           }
4717
4718           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
4719           do_action( 'xmlrpc_call', 'blogger.editPost' );
4720
4721           $actual_post = get_post( $post_ID, ARRAY_A );
4722
4723           if ( ! $actual_post || $actual_post['post_type'] != 'post' ) {
4724                return new IXR_Error( 404, __( 'Sorry, no such post.' ) );
4725           }
4726
4727           $this->escape($actual_post);
4728
 
Line Code
4782
4783           $post_ID  = (int) $args[1];
4784           $username = $args[2];
4785           $password = $args[3];
4786
4787           if ( !$user = $this->login($username, $password) )
4788                return $this->error;
4789
4790           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
4791           do_action( 'xmlrpc_call', 'blogger.deletePost' );
4792
4793           $actual_post = get_post( $post_ID, ARRAY_A );
4794
4795           if ( ! $actual_post || $actual_post['post_type'] != 'post' ) {
4796                return new IXR_Error( 404, __( 'Sorry, no such post.' ) );
4797           }
4798
4799           if ( ! current_user_can( 'delete_post', $post_ID ) ) {
4800                return new IXR_Error( 401, __( 'Sorry, you are not allowed to delete this post.' ) );
 
Line Code
4867           $username       = $args[1];
4868           $password       = $args[2];
4869           $content_struct = $args[3];
4870           $publish        = isset( $args[4] ) ? $args[4] : 0;
4871
4872           if ( !$user = $this->login($username, $password) )
4873                return $this->error;
4874
4875           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
4876           do_action( 'xmlrpc_call', 'metaWeblog.newPost' );
4877
4878           $page_template = '';
4879           if ( !empty( $content_struct['post_type'] ) ) {
4880                if ( $content_struct['post_type'] == 'page' ) {
4881                     if ( $publish )
4882                          $cap  = 'publish_pages';
4883                     elseif ( isset( $content_struct['page_status'] ) && 'publish' == $content_struct['page_status'] )
4884                          $cap  = 'publish_pages';
4885                     else
 
Line Code
5213           $username       = $args[1];
5214           $password       = $args[2];
5215           $content_struct = $args[3];
5216           $publish        = isset( $args[4] ) ? $args[4] : 0;
5217
5218           if ( ! $user = $this->login($username, $password) )
5219                return $this->error;
5220
5221           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
5222           do_action( 'xmlrpc_call', 'metaWeblog.editPost' );
5223
5224           $postdata = get_post( $post_ID, ARRAY_A );
5225
5226           /*
5227            * If there is no post data for the give post id, stop now and return an error.
5228            * Otherwise a new post will be created (which was the old behavior).
5229            */
5230           if ( ! $postdata || empty( $postdata[ 'ID' ] ) )
5231                return new IXR_Error( 404, __( 'Invalid post ID.' ) );
 
Line Code
5525
5526           $postdata = get_post($post_ID, ARRAY_A);
5527           if ( ! $postdata )
5528                return new IXR_Error( 404, __( 'Invalid post ID.' ) );
5529
5530           if ( !current_user_can( 'edit_post', $post_ID ) )
5531                return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit this post.' ) );
5532
5533           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
5534           do_action( 'xmlrpc_call', 'metaWeblog.getPost' );
5535
5536           if ($postdata['post_date'] != '') {
5537                $post_date = $this->_convert_date( $postdata['post_date'] );
5538                $post_date_gmt = $this->_convert_date_gmt( $postdata['post_date_gmt'],  $postdata['post_date'] );
5539                $post_modified = $this->_convert_date( $postdata['post_modified'] );
5540                $post_modified_gmt = $this->_convert_date_gmt( $postdata['post_modified_gmt'], $postdata['post_modified'] );
5541
5542                $categories = array();
5543                $catids = wp_get_post_categories($post_ID);
 
Line Code
5655                $query = array();
5656
5657           if ( !$user = $this->login($username, $password) )
5658                return $this->error;
5659
5660           if ( ! current_user_can( 'edit_posts' ) )
5661                return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit posts.' ) );
5662
5663           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
5664           do_action( 'xmlrpc_call', 'metaWeblog.getRecentPosts' );
5665
5666           $posts_list = wp_get_recent_posts( $query );
5667
5668           if ( !$posts_list )
5669                return array();
5670
5671           $recent_posts = array();
5672           foreach ($posts_list as $entry) {
5673                if ( !current_user_can( 'edit_post', $entry['ID'] ) )
 
Line Code
5768           $password = $args[2];
5769
5770           if ( !$user = $this->login($username, $password) )
5771                return $this->error;
5772
5773           if ( !current_user_can( 'edit_posts' ) )
5774                return new IXR_Error( 401, __( 'Sorry, you must be able to edit posts on this site in order to view categories.' ) );
5775
5776           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
5777           do_action( 'xmlrpc_call', 'metaWeblog.getCategories' );
5778
5779           $categories_struct = array();
5780
5781           if ( $cats = get_categories(array('get' => 'all')) ) {
5782                foreach ( $cats as $cat ) {
5783                     $struct = array();
5784                     $struct['categoryId'] = $cat->term_id;
5785                     $struct['parentId'] = $cat->parent;
5786                     $struct['description'] = $cat->name;
 
Line Code
5826
5827           $name = sanitize_file_name( $data['name'] );
5828           $type = $data['type'];
5829           $bits = $data['bits'];
5830
5831           if ( !$user = $this->login($username, $password) )
5832                return $this->error;
5833
5834           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
5835           do_action( 'xmlrpc_call', 'metaWeblog.newMediaObject' );
5836
5837           if ( !current_user_can('upload_files') ) {
5838                $this->error = new IXR_Error( 401, __( 'Sorry, you are not allowed to upload files.' ) );
5839                return $this->error;
5840           }
5841
5842           if ( is_multisite() && upload_is_user_over_quota( false ) ) {
5843                $this->error = new IXR_Error( 401, __( 'Sorry, you have used your space allocation.' ) );
5844                return $this->error;
 
Line Code
5932           if ( isset( $args[3] ) )
5933                $query = array( 'numberposts' => absint( $args[3] ) );
5934           else
5935                $query = array();
5936
5937           if ( !$user = $this->login($username, $password) )
5938                return $this->error;
5939
5940           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
5941           do_action( 'xmlrpc_call', 'mt.getRecentPostTitles' );
5942
5943           $posts_list = wp_get_recent_posts( $query );
5944
5945           if ( !$posts_list ) {
5946                $this->error = new IXR_Error(500, __('Either there are no posts, or something went wrong.'));
5947                return $this->error;
5948           }
5949
5950           $recent_posts = array();
 
Line Code
5990           $password = $args[2];
5991
5992           if ( !$user = $this->login($username, $password) )
5993                return $this->error;
5994
5995           if ( !current_user_can( 'edit_posts' ) )
5996                return new IXR_Error( 401, __( 'Sorry, you must be able to edit posts on this site in order to view categories.' ) );
5997
5998           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
5999           do_action( 'xmlrpc_call', 'mt.getCategoryList' );
6000
6001           $categories_struct = array();
6002
6003           if ( $cats = get_categories(array('hide_empty' => 0, 'hierarchical' => 0)) ) {
6004                foreach ( $cats as $cat ) {
6005                     $struct = array();
6006                     $struct['categoryId'] = $cat->term_id;
6007                     $struct['categoryName'] = $cat->name;
6008
 
Line Code
6038                return $this->error;
6039
6040           if ( ! get_post( $post_ID ) )
6041                return new IXR_Error( 404, __( 'Invalid post ID.' ) );
6042
6043           if ( !current_user_can( 'edit_post', $post_ID ) )
6044                return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit this post.' ) );
6045
6046           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
6047           do_action( 'xmlrpc_call', 'mt.getPostCategories' );
6048
6049           $categories = array();
6050           $catids = wp_get_post_categories(intval($post_ID));
6051           // first listed category will be the primary category
6052           $isPrimary = true;
6053           foreach ( $catids as $catid ) {
6054                $categories[] = array(
6055                     'categoryName' => get_cat_name($catid),
6056                     'categoryId' => (string) $catid,
 
Line Code
6083           $post_ID    = (int) $args[0];
6084           $username   = $args[1];
6085           $password   = $args[2];
6086           $categories = $args[3];
6087
6088           if ( !$user = $this->login($username, $password) )
6089                return $this->error;
6090
6091           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
6092           do_action( 'xmlrpc_call', 'mt.setPostCategories' );
6093
6094           if ( ! get_post( $post_ID ) )
6095                return new IXR_Error( 404, __( 'Invalid post ID.' ) );
6096
6097           if ( !current_user_can('edit_post', $post_ID) )
6098                return new IXR_Error(401, __('Sorry, you are not allowed to edit this post.'));
6099
6100           $catids = array();
6101           foreach ( $categories as $cat ) {
 
Line Code
6110      /**
6111       * Retrieve an array of methods supported by this server.
6112       *
6113       * @since 1.5.0
6114       *
6115       * @return array
6116       */
6117      public function mt_supportedMethods() {
6118           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
6119           do_action( 'xmlrpc_call', 'mt.supportedMethods' );
6120
6121           return array_keys( $this->methods );
6122      }
6123
6124      /**
6125       * Retrieve an empty array because we don't support per-post text filters.
6126       *
6127       * @since 1.5.0
6128       */
6129      public function mt_supportedTextFilters() {
6130           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
6131           do_action( 'xmlrpc_call', 'mt.supportedTextFilters' );
6132
6133           /**
6134            * Filters the MoveableType text filters list for XML-RPC.
6135            *
6136            * @since 2.2.0
6137            *
6138            * @param array $filters An array of text filters.
6139            */
6140           return apply_filters( 'xmlrpc_text_filters', array() );
 
Line Code
6148       * @global wpdb $wpdb WordPress database abstraction object.
6149       *
6150       * @param int $post_ID
6151       * @return array|IXR_Error
6152       */
6153      public function mt_getTrackbackPings( $post_ID ) {
6154           global $wpdb;
6155
6156           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
6157           do_action( 'xmlrpc_call', 'mt.getTrackbackPings' );
6158
6159           $actual_post = get_post($post_ID, ARRAY_A);
6160
6161           if ( !$actual_post )
6162                return new IXR_Error(404, __('Sorry, no such post.'));
6163
6164           $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) );
6165
6166           if ( !$comments )
 
Line Code
6201
6202           $post_ID  = (int) $args[0];
6203           $username = $args[1];
6204           $password = $args[2];
6205
6206           if ( !$user = $this->login($username, $password) )
6207                return $this->error;
6208
6209           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
6210           do_action( 'xmlrpc_call', 'mt.publishPost' );
6211
6212           $postdata = get_post($post_ID, ARRAY_A);
6213           if ( ! $postdata )
6214                return new IXR_Error( 404, __( 'Invalid post ID.' ) );
6215
6216           if ( !current_user_can('publish_posts') || !current_user_can('edit_post', $post_ID) )
6217                return new IXR_Error(401, __('Sorry, you are not allowed to publish this post.'));
6218
6219           $postdata['post_status'] = 'publish';
 
Line Code
6241       *     @type string $pagelinkedfrom
6242       *     @type string $pagelinkedto
6243       * }
6244       * @return string|IXR_Error
6245       */
6246      public function pingback_ping( $args ) {
6247           global $wpdb;
6248
6249           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
6250           do_action( 'xmlrpc_call', 'pingback.ping' );
6251
6252           $this->escape( $args );
6253
6254           $pagelinkedfrom = str_replace( '&amp;', '&', $args[0] );
6255           $pagelinkedto = str_replace( '&amp;', '&', $args[1] );
6256           $pagelinkedto = str_replace( '&', '&amp;', $pagelinkedto );
6257
6258           /**
6259            * Filters the pingback source URI.
 
Line Code
6453       * @global wpdb $wpdb WordPress database abstraction object.
6454       *
6455       * @param string $url
6456       * @return array|IXR_Error
6457       */
6458      public function pingback_extensions_getPingbacks( $url ) {
6459           global $wpdb;
6460
6461           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
6462           do_action( 'xmlrpc_call', 'pingback.extensions.getPingbacks' );
6463
6464           $url = $this->escape( $url );
6465
6466           $post_ID = url_to_postid($url);
6467           if ( !$post_ID ) {
6468                // We aren't sure that the resource is available and/or pingback enabled
6469                  return $this->pingback_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.' ) );
6470           }
6471