AbstractPipe::beforeIsEnabled()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
dl 0
loc 4
rs 10
c 1
b 0
f 1
cc 1
eloc 2
nc 1
nop 0
1
<?php namespace Cerbero\Auth\Pipes;
2
3
use \Closure;
4
use Illuminate\Contracts\Container\Container;
5
6
/**
7
 * Abstract implementation of a pipe.
8
 *
9
 * @author	Andrea Marco Sartori
10
 */
11
abstract class AbstractPipe {
12
13
	/**
14
	 * @author	Andrea Marco Sartori
15
	 * @var		Illuminate\Contracts\Container\Container	$container	Service container.
16
	 */
17
	protected $container;
18
	
19
	/**
20
	 * Set the dependencies.
21
	 *
22
	 * @author	Andrea Marco Sartori
23
	 * @param	Illuminate\Contracts\Container\Container	$container
24
	 * @return	void
25
	 */
26
	public function __construct(Container $container)
27
	{
28
		$this->container = $container;
29
	}
30
31
	/**
32
	 * Handle the given job.
33
	 *
34
	 * @author	Andrea Marco Sartori
35
	 * @param	mixed	$job
36
	 * @param	Closure	$next
37
	 * @return	mixed
38
	 */
39
	public function handle($job, Closure $next)
40
	{
41
		$this->callBefore($job);
42
43
		$handled = $next($job);
44
45
		$this->callAfter($handled, $job);
46
47
		return $handled;
48
	}
49
50
	/**
51
	 * Call the before method.
52
	 *
53
	 * @author	Andrea Marco Sartori
54
	 * @param	Cerbero\Jobs\Job	$job
55
	 * @return	void
56
	 */
57
	protected function callBefore($job)
58
	{
59
		$this->callIfExistsAndEnabled('before', [$job]);
60
	}
61
62
	/**
63
	 * Call and resolve depepndencies of a method if enabled.
64
	 *
65
	 * @author	Andrea Marco Sartori
66
	 * @param	string	$method
67
	 * @param	array	$parameters
68
	 * @return	void
69
	 */
70
	private function callIfExistsAndEnabled($method, array $parameters = [])
71
	{
72
		if( ! $this->isEnabled()) return;
73
74
		if(method_exists($this, $method) && $this->{"{$method}IsEnabled"}())
75
		{
76
			$this->container->call([$this, $method], $parameters);
77
		}
78
	}
79
80
	/**
81
	 * Determine whether the whole pipe has to be processed.
82
	 *
83
	 * @author	Andrea Marco Sartori
84
	 * @return	boolean
85
	 */
86
	protected function isEnabled()
87
	{
88
		return true;
89
	}
90
91
	/**
92
	 * Call the after method.
93
	 *
94
	 * @author	Andrea Marco Sartori
95
	 * @param	mixed	$handled
96
	 * @param	Cerbero\Jobs\Job	$job
97
	 * @return	void
98
	 */
99
	protected function callAfter($handled, $job)
100
	{
101
		$this->callIfExistsAndEnabled('after', [$handled, $job]);
102
	}
103
104
	/**
105
	 * Determine whether the before method has to be processed.
106
	 *
107
	 * @author	Andrea Marco Sartori
108
	 * @return	boolean
109
	 */
110
	protected function beforeIsEnabled()
111
	{
112
		return true;
113
	}
114
115
	/**
116
	 * Determine whether the after method has to be processed.
117
	 *
118
	 * @author	Andrea Marco Sartori
119
	 * @return	boolean
120
	 */
121
	protected function afterIsEnabled()
122
	{
123
		return true;
124
	}
125
126
}
127