/home/nbcgowuy/kdosheleads.com/wp-content/plugins/dokan-lite/includes/REST/DokanBaseController.php
<?php
namespace WeDevs\Dokan\REST;
use WP_REST_Controller;
/**
* Base REST Controller for Dokan
*
* @since 3.14.11
*
* @package dokan
*/
abstract class DokanBaseController extends WP_REST_Controller {
/**
* Endpoint namespace
*
* @var string
*/
protected $namespace = 'dokan/v1';
/**
* Format item's collection for response
*
* @since 3.14.11
*
* @param object $response
* @param object $request
* @param array $items
* @param int $total_items
*
* @return object
*/
public function format_collection_response( $response, $request, $total_items ) {
if ( $total_items === 0 ) {
return $response;
}
// Pagination values for headers.
$per_page = (int) ( ! empty( $request['per_page'] ) ? $request['per_page'] : 20 );
$page = (int) ( ! empty( $request['page'] ) ? $request['page'] : 1 );
$response->header( 'X-WP-Total', (int) $total_items );
$max_pages = ceil( $total_items / $per_page );
$response->header( 'X-WP-TotalPages', (int) $max_pages );
$base = add_query_arg( $request->get_query_params(), rest_url( sprintf( '/%s/%s', $this->namespace, $this->base ?? $this->rest_base ) ) );
if ( $page > 1 ) {
$prev_page = $page - 1;
if ( $prev_page > $max_pages ) {
$prev_page = $max_pages;
}
$prev_link = add_query_arg( 'page', $prev_page, $base );
$response->link_header( 'prev', $prev_link );
}
if ( $max_pages > $page ) {
$next_page = $page + 1;
$next_link = add_query_arg( 'page', $next_page, $base );
$response->link_header( 'next', $next_link );
}
return $response;
}
}