/var/www/html_us/wp-content/plugins/elementor/data/v2/base/endpoint/index/sub-index-endpoint.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
namespace Elementor\Data\V2\Base\Endpoint\Index;

use 
Elementor\Data\V2\Base\Endpoint\Index;

if ( ! 
defined'ABSPATH' ) ) {
    exit; 
// Exit if accessed directly
}
/**
 * Class SubIndexEndpoint is default `Base\Endpoint\Index` of `SubController`,
 * it was created to handle base_route and format for child controller, index endpoint.
 * In case `SubController` were used and the default method of `Controller::register_index_endpoint` ain't overridden.
 * this class will give support to have such routes, eg: 'alpha/{id}/beta/{sub_id}' without using additional endpoints.
 */
final class Sub_Index_Endpoint extends Index {
    
/***
     * @var \Elementor\Data\V2\Base\Controller
     */
    
public $controller;

    public function 
get_format() {
        return 
$this->controller->get_parent()->get_name() . '/{id}/' $this->controller->get_name() . '/{sub_id}';
    }

    public function 
get_base_route() {
        
$parent_controller $this->controller->get_parent();
        
$parent_index_endpoint $parent_controller->index_endpoint;
        
$parent_controller_route '';

        
// In case `$parent_index_endpoint` is AllChildren, it cannot support id_arg_name.
        
if ( ! $parent_index_endpoint instanceof AllChildren ) {
            
$parent_controller_route "(?P<{$parent_index_endpoint->id_arg_name}>[\w]+)";
        }

        return 
untrailingslashit('/' implode'/'array_filter( [
            
trim$parent_index_endpoint->get_base_route(), '/' ),
            
$parent_controller_route,
            
$this->controller->get_name(),
            
$this->get_public_name(),
        ] ) ) );
    }
}