Make WordPress Core

Ticket #48654: 48654.diff

File 48654.diff, 8.8 KB (added by spacedmonkey, 4 years ago)
  • src/wp-includes/rest-api/endpoints/class-wp-rest-dependencies-controller.php

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
     1<?php
     2
     3/**
     4 * Class WP_REST_Dependencies_Controller
     5 */
     6class WP_REST_Dependencies_Controller extends WP_REST_Controller {
     7
     8        /**
     9         * @var
     10         */
     11        protected $object;
     12
     13        /**
     14         *
     15         */
     16        public function register_routes() {
     17                register_rest_route(
     18                        $this->namespace,
     19                        '/' . $this->rest_base,
     20                        array(
     21                                array(
     22                                        'methods'             => WP_REST_Server::READABLE,
     23                                        'callback'            => array( $this, 'get_items' ),
     24                                        'permission_callback' => array( $this, 'get_items_permissions_check' ),
     25                                        'args'                => $this->get_collection_params(),
     26                                ),
     27                                'schema' => array( $this, 'get_item_schema' ),
     28                        )
     29                );
     30
     31                $get_item_args = array(
     32                        'context' => $this->get_context_param( array( 'default' => 'view' ) ),
     33                );
     34
     35                register_rest_route(
     36                        $this->namespace,
     37                        '/' . $this->rest_base . '/(?P<handle>[\w-]+)',
     38                        array(
     39                                'args'   => array(
     40                                        'handle' => array(
     41                                                'description' => __( 'Unique identifier for the object.' ),
     42                                                'type'        => 'string',
     43                                        ),
     44                                ),
     45                                array(
     46                                        'methods'             => WP_REST_Server::READABLE,
     47                                        'callback'            => array( $this, 'get_item' ),
     48                                        'permission_callback' => array( $this, 'get_item_permissions_check' ),
     49                                        'args'                => $get_item_args,
     50                                ),
     51                                'schema' => array( $this, 'get_public_item_schema' ),
     52                        )
     53                );
     54        }
     55
     56        /**
     57         * @param WP_REST_Request $request
     58         *
     59         * @return array|WP_Error|WP_REST_Response
     60         */
     61        public function get_items( $request ) {
     62                $data   = [];
     63                $handle = $request['dependency'];
     64                $filter = [];
     65                if ( $handle ) {
     66                        $this->object->all_deps( $handle );
     67                        $filter = $this->object->to_do;
     68                }
     69
     70                if ( $handle ) {
     71                        foreach ( $filter as $dependency_handle ) {
     72                                foreach ( $this->object->registered as $dependency ) {
     73                                        if ( $dependency_handle === $dependency->handle ) {
     74                                                $item   = $this->prepare_item_for_response( $dependency, $request );
     75                                                $data[] = $this->prepare_response_for_collection( $item );
     76                                        }
     77                                }
     78                        }
     79                } else {
     80                        foreach ( $this->object->registered as $dependency ) {
     81                                $item   = $this->prepare_item_for_response( $dependency, $request );
     82                                $data[] = $this->prepare_response_for_collection( $item );
     83                        }
     84                }
     85
     86                return $data;
     87        }
     88
     89        /**
     90         * @param WP_REST_Request $request
     91         *
     92         * @return array|mixed|WP_Error|WP_REST_Response
     93         */
     94        public function get_item( $request ) {
     95                if ( ! isset ( $this->object->registered[ $request['handle'] ] ) ) {
     96                        return [];
     97                }
     98                $dependency = $this->object->registered[ $request['handle'] ];
     99                $data       = $this->prepare_item_for_response( $dependency, $request );
     100
     101
     102                return $data;
     103        }
     104
     105        /**
     106         * @param mixed           $dependency
     107         * @param WP_REST_Request $request
     108         *
     109         * @return mixed|WP_Error|WP_REST_Response
     110         */
     111        public function prepare_item_for_response( $dependency, $request ) {
     112                $dependency->url = $this->get_url( $dependency->src, $dependency->ver, $dependency->handle );
     113                $response        = rest_ensure_response( (array) $dependency );
     114                $dependencies    = $this->prepare_links( $dependency );
     115                $response->add_links( $dependencies );
     116
     117                return $response;
     118        }
     119
     120        /**
     121         * @param WP_REST_Request $request
     122         *
     123         * @return bool|true|WP_Error
     124         */
     125        public function get_items_permissions_check( $request ) {
     126                return true;
     127        }
     128
     129        /**
     130         * @param WP_REST_Request $request
     131         *
     132         * @return bool|true|WP_Error
     133         */
     134        public function get_item_permissions_check( $request ) {
     135                return true;
     136        }
     137
     138        /**
     139         * @param $dependency
     140         *
     141         * @return array
     142         */
     143        protected function prepare_links( $dependency ) {
     144                $base = sprintf( '%s/%s', $this->namespace, $this->rest_base );
     145                // Entity meta.
     146                $links = array(
     147                        'self'       => array(
     148                                'href' => rest_url( trailingslashit( $base ) . $dependency->handle ),
     149                        ),
     150                        'collection' => array(
     151                                'href' => rest_url( $base ),
     152                        ),
     153                        'deps'       => array(
     154                                'href' => rest_url( trailingslashit( $base ) . '?dependency=' . $dependency->handle ),
     155                        ),
     156                );
     157
     158                return $links;
     159        }
     160
     161        /**
     162         * @return array
     163         */
     164        public function get_collection_params() {
     165                $query_params                       = parent::get_collection_params();
     166                $query_params['context']['default'] = 'view';
     167
     168
     169                $query_params['dependency'] = array(
     170                        'description' => __( '' ),
     171                        'type'        => 'string',
     172                );
     173
     174                return $query_params;
     175        }
     176
     177}
  • src/wp-includes/rest-api/endpoints/class-wp-rest-scripts-controller.php

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
     1<?php
     2
     3/**
     4 * Class WP_REST_Scripts_Controller
     5 */
     6class WP_REST_Scripts_Controller extends WP_REST_Dependencies_Controller {
     7        /**
     8         * WP_REST_Scripts_Controller constructor.
     9         */
     10        public function __construct() {
     11                $this->namespace = 'wp/v2';
     12                $this->rest_base = 'scripts';
     13                $this->object    = wp_scripts();
     14        }
     15
     16        /**
     17         * @param $src
     18         * @param $ver
     19         * @param $handle
     20         *
     21         * @return string
     22         */
     23        public function get_url( $src, $ver, $handle ) {
     24                if ( ! is_bool( $src ) && ! preg_match( '|^(https?:)?//|', $src ) && ! ( $this->object->content_url && 0 === strpos( $src, $this->object->content_url ) ) ) {
     25                        $src = $this->object->base_url . $src;
     26                }
     27                if ( ! empty( $ver ) ) {
     28                        $src = add_query_arg( 'ver', $ver, $src );
     29                }
     30
     31                /** This filter is documented in wp-includes/class.wp-scripts.php */
     32                $src = esc_url( apply_filters( 'script_loader_src', $src, $handle ) );
     33
     34                return esc_url( $src );
     35        }
     36
     37}
  • src/wp-includes/rest-api/endpoints/class-wp-rest-styles-controller.php

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
     1<?php
     2
     3/**
     4 * Class WP_REST_Styles_Controller
     5 */
     6class WP_REST_Styles_Controller extends WP_REST_Dependencies_Controller {
     7        /**
     8         * WP_REST_Styles_Controller constructor.
     9         */
     10        public function __construct() {
     11                $this->namespace = 'wp/v2';
     12                $this->rest_base = 'styles';
     13                $this->object    = wp_styles();
     14        }
     15
     16        /**
     17         * @param $src
     18         * @param $ver
     19         * @param $handle
     20         *
     21         * @return string
     22         */
     23        public function get_url( $src, $ver, $handle ) {
     24                return $this->object->_css_href( $src, $ver, $handle );
     25        }
     26}
  • src/wp-includes/rest-api.php

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    272272        $controller = new WP_REST_Themes_Controller;
    273273        $controller->register_routes();
    274274
     275        // Scripts.
     276        $controller = new WP_REST_Scripts_Controller();
     277        $controller->register_routes();
     278
     279        // Styles.
     280        $controller = new WP_REST_Styles_Controller();
     281        $controller->register_routes();
    275282}
    276283
    277284/**
  • src/wp-settings.php

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    248248require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-block-renderer-controller.php' );
    249249require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-settings-controller.php' );
    250250require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-themes-controller.php' );
     251require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-dependencies-controller.php' );
     252require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-scripts-controller.php' );
     253require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-styles-controller.php' );
    251254require( ABSPATH . WPINC . '/rest-api/fields/class-wp-rest-meta-fields.php' );
    252255require( ABSPATH . WPINC . '/rest-api/fields/class-wp-rest-comment-meta-fields.php' );
    253256require( ABSPATH . WPINC . '/rest-api/fields/class-wp-rest-post-meta-fields.php' );