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

menus_admin::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 7
ccs 6
cts 6
cp 1
rs 9.4285
cc 1
eloc 5
nc 1
nop 4
crap 1
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