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
569            * the method logic begins.
570            *
571            * All built-in XML-RPC methods use the action xmlrpc_call, with a parameter
572            * equal to the method's name, e.g., wp.getUsersBlogs, wp.newPost, etc.
573            *
574            * @since 2.5.0
575            *
576            * @param string $name The method name.
577            */
578           do_action( 'xmlrpc_call', 'wp.getUsersBlogs' );
579
580           $blogs = (array) get_blogs_of_user( $user->ID );
581           $struct = array();
582
583           foreach ( $blogs as $blog ) {
584                // Don't include blogs that aren't hosted at this site.
585                if ( $blog->site_id != get_current_site()->id )
586                     continue;
587
 
Line Code
1168           if ( isset( $content_struct['post_date_gmt'] ) && ! ( $content_struct['post_date_gmt'] instanceof IXR_Date ) ) {
1169                if ( $content_struct['post_date_gmt'] == '0000-00-00 00:00:00' || isset( $content_struct['post_date'] ) ) {
1170                     unset( $content_struct['post_date_gmt'] );
1171                } else {
1172                     $content_struct['post_date_gmt'] = $this->_convert_date( $content_struct['post_date_gmt'] );
1173                }
1174           }
1175
1176           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
1177           do_action( 'xmlrpc_call', 'wp.newPost' );
1178
1179           unset( $content_struct['ID'] );
1180
1181           return $this->_insert_post( $user, $content_struct );
1182      }
1183
1184      /**
1185       * Helper method for filtering out elements from an array.
1186       *
 
Line Code
1498           $username       = $args[1];
1499           $password       = $args[2];
1500           $post_id        = (int) $args[3];
1501           $content_struct = $args[4];
1502
1503           if ( ! $user = $this->login( $username, $password ) )
1504                return $this->error;
1505
1506           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
1507           do_action( 'xmlrpc_call', 'wp.editPost' );
1508
1509           $post = get_post( $post_id, ARRAY_A );
1510
1511           if ( empty( $post['ID'] ) )
1512                return new IXR_Error( 404, __( 'Invalid post ID.' ) );
1513
1514           if ( isset( $content_struct['if_not_modified_since'] ) ) {
1515                // If the post has been modified since the date provided, return an error.
1516                if ( mysql2date( 'U', $post['post_modified_gmt'] ) > $content_struct['if_not_modified_since']->getTimestamp() ) {
 
Line Code
1565
1566           $username   = $args[1];
1567           $password   = $args[2];
1568           $post_id    = (int) $args[3];
1569
1570           if ( ! $user = $this->login( $username, $password ) )
1571                return $this->error;
1572
1573           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
1574           do_action( 'xmlrpc_call', 'wp.deletePost' );
1575
1576           $post = get_post( $post_id, ARRAY_A );
1577           if ( empty( $post['ID'] ) )
1578                return new IXR_Error( 404, __( 'Invalid post ID.' ) );
1579
1580           if ( ! current_user_can( 'delete_post', $post_id ) )
1581                return new IXR_Error( 401, __( 'Sorry, you are not allowed to delete this post.' ) );
1582
1583           $result = wp_delete_post( $post_id );
 
Line Code
1659                 * @param string $method Method name.
1660                 */
1661                $fields = apply_filters( 'xmlrpc_default_post_fields', array( 'post', 'terms', 'custom_fields' ), 'wp.getPost' );
1662           }
1663
1664           if ( ! $user = $this->login( $username, $password ) )
1665                return $this->error;
1666
1667           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
1668           do_action( 'xmlrpc_call', 'wp.getPost' );
1669
1670           $post = get_post( $post_id, ARRAY_A );
1671
1672           if ( empty( $post['ID'] ) )
1673                return new IXR_Error( 404, __( 'Invalid post ID.' ) );
1674
1675           if ( ! current_user_can( 'edit_post', $post_id ) )
1676                return new IXR_Error( 401, __( 'Sorry, you cannot edit this post.' ) );
1677
 
