From d085e7b20241bd06c19d83ee0cd5c81506ed18cd Mon Sep 17 00:00:00 2001 From: vnmedeiros Date: Sun, 16 Oct 2022 17:57:45 -0300 Subject: [PATCH] feat: add new endpoint `item//metadatasection/` --- ...tainacan-rest-item-metadata-controller.php | 31 ++++++++++++++++--- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/src/classes/api/endpoints/class-tainacan-rest-item-metadata-controller.php b/src/classes/api/endpoints/class-tainacan-rest-item-metadata-controller.php index 88644703a..b6a808ce1 100644 --- a/src/classes/api/endpoints/class-tainacan-rest-item-metadata-controller.php +++ b/src/classes/api/endpoints/class-tainacan-rest-item-metadata-controller.php @@ -14,7 +14,7 @@ class REST_Item_Metadata_Controller extends REST_Controller { private $metadatum_repository; public function __construct() { - $this->rest_base = 'metadata'; + $this->rest_base = 'item'; parent::__construct(); add_action('init', array(&$this, 'init_objects'), 11); } @@ -40,7 +40,7 @@ class REST_Item_Metadata_Controller extends REST_Controller { * Both of GETs return the metadatum of matched objects */ public function register_routes() { - register_rest_route($this->namespace, '/item/(?P[\d]+)/' . $this->rest_base . '/(?P[\d]+)', + register_rest_route($this->namespace, '/' . $this->rest_base . '/(?P[\d]+)/metadata/(?P[\d]+)', array( array( 'methods' => \WP_REST_Server::READABLE, @@ -60,7 +60,7 @@ class REST_Item_Metadata_Controller extends REST_Controller { ), ) ); - register_rest_route($this->namespace, '/item/(?P[\d]+)/' . $this->rest_base, + register_rest_route($this->namespace, '/' . $this->rest_base . '/(?P[\d]+)/metadata', array( array( 'methods' => \WP_REST_Server::READABLE, @@ -70,6 +70,15 @@ class REST_Item_Metadata_Controller extends REST_Controller { ) ) ); + register_rest_route($this->namespace, '/' . $this->rest_base . '/(?P[\d]+)/metadatasection/(?P[\d|default_section]+)', + array( + array( + 'methods' => \WP_REST_Server::READABLE, + 'callback' => array($this, 'get_items'), + 'permission_callback' => array($this, 'get_items_permissions_check'), + ), + ) + ); } /** @@ -115,13 +124,27 @@ class REST_Item_Metadata_Controller extends REST_Controller { public function get_items( $request ) { $item_id = $request['item_id']; + $args = array(); + if( isset($request['metadata_section_id']) ) { + $args = array_merge($args, array( + 'parent' => 0, + 'meta_query' => [ + [ + 'key' => 'metadata_section_id', + 'value' => $request['metadata_section_id'], + 'compare' => '=' + ] + ] + )); + } + $item = $this->item_repository->fetch($item_id); if( in_array($item->get_status(), ['auto-draft'] ) ) { $this->item_metadata_repository->create_default_value_metadata($item); } - $items_metadata = $item->get_metadata(); + $items_metadata = $item->get_metadata( $args ); $prepared_item = [];