Passed
Push — master ( 1d252d...bd204f )
by Daimona
01:55
created

UserInfo::getInfo()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 2
rs 10
1
<?php declare( strict_types=1 );
2
3
namespace BotRiconferme\Wiki;
4
5
/**
6
 * Value object containing the data about a User that is stored in the list page
7
 */
8
class UserInfo {
9
	/** @var string */
10
	private $name;
11
	/** @var array */
12
	private $info;
13
14
	private const GROUP_KEYS = [ 'sysop', 'bureaucrat', 'checkuser' ];
15
16
	/**
17
	 * @param string $name
18
	 * @param array $info
19
	 */
20
	public function __construct( string $name, array $info ) {
21
		$this->name = $name;
22
		$this->info = $info;
23
	}
24
25
	/**
26
	 * @return string
27
	 */
28
	public function getName() : string {
29
		return $this->name;
30
	}
31
32
	/**
33
	 * @return array
34
	 */
35
	public function getInfo() : array {
36
		return $this->info;
37
	}
38
39
	/**
40
	 * @return array
41
	 */
42
	public function extractGroups() : array {
43
		return array_keys( $this->extractGroupsWithDates() );
44
	}
45
46
	/**
47
	 * @return array
48
	 */
49
	public function extractGroupsWithDates() : array {
50
		return array_intersect_key( $this->getInfo(), array_fill_keys( self::GROUP_KEYS, 1 ) );
51
	}
52
53
	/**
54
	 * @return array
55
	 */
56
	public function getAliases() : array {
57
		return $this->getInfo()['aliases'] ?? [];
58
	}
59
}
60