Completed
Branch BUG-10666-add-check-for-iconv (fb844e)
by
unknown
110:35 queued 98:22
created
core/domain/services/capabilities/CapCheck.php 2 patches
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -38,7 +38,7 @@
 block discarded – undo
38 38
 
39 39
 
40 40
     /**
41
-     * @param string|array $capability   - the capability to be checked, like: 'ee_edit_registrations',
41
+     * @param string $capability   - the capability to be checked, like: 'ee_edit_registrations',
42 42
      *                                   or an array of capability strings
43 43
      * @param string       $context      - what the user is attempting to do, like: 'Edit Registration'
44 44
      * @param int          $ID           - (optional) ID for item where current_user_can is being called from
Please login to merge, or discard this patch.
Indentation   +67 added lines, -67 removed lines patch added patch discarded remove patch
@@ -4,7 +4,7 @@  discard block
 block discarded – undo
4 4
 use EventEspresso\core\exceptions\InvalidDataTypeException;
5 5
 
6 6
 if ( ! defined('EVENT_ESPRESSO_VERSION')) {
7
-    exit('No direct script access allowed');
7
+	exit('No direct script access allowed');
8 8
 }
9 9
 
10 10
 
@@ -20,72 +20,72 @@  discard block
 block discarded – undo
20 20
 class CapCheck implements CapCheckInterface
21 21
 {
22 22
 
23
-    /**
24
-     * @var string|array $capability
25
-     */
26
-    private $capability;
27
-
28
-    /**
29
-     * @var string $context
30
-     */
31
-    private $context;
32
-
33
-    /**
34
-     * @var int|string $ID
35
-     */
36
-    private $ID;
37
-
38
-
39
-
40
-    /**
41
-     * @param string|array $capability   - the capability to be checked, like: 'ee_edit_registrations',
42
-     *                                   or an array of capability strings
43
-     * @param string       $context      - what the user is attempting to do, like: 'Edit Registration'
44
-     * @param int          $ID           - (optional) ID for item where current_user_can is being called from
45
-     * @throws InvalidDataTypeException
46
-     */
47
-    public function __construct($capability, $context, $ID = 0)
48
-    {
49
-        if ( ! is_string($capability)) {
50
-            throw new InvalidDataTypeException('$capability', $capability, 'string');
51
-        }
52
-        if ( ! is_string($context)) {
53
-            throw new InvalidDataTypeException('$context', $context, 'string');
54
-        }
55
-        $this->capability = $capability;
56
-        $this->context = strtolower(str_replace(' ', '_', $context));
57
-        $this->ID = $ID;
58
-    }
59
-
60
-
61
-
62
-    /**
63
-     * @return string|array
64
-     */
65
-    public function capability()
66
-    {
67
-        return $this->capability;
68
-    }
69
-
70
-
71
-
72
-    /**
73
-     * @return string
74
-     */
75
-    public function context()
76
-    {
77
-        return $this->context;
78
-    }
79
-
80
-
81
-
82
-    /**
83
-     * @return int|string
84
-     */
85
-    public function ID()
86
-    {
87
-        return $this->ID;
88
-    }
23
+	/**
24
+	 * @var string|array $capability
25
+	 */
26
+	private $capability;
27
+
28
+	/**
29
+	 * @var string $context
30
+	 */
31
+	private $context;
32
+
33
+	/**
34
+	 * @var int|string $ID
35
+	 */
36
+	private $ID;
37
+
38
+
39
+
40
+	/**
41
+	 * @param string|array $capability   - the capability to be checked, like: 'ee_edit_registrations',
42
+	 *                                   or an array of capability strings
43
+	 * @param string       $context      - what the user is attempting to do, like: 'Edit Registration'
44
+	 * @param int          $ID           - (optional) ID for item where current_user_can is being called from
45
+	 * @throws InvalidDataTypeException
46
+	 */
47
+	public function __construct($capability, $context, $ID = 0)
48
+	{
49
+		if ( ! is_string($capability)) {
50
+			throw new InvalidDataTypeException('$capability', $capability, 'string');
51
+		}
52
+		if ( ! is_string($context)) {
53
+			throw new InvalidDataTypeException('$context', $context, 'string');
54
+		}
55
+		$this->capability = $capability;
56
+		$this->context = strtolower(str_replace(' ', '_', $context));
57
+		$this->ID = $ID;
58
+	}
59
+
60
+
61
+
62
+	/**
63
+	 * @return string|array
64
+	 */
65
+	public function capability()
66
+	{
67
+		return $this->capability;
68
+	}
69
+
70
+
71
+
72
+	/**
73
+	 * @return string
74
+	 */
75
+	public function context()
76
+	{
77
+		return $this->context;
78
+	}
79
+
80
+
81
+
82
+	/**
83
+	 * @return int|string
84
+	 */
85
+	public function ID()
86
+	{
87
+		return $this->ID;
88
+	}
89 89
 
90 90
 
91 91
 }
Please login to merge, or discard this patch.
core/services/commands/CommandHandlerManagerInterface.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -2,7 +2,7 @@
 block discarded – undo
2 2
 
3 3
 namespace EventEspresso\core\services\commands;
4 4
 
