"Fossies" - the Fresh Open Source Software Archive

Member "wordpress/wp-includes/rest-api/endpoints/class-wp-rest-blocks-controller.php" (23 May 2020, 2711 Bytes) of package /linux/www/wordpress-5.7-RC1.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) PHP source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "class-wp-rest-blocks-controller.php" see the Fossies "Dox" file reference documentation.

    1 <?php
    2 /**
    3  * Reusable blocks REST API: WP_REST_Blocks_Controller class
    4  *
    5  * @package WordPress
    6  * @subpackage REST_API
    7  * @since 5.0.0
    8  */
    9 
   10 /**
   11  * Controller which provides a REST endpoint for the editor to read, create,
   12  * edit and delete reusable blocks. Blocks are stored as posts with the wp_block
   13  * post type.
   14  *
   15  * @since 5.0.0
   16  *
   17  * @see WP_REST_Posts_Controller
   18  * @see WP_REST_Controller
   19  */
   20 class WP_REST_Blocks_Controller extends WP_REST_Posts_Controller {
   21 
   22     /**
   23      * Checks if a block can be read.
   24      *
   25      * @since 5.0.0
   26      *
   27      * @param WP_Post $post Post object that backs the block.
   28      * @return bool Whether the block can be read.
   29      */
   30     public function check_read_permission( $post ) {
   31         // By default the read_post capability is mapped to edit_posts.
   32         if ( ! current_user_can( 'read_post', $post->ID ) ) {
   33             return false;
   34         }
   35 
   36         return parent::check_read_permission( $post );
   37     }
   38 
   39     /**
   40      * Filters a response based on the context defined in the schema.
   41      *
   42      * @since 5.0.0
   43      *
   44      * @param array  $data    Response data to fiter.
   45      * @param string $context Context defined in the schema.
   46      * @return array Filtered response.
   47      */
   48     public function filter_response_by_context( $data, $context ) {
   49         $data = parent::filter_response_by_context( $data, $context );
   50 
   51         /*
   52          * Remove `title.rendered` and `content.rendered` from the response. It
   53          * doesn't make sense for a reusable block to have rendered content on its
   54          * own, since rendering a block requires it to be inside a post or a page.
   55          */
   56         unset( $data['title']['rendered'] );
   57         unset( $data['content']['rendered'] );
   58 
   59         return $data;
   60     }
   61 
   62     /**
   63      * Retrieves the block's schema, conforming to JSON Schema.
   64      *
   65      * @since 5.0.0
   66      *
   67      * @return array Item schema data.
   68      */
   69     public function get_item_schema() {
   70         // Do not cache this schema because all properties are derived from parent controller.
   71         $schema = parent::get_item_schema();
   72 
   73         /*
   74          * Allow all contexts to access `title.raw` and `content.raw`. Clients always
   75          * need the raw markup of a reusable block to do anything useful, e.g. parse
   76          * it or display it in an editor.
   77          */
   78         $schema['properties']['title']['properties']['raw']['context']   = array( 'view', 'edit' );
   79         $schema['properties']['content']['properties']['raw']['context'] = array( 'view', 'edit' );
   80 
   81         /*
   82          * Remove `title.rendered` and `content.rendered` from the schema. It doesn’t
   83          * make sense for a reusable block to have rendered content on its own, since
   84          * rendering a block requires it to be inside a post or a page.
   85          */
   86         unset( $schema['properties']['title']['properties']['rendered'] );
   87         unset( $schema['properties']['content']['properties']['rendered'] );
   88 
   89         return $schema;
   90     }
   91 
   92 }