Completed
Push — develop ( de7659...415144 )
by Daniel
09:44
created

menu_block::get_menu()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 11
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 3

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 11
ccs 7
cts 7
cp 1
rs 9.4285
cc 3
eloc 5
nc 4
nop 1
crap 3
1
<?php
2
/**
3
 *
4
 * @package sitemaker
5
 * @copyright (c) 2013 Daniel A. (blitze)
6
 * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
7
 *
8
 */
9
10
namespace blitze\sitemaker\services\menus;
11
12
use blitze\sitemaker\services\blocks\driver\block;
13
14
abstract class menu_block extends block
15
{
16
	/** @var \phpbb\cache\driver\driver_interface */
17
	protected $cache;
18
19
	/** @var \phpbb\config\config */
20
	protected $config;
21
22
	/** @var \phpbb\language\language */
23
	protected $translator;
24
25
	/** @var \blitze\sitemaker\model\mapper_factory */
26
	protected $mapper_factory;
27
28
	/** @var \blitze\sitemaker\services\menus\display */
29
	protected $tree;
30
31
	/**
32
	 * Constructor
33
	 *
34
	 * @param \phpbb\cache\driver\driver_interface		$cache				Cache driver interface
35
	 * @param \phpbb\config\config						$config				Config object
36
	 * @param \phpbb\language\language					$translator			Language object
37
	 * @param \blitze\sitemaker\model\mapper_factory	$mapper_factory		Mapper factory object
38
	 * @param \blitze\sitemaker\services\menus\display	$tree				Menu tree display object
39
	 */
40 16
	public function __construct(\phpbb\cache\driver\driver_interface $cache, \phpbb\config\config $config, \phpbb\language\language $translator, \blitze\sitemaker\model\mapper_factory $mapper_factory, \blitze\sitemaker\services\menus\display $tree)
41
	{
42 16
		$this->cache = $cache;
43 16
		$this->config = $config;
44 16
		$this->translator = $translator;
45 16
		$this->mapper_factory = $mapper_factory;
46 16
		$this->tree = $tree;
47 16
	}
48
49
	/**
50
	 * @param int $menu_id
51
	 * @return array
52
	 */
53 14
	protected function get_menu($menu_id)
54
	{
55 14
		if (($data = $this->cache->get('sitemaker_menus')) === false)
56 14
		{
57 14
			$data = $this->get_all_menus();
58
59 14
			$this->cache->put('sitemaker_menus', $data);
60 14
		}
61
62 14
		return (isset($data[$menu_id])) ? $data[$menu_id] : array();
63
	}
64
65
	/**
66
	 * @return array
67
	 */
68 14
	protected function get_all_menus()
69
	{
70 14
		$item_mapper = $this->mapper_factory->create('menus', 'items');
71
72 14
		$collection = $item_mapper->find();
73
74 14
		$data = array();
75 14
		foreach ($collection as $entity)
76
		{
77 14
			$row = $entity->to_array();
78 14
			$this->set_path_info($row);
79
80 14
			$data[$row['menu_id']][$row['item_id']] = $row;
81 14
		}
82
83 14
		return $data;
84 2
	}
85
86
	/**
87
	 * @param int $menu_id
88
	 * @param bool $editing
89
	 * @return string
90
	 */
91 8
	protected function get_message($menu_id, $editing)
92
	{
93 8
		$msg_key = '';
94
		if ($editing)
95 8
		{
96 4
			$msg_key = ($menu_id) ? 'MENU_NO_ITEMS' : 'SELECT_MENU';
97 4
		}
98
99 8
		return $this->translator->lang($msg_key);
100
	}
101
102
	/**
103
	 * @param array $data
104
	 */
105 14
	protected function set_path_info(array &$data)
106
	{
107 14
		$url_info = parse_url($data['item_url']);
108
109 14
		$data['url_path'] = (isset($url_info['path'])) ? $url_info['path'] : '';
110 14
		$data['url_query'] = (isset($url_info['query'])) ? explode('&', $url_info['query']) : array();
111 14
	}
112
113
	/**
114
	 * @return array
115
	 */
116 2
	protected function get_menu_options()
117
	{
118 2
		$collection = $this->mapper_factory->create('menus', 'menus')->find();
119
120 2
		$options = array();
121 2
		foreach ($collection as $entity)
122
		{
123 2
			$options[$entity->get_menu_id()] = $entity->get_menu_name();
124 2
		}
125
126 2
		return $options;
127
	}
128
}
129