Line Code
1715           } else {
1716                /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
1717                $fields = apply_filters( 'xmlrpc_default_post_fields', array( 'post', 'terms', 'custom_fields' ), 'wp.getPosts' );
1718           }
1719
1720           if ( ! $user = $this->login( $username, $password ) )
1721                return $this->error;
1722
1723           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
1724           do_action( 'xmlrpc_call', 'wp.getPosts' );
1725
1726           $query = array();
1727
1728           if ( isset( $filter['post_type'] ) ) {
1729                $post_type = get_post_type_object( $filter['post_type'] );
1730                if ( ! ( (bool) $post_type ) )
1731                     return new IXR_Error( 403, __( 'The post type specified is not valid' ) );
1732           } else {
1733                $post_type = get_post_type_object( 'post' );
 
Line Code
1803
1804           $username       = $args[1];
1805           $password       = $args[2];
1806           $content_struct = $args[3];
1807
1808           if ( ! $user = $this->login( $username, $password ) )
1809                return $this->error;
1810
1811           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
1812           do_action( 'xmlrpc_call', 'wp.newTerm' );
1813
1814           if ( ! taxonomy_exists( $content_struct['taxonomy'] ) )
1815                return new IXR_Error( 403, __( 'Invalid taxonomy' ) );
1816
1817           $taxonomy = get_taxonomy( $content_struct['taxonomy'] );
1818
1819           if ( ! current_user_can( $taxonomy->cap->manage_terms ) )
1820                return new IXR_Error( 401, __( 'You are not allowed to create terms in this taxonomy.' ) );
1821
 
Line Code
1890           $username       = $args[1];
1891           $password       = $args[2];
1892           $term_id        = (int) $args[3];
1893           $content_struct = $args[4];
1894
1895           if ( ! $user = $this->login( $username, $password ) )
1896                return $this->error;
1897
1898           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
1899           do_action( 'xmlrpc_call', 'wp.editTerm' );
1900
1901           if ( ! taxonomy_exists( $content_struct['taxonomy'] ) )
1902                return new IXR_Error( 403, __( 'Invalid taxonomy' ) );
1903
1904           $taxonomy = get_taxonomy( $content_struct['taxonomy'] );
1905
1906           if ( ! current_user_can( $taxonomy->cap->edit_terms ) )
1907                return new IXR_Error( 401, __( 'You are not allowed to edit terms in this taxonomy.' ) );
1908
 
Line Code
1986           $username           = $args[1];
1987           $password           = $args[2];
1988           $taxonomy           = $args[3];
1989           $term_id            = (int) $args[4];
1990
1991           if ( ! $user = $this->login( $username, $password ) )
1992                return $this->error;
1993
1994           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
1995           do_action( 'xmlrpc_call', 'wp.deleteTerm' );
1996
1997           if ( ! taxonomy_exists( $taxonomy ) )
1998                return new IXR_Error( 403, __( 'Invalid taxonomy' ) );
1999
2000           $taxonomy = get_taxonomy( $taxonomy );
2001
2002           if ( ! current_user_can( $taxonomy->cap->delete_terms ) )
2003                return new IXR_Error( 401, __( 'You are not allowed to delete terms in this taxonomy.' ) );
2004
 
Line Code
2057           $username           = $args[1];
2058           $password           = $args[2];
2059           $taxonomy           = $args[3];
2060           $term_id            = (int) $args[4];
2061
2062           if ( ! $user = $this->login( $username, $password ) )
2063                return $this->error;
2064
2065           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2066           do_action( 'xmlrpc_call', 'wp.getTerm' );
2067
2068           if ( ! taxonomy_exists( $taxonomy ) )
2069                return new IXR_Error( 403, __( 'Invalid taxonomy' ) );
2070
2071           $taxonomy = get_taxonomy( $taxonomy );
2072
2073           if ( ! current_user_can( $taxonomy->cap->assign_terms ) )
2074                return new IXR_Error( 401, __( 'You are not allowed to assign terms in this taxonomy.' ) );
2075
 
Line Code
2115           $username       = $args[1];
2116           $password       = $args[2];
2117           $taxonomy       = $args[3];
2118           $filter         = isset( $args[4] ) ? $args[4] : array();
2119
2120           if ( ! $user = $this->login( $username, $password ) )
2121                return $this->error;
2122
2123           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2124           do_action( 'xmlrpc_call', 'wp.getTerms' );
2125
2126           if ( ! taxonomy_exists( $taxonomy ) )
2127                return new IXR_Error( 403, __( 'Invalid taxonomy' ) );
2128
2129           $taxonomy = get_taxonomy( $taxonomy );
2130
2131           if ( ! current_user_can( $taxonomy->cap->assign_terms ) )
2132                return new IXR_Error( 401, __( 'You are not allowed to assign terms in this taxonomy.' ) );
2133
 
Line Code
2210                 * @param string $method The method name.
2211                 */
2212                $fields = apply_filters( 'xmlrpc_default_taxonomy_fields', array( 'labels', 'cap', 'object_type' ), 'wp.getTaxonomy' );
2213           }
2214
2215           if ( ! $user = $this->login( $username, $password ) )
2216                return $this->error;
2217
2218           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2219           do_action( 'xmlrpc_call', 'wp.getTaxonomy' );
2220
2221           if ( ! taxonomy_exists( $taxonomy ) )
2222                return new IXR_Error( 403, __( 'Invalid taxonomy' ) );
2223
2224           $taxonomy = get_taxonomy( $taxonomy );
2225
2226           if ( ! current_user_can( $taxonomy->cap->assign_terms ) )
2227                return new IXR_Error( 401, __( 'You are not allowed to assign terms in this taxonomy.' ) );
2228
 
Line Code
2263           } else {
2264                /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2265                $fields = apply_filters( 'xmlrpc_default_taxonomy_fields', array( 'labels', 'cap', 'object_type' ), 'wp.getTaxonomies' );
2266           }
2267
2268           if ( ! $user = $this->login( $username, $password ) )
2269                return $this->error;
2270
2271           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2272           do_action( 'xmlrpc_call', 'wp.getTaxonomies' );
2273
2274           $taxonomies = get_taxonomies( $filter, 'objects' );
2275
2276           // holds all the taxonomy data
2277           $struct = array();
2278
2279           foreach ( $taxonomies as $taxonomy ) {
2280                // capability check for post_types
2281                if ( ! current_user_can( $taxonomy->cap->assign_terms ) )
 
Line Code
2345                 * @param string $method The method name.
2346                 */
2347                $fields = apply_filters( 'xmlrpc_default_user_fields', array( 'all' ), 'wp.getUser' );
2348           }
2349
2350           if ( ! $user = $this->login( $username, $password ) )
2351                return $this->error;
2352
2353           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2354           do_action( 'xmlrpc_call', 'wp.getUser' );
2355
2356           if ( ! current_user_can( 'edit_user', $user_id ) )
2357                return new IXR_Error( 401, __( 'Sorry, you cannot edit users.' ) );
2358
2359           $user_data = get_userdata( $user_id );
2360
2361           if ( ! $user_data )
2362                return new IXR_Error( 404, __( 'Invalid user ID.' ) );
2363
 
Line Code
2403           } else {
2404                /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2405                $fields = apply_filters( 'xmlrpc_default_user_fields', array( 'all' ), 'wp.getUsers' );
2406           }
2407
2408           if ( ! $user = $this->login( $username, $password ) )
2409                return $this->error;
2410
2411           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2412           do_action( 'xmlrpc_call', 'wp.getUsers' );
2413
2414           if ( ! current_user_can( 'list_users' ) )
2415                return new IXR_Error( 401, __( 'Sorry, you cannot list users.' ) );
2416
2417           $query = array( 'fields' => 'all_with_meta' );
2418
2419           $query['number'] = ( isset( $filter['number'] ) ) ? absint( $filter['number'] ) : 50;
2420           $query['offset'] = ( isset( $filter['offset'] ) ) ? absint( $filter['offset'] ) : 0;
2421
 
Line Code
2476           } else {
2477                /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2478                $fields = apply_filters( 'xmlrpc_default_user_fields', array( 'all' ), 'wp.getProfile' );
2479           }
2480
2481           if ( ! $user = $this->login( $username, $password ) )
2482                return $this->error;
2483
2484           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2485           do_action( 'xmlrpc_call', 'wp.getProfile' );
2486
2487           if ( ! current_user_can( 'edit_user', $user->ID ) )
2488                return new IXR_Error( 401, __( 'Sorry, you cannot edit your profile.' ) );
2489
2490           $user_data = get_userdata( $user->ID );
2491
2492           return $this->_prepare_user( $user_data, $fields );
2493      }
2494
 
