Completed
Push — master ( d0d590...4bea8e )
by Daniel
08:46
created

menus_admin   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 65
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 100%

Importance

Changes 4
Bugs 1 Features 1
Metric Value
wmc 5
c 4
b 1
f 1
lcom 1
cbo 3
dl 0
loc 65
ccs 22
cts 22
cp 1
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 7 1
B handle() 0 30 4
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\controller;
11
12
use Symfony\Component\HttpFoundation\Response;
13
14
class menus_admin
15
{
16
	/** @var \phpbb\request\request_interface */
17
	protected $request;
18
19
	/** @var \phpbb\user */
20
	protected $user;
21
22
	/** @var \blitze\sitemaker\services\menus\action_handler */
23
	protected $action_handler;
24
25
	/** @var boolean */
26
	protected $return_url;
27
28
	/**
29
	 * Constructor
30
	 *
31
	 * @param \phpbb\request\request_interface                $request Request object
32
	 * @param \phpbb\user                                     $user User object
33
	 * @param \blitze\sitemaker\services\menus\action_handler $action_handler Handles menu actions
34
	 * @param bool                                            $return_url
35
	 */
36 5
	public function __construct(\phpbb\request\request_interface $request, \phpbb\user $user, \blitze\sitemaker\services\menus\action_handler $action_handler, $return_url = false)
37
	{
38 5
		$this->request = $request;
39 5
		$this->user = $user;
40 5
		$this->action_handler = $action_handler;
41 5
		$this->return_url = $return_url;
42 5
	}
43
44
	/**
45
	 * @param string $action
46
	 * @return \Symfony\Component\HttpFoundation\Response
47
	 */
48 5
	public function handle($action)
49
	{
50 5
		$return_data = array();
51
52 5
		if ($this->request->is_ajax() === false)
53 5
		{
54 1
			redirect(generate_board_url(), $this->return_url);
55
56 1
			$return_data['message'] = $this->user->lang('NOT_AUTHORISED');
57 1
			return new Response(json_encode($return_data), 401);
58
		}
59
60
		try
61
		{
62 4
			$command = $this->action_handler->create($action);
63 4
			$return_data = $command->execute();
64
65 2
			$this->action_handler->clear_cache();
66
		}
67 4
		catch (\blitze\sitemaker\exception\base $e)
68
		{
69 1
			$return_data['message'] = $e->get_message($this->user);
70 1
		}
71 1
		catch (\Exception $e)
72
		{
73 1
			$return_data['message'] = $this->user->lang($e->getMessage());
74
		}
75
76 4
		return new Response(json_encode($return_data));
77
	}
78
}
79