Ajax_Dispatcher   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 13
c 1
b 0
f 0
dl 0
loc 38
rs 10
wmc 4

3 Methods

Rating   Name   Duplication   Size   Complexity  
A execute() 0 2 1
A __construct() 0 3 1
A add_ajax_call() 0 11 2
1
<?php
2
3
declare(strict_types=1);
4
5
/**
6
 * Primary service for dispatching ajax calls.
7
 *
8
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
9
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
10
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
11
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
12
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
13
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
14
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
15
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
16
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
17
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
18
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
19
 *
20
 * @author Glynn Quelch <[email protected]>
21
 * @license http://www.opensource.org/licenses/mit-license.html  MIT License
22
 * @package PinkCrab\Ajax
23
 */
24
25
namespace PinkCrab\Ajax\Dispatcher;
26
27
use PinkCrab\Ajax\Ajax;
28
use PinkCrab\Loader\Hook_Loader;
29
use PinkCrab\Ajax\Ajax_Exception;
30
use PinkCrab\Ajax\Dispatcher\Ajax_Controller;
31
32
class Ajax_Dispatcher {
33
34
	protected Hook_Loader $loader;
35
	protected Ajax_Controller $ajax_controller;
36
37
	public function __construct( Ajax_Controller $ajax_controller ) {
38
		$this->loader          = new Hook_Loader();
39
		$this->ajax_controller = $ajax_controller;
40
	}
41
42
	/**
43
	 * Adds an ajax call to the loader
44
	 *
45
	 * @param \PinkCrab\Ajax\Ajax $ajax
46
	 * @return void
47
	 * @throws Ajax_Exception (code 101) If no action defined
48
	 */
49
	public function add_ajax_call( Ajax $ajax ): void {
50
51
		if ( ! $ajax->has_valid_action() ) {
52
			throw Ajax_Exception::undefined_action( esc_attr( \get_class( $ajax ) ) );
53
		}
54
55
		$this->loader->ajax(
56
			$ajax->get_action(), /* @phpstan-ignore-line, action existance checked above */
57
			$this->ajax_controller->create_callback( $ajax ),
58
			$ajax->get_logged_out(),
59
			$ajax->get_logged_in()
60
		);
61
	}
62
63
	/**
64
	 * Register all hooks
65
	 *
66
	 * @return void
67
	 */
68
	public function execute(): void {
69
		$this->loader->register_hooks();
70
	}
71
}
72