Passed
Push — master ( a192f6...3a1f1a )
by Daimona
02:01
created

ContextSource::getOpt()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 2
rs 10
c 0
b 0
f 0
1
<?php declare( strict_types=1 );
2
3
namespace BotRiconferme;
4
5
use BotRiconferme\Wiki\Page\Page;
6
use BotRiconferme\Wiki\User;
7
use BotRiconferme\Wiki\Wiki;
8
use Psr\Log\LoggerAwareInterface;
9
use Psr\Log\LoggerInterface;
10
11
/**
12
 * Base class with a few utility methods available to get a logger, the config and a wiki
13
 */
14
abstract class ContextSource implements LoggerAwareInterface {
15
	/** @var LoggerInterface */
16
	private $logger;
17
18
	/** @var Config */
19
	private $config;
20
21
	/** @var Wiki */
22
	private $wiki;
23
24
	/** @var MessageProvider */
25
	private $messageProvider;
26
27
	/**
28
	 * @param LoggerInterface $logger
29
	 * @param Wiki $wiki
30
	 * @param MessageProvider $mp
31
	 */
32
	public function __construct( LoggerInterface $logger, Wiki $wiki, MessageProvider $mp ) {
33
		$this->setLogger( $logger );
34
		$this->setConfig( Config::getInstance() );
35
		$this->setWiki( $wiki );
36
		$this->setMessageProvider( $mp );
37
	}
38
39
	/**
40
	 * @return LoggerInterface
41
	 */
42
	protected function getLogger() : LoggerInterface {
43
		return $this->logger;
44
	}
45
46
	/**
47
	 * @inheritDoc
48
	 */
49
	public function setLogger( LoggerInterface $logger ) : void {
50
		$this->logger = $logger;
51
	}
52
53
	/**
54
	 * Shorthand to $this->getConfig()->get
55
	 *
56
	 * @param string $optname
57
	 * @return mixed
58
	 */
59
	protected function getOpt( string $optname ) {
60
		return $this->getConfig()->get( $optname );
61
	}
62
63
	/**
64
	 * @return Config
65
	 */
66
	protected function getConfig() : Config {
67
		return $this->config;
68
	}
69
70
	/**
71
	 * @param Config $cfg
72
	 */
73
	protected function setConfig( Config $cfg ) : void {
74
		$this->config = $cfg;
75
	}
76
77
	/**
78
	 * @return Wiki
79
	 */
80
	protected function getWiki() : Wiki {
81
		return $this->wiki;
82
	}
83
84
	/**
85
	 * @param Wiki $wiki
86
	 */
87
	protected function setWiki( Wiki $wiki ) : void {
88
		$this->wiki = $wiki;
89
	}
90
91
	/**
92
	 * @return MessageProvider
93
	 */
94
	protected function getMessageProvider() : MessageProvider {
95
		return $this->messageProvider;
96
	}
97
98
	/**
99
	 * @param MessageProvider $mp
100
	 */
101
	protected function setMessageProvider( MessageProvider $mp ) : void {
102
		$this->messageProvider = $mp;
103
	}
104
105
	/**
106
	 * Get a message
107
	 *
108
	 * @param string $key
109
	 * @return Message
110
	 */
111
	protected function msg( string $key ) : Message {
112
		return $this->messageProvider->getMessage( $key );
113
	}
114
115
	/**
116
	 * Shorthand to get a page using the local wiki
117
	 *
118
	 * @param string $title
119
	 * @return Page
120
	 */
121
	protected function getPage( string $title ) : Page {
122
		return new Page( $title, $this->getWiki() );
123
	}
124
125
	/**
126
	 * Shorthand to get a user using the local wiki
127
	 *
128
	 * @param string $name
129
	 * @return User
130
	 */
131
	protected function getUser( string $name ) : User {
132
		return new User( $name, $this->getWiki() );
133
	}
134
}
135