File "Term_Single_Base.php"
Full Path: /home/romayxjt/public_html/wp-content/plugins/the-events-calendar/src/Tribe/REST/V1/Endpoints/Term_Single_Base.php
File size: 5.99 KB
MIME-type: text/x-php
Charset: utf-8
<?php
abstract class Tribe__Events__REST__V1__Endpoints__Term_Single_Base
extends Tribe__Events__REST__V1__Endpoints__Base {
/**
* @var \Tribe__Events__REST__Interfaces__Post_Repository
*/
protected $repository;
/**
* @var \Tribe__Events__Validator__Interface
*/
protected $validator;
/**
* @var \WP_REST_Terms_Controller
*/
protected $terms_controller;
/**
* Tribe__Events__REST__V1__Endpoints__Term_Single_Base constructor.
*
* @since 4.6
*
* @param \Tribe__REST__Messages_Interface $messages
* @param \Tribe__Events__REST__Interfaces__Post_Repository $repository
* @param \Tribe__Events__Validator__Interface $validator
* @param \WP_REST_Terms_Controller $terms_controller
*/
public function __construct(
Tribe__REST__Messages_Interface $messages,
Tribe__Events__REST__Interfaces__Post_Repository $repository,
Tribe__Events__Validator__Interface $validator,
WP_REST_Terms_Controller $terms_controller
) {
parent::__construct( $messages );
$this->repository = $repository;
$this->validator = $validator;
$this->terms_controller = $terms_controller;
}
/**
* Returns the taxonomy of the terms handled by the endpoint.
*
* @since 4.6
*
* @return string
*/
abstract public function get_taxonomy();
/**
* Handles GET requests on the endpoint.
*
* @since 4.6
*
* @param WP_REST_Request $request
*
* @return WP_Error|WP_REST_Response An array containing the data on success or a WP_Error instance on failure.
*/
public function get( WP_REST_Request $request ) {
$term_response = $this->terms_controller->get_item( $request );
if ( is_wp_error( $term_response ) ) {
return $term_response;
}
$data = $this->repository->prepare_term_data( $term_response->get_data(), $this->get_taxonomy(), $this->get_term_namespace() );
$term_response->set_data( $data );
return $term_response;
}
/**
* Returns the term namespace used by the endpoint.
*
* @since 4.6
*
* @return string
*/
abstract protected function get_term_namespace();
/**
* Handles POST requests on the endpoint.
*
* @since 4.6
*
* @param WP_REST_Request $request
* @param bool $return_id Whether the created post ID should be returned or the full response object.
*
* @return WP_Error|WP_REST_Response|int An array containing the data on success or a WP_Error instance on failure.
*/
public function create( WP_REST_Request $request, $return_id = false ) {
$term_response = $this->terms_controller->create_item( $request );
if ( is_wp_error( $term_response ) ) {
return $term_response;
}
$term_data = $term_response->get_data();
if ( $return_id ) {
return $term_data['id'];
}
$data = $this->repository->prepare_term_data( $term_data, $this->get_taxonomy(), $this->get_term_namespace() );
$term_response->set_data( $data );
return $term_response;
}
/**
* Whether the current user can create content of the specified type or not.
*
* @since 4.6
*
* @return bool Whether the current user can post or not.
*/
public function can_create() {
$cap = get_post_type_object( Tribe__Events__Main::POSTTYPE )->cap->edit_posts;
return current_user_can( $cap );
}
/**
* Whether the current user can update content of this type or not.
*
* @since 4.6
*
* @return bool Whether the current user can update or not.
*/
public function can_edit() {
return $this->can_create();
}
/**
* Handles UPDATE requests on the endpoint.
*
* @since 4.6
*
* @param WP_REST_Request $request
*
* @return WP_Error|WP_REST_Response An array containing the data of the updated post on
* success or a WP_Error instance on failure.
*/
public function update( WP_REST_Request $request ) {
$term_response = $this->terms_controller->update_item( $request );
if ( is_wp_error( $term_response ) ) {
return $term_response;
}
$data = $this->repository->prepare_term_data( $term_response->get_data(), $this->get_taxonomy(), $this->get_term_namespace() );
$term_response->set_data( $data );
return $term_response;
}
/**
* Returns the content of the `args` array that should be used to register the endpoint
* with the `register_rest_route` function.
*
* @since 4.6
*
* @return array
*/
public function EDIT_args() {
// when editing the only required argument is the ID ('id')
$create_args = $this->CREATE_args();
array_walk( $create_args, [ $this, 'unrequire_arg' ] );
return array_merge( $this->READ_args(), $create_args );
}
/**
* Returns the content of the `args` array that should be used to register the endpoint
* with the `register_rest_route` function.
*
* @since 4.6
*
* @return array
*/
public function DELETE_args() {
return $this->READ_args();
}
/**
* Whether the current user can delete content of this type or not.
*
* @since 4.6
*
* @return bool Whether the current user can delete or not.
*/
public function can_delete() {
return $this->can_create();
}
/**
* Handles DELETE requests on the endpoint.
*
* @since 4.6
*
* @param WP_REST_Request $request
*
* @return WP_Error|WP_REST_Response An array containing the data of the trashed post on
* success or a WP_Error instance on failure.
*/
public function delete( WP_REST_Request $request ) {
/**
* Filters whether term deletion is supported in TEC REST API or not.
*
* @since 4.6
*
* @param bool $support_deletion
*/
$support_deletion = apply_filters( 'tribe_events_rest_term_allow_delete', true );
if ( $support_deletion ) {
$request['force'] = true;
}
$term_response = $this->terms_controller->delete_item( $request );
if ( is_wp_error( $term_response ) ) {
return $term_response;
}
$term_data = $term_response->get_data();
$data = $this->repository->prepare_term_data( $term_data['previous'], $this->get_taxonomy(), $this->get_term_namespace() );
$term_response->set_data( $data );
return $term_response;
}
}