Passed
Push — master ( b8f18d...700c02 )
by Aimeos
33:19 queued 19:46
created

Base   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 35
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 15
dl 0
loc 35
rs 10
c 0
b 0
f 0
wmc 4

1 Method

Rating   Name   Duplication   Size   Complexity  
A getProcessors() 0 24 4
1
<?php
2
3
/**
4
 * @license LGPLv3, http://opensource.org/licenses/LGPL-3.0
5
 * @copyright Aimeos (aimeos.org), 2018-2023
6
 * @package Controller
7
 * @subpackage Jobs
8
 */
9
10
11
namespace Aimeos\Controller\Jobs\Subscription\Process;
12
13
14
/**
15
 * Base job controller for subscription processing
16
 *
17
 * @package Controller
18
 * @subpackage Jobs
19
 */
20
abstract class Base
21
	extends \Aimeos\Controller\Jobs\Base
22
	implements \Aimeos\Controller\Jobs\Iface
23
{
24
	/**
25
	 * Returns the processor object for managing the subscription resources
26
	 *
27
	 * @param array $pnames List of processor names
28
	 * @return array Associative list of processor names as keys and processor objects as values
29
	 * @throws \LogicException If class can't be instantiated
30
	 */
31
	protected function getProcessors( array $pnames ) : array
32
	{
33
		$list = [];
34
		$context = $this->context();
35
		$interface = \Aimeos\Controller\Common\Subscription\Process\Processor\Iface::class;
36
37
		foreach( $pnames as $pname )
38
		{
39
			if( ctype_alnum( $pname ) === false ) {
40
				throw new \LogicException( sprintf( 'Invalid characters in class name "%1$s"', $pname ), 400 );
41
			}
42
43
			$name = $context->config()->get( 'controller/common/subscription/process/processor/' . $pname . '/name', 'Standard' );
44
45
			if( ctype_alnum( $name ) === false ) {
46
				throw new \LogicException( sprintf( 'Invalid characters in class name "%1$s"', $name ), 400 );
47
			}
48
49
			$classname = '\\Aimeos\\Controller\\Common\\Subscription\\Process\\Processor\\' . ucfirst( $pname ) . '\\' . $name;
50
51
			$list[$pname] = \Aimeos\Utils::create( $classname, [$context], $interface );
52
		}
53
54
		return $list;
55
	}
56
}
57