factory   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 65
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 17
dl 0
loc 65
ccs 21
cts 21
cp 1
rs 10
c 0
b 0
f 0
wmc 7

4 Methods

Rating   Name   Duplication   Size   Complexity  
A register_blocks() 0 6 2
A __construct() 0 5 1
A get_block() 0 8 2
A get_all_blocks() 0 12 2
1
<?php
2
3
/**
4
 *
5
 * @package sitemaker
6
 * @copyright (c) 2013 Daniel A. (blitze)
7
 * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
8
 *
9
 */
10
11
namespace blitze\sitemaker\services\blocks;
12
13
class factory
14
{
15
	/** @var \phpbb\language\language */
16
	protected $translator;
17
18
	/** @var array */
19
	private $blocks;
20
21
	/**
22
	 * Constructor
23
	 *
24
	 * @param \phpbb\language\language				$translator			Language object
25
	 * @param \phpbb\di\service_collection			$blocks				Service Collection
26
	 */
27
	public function __construct(\phpbb\language\language $translator, \phpbb\di\service_collection $blocks)
28
	{
29
		$this->translator = $translator;
30 65
31
		$this->register_blocks($blocks);
32 65
	}
33 65
34
	/**
35 65
	 * Register available blocks
36 65
	 * @param \phpbb\di\service_collection $blocks
37
	 */
38
	public function register_blocks(\phpbb\di\service_collection $blocks)
39
	{
40
		$this->blocks = [];
41
		foreach ($blocks as $service => $driver)
42 64
		{
43
			$this->blocks[$service] = $driver;
44 64
		}
45 64
	}
46
47 64
	/**
48 64
	 * Get block instance
49 64
	 * @param $service_name
50
	 * @return \blitze\sitemaker\services\blocks\driver\block_interface|null
51
	 */
52
	public function get_block($service_name)
53
	{
54
		if (!isset($this->blocks[$service_name]))
55
		{
56 42
			return null;
57
		}
58 42
59 42
		return $this->blocks[$service_name];
60 11
	}
61
62
	/**
63 39
	 * Get available sitemaker blocks
64 39
	 * @return array
65
	 */
66 39
	public function get_all_blocks()
67
	{
68
		$blocks = [];
69
		foreach ($this->blocks as $service => $driver)
70
		{
71
			$lname = strtoupper(str_replace('.', '_', $driver->get_name()));
72
			$blocks[$service] = $this->translator->lang($lname);
73 1
		}
74
75 1
		asort($blocks);
76 1
77
		return $blocks;
78 1
	}
79
}
80