Line Code
2522
2523           $username       = $args[1];
2524           $password       = $args[2];
2525           $content_struct = $args[3];
2526
2527           if ( ! $user = $this->login( $username, $password ) )
2528                return $this->error;
2529
2530           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2531           do_action( 'xmlrpc_call', 'wp.editProfile' );
2532
2533           if ( ! current_user_can( 'edit_user', $user->ID ) )
2534                return new IXR_Error( 401, __( 'Sorry, you cannot edit your profile.' ) );
2535
2536           // holds data of the user
2537           $user_data = array();
2538           $user_data['ID'] = $user->ID;
2539
2540           // only set the user details if it was given
 
Line Code
2598
2599           $page = get_post($page_id);
2600           if ( ! $page )
2601                return new IXR_Error( 404, __( 'Invalid post ID.' ) );
2602
2603           if ( !current_user_can( 'edit_page', $page_id ) )
2604                return new IXR_Error( 401, __( 'Sorry, you cannot edit this page.' ) );
2605
2606           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2607           do_action( 'xmlrpc_call', 'wp.getPage' );
2608
2609           // If we found the page then format the data.
2610           if ( $page->ID && ($page->post_type == 'page') ) {
2611                return $this->_prepare_page( $page );
2612           }
2613           // If the page doesn't exist indicate that.
2614           else {
2615                return new IXR_Error( 404, __( 'Sorry, no such page.' ) );
2616           }
 
