WordPress.org

Make WordPress Core

Ticket #20629: 20629.patch

File 20629.patch, 5.4 KB (added by maxcutler, 6 years ago)
  • wp-includes/class-wp-xmlrpc-server.php

     
    753753        }
    754754
    755755        /**
     756         * Prepares page data for return in an XML-RPC object.
     757         *
     758         * @access protected
     759         *
     760         * @param object $page The unprepared page data
     761         * @return array The prepared page data
     762         */
     763        protected function _prepare_page( $page ) {
     764                // Get all of the page content and link.
     765                $full_page = get_extended( $page->post_content );
     766                $link = post_permalink( $page->ID );
     767
     768                // Get info the page parent if there is one.
     769                $parent_title = "";
     770                if ( ! empty( $page->post_parent ) ) {
     771                        $parent = get_page( $page->post_parent );
     772                        $parent_title = $parent->post_title;
     773                }
     774
     775                // Determine comment and ping settings.
     776                $allow_comments = comments_open( $page->ID ) ? 1 : 0;
     777                $allow_pings = pings_open( $page->ID ) ? 1 : 0;
     778
     779                // Format page date.
     780                $page_date = $this->_convert_date( $page->post_date );
     781                $page_date_gmt = $this->_convert_date_gmt( $page->post_date_gmt, $page->post_date );
     782
     783                // Pull the categories info together.
     784                $categories = array();
     785                foreach ( wp_get_post_categories( $page->ID ) as $cat_id ) {
     786                        $categories[] = get_cat_name( $cat_id );
     787                }
     788
     789                // Get the author info.
     790                $author = get_userdata( $page->post_author );
     791
     792                $page_template = get_page_template_slug( $page->ID );
     793                if ( empty( $page_template ) )
     794                        $page_template = 'default';
     795
     796                $_page = array(
     797                        'dateCreated'                   => $page_date,
     798                        'userid'                                => $page->post_author,
     799                        'page_id'                               => $page->ID,
     800                        'page_status'                   => $page->post_status,
     801                        'description'                   => $full_page['main'],
     802                        'title'                                 => $page->post_title,
     803                        'link'                                  => $link,
     804                        'permaLink'                             => $link,
     805                        'categories'                    => $categories,
     806                        'excerpt'                               => $page->post_excerpt,
     807                        'text_more'                             => $full_page['extended'],
     808                        'mt_allow_comments'             => $allow_comments,
     809                        'mt_allow_pings'                => $allow_pings,
     810                        'wp_slug'                               => $page->post_name,
     811                        'wp_password'                   => $page->post_password,
     812                        'wp_author'                             => $author->display_name,
     813                        'wp_page_parent_id'             => $page->post_parent,
     814                        'wp_page_parent_title'  => $parent_title,
     815                        'wp_page_order'                 => $page->menu_order,
     816                        'wp_author_id'                  => (string) $author->ID,
     817                        'wp_author_display_name'        => $author->display_name,
     818                        'date_created_gmt'              => $page_date_gmt,
     819                        'custom_fields'                 => $this->get_custom_fields( $page->ID ),
     820                        'wp_page_template'              => $page_template
     821                );
     822
     823                return apply_filters( 'xmlrpc_prepare_page', $_page, $page );
     824        }
     825
     826        /**
    756827         * Create a new post for any registered post type.
    757828         *
    758829         * @since 3.4.0
     
    18281899
    18291900                // If we found the page then format the data.
    18301901                if ( $page->ID && ($page->post_type == 'page') ) {
    1831                         // Get all of the page content and link.
    1832                         $full_page = get_extended($page->post_content);
    1833                         $link = post_permalink($page->ID);
    1834 
    1835                         // Get info the page parent if there is one.
    1836                         $parent_title = "";
    1837                         if ( !empty($page->post_parent) ) {
    1838                                 $parent = get_page($page->post_parent);
    1839                                 $parent_title = $parent->post_title;
    1840                         }
    1841 
    1842                         // Determine comment and ping settings.
    1843                         $allow_comments = comments_open($page->ID) ? 1 : 0;
    1844                         $allow_pings = pings_open($page->ID) ? 1 : 0;
    1845 
    1846                         // Format page date.
    1847                         $page_date = $this->_convert_date( $page->post_date );
    1848                         $page_date_gmt = $this->_convert_date_gmt( $page->post_date_gmt, $page->post_date );
    1849 
    1850                         // Pull the categories info together.
    1851                         $categories = array();
    1852                         foreach ( wp_get_post_categories($page->ID) as $cat_id ) {
    1853                                 $categories[] = get_cat_name($cat_id);
    1854                         }
    1855 
    1856                         // Get the author info.
    1857                         $author = get_userdata($page->post_author);
    1858 
    1859                         $page_template = get_page_template_slug( $page->ID );
    1860                         if ( empty( $page_template ) )
    1861                                 $page_template = 'default';
    1862 
    1863                         $page_struct = array(
    1864                                 'dateCreated'                   => $page_date,
    1865                                 'userid'                                => $page->post_author,
    1866                                 'page_id'                               => $page->ID,
    1867                                 'page_status'                   => $page->post_status,
    1868                                 'description'                   => $full_page['main'],
    1869                                 'title'                                 => $page->post_title,
    1870                                 'link'                                  => $link,
    1871                                 'permaLink'                             => $link,
    1872                                 'categories'                    => $categories,
    1873                                 'excerpt'                               => $page->post_excerpt,
    1874                                 'text_more'                             => $full_page['extended'],
    1875                                 'mt_allow_comments'             => $allow_comments,
    1876                                 'mt_allow_pings'                => $allow_pings,
    1877                                 'wp_slug'                               => $page->post_name,
    1878                                 'wp_password'                   => $page->post_password,
    1879                                 'wp_author'                             => $author->display_name,
    1880                                 'wp_page_parent_id'             => $page->post_parent,
    1881                                 'wp_page_parent_title'  => $parent_title,
    1882                                 'wp_page_order'                 => $page->menu_order,
    1883                                 'wp_author_id'                  => (string) $author->ID,
    1884                                 'wp_author_display_name'        => $author->display_name,
    1885                                 'date_created_gmt'              => $page_date_gmt,
    1886                                 'custom_fields'                 => $this->get_custom_fields($page_id),
    1887                                 'wp_page_template'              => $page_template
    1888                         );
    1889 
    1890                         return($page_struct);
     1902                        return $this->_prepare_page( $page );
    18911903                }
    18921904                // If the page doesn't exist indicate that.
    18931905                else {
     
    19301942                if ( $num_pages >= 1 ) {
    19311943                        $pages_struct = array();
    19321944
    1933                         for ( $i = 0; $i < $num_pages; $i++ ) {
    1934                                 $page = wp_xmlrpc_server::wp_getPage(array(
    1935                                         $blog_id, $pages[$i]->ID, $username, $password
    1936                                 ));
    1937                                 $pages_struct[] = $page;
     1945                        foreach ($pages as $page) {
     1946                                if ( current_user_can( 'edit_page', $page->ID ) )
     1947                                        $pages_struct[] = $this->_prepare_page( $page );
    19381948                        }
    19391949
    19401950                        return($pages_struct);