members::display()   A
last analyzed

Complexity

Conditions 3
Paths 4

Size

Total Lines 17
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 3

Importance

Changes 0
Metric Value
cc 3
eloc 8
nc 4
nop 2
dl 0
loc 17
ccs 5
cts 5
cp 1
crap 3
rs 10
c 0
b 0
f 0
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\blocks;
12
13
use blitze\sitemaker\services\blocks\driver\block;
14
15
/**
16
 * Members Block
17
 */
18
class members extends block
19
{
20
	/** @var \phpbb\language\language */
21
	protected $translator;
22
23
	/** @var \phpbb\user */
24
	protected $user;
25
26
	/** @var \blitze\sitemaker\services\members */
27
	private $members;
28
29
	/** @var array */
30
	private $query_type_options;
31
32
	/** @var array */
33
	private $range_options;
34
35
	/**
36
	 * Constructor
37
	 *
38
	 * @param \phpbb\language\language				$translator		Language Object
39
	 * @param \phpbb\user							$user			User object
40
	 * @param \blitze\sitemaker\services\members	$members		Members object
41 6
	 */
42
	public function __construct(\phpbb\language\language $translator, \phpbb\user $user, \blitze\sitemaker\services\members $members)
43 6
	{
44 6
		$this->translator = $translator;
45 6
		$this->user = $user;
46
		$this->members = $members;
47 6
48 6
		$this->query_type_options = array(
49 6
			'visits'	=> 'LAST_VISITED',
50 6
			'bots'		=> 'RECENT_BOTS',
51 6
			'recent'	=> 'RECENT_MEMBERS',
52 6
			'tenured'	=> 'MOST_TENURED',
53
			'posts'		=> 'TOP_POSTERS',
54
		);
55 6
56 6
		$this->range_options = array(
57 6
			''		=> 'ALL_TIME',
58 6
			'today'	=> 'TODAY',
59 6
			'week'	=> 'THIS_WEEK',
60 6
			'month'	=> 'THIS_MONTH',
61
			'year'	=> 'THIS_YEAR',
62 6
		);
63
	}
64
65
	/**
66
	 * {@inheritdoc}
67 1
	 */
68
	public function get_config(array $settings)
69
	{
70 1
		return array(
71 1
			'legend1'		=> 'SETTINGS',
72 1
			'query_type'	=> array('lang' => 'QUERY_TYPE', 'validate' => 'string', 'type' => 'select', 'options' => $this->query_type_options, 'default' => 'recent', 'explain' => false),
73 1
			'date_range'	=> array('lang' => 'DATE_RANGE', 'validate' => 'string', 'type' => 'select', 'options' => $this->range_options, 'default' => '', 'explain' => false),
74 1
			'max_members'	=> array('lang' => 'MAX_MEMBERS', 'validate' => 'int:0', 'type' => 'number:0', 'maxlength' => 2, 'explain' => false, 'default' => 5),
75
		);
76
	}
77
78
	/**
79
	 * {@inheritdoc}
80 5
	 */
81
	public function display(array $bdata, $edit_mode = false)
82 5
	{
83
		if ($bdata['settings']['query_type'] === 'tenured')
84 5
		{
85
			$bdata['settings']['date_range']  = '';
86
		}
87 5
88 5
		$data = $this->members->get_list($bdata['settings']);
89 5
90
		if (!empty($data['MEMBERS']))
91
		{
92
			$data['RANGE'] = $this->translator->lang($this->range_options[$bdata['settings']['date_range']]);
93
		}
94
95
		return array(
96
			'title'	=> $this->query_type_options[$bdata['settings']['query_type']],
97
			'data'	=> $data,
98
		);
99
	}
100
101
	/**
102
	 * {@inheritdoc}
103
	 */
104
	public function get_template()
105
	{
106
		return '@blitze_sitemaker/blocks/members.html';
107
	}
108
}
109