manager   A
last analyzed

Complexity

Total Complexity 16

Size/Duplication

Total Lines 107
Duplicated Lines 0 %

Importance

Changes 4
Bugs 0 Features 0
Metric Value
eloc 22
c 4
b 0
f 0
dl 0
loc 107
rs 10
wmc 16

10 Methods

Rating   Name   Duplication   Size   Complexity  
A get_prefix() 0 5 2
A is_enabled() 0 3 1
A add_prefix() 0 9 2
A __construct() 0 3 1
A move_prefix() 0 5 2
A get_prefixes() 0 8 2
A update_prefix() 0 3 1
A prepend_prefix() 0 8 3
A get_active_prefixes() 0 3 1
A delete_prefix() 0 3 1
1
<?php
2
/**
3
 *
4
 * Topic Prefixes extension for the phpBB Forum Software package.
5
 *
6
 * @copyright (c) 2016 phpBB Limited <https://www.phpbb.com>
7
 * @license GNU General Public License, version 2 (GPL-2.0)
8
 *
9
 */
10
11
namespace phpbb\topicprefixes\prefixes;
12
13
class manager implements manager_interface
14
{
15
	/**
16
	 * @var nestedset_prefixes
17
	 */
18
	protected $nestedset;
19
20
	/**
21
	 * Constructor
22
	 *
23
	 * @param nestedset_prefixes $nestedset
24
	 */
25
	public function __construct(nestedset_prefixes $nestedset)
26
	{
27
		$this->nestedset = $nestedset;
28
	}
29
30
	/**
31
	 * @inheritdoc
32
	 */
33
	public function get_prefix($id)
34
	{
35
		$prefix = $this->nestedset->get_subtree_data($id);
36
37
		return count($prefix) ? $prefix[$id] : false;
38
	}
39
40
	/**
41
	 * @inheritdoc
42
	 */
43
	public function get_prefixes($forum_id = 0)
44
	{
45
		if ($forum_id)
46
		{
47
			$this->nestedset->where_forum_id($forum_id);
48
		}
49
50
		return $this->nestedset->get_all_tree_data();
51
	}
52
53
	/**
54
	 * @inheritdoc
55
	 */
56
	public function get_active_prefixes($forum_id = 0)
57
	{
58
		return array_filter($this->get_prefixes($forum_id), [$this, 'is_enabled']);
59
	}
60
61
	/**
62
	 * @inheritdoc
63
	 */
64
	public function add_prefix($tag, $forum_id)
65
	{
66
		$data = [
67
			'prefix_tag'		=> $tag,
68
			'forum_id'		=> (int) $forum_id,
69
			'prefix_enabled'	=> true,
70
		];
71
72
		return $tag !== '' ? $this->nestedset->insert($data) : false;
73
	}
74
75
	/**
76
	 * @inheritdoc
77
	 */
78
	public function delete_prefix($id)
79
	{
80
		return $this->nestedset->delete($id);
81
	}
82
83
	/**
84
	 * @inheritdoc
85
	 */
86
	public function update_prefix($id, array $data)
87
	{
88
		return $this->nestedset->update_item($id, $data);
89
	}
90
91
	/**
92
	 * @inheritdoc
93
	 */
94
	public function move_prefix($id, $direction = 'up', $amount = 1)
95
	{
96
		$amount = (int) $amount;
97
98
		$this->nestedset->move($id, ($direction !== 'up' ? -$amount : $amount));
99
	}
100
101
	/**
102
	 * @inheritdoc
103
	 */
104
	public function is_enabled(array $row)
105
	{
106
		return $row['prefix_enabled'];
107
	}
108
109
	/**
110
	 * @inheritdoc
111
	 */
112
	public function prepend_prefix($prefix, $subject)
113
	{
114
		if ($prefix && strpos($subject, $prefix) !== 0)
115
		{
116
			$subject = $prefix . ' ' . $subject;
117
		}
118
119
		return $subject;
120
	}
121
}
122