Line Code
2639           $num_pages = isset($args[3]) ? (int) $args[3] : 10;
2640
2641           if ( !$user = $this->login($username, $password) )
2642                return $this->error;
2643
2644           if ( !current_user_can( 'edit_pages' ) )
2645                return new IXR_Error( 401, __( 'Sorry, you cannot edit pages.' ) );
2646
2647           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2648           do_action( 'xmlrpc_call', 'wp.getPages' );
2649
2650           $pages = get_posts( array('post_type' => 'page', 'post_status' => 'any', 'numberposts' => $num_pages) );
2651           $num_pages = count($pages);
2652
2653           // If we have pages, put together their info.
2654           if ( $num_pages >= 1 ) {
2655                $pages_struct = array();
2656
2657                foreach ($pages as $page) {
 
Line Code
2685      public function wp_newPage( $args ) {
2686           // Items not escaped here will be escaped in newPost.
2687           $username = $this->escape( $args[1] );
2688           $password = $this->escape( $args[2] );
2689
2690           if ( !$user = $this->login($username, $password) )
2691                return $this->error;
2692
2693           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2694           do_action( 'xmlrpc_call', 'wp.newPage' );
2695
2696           // Mark this as content for a page.
2697           $args[3]["post_type"] = 'page';
2698
2699           // Let mw_newPost do all of the heavy lifting.
2700           return $this->mw_newPost( $args );
2701      }
2702
2703      /**
 
Line Code
2720
2721           $username = $args[1];
2722           $password = $args[2];
2723           $page_id  = (int) $args[3];
2724
2725           if ( !$user = $this->login($username, $password) )
2726                return $this->error;
2727
2728           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2729           do_action( 'xmlrpc_call', 'wp.deletePage' );
2730
2731           // Get the current page based on the page_id and
2732           // make sure it is a page and not a post.
2733           $actual_page = get_post($page_id, ARRAY_A);
2734           if ( !$actual_page || ($actual_page['post_type'] != 'page') )
2735                return new IXR_Error( 404, __( 'Sorry, no such page.' ) );
2736
2737           // Make sure the user can delete pages.
2738           if ( !current_user_can('delete_page', $page_id) )
 
Line Code
2783
2784           $escaped_username = $this->escape( $username );
2785           $escaped_password = $this->escape( $password );
2786
2787           if ( !$user = $this->login( $escaped_username, $escaped_password ) ) {
2788                return $this->error;
2789           }
2790
2791           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2792           do_action( 'xmlrpc_call', 'wp.editPage' );
2793
2794           // Get the page data and make sure it is a page.
2795           $actual_page = get_post($page_id, ARRAY_A);
2796           if ( !$actual_page || ($actual_page['post_type'] != 'page') )
2797                return new IXR_Error( 404, __( 'Sorry, no such page.' ) );
2798
2799           // Make sure the user is allowed to edit pages.
2800           if ( !current_user_can('edit_page', $page_id) )
2801                return new IXR_Error( 401, __( 'Sorry, you do not have the right to edit this page.' ) );
 
Line Code
2841           $password = $args[2];
2842
2843           if ( !$user = $this->login($username, $password) )
2844                return $this->error;
2845
2846           if ( !current_user_can( 'edit_pages' ) )
2847                return new IXR_Error( 401, __( 'Sorry, you cannot edit pages.' ) );
2848
2849           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2850           do_action( 'xmlrpc_call', 'wp.getPageList' );
2851
2852           // Get list of pages ids and titles
2853           $page_list = $wpdb->get_results("
2854                SELECT ID page_id,
2855                     post_title page_title,
2856                     post_parent page_parent_id,
2857                     post_date_gmt,
2858                     post_date,
2859                     post_status
 
Line Code
2897           $password = $args[2];
2898
2899           if ( !$user = $this->login($username, $password) )
2900                return $this->error;
2901
2902           if ( !current_user_can('edit_posts') )
2903                return new IXR_Error( 401, __( 'Sorry, you cannot edit posts on this site.' ) );
2904
2905           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2906           do_action( 'xmlrpc_call', 'wp.getAuthors' );
2907
2908           $authors = array();
2909           foreach ( get_users( array( 'fields' => array('ID','user_login','display_name') ) ) as $user ) {
2910                $authors[] = array(
2911                     'user_id'       => $user->ID,
2912                     'user_login'    => $user->user_login,
2913                     'display_name'  => $user->display_name
2914                );
2915           }
 
Line Code
2938           $password = $args[2];
2939
2940           if ( !$user = $this->login($username, $password) )
2941                return $this->error;
2942
2943           if ( !current_user_can( 'edit_posts' ) )
2944                return new IXR_Error( 401, __( 'Sorry, you must be able to edit posts on this site in order to view tags.' ) );
2945
2946           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2947           do_action( 'xmlrpc_call', 'wp.getKeywords' );
2948
2949           $tags = array();
2950
2951           if ( $all_tags = get_tags() ) {
2952                foreach( (array) $all_tags as $tag ) {
2953                     $struct = array();
2954                     $struct['tag_id']               = $tag->term_id;
2955                     $struct['name']                    = $tag->name;
2956                     $struct['count']               = $tag->count;
 
Line Code
2985
2986           $username = $args[1];
2987           $password = $args[2];
2988           $category = $args[3];
2989
2990           if ( !$user = $this->login($username, $password) )
2991                return $this->error;
2992
2993           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
2994           do_action( 'xmlrpc_call', 'wp.newCategory' );
2995
2996           // Make sure the user is allowed to add a category.
2997           if ( !current_user_can('manage_categories') )
2998                return new IXR_Error(401, __('Sorry, you do not have the right to add a category.'));
2999
3000           // If no slug was provided make it empty so that
3001           // WordPress will generate one.
3002           if ( empty($category['slug']) )
3003                $category['slug'] = '';
 
Line Code
3061
3062           $username    = $args[1];
3063           $password    = $args[2];
3064           $category_id = (int) $args[3];
3065
3066           if ( !$user = $this->login($username, $password) )
3067                return $this->error;
3068
3069           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
3070           do_action( 'xmlrpc_call', 'wp.deleteCategory' );
3071
3072           if ( !current_user_can('manage_categories') )
3073                return new IXR_Error( 401, __( 'Sorry, you do not have the right to delete a category.' ) );
3074
3075           $status = wp_delete_term( $category_id, 'category' );
3076
3077           if ( true == $status ) {
3078                /**
3079                 * Fires after a category has been successfully deleted via XML-RPC.
 
Line Code
3114           $max_results = (int) $args[4];
3115
3116           if ( !$user = $this->login($username, $password) )
3117                return $this->error;
3118
3119           if ( !current_user_can( 'edit_posts' ) )
3120                return new IXR_Error( 401, __( 'Sorry, you must be able to edit posts on this site in order to view categories.' ) );
3121
3122           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
3123           do_action( 'xmlrpc_call', 'wp.suggestCategories' );
3124
3125           $category_suggestions = array();
3126           $args = array('get' => 'all', 'number' => $max_results, 'name__like' => $category);
3127           foreach ( (array) get_categories($args) as $cat ) {
3128                $category_suggestions[] = array(
3129                     'category_id'     => $cat->term_id,
3130                     'category_name'     => $cat->name
3131                );
3132           }
 
Line Code
3157           $comment_id     = (int) $args[3];
3158
3159           if ( !$user = $this->login($username, $password) )
3160                return $this->error;
3161
3162           if ( !current_user_can( 'moderate_comments' ) )
3163                return new IXR_Error( 403, __( 'You are not allowed to moderate comments on this site.' ) );
3164
3165           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
3166           do_action( 'xmlrpc_call', 'wp.getComment' );
3167
3168           if ( ! $comment = get_comment($comment_id) )
3169                return new IXR_Error( 404, __( 'Invalid comment ID.' ) );
3170
3171           return $this->_prepare_comment( $comment );
3172      }
3173
3174      /**
3175       * Retrieve comments.
 
Line Code
3205           $struct       = isset( $args[3] ) ? $args[3] : array();
3206
3207           if ( !$user = $this->login($username, $password) )
3208                return $this->error;
3209
3210           if ( !current_user_can( 'moderate_comments' ) )
3211                return new IXR_Error( 401, __( 'Sorry, you cannot edit comments.' ) );
3212
3213           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
3214           do_action( 'xmlrpc_call', 'wp.getComments' );
3215
3216           if ( isset($struct['status']) )
3217                $status = $struct['status'];
3218           else
3219                $status = '';
3220
3221           $post_id = '';
3222           if ( isset($struct['post_id']) )
3223                $post_id = absint($struct['post_id']);
 
Line Code
3275                return new IXR_Error( 403, __( 'You are not allowed to moderate comments on this site.' ) );
3276
3277           if ( ! get_comment($comment_ID) )
3278                return new IXR_Error( 404, __( 'Invalid comment ID.' ) );
3279
3280           if ( !current_user_can( 'edit_comment', $comment_ID ) )
3281                return new IXR_Error( 403, __( 'You are not allowed to moderate comments on this site.' ) );
3282
3283           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
3284           do_action( 'xmlrpc_call', 'wp.deleteComment' );
3285
3286           $status = wp_delete_comment( $comment_ID );
3287
3288           if ( $status ) {
3289                /**
3290                 * Fires after a comment has been successfully deleted via XML-RPC.
3291                 *
3292                 * @since 3.4.0
3293                 *
 
Line Code
3342                return new IXR_Error( 403, __( 'You are not allowed to moderate comments on this site.' ) );
3343
3344           if ( ! get_comment($comment_ID) )
3345                return new IXR_Error( 404, __( 'Invalid comment ID.' ) );
3346
3347           if ( !current_user_can( 'edit_comment', $comment_ID ) )
3348                return new IXR_Error( 403, __( 'You are not allowed to moderate comments on this site.' ) );
3349
3350           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
3351           do_action( 'xmlrpc_call', 'wp.editComment' );
3352
3353           if ( isset($content_struct['status']) ) {
3354                $statuses = get_comment_statuses();
3355                $statuses = array_keys($statuses);
3356
3357                if ( ! in_array($content_struct['status'], $statuses) )
3358                     return new IXR_Error( 401, __( 'Invalid comment status.' ) );
3359                $comment_approved = $content_struct['status'];
3360           }
 
Line Code
3490                          return new IXR_Error( 403, __( 'A valid email address is required' ) );
3491                }
3492           }
3493
3494           $comment['comment_parent'] = isset($content_struct['comment_parent']) ? absint($content_struct['comment_parent']) : 0;
3495
3496           $comment['comment_content'] =  isset($content_struct['content']) ? $content_struct['content'] : null;
3497
3498           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
3499           do_action( 'xmlrpc_call', 'wp.newComment' );
3500
3501           $comment_ID = wp_new_comment( $comment );
3502
3503           /**
3504            * Fires after a new comment has been successfully created via XML-RPC.
3505            *
3506            * @since 3.4.0
3507            *
3508            * @param int   $comment_ID ID of the new comment.
 
Line Code
3534           $password = $args[2];
3535
3536           if ( !$user = $this->login($username, $password) )
3537                return $this->error;
3538
3539           if ( !current_user_can( 'moderate_comments' ) )
3540                return new IXR_Error( 403, __( 'You are not allowed access to details about this site.' ) );
3541
3542           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
3543           do_action( 'xmlrpc_call', 'wp.getCommentStatusList' );
3544
3545           return get_comment_statuses();
3546      }
3547
3548      /**
3549       * Retrieve comment count.
3550       *
3551       * @since 2.5.0
3552       *
 
Line Code
3568           $post_id     = (int) $args[3];
3569
3570           if ( !$user = $this->login($username, $password) )
3571                return $this->error;
3572
3573           if ( !current_user_can( 'edit_posts' ) )
3574                return new IXR_Error( 403, __( 'You are not allowed access to details about comments.' ) );
3575
3576           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
3577           do_action( 'xmlrpc_call', 'wp.getCommentCount' );
3578
3579           $count = wp_count_comments( $post_id );
3580           return array(
3581                'approved' => $count->approved,
3582                'awaiting_moderation' => $count->moderated,
3583                'spam' => $count->spam,
3584                'total_comments' => $count->total_comments
3585           );
3586      }
 
Line Code
3606           $password = $args[2];
3607
3608           if ( !$user = $this->login($username, $password) )
3609                return $this->error;
3610
3611           if ( !current_user_can( 'edit_posts' ) )
3612                return new IXR_Error( 403, __( 'You are not allowed access to details about this site.' ) );
3613
3614           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
3615           do_action( 'xmlrpc_call', 'wp.getPostStatusList' );
3616
3617           return get_post_statuses();
3618      }
3619
3620      /**
3621       * Retrieve page statuses.
3622       *
3623       * @since 2.5.0
3624       *
 
Line Code
3638           $password = $args[2];
3639
3640           if ( !$user = $this->login($username, $password) )
3641                return $this->error;
3642
3643           if ( !current_user_can( 'edit_pages' ) )
3644                return new IXR_Error( 403, __( 'You are not allowed access to details about this site.' ) );
3645
3646           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
3647           do_action( 'xmlrpc_call', 'wp.getPageStatusList' );
3648
3649           return get_page_statuses();
3650      }
3651
3652      /**
3653       * Retrieve page templates.
3654       *
3655       * @since 2.6.0
3656       *
 
Line Code
3816           $attachment_id     = (int) $args[3];
3817
3818           if ( !$user = $this->login($username, $password) )
3819                return $this->error;
3820
3821           if ( !current_user_can( 'upload_files' ) )
3822                return new IXR_Error( 403, __( 'You do not have permission to upload files.' ) );
3823
3824           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
3825           do_action( 'xmlrpc_call', 'wp.getMediaItem' );
3826
3827           if ( ! $attachment = get_post($attachment_id) )
3828                return new IXR_Error( 404, __( 'Invalid attachment ID.' ) );
3829
3830           return $this->_prepare_media_item( $attachment );
3831      }
3832
3833      /**
3834       * Retrieves a collection of media library items (or attachments)
 
Line Code
3864           $struct          = isset( $args[3] ) ? $args[3] : array() ;
3865
3866           if ( !$user = $this->login($username, $password) )
3867                return $this->error;
3868
3869           if ( !current_user_can( 'upload_files' ) )
3870                return new IXR_Error( 401, __( 'You do not have permission to upload files.' ) );
3871
3872           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
3873           do_action( 'xmlrpc_call', 'wp.getMediaLibrary' );
3874
3875           $parent_id = ( isset($struct['parent_id']) ) ? absint($struct['parent_id']) : '' ;
3876           $mime_type = ( isset($struct['mime_type']) ) ? $struct['mime_type'] : '' ;
3877           $offset = ( isset($struct['offset']) ) ? absint($struct['offset']) : 0 ;
3878           $number = ( isset($struct['number']) ) ? absint($struct['number']) : -1 ;
3879
3880           $attachments = get_posts( array('post_type' => 'attachment', 'post_parent' => $parent_id, 'offset' => $offset, 'numberposts' => $number, 'post_mime_type' => $mime_type ) );
3881
3882           $attachments_struct = array();
 
Line Code
3908           $password = $args[2];
3909
3910           if ( !$user = $this->login( $username, $password ) )
3911                return $this->error;
3912
3913           if ( !current_user_can( 'edit_posts' ) )
3914                return new IXR_Error( 403, __( 'You are not allowed access to details about this site.' ) );
3915
3916           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
3917           do_action( 'xmlrpc_call', 'wp.getPostFormats' );
3918
3919           $formats = get_post_format_strings();
3920
3921           // find out if they want a list of currently supports formats
3922           if ( isset( $args[3] ) && is_array( $args[3] ) ) {
3923                if ( $args[3]['show-supported'] ) {
3924                     if ( current_theme_supports( 'post-formats' ) ) {
3925                          $supported = get_theme_support( 'post-formats' );
3926
 
Line Code
3985                 * @param string $method The method name.
3986                 */
3987                $fields = apply_filters( 'xmlrpc_default_posttype_fields', array( 'labels', 'cap', 'taxonomies' ), 'wp.getPostType' );
3988           }
3989
3990           if ( !$user = $this->login( $username, $password ) )
3991                return $this->error;
3992
3993           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
3994           do_action( 'xmlrpc_call', 'wp.getPostType' );
3995
3996           if ( ! post_type_exists( $post_type_name ) )
3997                return new IXR_Error( 403, __( 'Invalid post type' ) );
3998
3999           $post_type = get_post_type_object( $post_type_name );
4000
4001           if ( ! current_user_can( $post_type->cap->edit_posts ) )
4002                return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit this post type.' ) );
4003
 
Line Code
4037           } else {
4038                /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
4039                $fields = apply_filters( 'xmlrpc_default_posttype_fields', array( 'labels', 'cap', 'taxonomies' ), 'wp.getPostTypes' );
4040           }
4041
4042           if ( ! $user = $this->login( $username, $password ) )
4043                return $this->error;
4044
4045           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
4046           do_action( 'xmlrpc_call', 'wp.getPostTypes' );
4047
4048           $post_types = get_post_types( $filter, 'objects' );
4049
4050           $struct = array();
4051
4052           foreach( $post_types as $post_type ) {
4053                if ( ! current_user_can( $post_type->cap->edit_posts ) )
4054                     continue;
4055
 
Line Code
4103                 * @param string $method The method name.
4104                 */
4105                $fields = apply_filters( 'xmlrpc_default_revision_fields', array( 'post_date', 'post_date_gmt' ), 'wp.getRevisions' );
4106           }
4107
4108           if ( ! $user = $this->login( $username, $password ) )
4109                return $this->error;
4110
4111           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
4112           do_action( 'xmlrpc_call', 'wp.getRevisions' );
4113
4114           if ( ! $post = get_post( $post_id ) )
4115                return new IXR_Error( 404, __( 'Invalid post ID.' ) );
4116
4117           if ( ! current_user_can( 'edit_post', $post_id ) )
4118                return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit posts.' ) );
4119
4120           // Check if revisions are enabled.
4121           if ( ! wp_revisions_enabled( $post ) )
 
