75 lines
1.9 KiB
PHP
75 lines
1.9 KiB
PHP
<?php
|
|
namespace Elementor\Data\V2\Base\Endpoint\Index;
|
|
|
|
use Elementor\Data\V2\Base\Endpoint\Index;
|
|
use Elementor\Data\V2\Manager;
|
|
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
exit; // Exit if accessed directly
|
|
}
|
|
/**
|
|
* class AllChildren, is optional endpoint.
|
|
* Used in cases where the endpoints are static & there no use of dynamic endpoints( alpha/{id} ), eg:
|
|
* 'settings' - controller
|
|
* 'settings/products' - endpoint
|
|
* 'settings/partners' - endpoint
|
|
*
|
|
* When 'settings' is requested, it should return results of all endpoints ( except it self ):
|
|
* 'settings/products
|
|
* 'settings/partners'
|
|
* By running 'get_items' of each endpoint.
|
|
*/
|
|
class AllChildren extends Index {
|
|
public function get_format() {
|
|
return $this->controller->get_name() . '/index';
|
|
}
|
|
|
|
/*
|
|
* Retrieves a result(s) of all controller endpoint(s), items.
|
|
*
|
|
* Run overall endpoints of the current controller.
|
|
*
|
|
* Example, scenario:
|
|
* 'settings' - controller
|
|
* 'settings/products' - endpoint
|
|
* 'settings/partners' - endpoint
|
|
* Result:
|
|
* [
|
|
* 'products' => [
|
|
* 0 => ...
|
|
* 1 => ...
|
|
* ],
|
|
* 'partners' => [
|
|
* 0 => ...
|
|
* 1 => ...
|
|
* ],
|
|
* ]
|
|
*/
|
|
public function get_items( $request ) {
|
|
$response = [];
|
|
|
|
foreach ( $this->controller->get_sub_controllers() as $controller ) {
|
|
$controller_route = $this->get_controller()->get_base_route() . '/' . $controller->get_name();
|
|
$result = Manager::instance()->run_request( $controller_route );
|
|
|
|
if ( ! $result->is_error() ) {
|
|
$response[ $controller->get_name() ] = $result->get_data();
|
|
}
|
|
}
|
|
|
|
foreach ( $this->controller->endpoints as $endpoint ) {
|
|
// Skip self.
|
|
if ( $endpoint === $this ) {
|
|
continue;
|
|
}
|
|
|
|
$result = Manager::instance()->run_request( $endpoint->get_base_route() );
|
|
|
|
if ( ! $result->is_error() ) {
|
|
$response[ $endpoint->get_name() ] = $result->get_data();
|
|
}
|
|
}
|
|
|
|
return $response;
|
|
}
|
|
}
|