5
-if (! defined('EVENT_ESPRESSO_VERSION')) {
5
+if ( ! defined('EVENT_ESPRESSO_VERSION')) {
6 6
     exit('No direct script access allowed');
7 7
 }
8 8
 
Please login to merge, or discard this patch.
Indentation   +14 added lines, -14 removed lines patch added patch discarded remove patch
@@ -3,7 +3,7 @@  discard block
 block discarded – undo
3 3
 namespace EventEspresso\core\services\commands;
4 4
 
5 5
 if (! defined('EVENT_ESPRESSO_VERSION')) {
6
-    exit('No direct script access allowed');
6
+	exit('No direct script access allowed');
7 7
 }
8 8
 
9 9
 
@@ -16,22 +16,22 @@  discard block
 block discarded – undo
16 16
 interface CommandHandlerManagerInterface
17 17
 {
18 18
 
19
-    /**
20
-     * @param CommandHandlerInterface $command_handler
21
-     * @param string $fqcn_for_command Fully Qualified ClassName for Command
22
-     * @return void
23
-     * @throws InvalidCommandHandlerException
24
-     */
25
-    public function addCommandHandler(CommandHandlerInterface $command_handler, $fqcn_for_command = '');
19
+	/**
20
+	 * @param CommandHandlerInterface $command_handler
21
+	 * @param string $fqcn_for_command Fully Qualified ClassName for Command
22
+	 * @return void
23
+	 * @throws InvalidCommandHandlerException
24
+	 */
25
+	public function addCommandHandler(CommandHandlerInterface $command_handler, $fqcn_for_command = '');
26 26
 
27 27
 
28 28
 
29
-    /**
30
-     * @param CommandInterface    $command
31
-     * @param CommandBusInterface $command_bus
32
-     * @return mixed
33
-     */
34
-    public function getCommandHandler(CommandInterface $command, CommandBusInterface $command_bus = null);
29
+	/**
30
+	 * @param CommandInterface    $command
31
+	 * @param CommandBusInterface $command_bus
32
+	 * @return mixed
33
+	 */
34
+	public function getCommandHandler(CommandInterface $command, CommandBusInterface $command_bus = null);
35 35
 
36 36
 }
37 37
 // End of file CommandHandlerManagerInterface.php
Please login to merge, or discard this patch.
core/services/commands/middleware/CommandBusMiddlewareInterface.php 1 patch
Indentation   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -5,7 +5,7 @@  discard block
 block discarded – undo
5 5
 use EventEspresso\core\services\commands\CommandInterface;
6 6
 
7 7
 if ( ! defined('EVENT_ESPRESSO_VERSION')) {
8
-    exit('No direct script access allowed');
8
+	exit('No direct script access allowed');
9 9
 }
10 10
 
11 11
 
@@ -18,12 +18,12 @@  discard block
 block discarded – undo
18 18
 interface CommandBusMiddlewareInterface
19 19
 {
20 20
 
21
-    /**
22
-     * @param CommandInterface $command
23
-     * @param Closure         $next
24
-     * @return mixed
25
-     */
26
-    public function handle(CommandInterface $command, Closure $next);
21
+	/**
22
+	 * @param CommandInterface $command
23
+	 * @param Closure         $next
24
+	 * @return mixed
25
+	 */
26
+	public function handle(CommandInterface $command, Closure $next);
27 27
 
28 28
 }
29 29
 // End of file CommandBusMiddlewareInterface.php
Please login to merge, or discard this patch.
core/services/commands/middleware/CapChecker.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -55,7 +55,7 @@
 block discarded – undo
55 55
      */
56 56
     public function handle(CommandInterface $command, Closure $next)
57 57
     {
58
-        if ( $command instanceof CommandRequiresCapCheckInterface) {
58
+        if ($command instanceof CommandRequiresCapCheckInterface) {
59 59
             $this->capabilities_checker->processCapCheck(
60 60
                 $command->getCapCheck()
61 61
             );
Please login to merge, or discard this patch.
Indentation   +30 added lines, -30 removed lines patch added patch discarded remove patch
@@ -7,7 +7,7 @@  discard block
 block discarded – undo
7 7
 use EventEspresso\core\services\commands\CommandRequiresCapCheckInterface;
8 8
 
9 9
 if ( ! defined('EVENT_ESPRESSO_VERSION')) {
10
-    exit('No direct script access allowed');
10
+	exit('No direct script access allowed');
11 11
 }
12 12
 
13 13
 
@@ -27,41 +27,41 @@  discard block
 block discarded – undo
27 27
 class CapChecker implements CommandBusMiddlewareInterface
28 28
 {
29 29
 
30
-    /**
31
-     * @type CapabilitiesCheckerInterface $capabilities_checker
32
-     */
33
-    private $capabilities_checker;
30
+	/**
31
+	 * @type CapabilitiesCheckerInterface $capabilities_checker
32
+	 */
33
+	private $capabilities_checker;
34 34
 
35 35
 
36 36
 
37
-    /**
38
-     * CapChecker constructor
39
-     *
40
-     * @param CapabilitiesCheckerInterface $capabilities_checker
41
-     */
42
-    public function __construct(CapabilitiesCheckerInterface $capabilities_checker)
43
-    {
44
-        $this->capabilities_checker = $capabilities_checker;
45
-    }
37
+	/**
38
+	 * CapChecker constructor
39
+	 *
40
+	 * @param CapabilitiesCheckerInterface $capabilities_checker
41
+	 */
42
+	public function __construct(CapabilitiesCheckerInterface $capabilities_checker)
43
+	{
44
+		$this->capabilities_checker = $capabilities_checker;
45
+	}
46 46
 
47 47
 
48 48
 
49
-    /**
50
-     * @param CommandInterface $command
51
-     * @param Closure         $next
52
-     * @return mixed
53
-     * @throws \EventEspresso\core\exceptions\InsufficientPermissionsException
54
-     * @throws \EventEspresso\core\exceptions\InvalidClassException
55
-     */
56
-    public function handle(CommandInterface $command, Closure $next)
57
-    {
58
-        if ( $command instanceof CommandRequiresCapCheckInterface) {
59
-            $this->capabilities_checker->processCapCheck(
60
-                $command->getCapCheck()
61
-            );
62
-        }
63
-        return $next($command);
64
-    }
49
+	/**
50
+	 * @param CommandInterface $command
51
+	 * @param Closure         $next
52
+	 * @return mixed
53
+	 * @throws \EventEspresso\core\exceptions\InsufficientPermissionsException
54
+	 * @throws \EventEspresso\core\exceptions\InvalidClassException
55
+	 */
56
+	public function handle(CommandInterface $command, Closure $next)
57
+	{
58
+		if ( $command instanceof CommandRequiresCapCheckInterface) {
59
+			$this->capabilities_checker->processCapCheck(
60
+				$command->getCapCheck()
61
+			);
62
+		}
63
+		return $next($command);
64
+	}
65 65
 
66 66
 
67 67
 }
Please login to merge, or discard this patch.
core/services/commands/middleware/AddActionHook.php 1 patch
Indentation   +18 added lines, -18 removed lines patch added patch discarded remove patch
@@ -20,24 +20,24 @@
 block discarded – undo
20 20
 class AddActionHook implements CommandBusMiddlewareInterface
21 21
 {
22 22
 
23
-    /**
24
-     * @param CommandInterface $command
25
-     * @param Closure         $next
26
-     * @return mixed
27
-     */
28
-    public function handle(CommandInterface $command, Closure $next)
29
-    {
30
-        do_action(
31
-            'AHEE__EventEspresso_core_services_commands_middleware_AddActionHook__handle__before',
32
-            $command
33
-        );
34
-        $results = $next($command);
35
-        do_action(
36
-            'AHEE__EventEspresso_core_services_commands_middleware_AddActionHook__handle__after',
37
-            $command
38
-        );
39
-        return $results;
40
-    }
23
+	/**
24
+	 * @param CommandInterface $command
25
+	 * @param Closure         $next
26
+	 * @return mixed
27
+	 */
28
+	public function handle(CommandInterface $command, Closure $next)
29
+	{
30
+		do_action(
31
+			'AHEE__EventEspresso_core_services_commands_middleware_AddActionHook__handle__before',
32
+			$command
33
+		);
34
+		$results = $next($command);
35
+		do_action(
36
+			'AHEE__EventEspresso_core_services_commands_middleware_AddActionHook__handle__after',
37
+			$command
38
+		);
39
+		return $results;
40
+	}
41 41
 }
42 42
 // End of file AddActionHook.php
43 43
 // Location: EventEspresso\core\services\commands\middleware/AddActionHook.php
44 44
\ No newline at end of file
Please login to merge, or discard this patch.
core/services/commands/CompositeCommandHandler.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -2,7 +2,7 @@
 block discarded – undo
2 2
 
3 3
 namespace EventEspresso\core\services\commands;
4 4
 
5
-if (! defined('EVENT_ESPRESSO_VERSION')) {
5
+if ( ! defined('EVENT_ESPRESSO_VERSION')) {
6 6
     exit('No direct script access allowed');
7 7
 }
8 8
 
Please login to merge, or discard this patch.
Indentation   +41 added lines, -41 removed lines patch added patch discarded remove patch
@@ -3,7 +3,7 @@  discard block
 block discarded – undo
3 3
 namespace EventEspresso\core\services\commands;
4 4
 
5 5
 if (! defined('EVENT_ESPRESSO_VERSION')) {
6
-    exit('No direct script access allowed');
6
+	exit('No direct script access allowed');
7 7
 }
8 8
 
9 9
 
@@ -21,59 +21,59 @@  discard block
 block discarded – undo
21 21
 abstract class CompositeCommandHandler extends CommandHandler
22 22
 {
23 23
 
24
-    /**
25
-     * @type CommandBusInterface $command_bus
26
-     */
27
-    private $command_bus;
24
+	/**
25
+	 * @type CommandBusInterface $command_bus
26
+	 */
27
+	private $command_bus;
28 28
 
29
-    /**
30
-     * @type CommandFactoryInterface $command_factory
31
-     */
32
-    private $command_factory;
29
+	/**
30
+	 * @type CommandFactoryInterface $command_factory
31
+	 */
32
+	private $command_factory;
33 33
 
34 34
 
35 35
 
36
-    /**
37
-     * CompositeCommandHandler constructor.
38
-     *
39
-     * @param CommandBusInterface     $command_bus
40
-     * @param CommandFactoryInterface $command_factory
41
-     */
42
-    public function __construct(CommandBusInterface $command_bus, CommandFactoryInterface $command_factory)
43
-    {
44
-        $this->command_bus = $command_bus;
45
-        $this->command_factory = $command_factory;
46
-    }
36
+	/**
37
+	 * CompositeCommandHandler constructor.
38
+	 *
39
+	 * @param CommandBusInterface     $command_bus
40
+	 * @param CommandFactoryInterface $command_factory
41
+	 */
42
+	public function __construct(CommandBusInterface $command_bus, CommandFactoryInterface $command_factory)
43
+	{
44
+		$this->command_bus = $command_bus;
45
+		$this->command_factory = $command_factory;
46
+	}
47 47
 
48 48
 
49 49
 
50
-    /**
51
-     * @param CommandBusInterface $command_bus
52
-     */
53
-    public function setCommandBus(CommandBusInterface $command_bus)
54
-    {
55
-        $this->command_bus = $command_bus;
56
-    }
50
+	/**
51
+	 * @param CommandBusInterface $command_bus
52
+	 */
53
+	public function setCommandBus(CommandBusInterface $command_bus)
54
+	{
55
+		$this->command_bus = $command_bus;
56
+	}
57 57
 
58 58
 
59 59
 
60
-    /**
61
-     * @return CommandBusInterface
62
-     */
63
-    public function commandBus()
64
-    {
65
-        return $this->command_bus;
66
-    }
60
+	/**
61
+	 * @return CommandBusInterface
62
+	 */
63
+	public function commandBus()
64
+	{
65
+		return $this->command_bus;
66
+	}
67 67
 
68 68
 
69 69
 
70
-    /**
71
-     * @return CommandFactoryInterface
72
-     */
73
-    public function commandFactory()
74
-    {
75
-        return $this->command_factory;
76
-    }
70
+	/**
71
+	 * @return CommandFactoryInterface
72
+	 */
73
+	public function commandFactory()
74
+	{
75
+		return $this->command_factory;
76
+	}
77 77
 
78 78
 
79 79
 
Please login to merge, or discard this patch.
core/domain/services/capabilities/CapabilitiesCheckerInterface.php 1 patch
Indentation   +22 added lines, -22 removed lines patch added patch discarded remove patch
@@ -20,26 +20,26 @@
 block discarded – undo
20 20
 interface CapabilitiesCheckerInterface
21 21
 {
22 22
 
23
-    /**
24
-     * Verifies that the current user has ALL of the capabilities listed in the CapCheck DTO.
25
-     * If any of the individual capability checks fails, then the command will NOT be executed.
26
-     *
27
-     * @param CapCheckInterface|CapCheckInterface[] $cap_check
28
-     * @return bool
29
-     * @throws InvalidClassException
30
-     * @throws InsufficientPermissionsException
31
-     */
32
-    public function processCapCheck($cap_check);
33
-
34
-
35
-
36
-    /**
37
-     * @param string $capability - the capability to be checked, like: 'ee_edit_registrations'
38
-     * @param string $context    - what the user is attempting to do, like: 'Edit Registration'
39
-     * @param int    $ID         - (optional) ID for item where current_user_can is being called from
40
-     * @return bool
41
-     * @throws InsufficientPermissionsException
42
-     * @throws InvalidClassException
43
-     */
44
-    public function process($capability, $context, $ID = 0);
23
+	/**
24
+	 * Verifies that the current user has ALL of the capabilities listed in the CapCheck DTO.
25
+	 * If any of the individual capability checks fails, then the command will NOT be executed.
26
+	 *
27
+	 * @param CapCheckInterface|CapCheckInterface[] $cap_check
28
+	 * @return bool
29
+	 * @throws InvalidClassException
30
+	 * @throws InsufficientPermissionsException
31
+	 */
32
+	public function processCapCheck($cap_check);
33
+
34
+
35
+
36
+	/**
37
+	 * @param string $capability - the capability to be checked, like: 'ee_edit_registrations'
38
+	 * @param string $context    - what the user is attempting to do, like: 'Edit Registration'
39
+	 * @param int    $ID         - (optional) ID for item where current_user_can is being called from
40
+	 * @return bool
41
+	 * @throws InsufficientPermissionsException
42
+	 * @throws InvalidClassException
43
+	 */
44
+	public function process($capability, $context, $ID = 0);
45 45
 }
Please login to merge, or discard this patch.
core/domain/services/capabilities/CapabilitiesChecker.php 2 patches
Indentation   +87 added lines, -87 removed lines patch added patch discarded remove patch
@@ -8,7 +8,7 @@  discard block
 block discarded – undo
8 8
 use EventEspresso\core\exceptions\InvalidDataTypeException;
9 9
 
10 10
 if (! defined('EVENT_ESPRESSO_VERSION')) {
11
-    exit('No direct script access allowed');
11
+	exit('No direct script access allowed');
12 12
 }
13 13
 
14 14
 
@@ -24,92 +24,92 @@  discard block
 block discarded – undo
24 24
 class CapabilitiesChecker implements CapabilitiesCheckerInterface
25 25
 {
26 26
 
27
-    /**
28
-     * @type EE_Capabilities $capabilities
29
-     */
30
-    private $capabilities;
31
-
32
-
33
-
34
-    /**
35
-     * CapabilitiesChecker constructor
36
-     *
37
-     * @param EE_Capabilities $capabilities
38
-     */
39
-    public function __construct(EE_Capabilities $capabilities)
40
-    {
41
-        $this->capabilities = $capabilities;
42
-    }
43
-
44
-
45
-
46
-    /**
47
-     * @return EE_Capabilities
48
-     */
49
-    protected function capabilities()
50
-    {
51
-        return $this->capabilities;
52
-    }
53
-
54
-
55
-
56
-    /**
57
-     * Verifies that the current user has ALL of the capabilities listed in the CapCheck DTO.
58
-     * If any of the individual capability checks fails, then the command will NOT be executed.
59
-     *
60
-     * @param CapCheckInterface|CapCheckInterface[] $cap_check
61
-     * @return bool
62
-     * @throws InvalidClassException
63
-     * @throws InsufficientPermissionsException
64
-     */
65
-    public function processCapCheck($cap_check)
66
-    {
67
-        if (is_array($cap_check)) {
68
-            foreach ($cap_check as $check) {
69
-                $this->processCapCheck($check);
70
-            }
71
-            return true;
72
-        }
73
-        // at this point, $cap_check should be an individual instance of CapCheck
74
-        if (! $cap_check instanceof CapCheckInterface) {
75
-            throw new InvalidClassException(
76
-                '\EventEspresso\core\domain\services\capabilities\CapCheckInterface'
77
-            );
78
-        }
79
-        // sometimes cap checks are conditional, and no capabilities are required
80
-        if ($cap_check instanceof PublicCapabilities) {
81
-            return true;
82
-        }
83
-        $capabilities = (array)$cap_check->capability();
84
-        foreach ($capabilities as $capability) {
85
-            if (
86
-            ! $this->capabilities()->current_user_can(
87
-                $capability,
88
-                $cap_check->context(),
89
-                $cap_check->ID()
90
-            )
91
-            ) {
92
-                throw new InsufficientPermissionsException($cap_check->context());
93
-            }
94
-        }
95
-        return true;
96
-    }
97
-
98
-
99
-
100
-    /**
101
-     * @param string $capability - the capability to be checked, like: 'ee_edit_registrations'
102
-     * @param string $context    - what the user is attempting to do, like: 'Edit Registration'
103
-     * @param int    $ID         - (optional) ID for item where current_user_can is being called from
104
-     * @return bool
105
-     * @throws InvalidDataTypeException
106
-     * @throws InsufficientPermissionsException
107
-     * @throws InvalidClassException
108
-     */
109
-    public function process($capability, $context, $ID = 0)
110
-    {
111
-        return $this->processCapCheck(new CapCheck($capability, $context, $ID));
112
-    }
27
+	/**
28
+	 * @type EE_Capabilities $capabilities
29
+	 */
30
+	private $capabilities;
31
+
32
+
33
+
34
+	/**
35
+	 * CapabilitiesChecker constructor
36
+	 *
37
+	 * @param EE_Capabilities $capabilities
38
+	 */
39
+	public function __construct(EE_Capabilities $capabilities)
40
+	{
41
+		$this->capabilities = $capabilities;
42
+	}
43
+
44
+
45
+
46
+	/**
47
+	 * @return EE_Capabilities
48
+	 */
49
+	protected function capabilities()
50
+	{
51
+		return $this->capabilities;
52
+	}
53
+
54
+
55
+
56
+	/**
57
+	 * Verifies that the current user has ALL of the capabilities listed in the CapCheck DTO.
58
+	 * If any of the individual capability checks fails, then the command will NOT be executed.
59
+	 *
60
+	 * @param CapCheckInterface|CapCheckInterface[] $cap_check
61
+	 * @return bool
62
+	 * @throws InvalidClassException
63
+	 * @throws InsufficientPermissionsException
64
+	 */
65
+	public function processCapCheck($cap_check)
66
+	{
67
+		if (is_array($cap_check)) {
68
+			foreach ($cap_check as $check) {
69
+				$this->processCapCheck($check);
70
+			}
71
+			return true;
72
+		}
73
+		// at this point, $cap_check should be an individual instance of CapCheck
74
+		if (! $cap_check instanceof CapCheckInterface) {
75
+			throw new InvalidClassException(
76
+				'\EventEspresso\core\domain\services\capabilities\CapCheckInterface'
77
+			);
78
+		}
79
+		// sometimes cap checks are conditional, and no capabilities are required
80
+		if ($cap_check instanceof PublicCapabilities) {
81
+			return true;
82
+		}
83
+		$capabilities = (array)$cap_check->capability();
84
+		foreach ($capabilities as $capability) {
85
+			if (
86
+			! $this->capabilities()->current_user_can(
87
+				$capability,
88
+				$cap_check->context(),
89
+				$cap_check->ID()
90
+			)
91
+			) {
92
+				throw new InsufficientPermissionsException($cap_check->context());
93
+			}
94
+		}
95
+		return true;
96
+	}
97
+
98
+
99
+
100
+	/**
101
+	 * @param string $capability - the capability to be checked, like: 'ee_edit_registrations'
102
+	 * @param string $context    - what the user is attempting to do, like: 'Edit Registration'
103
+	 * @param int    $ID         - (optional) ID for item where current_user_can is being called from
104
+	 * @return bool
105
+	 * @throws InvalidDataTypeException
106
+	 * @throws InsufficientPermissionsException
107
+	 * @throws InvalidClassException
108
+	 */
109
+	public function process($capability, $context, $ID = 0)
110
+	{
111
+		return $this->processCapCheck(new CapCheck($capability, $context, $ID));
112
+	}
113 113
 
114 114
 
115 115
 
Please login to merge, or discard this patch.
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -7,7 +7,7 @@  discard block
 block discarded – undo
7 7
 use EventEspresso\core\exceptions\InvalidClassException;
8 8
 use EventEspresso\core\exceptions\InvalidDataTypeException;
9 9
 
10
-if (! defined('EVENT_ESPRESSO_VERSION')) {
10
+if ( ! defined('EVENT_ESPRESSO_VERSION')) {
11 11
     exit('No direct script access allowed');
12 12
 }
13 13
 
@@ -71,7 +71,7 @@  discard block
 block discarded – undo
71 71
             return true;
72 72
         }
73 73
         // at this point, $cap_check should be an individual instance of CapCheck
74
-        if (! $cap_check instanceof CapCheckInterface) {
74
+        if ( ! $cap_check instanceof CapCheckInterface) {
75 75
             throw new InvalidClassException(
76 76
                 '\EventEspresso\core\domain\services\capabilities\CapCheckInterface'
77 77
             );
@@ -80,7 +80,7 @@  discard block
 block discarded – undo
80 80
         if ($cap_check instanceof PublicCapabilities) {
81 81
             return true;
82 82
         }
83
-        $capabilities = (array)$cap_check->capability();
83
+        $capabilities = (array) $cap_check->capability();
84 84
         foreach ($capabilities as $capability) {
85 85
             if (
86 86
             ! $this->capabilities()->current_user_can(
Please login to merge, or discard this patch.
core/EE_Dependency_Map.core.php 2 patches
Spacing   +12 added lines, -12 removed lines patch added patch discarded remove patch
@@ -3,7 +3,7 @@  discard block
 block discarded – undo
3 3
 use EventEspresso\core\exceptions\InvalidInterfaceException;
4 4
 use EventEspresso\core\services\loaders\LoaderInterface;
5 5
 
6
-if (! defined('EVENT_ESPRESSO_VERSION')) {
6
+if ( ! defined('EVENT_ESPRESSO_VERSION')) {
7 7
     exit('No direct script access allowed');
8 8
 }
9 9
 
@@ -116,7 +116,7 @@  discard block
 block discarded – undo
116 116
     public static function instance(EE_Request $request = null, EE_Response $response = null)
117 117
     {
118 118
         // check if class object is instantiated, and instantiated properly
119
-        if (! self::$_instance instanceof EE_Dependency_Map) {
119
+        if ( ! self::$_instance instanceof EE_Dependency_Map) {
120 120
             self::$_instance = new EE_Dependency_Map($request, $response);
121 121
         }
122 122
         return self::$_instance;
@@ -141,15 +141,15 @@  discard block
 block discarded – undo
141 141
      */
142 142
     public static function register_dependencies($class, $dependencies)
143 143
     {
144
-        if (! isset(self::$_instance->_dependency_map[$class])) {
144
+        if ( ! isset(self::$_instance->_dependency_map[$class])) {
145 145
             // we need to make sure that any aliases used when registering a dependency
146 146
             // get resolved to the correct class name
147
-            foreach ((array)$dependencies as $dependency => $load_source) {
147
+            foreach ((array) $dependencies as $dependency => $load_source) {
148 148
                 $alias = self::$_instance->get_alias($dependency);
149 149
                 unset($dependencies[$dependency]);
150 150
                 $dependencies[$alias] = $load_source;
151 151
             }
152
-            self::$_instance->_dependency_map[$class] = (array)$dependencies;
152
+            self::$_instance->_dependency_map[$class] = (array) $dependencies;
153 153
             return true;
154 154
         }
155 155
         return false;
@@ -181,7 +181,7 @@  discard block
 block discarded – undo
181 181
             );
182 182
         }
183 183
         $class_name = self::$_instance->get_alias($class_name);
184
-        if (! isset(self::$_instance->_class_loaders[$class_name])) {
184
+        if ( ! isset(self::$_instance->_class_loaders[$class_name])) {
185 185
             self::$_instance->_class_loaders[$class_name] = $loader;
186 186
             return true;
187 187
         }
@@ -504,10 +504,10 @@  discard block
 block discarded – undo
504 504
             'EE_Front_Controller'                  => 'load_core',
505 505
             'EE_Module_Request_Router'             => 'load_core',
506 506
             'EE_Registry'                          => 'load_core',
507
-            'EE_Request'                           => function () use (&$request) {
507
+            'EE_Request'                           => function() use (&$request) {
508 508
                 return $request;
509 509
             },
510
-            'EE_Response'                          => function () use (&$response) {
510
+            'EE_Response'                          => function() use (&$response) {
511 511
                 return $response;
512 512
             },
513 513
             'EE_Request_Handler'                   => 'load_core',
@@ -524,23 +524,23 @@  discard block
 block discarded – undo
524 524
             'EE_Messages_Queue'                    => 'load_lib',
525 525
             'EE_Messages_Data_Handler_Collection'  => 'load_lib',
526 526
             'EE_Message_Template_Group_Collection' => 'load_lib',
527
-            'EE_Messages_Generator'                => function () {
527
+            'EE_Messages_Generator'                => function() {
528 528
                 return EE_Registry::instance()->load_lib('Messages_Generator', array(), false, false);
529 529
             },
530
-            'EE_Messages_Template_Defaults'        => function ($arguments = array()) {
530
+            'EE_Messages_Template_Defaults'        => function($arguments = array()) {
531 531
                 return EE_Registry::instance()->load_lib('Messages_Template_Defaults', $arguments, false, false);
532 532
             },
533 533
             //load_model
534 534
             'EEM_Message_Template_Group'           => 'load_model',
535 535
             'EEM_Message_Template'                 => 'load_model',
536 536
             //load_helper
537
-            'EEH_Parse_Shortcodes'                 => function () {
537
+            'EEH_Parse_Shortcodes'                 => function() {
538 538
                 if (EE_Registry::instance()->load_helper('Parse_Shortcodes')) {
539 539
                     return new EEH_Parse_Shortcodes();
540 540
                 }
541 541
                 return null;
542 542
             },
543
-            'EventEspresso\core\services\loaders\Loader' => function () use (&$loader) {
543
+            'EventEspresso\core\services\loaders\Loader' => function() use (&$loader) {
544 544
                 return $loader;
545 545
             },
546 546
         );
Please login to merge, or discard this patch.
Indentation   +575 added lines, -575 removed lines patch added patch discarded remove patch
@@ -4,7 +4,7 @@  discard block
 block discarded – undo
4 4
 use EventEspresso\core\services\loaders\LoaderInterface;
5 5
 
6 6
 if (! defined('EVENT_ESPRESSO_VERSION')) {
7
-    exit('No direct script access allowed');
7
+	exit('No direct script access allowed');
8 8
 }
9 9
 
10 10
 
@@ -22,580 +22,580 @@  discard block
 block discarded – undo
22 22
 {
23 23
 
24 24
 
25
-    /**
26
-     * This means that the requested class dependency is not present in the dependency map
27
-     */
28
-    const not_registered = 0;
29
-
30
-
31
-    /**
32
-     * This instructs class loaders to ALWAYS return a newly instantiated object for the requested class.
33
-     */
34
-    const load_new_object = 1;
35
-
36
-    /**
37
-     * This instructs class loaders to return a previously instantiated and cached object for the requested class.
38
-     * IF a previously instantiated object does not exist, a new one will be created and added to the cache.
39
-     */
40
-    const load_from_cache = 2;
41
-
42
-    /**
43
-     * @type EE_Dependency_Map $_instance
44
-     */
45
-    protected static $_instance;
46
-
47
-    /**
48
-     * @type EE_Request $request
49
-     */
50
-    protected $_request;
51
-
52
-    /**
53
-     * @type EE_Response $response
54
-     */
55
-    protected $_response;
56
-
57
-    /**
58
-     * @type LoaderInterface $loader
59
-     */
60
-    protected $loader;
61
-
62
-    /**
63
-     * @type array $_dependency_map
64
-     */
65
-    protected $_dependency_map = array();
66
-
67
-    /**
68
-     * @type array $_class_loaders
69
-     */
70
-    protected $_class_loaders = array();
71
-
72
-    /**
73
-     * @type array $_aliases
74
-     */
75
-    protected $_aliases = array();
76
-
77
-
78
-
79
-    /**
80
-     * EE_Dependency_Map constructor.
81
-     *
82
-     * @param EE_Request  $request
83
-     * @param EE_Response $response
84
-     */
85
-    protected function __construct(EE_Request $request, EE_Response $response)
86
-    {
87
-        $this->_request = $request;
88
-        $this->_response = $response;
89
-        add_action('EE_Load_Espresso_Core__handle_request__initialize_core_loading', array($this, 'initialize'));
90
-        do_action('EE_Dependency_Map____construct');
91
-    }
92
-
93
-
94
-
95
-    /**
96
-     * @throws InvalidDataTypeException
97
-     * @throws InvalidInterfaceException
98
-     * @throws InvalidArgumentException
99
-     */
100
-    public function initialize()
101
-    {
102
-        $this->_register_core_dependencies();
103
-        $this->_register_core_class_loaders();
104
-        $this->_register_core_aliases();
105
-    }
106
-
107
-
108
-
109
-    /**
110
-     * @singleton method used to instantiate class object
111
-     * @access    public
112
-     * @param EE_Request  $request
113
-     * @param EE_Response $response
114
-     * @return EE_Dependency_Map
115
-     */
116
-    public static function instance(EE_Request $request = null, EE_Response $response = null)
117
-    {
118
-        // check if class object is instantiated, and instantiated properly
119
-        if (! self::$_instance instanceof EE_Dependency_Map) {
120
-            self::$_instance = new EE_Dependency_Map($request, $response);
121
-        }
122
-        return self::$_instance;
123
-    }
124
-
125
-
126
-
127
-    /**
128
-     * @param LoaderInterface $loader
129
-     */
130
-    public function setLoader(LoaderInterface $loader)
131
-    {
132
-        $this->loader = $loader;
133
-    }
134
-
135
-
136
-
137
-    /**
138
-     * @param string $class
139
-     * @param array  $dependencies
140
-     * @return boolean
141
-     */
142
-    public static function register_dependencies($class, $dependencies)
143
-    {
144
-        if (! isset(self::$_instance->_dependency_map[$class])) {
145
-            // we need to make sure that any aliases used when registering a dependency
146
-            // get resolved to the correct class name
147
-            foreach ((array)$dependencies as $dependency => $load_source) {
148
-                $alias = self::$_instance->get_alias($dependency);
149
-                unset($dependencies[$dependency]);
150
-                $dependencies[$alias] = $load_source;
151
-            }
152
-            self::$_instance->_dependency_map[$class] = (array)$dependencies;
153
-            return true;
154
-        }
155
-        return false;
156
-    }
157
-
158
-
159
-
160
-    /**
161
-     * @param string $class_name
162
-     * @param string $loader
163
-     * @return bool
164
-     * @throws EE_Error
165
-     */
166
-    public static function register_class_loader($class_name, $loader = 'load_core')
167
-    {
168
-        // check that loader is callable or method starts with "load_" and exists in EE_Registry
169
-        if (
170
-            ! is_callable($loader)
171
-            && (
172
-                strpos($loader, 'load_') !== 0
173
-                || ! method_exists('EE_Registry', $loader)
174
-            )
175
-        ) {
176
-            throw new EE_Error(
177
-                sprintf(
178
-                    __('"%1$s" is not a valid loader method on EE_Registry.', 'event_espresso'),
179
-                    $loader
180
-                )
181
-            );
182
-        }
183
-        $class_name = self::$_instance->get_alias($class_name);
184
-        if (! isset(self::$_instance->_class_loaders[$class_name])) {
185
-            self::$_instance->_class_loaders[$class_name] = $loader;
186
-            return true;
187
-        }
188
-        return false;
189
-    }
190
-
191
-
192
-
193
-    /**
194
-     * @return array
195
-     */
196
-    public function dependency_map()
197
-    {
198
-        return $this->_dependency_map;
199
-    }
200
-
201
-
202
-
203
-    /**
204
-     * returns TRUE if dependency map contains a listing for the provided class name
205
-     *
206
-     * @param string $class_name
207
-     * @return boolean
208
-     */
209
-    public function has($class_name = '')
210
-    {
211
-        return isset($this->_dependency_map[$class_name]) ? true : false;
212
-    }
213
-
214
-
215
-
216
-    /**
217
-     * returns TRUE if dependency map contains a listing for the provided class name AND dependency
218
-     *
219
-     * @param string $class_name
220
-     * @param string $dependency
221
-     * @return bool
222
-     */
223
-    public function has_dependency_for_class($class_name = '', $dependency = '')
224
-    {
225
-        $dependency = $this->get_alias($dependency);
226
-        return isset($this->_dependency_map[$class_name], $this->_dependency_map[$class_name][$dependency])
227
-            ? true
228
-            : false;
229
-    }
230
-
231
-
232
-
233
-    /**
234
-     * returns loading strategy for whether a previously cached dependency should be loaded or a new instance returned
235
-     *
236
-     * @param string $class_name
237
-     * @param string $dependency
238
-     * @return int
239
-     */
240
-    public function loading_strategy_for_class_dependency($class_name = '', $dependency = '')
241
-    {
242
-        $dependency = $this->get_alias($dependency);
243
-        return $this->has_dependency_for_class($class_name, $dependency)
244
-            ? $this->_dependency_map[$class_name][$dependency]
245
-            : EE_Dependency_Map::not_registered;
246
-    }
247
-
248
-
249
-
250
-    /**
251
-     * @param string $class_name
252
-     * @return string | Closure
253
-     */
254
-    public function class_loader($class_name)
255
-    {
256
-        $class_name = $this->get_alias($class_name);
257
-        return isset($this->_class_loaders[$class_name]) ? $this->_class_loaders[$class_name] : '';
258
-    }
259
-
260
-
261
-
262
-    /**
263
-     * @return array
264
-     */
265
-    public function class_loaders()
266
-    {
267
-        return $this->_class_loaders;
268
-    }
269
-
270
-
271
-
272
-    /**
273
-     * adds an alias for a classname
274
-     *
275
-     * @param string $class_name
276
-     * @param string $alias
277
-     */
278
-    public function add_alias($class_name, $alias)
279
-    {
280
-        $this->_aliases[$class_name] = $alias;
281
-    }
282
-
283
-
284
-
285
-    /**
286
-     * returns TRUE if the provided class name has an alias
287
-     *
288
-     * @param string $class_name
289
-     * @return boolean
290
-     */
291
-    public function has_alias($class_name = '')
292
-    {
293
-        return isset($this->_aliases[$class_name]) ? true : false;
294
-    }
295
-
296
-
297
-
298
-    /**
299
-     * returns alias for class name if one exists, otherwise returns the original classname
300
-     * functions recursively, so that multiple aliases can be used to drill down to a classname
301
-     *  for example:
302
-     *      if the following two entries were added to the _aliases array:
303
-     *          array(
304
-     *              'interface_alias'           => 'some\namespace\interface'
305
-     *              'some\namespace\interface'  => 'some\namespace\classname'
306
-     *          )
307
-     *      then one could use EE_Registry::instance()->create( 'interface_alias' )
308
-     *      to load an instance of 'some\namespace\classname'
309
-     *
310
-     * @param string $class_name
311
-     * @return string
312
-     */
313
-    public function get_alias($class_name = '')
314
-    {
315
-        return $this->has_alias($class_name)
316
-            ? $this->get_alias($this->_aliases[$class_name])
317
-            : $class_name;
318
-    }
319
-
320
-
321
-
322
-    /**
323
-     * Registers the core dependencies and whether a previously instantiated object should be loaded from the cache,
324
-     * if one exists, or whether a new object should be generated every time the requested class is loaded.
325
-     * This is done by using the following class constants:
326
-     *        EE_Dependency_Map::load_from_cache - loads previously instantiated object
327
-     *        EE_Dependency_Map::load_new_object - generates a new object every time
328
-     */
329
-    protected function _register_core_dependencies()
330
-    {
331
-        $this->_dependency_map = array(
332
-            'EE_Request_Handler'                                                                                          => array(
333
-                'EE_Request' => EE_Dependency_Map::load_from_cache,
334
-            ),
335
-            'EE_System'                                                                                                   => array(
336
-                'EE_Registry' => EE_Dependency_Map::load_from_cache,
337
-            ),
338
-            'EE_Session'                                                                                                  => array(
339
-                'EE_Encryption' => EE_Dependency_Map::load_from_cache,
340
-            ),
341
-            'EE_Cart'                                                                                                     => array(
342
-                'EE_Session' => EE_Dependency_Map::load_from_cache,
343
-            ),
344
-            'EE_Front_Controller'                                                                                         => array(
345
-                'EE_Registry'              => EE_Dependency_Map::load_from_cache,
346
-                'EE_Request_Handler'       => EE_Dependency_Map::load_from_cache,
347
-                'EE_Module_Request_Router' => EE_Dependency_Map::load_from_cache,
348
-            ),
349
-            'EE_Messenger_Collection_Loader'                                                                              => array(
350
-                'EE_Messenger_Collection' => EE_Dependency_Map::load_new_object,
351
-            ),
352
-            'EE_Message_Type_Collection_Loader'                                                                           => array(
353
-                'EE_Message_Type_Collection' => EE_Dependency_Map::load_new_object,
354
-            ),
355
-            'EE_Message_Resource_Manager'                                                                                 => array(
356
-                'EE_Messenger_Collection_Loader'    => EE_Dependency_Map::load_new_object,
357
-                'EE_Message_Type_Collection_Loader' => EE_Dependency_Map::load_new_object,
358
-                'EEM_Message_Template_Group'        => EE_Dependency_Map::load_from_cache,
359
-            ),
360
-            'EE_Message_Factory'                                                                                          => array(
361
-                'EE_Message_Resource_Manager' => EE_Dependency_Map::load_from_cache,
362
-            ),
363
-            'EE_messages'                                                                                                 => array(
364
-                'EE_Message_Resource_Manager' => EE_Dependency_Map::load_from_cache,
365
-            ),
366
-            'EE_Messages_Generator'                                                                                       => array(
367
-                'EE_Messages_Queue'                    => EE_Dependency_Map::load_new_object,
368
-                'EE_Messages_Data_Handler_Collection'  => EE_Dependency_Map::load_new_object,
369
-                'EE_Message_Template_Group_Collection' => EE_Dependency_Map::load_new_object,
370
-                'EEH_Parse_Shortcodes'                 => EE_Dependency_Map::load_from_cache,
371
-            ),
372
-            'EE_Messages_Processor'                                                                                       => array(
373
-                'EE_Message_Resource_Manager' => EE_Dependency_Map::load_from_cache,
374
-            ),
375
-            'EE_Messages_Queue'                                                                                           => array(
376
-                'EE_Message_Repository' => EE_Dependency_Map::load_new_object,
377
-            ),
378
-            'EE_Messages_Template_Defaults'                                                                               => array(
379
-                'EEM_Message_Template_Group' => EE_Dependency_Map::load_from_cache,
380
-                'EEM_Message_Template'       => EE_Dependency_Map::load_from_cache,
381
-            ),
382
-            'EE_Message_To_Generate_From_Request'                                                                         => array(
383
-                'EE_Message_Resource_Manager' => EE_Dependency_Map::load_from_cache,
384
-                'EE_Request_Handler'          => EE_Dependency_Map::load_from_cache,
385
-            ),
386
-            'EventEspresso\core\services\commands\CommandBus'                                                             => array(
387
-                'EventEspresso\core\services\commands\CommandHandlerManager' => EE_Dependency_Map::load_from_cache,
388
-            ),
389
-            'EventEspresso\core\services\commands\CommandHandlerManager'                                                  => array(
390
-                'EventEspresso\core\services\loaders\Loader' => EE_Dependency_Map::load_from_cache,
391
-            ),
392
-            'EventEspresso\core\services\commands\CompositeCommandHandler'                                                              => array(
393
-                'EventEspresso\core\services\commands\CommandBus'     => EE_Dependency_Map::load_from_cache,
394
-                'EventEspresso\core\services\commands\CommandFactory' => EE_Dependency_Map::load_from_cache,
395
-            ),
396
-            'EventEspresso\core\services\commands\CommandFactory'                                                              => array(
397
-                'EventEspresso\core\services\loaders\Loader' => EE_Dependency_Map::load_from_cache,
398
-            ),
399
-            'EventEspresso\core\services\commands\middleware\CapChecker'                                                  => array(
400
-                'EventEspresso\core\domain\services\capabilities\CapabilitiesChecker' => EE_Dependency_Map::load_from_cache,
401
-            ),
402
-            'EventEspresso\core\domain\services\capabilities\CapabilitiesChecker'                                         => array(
403
-                'EE_Capabilities' => EE_Dependency_Map::load_from_cache,
404
-            ),
405
-            'EventEspresso\core\domain\services\capabilities\RegistrationsCapChecker'                                     => array(
406
-                'EE_Capabilities' => EE_Dependency_Map::load_from_cache,
407
-            ),
408
-            'EventEspresso\core\services\commands\registration\CreateRegistrationCommandHandler'                          => array(
409
-                'EventEspresso\core\domain\services\registration\CreateRegistrationService' => EE_Dependency_Map::load_from_cache,
410
-            ),
411
-            'EventEspresso\core\services\commands\registration\CopyRegistrationDetailsCommandHandler'                     => array(
412
-                'EventEspresso\core\domain\services\registration\CopyRegistrationService' => EE_Dependency_Map::load_from_cache,
413
-            ),
414
-            'EventEspresso\core\services\commands\registration\CopyRegistrationPaymentsCommandHandler'                    => array(
415
-                'EventEspresso\core\domain\services\registration\CopyRegistrationService' => EE_Dependency_Map::load_from_cache,
416
-            ),
417
-            'EventEspresso\core\services\commands\registration\CancelRegistrationAndTicketLineItemCommandHandler'         => array(
418
-                'EventEspresso\core\domain\services\registration\CancelTicketLineItemService' => EE_Dependency_Map::load_from_cache,
419
-            ),
420
-            'EventEspresso\core\services\commands\registration\UpdateRegistrationAndTransactionAfterChangeCommandHandler' => array(
421
-                'EventEspresso\core\domain\services\registration\UpdateRegistrationService' => EE_Dependency_Map::load_from_cache,
422
-            ),
423
-            'EventEspresso\core\services\commands\ticket\CreateTicketLineItemCommandHandler'                              => array(
424
-                'EventEspresso\core\domain\services\ticket\CreateTicketLineItemService' => EE_Dependency_Map::load_from_cache,
425
-            ),
426
-            'EventEspresso\core\services\commands\ticket\CancelTicketLineItemCommandHandler'                              => array(
427
-                'EventEspresso\core\domain\services\ticket\CancelTicketLineItemService' => EE_Dependency_Map::load_from_cache,
428
-            ),
429
-            'EventEspresso\core\domain\services\registration\CancelRegistrationService'                                   => array(
430
-                'EventEspresso\core\domain\services\ticket\CancelTicketLineItemService' => EE_Dependency_Map::load_from_cache,
431
-            ),
432
-            'EventEspresso\core\services\database\TableManager'                                                           => array(
433
-                'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache,
434
-            ),
435
-            'EE_Data_Migration_Class_Base'                                                                                => array(
436
-                'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache,
437
-                'EventEspresso\core\services\database\TableManager'  => EE_Dependency_Map::load_from_cache,
438
-            ),
439
-            'EE_DMS_Core_4_1_0'                                                                                           => array(
440
-                'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache,
441
-                'EventEspresso\core\services\database\TableManager'  => EE_Dependency_Map::load_from_cache,
442
-            ),
443
-            'EE_DMS_Core_4_2_0'                                                                                           => array(
444
-                'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache,
445
-                'EventEspresso\core\services\database\TableManager'  => EE_Dependency_Map::load_from_cache,
446
-            ),
447
-            'EE_DMS_Core_4_3_0'                                                                                           => array(
448
-                'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache,
449
-                'EventEspresso\core\services\database\TableManager'  => EE_Dependency_Map::load_from_cache,
450
-            ),
451
-            'EE_DMS_Core_4_4_0'                                                                                           => array(
452
-                'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache,
453
-                'EventEspresso\core\services\database\TableManager'  => EE_Dependency_Map::load_from_cache,
454
-            ),
455
-            'EE_DMS_Core_4_5_0'                                                                                           => array(
456
-                'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache,
457
-                'EventEspresso\core\services\database\TableManager'  => EE_Dependency_Map::load_from_cache,
458
-            ),
459
-            'EE_DMS_Core_4_6_0'                                                                                           => array(
460
-                'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache,
461
-                'EventEspresso\core\services\database\TableManager'  => EE_Dependency_Map::load_from_cache,
462
-            ),
463
-            'EE_DMS_Core_4_7_0'                                                                                           => array(
464
-                'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache,
465
-                'EventEspresso\core\services\database\TableManager'  => EE_Dependency_Map::load_from_cache,
466
-            ),
467
-            'EE_DMS_Core_4_8_0'                                                                                           => array(
468
-                'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache,
469
-                'EventEspresso\core\services\database\TableManager'  => EE_Dependency_Map::load_from_cache,
470
-            ),
471
-            'EE_DMS_Core_4_9_0'                                                                                           => array(
472
-                'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache,
473
-                'EventEspresso\core\services\database\TableManager'  => EE_Dependency_Map::load_from_cache,
474
-            ),
475
-        );
476
-    }
477
-
478
-
479
-
480
-    /**
481
-     * Registers how core classes are loaded.
482
-     * This can either be done by simply providing the name of one of the EE_Registry loader methods such as:
483
-     *        'EE_Request_Handler' => 'load_core'
484
-     *        'EE_Messages_Queue'  => 'load_lib'
485
-     *        'EEH_Debug_Tools'    => 'load_helper'
486
-     * or, if greater control is required, by providing a custom closure. For example:
487
-     *        'Some_Class' => function () {
488
-     *            return new Some_Class();
489
-     *        },
490
-     * This is required for instantiating dependencies
491
-     * where an interface has been type hinted in a class constructor. For example:
492
-     *        'Required_Interface' => function () {
493
-     *            return new A_Class_That_Implements_Required_Interface();
494
-     *        },
495
-     */
496
-    protected function _register_core_class_loaders()
497
-    {
498
-        //for PHP5.3 compat, we need to register any properties called here in a variable because `$this` cannot
499
-        //be used in a closure.
500
-        $request = &$this->_request;
501
-        $response = &$this->_response;
502
-        $loader = &$this->loader;
503
-        $this->_class_loaders = array(
504
-            //load_core
505
-            'EE_Capabilities'                      => 'load_core',
506
-            'EE_Encryption'                        => 'load_core',
507
-            'EE_Front_Controller'                  => 'load_core',
508
-            'EE_Module_Request_Router'             => 'load_core',
509
-            'EE_Registry'                          => 'load_core',
510
-            'EE_Request'                           => function () use (&$request) {
511
-                return $request;
512
-            },
513
-            'EE_Response'                          => function () use (&$response) {
514
-                return $response;
515
-            },
516
-            'EE_Request_Handler'                   => 'load_core',
517
-            'EE_Session'                           => 'load_core',
518
-            'EE_System'                            => 'load_core',
519
-            //load_lib
520
-            'EE_Message_Resource_Manager'          => 'load_lib',
521
-            'EE_Message_Type_Collection'           => 'load_lib',
522
-            'EE_Message_Type_Collection_Loader'    => 'load_lib',
523
-            'EE_Messenger_Collection'              => 'load_lib',
524
-            'EE_Messenger_Collection_Loader'       => 'load_lib',
525
-            'EE_Messages_Processor'                => 'load_lib',
526
-            'EE_Message_Repository'                => 'load_lib',
527
-            'EE_Messages_Queue'                    => 'load_lib',
528
-            'EE_Messages_Data_Handler_Collection'  => 'load_lib',
529
-            'EE_Message_Template_Group_Collection' => 'load_lib',
530
-            'EE_Messages_Generator'                => function () {
531
-                return EE_Registry::instance()->load_lib('Messages_Generator', array(), false, false);
532
-            },
533
-            'EE_Messages_Template_Defaults'        => function ($arguments = array()) {
534
-                return EE_Registry::instance()->load_lib('Messages_Template_Defaults', $arguments, false, false);
535
-            },
536
-            //load_model
537
-            'EEM_Message_Template_Group'           => 'load_model',
538
-            'EEM_Message_Template'                 => 'load_model',
539
-            //load_helper
540
-            'EEH_Parse_Shortcodes'                 => function () {
541
-                if (EE_Registry::instance()->load_helper('Parse_Shortcodes')) {
542
-                    return new EEH_Parse_Shortcodes();
543
-                }
544
-                return null;
545
-            },
546
-            'EventEspresso\core\services\loaders\Loader' => function () use (&$loader) {
547
-                return $loader;
548
-            },
549
-        );
550
-    }
551
-
552
-
553
-
554
-    /**
555
-     * can be used for supplying alternate names for classes,
556
-     * or for connecting interface names to instantiable classes
557
-     */
558
-    protected function _register_core_aliases()
559
-    {
560
-        $this->_aliases = array(
561
-            'CommandBusInterface'                                                 => 'EventEspresso\core\services\commands\CommandBusInterface',
562
-            'EventEspresso\core\services\commands\CommandBusInterface'            => 'EventEspresso\core\services\commands\CommandBus',
563
-            'CommandHandlerManagerInterface'                                      => 'EventEspresso\core\services\commands\CommandHandlerManagerInterface',
564
-            'EventEspresso\core\services\commands\CommandHandlerManagerInterface' => 'EventEspresso\core\services\commands\CommandHandlerManager',
565
-            'CapChecker'                                                          => 'EventEspresso\core\services\commands\middleware\CapChecker',
566
-            'AddActionHook'                                                       => 'EventEspresso\core\services\commands\middleware\AddActionHook',
567
-            'CapabilitiesChecker'                                                 => 'EventEspresso\core\domain\services\capabilities\CapabilitiesChecker',
568
-            'CapabilitiesCheckerInterface'                                        => 'EventEspresso\core\domain\services\capabilities\CapabilitiesCheckerInterface',
569
-            'EventEspresso\core\domain\services\capabilities\CapabilitiesCheckerInterface' => 'EventEspresso\core\domain\services\capabilities\CapabilitiesChecker',
570
-            'CreateRegistrationService'                                           => 'EventEspresso\core\domain\services\registration\CreateRegistrationService',
571
-            'CreateRegCodeCommandHandler'                                         => 'EventEspresso\core\services\commands\registration\CreateRegCodeCommand',
572
-            'CreateRegUrlLinkCommandHandler'                                      => 'EventEspresso\core\services\commands\registration\CreateRegUrlLinkCommand',
573
-            'CreateRegistrationCommandHandler'                                    => 'EventEspresso\core\services\commands\registration\CreateRegistrationCommand',
574
-            'CopyRegistrationDetailsCommandHandler'                               => 'EventEspresso\core\services\commands\registration\CopyRegistrationDetailsCommand',
575
-            'CopyRegistrationPaymentsCommandHandler'                              => 'EventEspresso\core\services\commands\registration\CopyRegistrationPaymentsCommand',
576
-            'CancelRegistrationAndTicketLineItemCommandHandler'                   => 'EventEspresso\core\services\commands\registration\CancelRegistrationAndTicketLineItemCommandHandler',
577
-            'UpdateRegistrationAndTransactionAfterChangeCommandHandler'           => 'EventEspresso\core\services\commands\registration\UpdateRegistrationAndTransactionAfterChangeCommandHandler',
578
-            'CreateTicketLineItemCommandHandler'                                  => 'EventEspresso\core\services\commands\ticket\CreateTicketLineItemCommand',
579
-            'TableManager'                                                        => 'EventEspresso\core\services\database\TableManager',
580
-            'TableAnalysis'                                                       => 'EventEspresso\core\services\database\TableAnalysis',
581
-            'LoaderInterface'                                                     => 'EventEspresso\core\services\loaders\LoaderInterface',
582
-            'EventEspresso\core\services\loaders\LoaderInterface'                 => 'EventEspresso\core\services\loaders\Loader',
583
-            'CommandFactoryInterface'                                             => 'EventEspresso\core\services\commands\CommandFactoryInterface',
584
-            'EventEspresso\core\services\commands\CommandFactoryInterface'        => 'EventEspresso\core\services\commands\CommandFactory',
585
-        );
586
-    }
587
-
588
-
589
-
590
-    /**
591
-     * This is used to reset the internal map and class_loaders to their original default state at the beginning of the
592
-     * request Primarily used by unit tests.
593
-     */
594
-    public function reset()
595
-    {
596
-        $this->_register_core_class_loaders();
597
-        $this->_register_core_dependencies();
598
-    }
25
+	/**
26
+	 * This means that the requested class dependency is not present in the dependency map
27
+	 */
28
+	const not_registered = 0;
29
+
30
+
31
+	/**
32
+	 * This instructs class loaders to ALWAYS return a newly instantiated object for the requested class.
33
+	 */
34
+	const load_new_object = 1;
35
+
36
+	/**
37
+	 * This instructs class loaders to return a previously instantiated and cached object for the requested class.
38
+	 * IF a previously instantiated object does not exist, a new one will be created and added to the cache.
39
+	 */
40
+	const load_from_cache = 2;
41
+
42
+	/**
43
+	 * @type EE_Dependency_Map $_instance
44
+	 */
45
+	protected static $_instance;
46
+
47
+	/**
48
+	 * @type EE_Request $request
49
+	 */
50
+	protected $_request;
51
+
52
+	/**
53
+	 * @type EE_Response $response
54
+	 */
55
+	protected $_response;
56
+
57
+	/**
58
+	 * @type LoaderInterface $loader
59
+	 */
60
+	protected $loader;
61
+
62
+	/**
63
+	 * @type array $_dependency_map
64
+	 */
65
+	protected $_dependency_map = array();
66
+
67
+	/**
68
+	 * @type array $_class_loaders
69
+	 */
70
+	protected $_class_loaders = array();
71
+
72
+	/**
73
+	 * @type array $_aliases
74
+	 */
75
+	protected $_aliases = array();
76
+
77
+
78
+
79
+	/**
80
+	 * EE_Dependency_Map constructor.
81
+	 *
82
+	 * @param EE_Request  $request
83
+	 * @param EE_Response $response
84
+	 */
85
+	protected function __construct(EE_Request $request, EE_Response $response)
86
+	{
87
+		$this->_request = $request;
88
+		$this->_response = $response;
89
+		add_action('EE_Load_Espresso_Core__handle_request__initialize_core_loading', array($this, 'initialize'));
90
+		do_action('EE_Dependency_Map____construct');
91
+	}
92
+
93
+
94
+
95
+	/**
96
+	 * @throws InvalidDataTypeException
97
+	 * @throws InvalidInterfaceException
98
+	 * @throws InvalidArgumentException
99
+	 */
100
+	public function initialize()
101
+	{
102
+		$this->_register_core_dependencies();
103
+		$this->_register_core_class_loaders();
104
+		$this->_register_core_aliases();
105
+	}
106
+
107
+
108
+
109
+	/**
110
+	 * @singleton method used to instantiate class object
111
+	 * @access    public
112
+	 * @param EE_Request  $request
113
+	 * @param EE_Response $response
114
+	 * @return EE_Dependency_Map
115
+	 */
116
+	public static function instance(EE_Request $request = null, EE_Response $response = null)
117
+	{
118
+		// check if class object is instantiated, and instantiated properly
119
+		if (! self::$_instance instanceof EE_Dependency_Map) {
120
+			self::$_instance = new EE_Dependency_Map($request, $response);
121
+		}
122
+		return self::$_instance;
123
+	}
124
+
125
+
126
+
127
+	/**
128
+	 * @param LoaderInterface $loader
129
+	 */
130
+	public function setLoader(LoaderInterface $loader)
131
+	{
132
+		$this->loader = $loader;
133
+	}
134
+
135
+
136
+
137
+	/**
138
+	 * @param string $class
139
+	 * @param array  $dependencies
140
+	 * @return boolean
141
+	 */
142
+	public static function register_dependencies($class, $dependencies)
143
+	{
144
+		if (! isset(self::$_instance->_dependency_map[$class])) {
145
+			// we need to make sure that any aliases used when registering a dependency
146
+			// get resolved to the correct class name
147
+			foreach ((array)$dependencies as $dependency => $load_source) {
148
+				$alias = self::$_instance->get_alias($dependency);
149
+				unset($dependencies[$dependency]);
150
+				$dependencies[$alias] = $load_source;
151
+			}
152
+			self::$_instance->_dependency_map[$class] = (array)$dependencies;
153
+			return true;
154
+		}
155
+		return false;
156
+	}
157
+
158
+
159
+
160
+	/**
161
+	 * @param string $class_name
162
+	 * @param string $loader
163
+	 * @return bool
164
+	 * @throws EE_Error
165
+	 */
166
+	public static function register_class_loader($class_name, $loader = 'load_core')
167
+	{
168
+		// check that loader is callable or method starts with "load_" and exists in EE_Registry
169
+		if (
170
+			! is_callable($loader)
171
+			&& (
172
+				strpos($loader, 'load_') !== 0
173
+				|| ! method_exists('EE_Registry', $loader)
174
+			)
175
+		) {
176
+			throw new EE_Error(
177
+				sprintf(
178
+					__('"%1$s" is not a valid loader method on EE_Registry.', 'event_espresso'),
179
+					$loader
180
+				)
181
+			);
182
+		}
183
+		$class_name = self::$_instance->get_alias($class_name);
184
+		if (! isset(self::$_instance->_class_loaders[$class_name])) {
185
+			self::$_instance->_class_loaders[$class_name] = $loader;
186
+			return true;
187
+		}
188
+		return false;
189
+	}
190
+
191
+
192
+
193
+	/**
194
+	 * @return array
195
+	 */
196
+	public function dependency_map()
197
+	{
198
+		return $this->_dependency_map;
199
+	}
200
+
201
+
202
+
203
+	/**
204
+	 * returns TRUE if dependency map contains a listing for the provided class name
205
+	 *
206
+	 * @param string $class_name
207
+	 * @return boolean
208
+	 */
209
+	public function has($class_name = '')
210
+	{
211
+		return isset($this->_dependency_map[$class_name]) ? true : false;
212
+	}
213
+
214
+
215
+
216
+	/**
217
+	 * returns TRUE if dependency map contains a listing for the provided class name AND dependency
218
+	 *
219
+	 * @param string $class_name
220
+	 * @param string $dependency
221
+	 * @return bool
222
+	 */
223
+	public function has_dependency_for_class($class_name = '', $dependency = '')
224
+	{
225
+		$dependency = $this->get_alias($dependency);
226
+		return isset($this->_dependency_map[$class_name], $this->_dependency_map[$class_name][$dependency])
227
+			? true
228
+			: false;
229
+	}
230
+
231
+
232
+
233
+	/**
234
+	 * returns loading strategy for whether a previously cached dependency should be loaded or a new instance returned
235
+	 *
236
+	 * @param string $class_name
237
+	 * @param string $dependency
238
+	 * @return int
239
+	 */
240
+	public function loading_strategy_for_class_dependency($class_name = '', $dependency = '')
241
+	{
242
+		$dependency = $this->get_alias($dependency);
243
+		return $this->has_dependency_for_class($class_name, $dependency)
244
+			? $this->_dependency_map[$class_name][$dependency]
245
+			: EE_Dependency_Map::not_registered;
246
+	}
247
+
248
+
249
+
250
+	/**
251
+	 * @param string $class_name
252
+	 * @return string | Closure
253
+	 */
254
+	public function class_loader($class_name)
255
+	{
256
+		$class_name = $this->get_alias($class_name);
257
+		return isset($this->_class_loaders[$class_name]) ? $this->_class_loaders[$class_name] : '';
258
+	}
259
+
260
+
261
+
262
+	/**
263
+	 * @return array
264
+	 */
265
+	public function class_loaders()
266
+	{
267
+		return $this->_class_loaders;
268
+	}
269
+
270
+
271
+
272
+	/**
273
+	 * adds an alias for a classname
274
+	 *
275
+	 * @param string $class_name
276
+	 * @param string $alias
277
+	 */
278
+	public function add_alias($class_name, $alias)
279
+	{
280
+		$this->_aliases[$class_name] = $alias;
281
+	}
282
+
283
+
284
+
285
+	/**
286
+	 * returns TRUE if the provided class name has an alias
287
+	 *
288
+	 * @param string $class_name
289
+	 * @return boolean
290
+	 */
291
+	public function has_alias($class_name = '')
292
+	{
293
+		return isset($this->_aliases[$class_name]) ? true : false;
294
+	}
295
+
296
+
297
+
298
+	/**
299
+	 * returns alias for class name if one exists, otherwise returns the original classname
300
+	 * functions recursively, so that multiple aliases can be used to drill down to a classname
301
+	 *  for example:
302
+	 *      if the following two entries were added to the _aliases array:
303
+	 *          array(
304
+	 *              'interface_alias'           => 'some\namespace\interface'
305
+	 *              'some\namespace\interface'  => 'some\namespace\classname'
306
+	 *          )
307
+	 *      then one could use EE_Registry::instance()->create( 'interface_alias' )
308
+	 *      to load an instance of 'some\namespace\classname'
309
+	 *
310
+	 * @param string $class_name
311
+	 * @return string
312
+	 */
313
+	public function get_alias($class_name = '')
314
+	{
315
+		return $this->has_alias($class_name)
316
+			? $this->get_alias($this->_aliases[$class_name])
317
+			: $class_name;
318
+	}
319
+
320
+
321
+
322
+	/**
323
+	 * Registers the core dependencies and whether a previously instantiated object should be loaded from the cache,
324
+	 * if one exists, or whether a new object should be generated every time the requested class is loaded.
325
+	 * This is done by using the following class constants:
326
+	 *        EE_Dependency_Map::load_from_cache - loads previously instantiated object
327
+	 *        EE_Dependency_Map::load_new_object - generates a new object every time
328
+	 */
329
+	protected function _register_core_dependencies()
330
+	{
331
+		$this->_dependency_map = array(
332
+			'EE_Request_Handler'                                                                                          => array(
333
+				'EE_Request' => EE_Dependency_Map::load_from_cache,
334
+			),
335
+			'EE_System'                                                                                                   => array(
336
+				'EE_Registry' => EE_Dependency_Map::load_from_cache,
337
+			),
338
+			'EE_Session'                                                                                                  => array(
339
+				'EE_Encryption' => EE_Dependency_Map::load_from_cache,
340
+			),
341
+			'EE_Cart'                                                                                                     => array(
342
+				'EE_Session' => EE_Dependency_Map::load_from_cache,
343
+			),
344
+			'EE_Front_Controller'                                                                                         => array(
345
+				'EE_Registry'              => EE_Dependency_Map::load_from_cache,
346
+				'EE_Request_Handler'       => EE_Dependency_Map::load_from_cache,
347
+				'EE_Module_Request_Router' => EE_Dependency_Map::load_from_cache,
348
+			),
349
+			'EE_Messenger_Collection_Loader'                                                                              => array(
350
+				'EE_Messenger_Collection' => EE_Dependency_Map::load_new_object,
351
+			),
352
+			'EE_Message_Type_Collection_Loader'                                                                           => array(
353
+				'EE_Message_Type_Collection' => EE_Dependency_Map::load_new_object,
354
+			),
355
+			'EE_Message_Resource_Manager'                                                                                 => array(
356
+				'EE_Messenger_Collection_Loader'    => EE_Dependency_Map::load_new_object,
357
+				'EE_Message_Type_Collection_Loader' => EE_Dependency_Map::load_new_object,
358
+				'EEM_Message_Template_Group'        => EE_Dependency_Map::load_from_cache,
359
+			),
360
+			'EE_Message_Factory'                                                                                          => array(
361
+				'EE_Message_Resource_Manager' => EE_Dependency_Map::load_from_cache,
362
+			),
363
+			'EE_messages'                                                                                                 => array(
364
+				'EE_Message_Resource_Manager' => EE_Dependency_Map::load_from_cache,
365
+			),
366
+			'EE_Messages_Generator'                                                                                       => array(
367
+				'EE_Messages_Queue'                    => EE_Dependency_Map::load_new_object,
368
+				'EE_Messages_Data_Handler_Collection'  => EE_Dependency_Map::load_new_object,
369
+				'EE_Message_Template_Group_Collection' => EE_Dependency_Map::load_new_object,
370
+				'EEH_Parse_Shortcodes'                 => EE_Dependency_Map::load_from_cache,
371
+			),
372
+			'EE_Messages_Processor'                                                                                       => array(
373
+				'EE_Message_Resource_Manager' => EE_Dependency_Map::load_from_cache,
374
+			),
375
+			'EE_Messages_Queue'                                                                                           => array(
376
+				'EE_Message_Repository' => EE_Dependency_Map::load_new_object,
377
+			),
378
+			'EE_Messages_Template_Defaults'                                                                               => array(
379
+				'EEM_Message_Template_Group' => EE_Dependency_Map::load_from_cache,
380
+				'EEM_Message_Template'       => EE_Dependency_Map::load_from_cache,
381
+			),
382
+			'EE_Message_To_Generate_From_Request'                                                                         => array(
383
+				'EE_Message_Resource_Manager' => EE_Dependency_Map::load_from_cache,
384
+				'EE_Request_Handler'          => EE_Dependency_Map::load_from_cache,
385
+			),
386
+			'EventEspresso\core\services\commands\CommandBus'                                                             => array(
387
+				'EventEspresso\core\services\commands\CommandHandlerManager' => EE_Dependency_Map::load_from_cache,
388
+			),
389
+			'EventEspresso\core\services\commands\CommandHandlerManager'                                                  => array(
390
+				'EventEspresso\core\services\loaders\Loader' => EE_Dependency_Map::load_from_cache,
391
+			),
392
+			'EventEspresso\core\services\commands\CompositeCommandHandler'                                                              => array(
393
+				'EventEspresso\core\services\commands\CommandBus'     => EE_Dependency_Map::load_from_cache,
394
+				'EventEspresso\core\services\commands\CommandFactory' => EE_Dependency_Map::load_from_cache,
395
+			),
396
+			'EventEspresso\core\services\commands\CommandFactory'                                                              => array(
397
+				'EventEspresso\core\services\loaders\Loader' => EE_Dependency_Map::load_from_cache,
398
+			),
399
+			'EventEspresso\core\services\commands\middleware\CapChecker'                                                  => array(
400
+				'EventEspresso\core\domain\services\capabilities\CapabilitiesChecker' => EE_Dependency_Map::load_from_cache,
401
+			),
402
+			'EventEspresso\core\domain\services\capabilities\CapabilitiesChecker'                                         => array(
403
+				'EE_Capabilities' => EE_Dependency_Map::load_from_cache,
404
+			),
405
+			'EventEspresso\core\domain\services\capabilities\RegistrationsCapChecker'                                     => array(
406
+				'EE_Capabilities' => EE_Dependency_Map::load_from_cache,
407
+			),
408
+			'EventEspresso\core\services\commands\registration\CreateRegistrationCommandHandler'                          => array(
409
+				'EventEspresso\core\domain\services\registration\CreateRegistrationService' => EE_Dependency_Map::load_from_cache,
410
+			),
411
+			'EventEspresso\core\services\commands\registration\CopyRegistrationDetailsCommandHandler'                     => array(
412
+				'EventEspresso\core\domain\services\registration\CopyRegistrationService' => EE_Dependency_Map::load_from_cache,
413
+			),
414
+			'EventEspresso\core\services\commands\registration\CopyRegistrationPaymentsCommandHandler'                    => array(
415
+				'EventEspresso\core\domain\services\registration\CopyRegistrationService' => EE_Dependency_Map::load_from_cache,
416
+			),
417
+			'EventEspresso\core\services\commands\registration\CancelRegistrationAndTicketLineItemCommandHandler'         => array(
418
+				'EventEspresso\core\domain\services\registration\CancelTicketLineItemService' => EE_Dependency_Map::load_from_cache,
419
+			),
420
+			'EventEspresso\core\services\commands\registration\UpdateRegistrationAndTransactionAfterChangeCommandHandler' => array(
421
+				'EventEspresso\core\domain\services\registration\UpdateRegistrationService' => EE_Dependency_Map::load_from_cache,
422
+			),
423
+			'EventEspresso\core\services\commands\ticket\CreateTicketLineItemCommandHandler'                              => array(
424
+				'EventEspresso\core\domain\services\ticket\CreateTicketLineItemService' => EE_Dependency_Map::load_from_cache,
425
+			),
426
+			'EventEspresso\core\services\commands\ticket\CancelTicketLineItemCommandHandler'                              => array(
427
+				'EventEspresso\core\domain\services\ticket\CancelTicketLineItemService' => EE_Dependency_Map::load_from_cache,
428
+			),
429
+			'EventEspresso\core\domain\services\registration\CancelRegistrationService'                                   => array(
430
+				'EventEspresso\core\domain\services\ticket\CancelTicketLineItemService' => EE_Dependency_Map::load_from_cache,
431
+			),
432
+			'EventEspresso\core\services\database\TableManager'                                                           => array(
433
+				'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache,
434
+			),
435
+			'EE_Data_Migration_Class_Base'                                                                                => array(
436
+				'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache,
437
+				'EventEspresso\core\services\database\TableManager'  => EE_Dependency_Map::load_from_cache,
438
+			),
439
+			'EE_DMS_Core_4_1_0'                                                                                           => array(
440
+				'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache,
441
+				'EventEspresso\core\services\database\TableManager'  => EE_Dependency_Map::load_from_cache,
442
+			),
443
+			'EE_DMS_Core_4_2_0'                                                                                           => array(
444
+				'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache,
445
+				'EventEspresso\core\services\database\TableManager'  => EE_Dependency_Map::load_from_cache,
446
+			),
447
+			'EE_DMS_Core_4_3_0'                                                                                           => array(
448
+				'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache,
449
+				'EventEspresso\core\services\database\TableManager'  => EE_Dependency_Map::load_from_cache,
450
+			),
451
+			'EE_DMS_Core_4_4_0'                                                                                           => array(
452
+				'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache,
453
+				'EventEspresso\core\services\database\TableManager'  => EE_Dependency_Map::load_from_cache,
454
+			),
455
+			'EE_DMS_Core_4_5_0'                                                                                           => array(
456
+				'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache,
457
+				'EventEspresso\core\services\database\TableManager'  => EE_Dependency_Map::load_from_cache,
458
+			),
459
+			'EE_DMS_Core_4_6_0'                                                                                           => array(
460
+				'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache,
461
+				'EventEspresso\core\services\database\TableManager'  => EE_Dependency_Map::load_from_cache,
462
+			),
463
+			'EE_DMS_Core_4_7_0'                                                                                           => array(
464
+				'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache,
465
+				'EventEspresso\core\services\database\TableManager'  => EE_Dependency_Map::load_from_cache,
466
+			),
467
+			'EE_DMS_Core_4_8_0'                                                                                           => array(
468
+				'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache,
469
+				'EventEspresso\core\services\database\TableManager'  => EE_Dependency_Map::load_from_cache,
470
+			),
471
+			'EE_DMS_Core_4_9_0'                                                                                           => array(
472
+				'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache,
473
+				'EventEspresso\core\services\database\TableManager'  => EE_Dependency_Map::load_from_cache,
474
+			),
475
+		);
476
+	}
477
+
478
+
479
+
480
+	/**
481
+	 * Registers how core classes are loaded.
482
+	 * This can either be done by simply providing the name of one of the EE_Registry loader methods such as:
483
+	 *        'EE_Request_Handler' => 'load_core'
484
+	 *        'EE_Messages_Queue'  => 'load_lib'
485
+	 *        'EEH_Debug_Tools'    => 'load_helper'
486
+	 * or, if greater control is required, by providing a custom closure. For example:
487
+	 *        'Some_Class' => function () {
488
+	 *            return new Some_Class();
489
+	 *        },
490
+	 * This is required for instantiating dependencies
491
+	 * where an interface has been type hinted in a class constructor. For example:
492
+	 *        'Required_Interface' => function () {
493
+	 *            return new A_Class_That_Implements_Required_Interface();
494
+	 *        },
495
+	 */
496
+	protected function _register_core_class_loaders()
497
+	{
498
+		//for PHP5.3 compat, we need to register any properties called here in a variable because `$this` cannot
499
+		//be used in a closure.
500
+		$request = &$this->_request;
501
+		$response = &$this->_response;
502
+		$loader = &$this->loader;
503
+		$this->_class_loaders = array(
504
+			//load_core
505
+			'EE_Capabilities'                      => 'load_core',
506
+			'EE_Encryption'                        => 'load_core',
507
+			'EE_Front_Controller'                  => 'load_core',
508
+			'EE_Module_Request_Router'             => 'load_core',
509
+			'EE_Registry'                          => 'load_core',
510
+			'EE_Request'                           => function () use (&$request) {
511
+				return $request;
512
+			},
513
+			'EE_Response'                          => function () use (&$response) {
514
+				return $response;
515
+			},
516
+			'EE_Request_Handler'                   => 'load_core',
517
+			'EE_Session'                           => 'load_core',
518
+			'EE_System'                            => 'load_core',
519
+			//load_lib
520
+			'EE_Message_Resource_Manager'          => 'load_lib',
521
+			'EE_Message_Type_Collection'           => 'load_lib',
522
+			'EE_Message_Type_Collection_Loader'    => 'load_lib',
523
+			'EE_Messenger_Collection'              => 'load_lib',
524
+			'EE_Messenger_Collection_Loader'       => 'load_lib',
525
+			'EE_Messages_Processor'                => 'load_lib',
526
+			'EE_Message_Repository'                => 'load_lib',
527
+			'EE_Messages_Queue'                    => 'load_lib',
528
+			'EE_Messages_Data_Handler_Collection'  => 'load_lib',
529
+			'EE_Message_Template_Group_Collection' => 'load_lib',
530
+			'EE_Messages_Generator'                => function () {
531
+				return EE_Registry::instance()->load_lib('Messages_Generator', array(), false, false);
532
+			},
533
+			'EE_Messages_Template_Defaults'        => function ($arguments = array()) {
534
+				return EE_Registry::instance()->load_lib('Messages_Template_Defaults', $arguments, false, false);
535
+			},
536
+			//load_model
537
+			'EEM_Message_Template_Group'           => 'load_model',
538
+			'EEM_Message_Template'                 => 'load_model',
539
+			//load_helper
540
+			'EEH_Parse_Shortcodes'                 => function () {
541
+				if (EE_Registry::instance()->load_helper('Parse_Shortcodes')) {
542
+					return new EEH_Parse_Shortcodes();
543
+				}
544
+				return null;
545
+			},
546
+			'EventEspresso\core\services\loaders\Loader' => function () use (&$loader) {
547
+				return $loader;
548
+			},
549
+		);
550
+	}
551
+
552
+
553
+
554
+	/**
555
+	 * can be used for supplying alternate names for classes,
556
+	 * or for connecting interface names to instantiable classes
557
+	 */
558
+	protected function _register_core_aliases()
559
+	{
560
+		$this->_aliases = array(
561
+			'CommandBusInterface'                                                 => 'EventEspresso\core\services\commands\CommandBusInterface',
562
+			'EventEspresso\core\services\commands\CommandBusInterface'            => 'EventEspresso\core\services\commands\CommandBus',
563
+			'CommandHandlerManagerInterface'                                      => 'EventEspresso\core\services\commands\CommandHandlerManagerInterface',
564
+			'EventEspresso\core\services\commands\CommandHandlerManagerInterface' => 'EventEspresso\core\services\commands\CommandHandlerManager',
565
+			'CapChecker'                                                          => 'EventEspresso\core\services\commands\middleware\CapChecker',
566
+			'AddActionHook'                                                       => 'EventEspresso\core\services\commands\middleware\AddActionHook',
567
+			'CapabilitiesChecker'                                                 => 'EventEspresso\core\domain\services\capabilities\CapabilitiesChecker',
568
+			'CapabilitiesCheckerInterface'                                        => 'EventEspresso\core\domain\services\capabilities\CapabilitiesCheckerInterface',
569
+			'EventEspresso\core\domain\services\capabilities\CapabilitiesCheckerInterface' => 'EventEspresso\core\domain\services\capabilities\CapabilitiesChecker',
570
+			'CreateRegistrationService'                                           => 'EventEspresso\core\domain\services\registration\CreateRegistrationService',
571
+			'CreateRegCodeCommandHandler'                                         => 'EventEspresso\core\services\commands\registration\CreateRegCodeCommand',
572
+			'CreateRegUrlLinkCommandHandler'                                      => 'EventEspresso\core\services\commands\registration\CreateRegUrlLinkCommand',
573
+			'CreateRegistrationCommandHandler'                                    => 'EventEspresso\core\services\commands\registration\CreateRegistrationCommand',
574
+			'CopyRegistrationDetailsCommandHandler'                               => 'EventEspresso\core\services\commands\registration\CopyRegistrationDetailsCommand',
575
+			'CopyRegistrationPaymentsCommandHandler'                              => 'EventEspresso\core\services\commands\registration\CopyRegistrationPaymentsCommand',
576
+			'CancelRegistrationAndTicketLineItemCommandHandler'                   => 'EventEspresso\core\services\commands\registration\CancelRegistrationAndTicketLineItemCommandHandler',
577
+			'UpdateRegistrationAndTransactionAfterChangeCommandHandler'           => 'EventEspresso\core\services\commands\registration\UpdateRegistrationAndTransactionAfterChangeCommandHandler',
578
+			'CreateTicketLineItemCommandHandler'                                  => 'EventEspresso\core\services\commands\ticket\CreateTicketLineItemCommand',
579
+			'TableManager'                                                        => 'EventEspresso\core\services\database\TableManager',
580
+			'TableAnalysis'                                                       => 'EventEspresso\core\services\database\TableAnalysis',
581
+			'LoaderInterface'                                                     => 'EventEspresso\core\services\loaders\LoaderInterface',
582
+			'EventEspresso\core\services\loaders\LoaderInterface'                 => 'EventEspresso\core\services\loaders\Loader',
583
+			'CommandFactoryInterface'                                             => 'EventEspresso\core\services\commands\CommandFactoryInterface',
584
+			'EventEspresso\core\services\commands\CommandFactoryInterface'        => 'EventEspresso\core\services\commands\CommandFactory',
585
+		);
586
+	}
587
+
588
+
589
+
590
+	/**
591
+	 * This is used to reset the internal map and class_loaders to their original default state at the beginning of the
592
+	 * request Primarily used by unit tests.
593
+	 */
594
+	public function reset()
595
+	{
596
+		$this->_register_core_class_loaders();
597
+		$this->_register_core_dependencies();
598
+	}
599 599
 
600 600
 
601 601
 }
Please login to merge, or discard this patch.