Line Code
4167
4168           $username    = $args[1];
4169           $password    = $args[2];
4170           $revision_id = (int) $args[3];
4171
4172           if ( ! $user = $this->login( $username, $password ) )
4173                return $this->error;
4174
4175           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
4176           do_action( 'xmlrpc_call', 'wp.restoreRevision' );
4177
4178           if ( ! $revision = wp_get_post_revision( $revision_id ) )
4179                return new IXR_Error( 404, __( 'Invalid post ID.' ) );
4180
4181           if ( wp_is_post_autosave( $revision ) )
4182                return new IXR_Error( 404, __( 'Invalid post ID.' ) );
4183
4184           if ( ! $post = get_post( $revision->post_parent ) )
4185                return new IXR_Error( 404, __( 'Invalid post ID.' ) );
 
Line Code
4223           $this->escape($args);
4224
4225           $username = $args[1];
4226           $password = $args[2];
4227
4228           if ( !$user = $this->login($username, $password) )
4229                return $this->error;
4230
4231           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
4232           do_action( 'xmlrpc_call', 'blogger.getUsersBlogs' );
4233
4234           $is_admin = current_user_can('manage_options');
4235
4236           $struct = array(
4237                'isAdmin'  => $is_admin,
4238                'url'      => get_option('home') . '/',
4239                'blogid'   => '1',
4240                'blogName' => get_option('blogname'),
4241                'xmlrpc'   => site_url( 'xmlrpc.php', 'rpc' ),
 
Line Code
4298           $password = $args[2];
4299
4300           if ( !$user = $this->login($username, $password) )
4301                return $this->error;
4302
4303           if ( !current_user_can( 'edit_posts' ) )
4304                return new IXR_Error( 401, __( 'Sorry, you do not have access to user data on this site.' ) );
4305
4306           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
4307           do_action( 'xmlrpc_call', 'blogger.getUserInfo' );
4308
4309           $struct = array(
4310                'nickname'  => $user->nickname,
4311                'userid'    => $user->ID,
4312                'url'       => $user->user_url,
4313                'lastname'  => $user->last_name,
4314                'firstname' => $user->first_name
4315           );
4316
 
Line Code
4344
4345           $post_data = get_post($post_ID, ARRAY_A);
4346           if ( ! $post_data )
4347                return new IXR_Error( 404, __( 'Invalid post ID.' ) );
4348
4349           if ( !current_user_can( 'edit_post', $post_ID ) )
4350                return new IXR_Error( 401, __( 'Sorry, you cannot edit this post.' ) );
4351
4352           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
4353           do_action( 'xmlrpc_call', 'blogger.getPost' );
4354
4355           $categories = implode(',', wp_get_post_categories($post_ID));
4356
4357           $content  = '<title>'.wp_unslash($post_data['post_title']).'</title>';
4358           $content .= '<category>'.$categories.'</category>';
4359           $content .= wp_unslash($post_data['post_content']);
4360
4361           $struct = array(
4362                'userid'    => $post_data['post_author'],
 
Line Code
4397                $query = array();
4398
4399           if ( !$user = $this->login($username, $password) )
4400                return $this->error;
4401
4402           if ( ! current_user_can( 'edit_posts' ) )
4403                return new IXR_Error( 401, __( 'Sorry, you cannot edit posts on this site.' ) );
4404
4405           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
4406           do_action( 'xmlrpc_call', 'blogger.getRecentPosts' );
4407
4408           $posts_list = wp_get_recent_posts( $query );
4409
4410           if ( !$posts_list ) {
4411                $this->error = new IXR_Error(500, __('Either there are no posts, or something went wrong.'));
4412                return $this->error;
4413           }
4414
4415           $recent_posts = array();
 
Line Code
4480           $username = $args[2];
4481           $password = $args[3];
4482           $content  = $args[4];
4483           $publish  = $args[5];
4484
4485           if ( !$user = $this->login($username, $password) )
4486                return $this->error;
4487
4488           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
4489           do_action( 'xmlrpc_call', 'blogger.newPost' );
4490
4491           $cap = ($publish) ? 'publish_posts' : 'edit_posts';
4492           if ( ! current_user_can( get_post_type_object( 'post' )->cap->create_posts ) || !current_user_can($cap) )
4493                return new IXR_Error(401, __('Sorry, you are not allowed to post on this site.'));
4494
4495           $post_status = ($publish) ? 'publish' : 'draft';
4496
4497           $post_author = $user->ID;
4498
 
Line Code
4551           $username = $args[2];
4552           $password = $args[3];
4553           $content  = $args[4];
4554
4555           if ( ! $user = $this->login( $username, $password ) ) {
4556                return $this->error;
4557           }
4558
4559           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
4560           do_action( 'xmlrpc_call', 'blogger.editPost' );
4561
4562           $actual_post = get_post( $post_ID, ARRAY_A );
4563
4564           if ( ! $actual_post || $actual_post['post_type'] != 'post' ) {
4565                return new IXR_Error( 404, __( 'Sorry, no such post.' ) );
4566           }
4567
4568           $this->escape($actual_post);
4569
 
Line Code
4622
4623           $post_ID  = (int) $args[1];
4624           $username = $args[2];
4625           $password = $args[3];
4626
4627           if ( !$user = $this->login($username, $password) )
4628                return $this->error;
4629
4630           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
4631           do_action( 'xmlrpc_call', 'blogger.deletePost' );
4632
4633           $actual_post = get_post($post_ID,ARRAY_A);
4634
4635           if ( !$actual_post || $actual_post['post_type'] != 'post' )
4636                return new IXR_Error(404, __('Sorry, no such post.'));
4637
4638           if ( !current_user_can('delete_post', $post_ID) )
4639                return new IXR_Error(401, __('Sorry, you do not have the right to delete this post.'));
4640
 
Line Code
4704           $username       = $args[1];
4705           $password       = $args[2];
4706           $content_struct = $args[3];
4707           $publish        = isset( $args[4] ) ? $args[4] : 0;
4708
4709           if ( !$user = $this->login($username, $password) )
4710                return $this->error;
4711
4712           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
4713           do_action( 'xmlrpc_call', 'metaWeblog.newPost' );
4714
4715           $page_template = '';
4716           if ( !empty( $content_struct['post_type'] ) ) {
4717                if ( $content_struct['post_type'] == 'page' ) {
4718                     if ( $publish )
4719                          $cap  = 'publish_pages';
4720                     elseif ( isset( $content_struct['page_status'] ) && 'publish' == $content_struct['page_status'] )
4721                          $cap  = 'publish_pages';
4722                     else
 
Line Code
5046           $username       = $args[1];
5047           $password       = $args[2];
5048           $content_struct = $args[3];
5049           $publish        = isset( $args[4] ) ? $args[4] : 0;
5050
5051           if ( ! $user = $this->login($username, $password) )
5052                return $this->error;
5053
5054           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
5055           do_action( 'xmlrpc_call', 'metaWeblog.editPost' );
5056
5057           $postdata = get_post( $post_ID, ARRAY_A );
5058
5059           /*
5060            * If there is no post data for the give post id, stop now and return an error.
5061            * Otherwise a new post will be created (which was the old behavior).
5062            */
5063           if ( ! $postdata || empty( $postdata[ 'ID' ] ) )
5064                return new IXR_Error( 404, __( 'Invalid post ID.' ) );
 
Line Code
5353
5354           $postdata = get_post($post_ID, ARRAY_A);
5355           if ( ! $postdata )
5356                return new IXR_Error( 404, __( 'Invalid post ID.' ) );
5357
5358           if ( !current_user_can( 'edit_post', $post_ID ) )
5359                return new IXR_Error( 401, __( 'Sorry, you cannot edit this post.' ) );
5360
5361           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
5362           do_action( 'xmlrpc_call', 'metaWeblog.getPost' );
5363
5364           if ($postdata['post_date'] != '') {
5365                $post_date = $this->_convert_date( $postdata['post_date'] );
5366                $post_date_gmt = $this->_convert_date_gmt( $postdata['post_date_gmt'],  $postdata['post_date'] );
5367                $post_modified = $this->_convert_date( $postdata['post_modified'] );
5368                $post_modified_gmt = $this->_convert_date_gmt( $postdata['post_modified_gmt'], $postdata['post_modified'] );
5369
5370                $categories = array();
5371                $catids = wp_get_post_categories($post_ID);
 
Line Code
5483                $query = array();
5484
5485           if ( !$user = $this->login($username, $password) )
5486                return $this->error;
5487
5488           if ( ! current_user_can( 'edit_posts' ) )
5489                return new IXR_Error( 401, __( 'Sorry, you cannot edit posts on this site.' ) );
5490
5491           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
5492           do_action( 'xmlrpc_call', 'metaWeblog.getRecentPosts' );
5493
5494           $posts_list = wp_get_recent_posts( $query );
5495
5496           if ( !$posts_list )
5497                return array();
5498
5499           $recent_posts = array();
5500           foreach ($posts_list as $entry) {
5501                if ( !current_user_can( 'edit_post', $entry['ID'] ) )
 
Line Code
5596           $password = $args[2];
5597
5598           if ( !$user = $this->login($username, $password) )
5599                return $this->error;
5600
5601           if ( !current_user_can( 'edit_posts' ) )
5602                return new IXR_Error( 401, __( 'Sorry, you must be able to edit posts on this site in order to view categories.' ) );
5603
5604           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
5605           do_action( 'xmlrpc_call', 'metaWeblog.getCategories' );
5606
5607           $categories_struct = array();
5608
5609           if ( $cats = get_categories(array('get' => 'all')) ) {
5610                foreach ( $cats as $cat ) {
5611                     $struct = array();
5612                     $struct['categoryId'] = $cat->term_id;
5613                     $struct['parentId'] = $cat->parent;
5614                     $struct['description'] = $cat->name;
 
Line Code
5654
5655           $name = sanitize_file_name( $data['name'] );
5656           $type = $data['type'];
5657           $bits = $data['bits'];
5658
5659           if ( !$user = $this->login($username, $password) )
5660                return $this->error;
5661
5662           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
5663           do_action( 'xmlrpc_call', 'metaWeblog.newMediaObject' );
5664
5665           if ( !current_user_can('upload_files') ) {
5666                $this->error = new IXR_Error( 401, __( 'You do not have permission to upload files.' ) );
5667                return $this->error;
5668           }
5669
5670           /**
5671            * Filter whether to preempt the XML-RPC media upload.
5672            *
 
Line Code
5773           if ( isset( $args[3] ) )
5774                $query = array( 'numberposts' => absint( $args[3] ) );
5775           else
5776                $query = array();
5777
5778           if ( !$user = $this->login($username, $password) )
5779                return $this->error;
5780
5781           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
5782           do_action( 'xmlrpc_call', 'mt.getRecentPostTitles' );
5783
5784           $posts_list = wp_get_recent_posts( $query );
5785
5786           if ( !$posts_list ) {
5787                $this->error = new IXR_Error(500, __('Either there are no posts, or something went wrong.'));
5788                return $this->error;
5789           }
5790
5791           $recent_posts = array();
 
Line Code
5831           $password = $args[2];
5832
5833           if ( !$user = $this->login($username, $password) )
5834                return $this->error;
5835
5836           if ( !current_user_can( 'edit_posts' ) )
5837                return new IXR_Error( 401, __( 'Sorry, you must be able to edit posts on this site in order to view categories.' ) );
5838
5839           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
5840           do_action( 'xmlrpc_call', 'mt.getCategoryList' );
5841
5842           $categories_struct = array();
5843
5844           if ( $cats = get_categories(array('hide_empty' => 0, 'hierarchical' => 0)) ) {
5845                foreach ( $cats as $cat ) {
5846                     $struct = array();
5847                     $struct['categoryId'] = $cat->term_id;
5848                     $struct['categoryName'] = $cat->name;
5849
 
Line Code
5879                return $this->error;
5880
5881           if ( ! get_post( $post_ID ) )
5882                return new IXR_Error( 404, __( 'Invalid post ID.' ) );
5883
5884           if ( !current_user_can( 'edit_post', $post_ID ) )
5885                return new IXR_Error( 401, __( 'Sorry, you can not edit this post.' ) );
5886
5887           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
5888           do_action( 'xmlrpc_call', 'mt.getPostCategories' );
5889
5890           $categories = array();
5891           $catids = wp_get_post_categories(intval($post_ID));
5892           // first listed category will be the primary category
5893           $isPrimary = true;
5894           foreach ( $catids as $catid ) {
5895                $categories[] = array(
5896                     'categoryName' => get_cat_name($catid),
5897                     'categoryId' => (string) $catid,
 
Line Code
5924           $post_ID    = (int) $args[0];
5925           $username   = $args[1];
5926           $password   = $args[2];
5927           $categories = $args[3];
5928
5929           if ( !$user = $this->login($username, $password) )
5930                return $this->error;
5931
5932           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
5933           do_action( 'xmlrpc_call', 'mt.setPostCategories' );
5934
5935           if ( ! get_post( $post_ID ) )
5936                return new IXR_Error( 404, __( 'Invalid post ID.' ) );
5937
5938           if ( !current_user_can('edit_post', $post_ID) )
5939                return new IXR_Error(401, __('Sorry, you cannot edit this post.'));
5940
5941           $catids = array();
5942           foreach ( $categories as $cat ) {
 
Line Code
5951      /**
5952       * Retrieve an array of methods supported by this server.
5953       *
5954       * @since 1.5.0
5955       *
5956       * @return array
5957       */
5958      public function mt_supportedMethods() {
5959           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
5960           do_action( 'xmlrpc_call', 'mt.supportedMethods' );
5961
5962           return array_keys( $this->methods );
5963      }
5964
5965      /**
5966       * Retrieve an empty array because we don't support per-post text filters.
5967       *
5968       * @since 1.5.0
5969       */
5970      public function mt_supportedTextFilters() {
5971           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
5972           do_action( 'xmlrpc_call', 'mt.supportedTextFilters' );
5973
5974           /**
5975            * Filter the MoveableType text filters list for XML-RPC.
5976            *
5977            * @since 2.2.0
5978            *
5979            * @param array $filters An array of text filters.
5980            */
5981           return apply_filters( 'xmlrpc_text_filters', array() );
 
Line Code
5989       * @global wpdb $wpdb
5990       *
5991       * @param int $post_ID
5992       * @return array|IXR_Error
5993       */
5994      public function mt_getTrackbackPings( $post_ID ) {
5995           global $wpdb;
5996
5997           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
5998           do_action( 'xmlrpc_call', 'mt.getTrackbackPings' );
5999
6000           $actual_post = get_post($post_ID, ARRAY_A);
6001
6002           if ( !$actual_post )
6003                return new IXR_Error(404, __('Sorry, no such post.'));
6004
6005           $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) );
6006
6007           if ( !$comments )
 
Line Code
6042
6043           $post_ID  = (int) $args[0];
6044           $username = $args[1];
6045           $password = $args[2];
6046
6047           if ( !$user = $this->login($username, $password) )
6048                return $this->error;
6049
6050           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
6051           do_action( 'xmlrpc_call', 'mt.publishPost' );
6052
6053           $postdata = get_post($post_ID, ARRAY_A);
6054           if ( ! $postdata )
6055                return new IXR_Error( 404, __( 'Invalid post ID.' ) );
6056
6057           if ( !current_user_can('publish_posts') || !current_user_can('edit_post', $post_ID) )
6058                return new IXR_Error(401, __('Sorry, you cannot publish this post.'));
6059
6060           $postdata['post_status'] = 'publish';
 
Line Code
6085       *     @type string $pagelinkedfrom
6086       *     @type string $pagelinkedto
6087       * }
6088       * @return string|IXR_Error
6089       */
6090      public function pingback_ping( $args ) {
6091           global $wpdb, $wp_version;
6092
6093           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
6094           do_action( 'xmlrpc_call', 'pingback.ping' );
6095
6096           $this->escape( $args );
6097
6098           $pagelinkedfrom = str_replace( '&amp;', '&', $args[0] );
6099           $pagelinkedto = str_replace( '&amp;', '&', $args[1] );
6100           $pagelinkedto = str_replace( '&', '&amp;', $pagelinkedto );
6101
6102           /**
6103            * Filter the pingback source URI.
 
Line Code
6290       * @global wpdb $wpdb
6291       *
6292       * @param string $url
6293       * @return array|IXR_Error
6294       */
6295      public function pingback_extensions_getPingbacks( $url ) {
6296           global $wpdb;
6297
6298           /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
6299           do_action( 'xmlrpc_call', 'pingback.extensions.getPingbacks' );
6300
6301           $url = $this->escape( $url );
6302
6303           $post_ID = url_to_postid($url);
6304           if ( !$post_ID ) {
6305                // We aren't sure that the resource is available and/or pingback enabled
6306                  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.' ) );
6307           }
6308