BP_REST_Document_Details_Endpoint
BuddyPress Document Details endpoints.
Description
Source
File: bp-document/classes/class-bp-rest-document-details-endpoint.php
class BP_REST_Document_Details_Endpoint extends WP_REST_Controller { /** * Constructor. * * @since 0.1.0 */ public function __construct() { $this->namespace = bp_rest_namespace() . '/' . bp_rest_version(); $this->rest_base = 'document'; } /** * Register the component routes. * * @since 0.1.0 */ public function register_routes() { register_rest_route( $this->namespace, '/' . $this->rest_base . '/details', array( array( 'methods' => WP_REST_Server::READABLE, 'callback' => array( $this, 'get_items' ), 'permission_callback' => array( $this, 'get_items_permissions_check' ), ), 'schema' => array( $this, 'get_item_schema' ), ) ); } /** * Retrieve documents details. * * @param WP_REST_Request $request Full details about the request. * * @return WP_REST_Response | WP_Error * @since 0.1.0 * * @api {GET} /wp-json/buddyboss/v1/document/details Document Details * @apiName GetBBDocumentDetails * @apiGroup Document * @apiDescription Retrieve Document details(includes tabs and privacy options) * @apiVersion 1.0.0 * @apiPermission LoggedInUser if the site is in Private Network. */ public function get_items( $request ) { $retval = array(); $retval['tabs'] = $this->get_documents_tabs(); $retval['privacy'] = $this->get_documents_privacy(); $response = rest_ensure_response( $retval ); /** * Fires after a list of documents details is fetched via the REST API. * * @since 0.1.0 * * @param WP_REST_Response $response The response data. * @param WP_REST_Request $request The request sent to the API. */ do_action( 'bp_rest_document_details_get_items', $response, $request ); return $response; } /** * Checks if a given request has access to get all users. * * @param WP_REST_Request $request Full details about the request. * * @return bool * @since 0.1.0 */ public function get_items_permissions_check( $request ) { $retval = true; /** * Filter the document details `get_items` permissions check. * * @param bool $retval Returned value. * @param WP_REST_Request $request The request sent to the API. * * @since 0.1.0 */ return apply_filters( 'bp_rest_document_details_get_items_permissions_check', $retval, $request ); } /** * Get the document details schema, conforming to JSON Schema. * * @return array * @since 0.1.0 */ public function get_item_schema() { $schema = array( '$schema' => 'http://json-schema.org/draft-04/schema#', 'title' => 'bp_document_details', 'type' => 'object', 'properties' => array( 'tabs' => array( 'context' => array( 'embed', 'view' ), 'description' => __( 'Documents directory tabs.', 'buddyboss' ), 'type' => 'object', 'readonly' => true, 'items' => array( 'type' => 'array', ), ), 'privacy' => array( 'context' => array( 'embed', 'view' ), 'description' => __( 'Document privacy.', 'buddyboss' ), 'type' => 'object', 'readonly' => true, ), ), ); /** * Filters the document details schema. * * @param array $schema The endpoint schema. */ return apply_filters( 'bp_rest_document_details_schema', $this->add_additional_fields_schema( $schema ) ); } /** * Get Documents tabs. * * @return array */ public function get_documents_tabs() { $tabs = array(); $tabs_items = function_exists( 'bp_nouveau_get_document_directory_nav_items' ) ? bp_nouveau_get_document_directory_nav_items() : array(); if ( ! empty( $tabs_items ) ) { foreach ( $tabs_items as $key => $item ) { $tabs[ $key ]['title'] = $item['text']; $tabs[ $key ]['position'] = $item['position']; } } return $tabs; } /** * Get privacy for the documents. * * @return array */ public function get_documents_privacy() { $privacy = buddypress()->document->visibility_levels; $retval = array(); if ( ! empty( $privacy ) ) { foreach ( $privacy as $key => $value ) { if ( 'grouponly' === $key ) { continue; } $retval[ $key ] = $value; } } return $retval; } }
Changelog
Version | Description |
---|---|
0.1.0 | Introduced. |
Methods
- __construct — Constructor.
- get_documents_privacy — Get privacy for the documents.
- get_documents_tabs — Get Documents tabs.
- get_item_schema — Get the document details schema, conforming to JSON Schema.
- get_items — Retrieve documents details.
- get_items_permissions_check — Checks if a given request has access to get all users.
- register_routes — Register the component routes.
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.