Completed
Branch master (537795)
by
unknown
33:10
created

PermissionsError::__construct()   B

Complexity

Conditions 5
Paths 4

Size

Total Lines 25
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 5
eloc 15
nc 4
nop 2
dl 0
loc 25
rs 8.439
c 0
b 0
f 0
1
<?php
2
/**
3
 * This program is free software; you can redistribute it and/or modify
4
 * it under the terms of the GNU General Public License as published by
5
 * the Free Software Foundation; either version 2 of the License, or
6
 * (at your option) any later version.
7
 *
8
 * This program is distributed in the hope that it will be useful,
9
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
 * GNU General Public License for more details.
12
 *
13
 * You should have received a copy of the GNU General Public License along
14
 * with this program; if not, write to the Free Software Foundation, Inc.,
15
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16
 * http://www.gnu.org/copyleft/gpl.html
17
 *
18
 * @file
19
 */
20
21
/**
22
 * Show an error when a user tries to do something they do not have the necessary
23
 * permissions for.
24
 *
25
 * @since 1.18
26
 * @ingroup Exception
27
 */
28
class PermissionsError extends ErrorPageError {
29
	public $permission, $errors;
0 ignored issues
show
Coding Style introduced by
It is generally advisable to only define one property per statement.

Only declaring a single property per statement allows you to later on add doc comments more easily.

It is also recommended by PSR2, so it is a common style that many people expect.

Loading history...
30
31
	/**
32
	 * @param string|null $permission A permission name or null if unknown
33
	 * @param array $errors Error message keys or [key, param...] arrays; must not be empty if
34
	 *   $permission is null
35
	 * @throws \InvalidArgumentException
36
	 */
37
	public function __construct( $permission, $errors = [] ) {
38
		global $wgLang;
39
40
		if ( $permission === null && !$errors ) {
41
			throw new \InvalidArgumentException( __METHOD__ .
42
				': $permission and $errors cannot both be empty' );
43
		}
44
45
		$this->permission = $permission;
46
47
		if ( !count( $errors ) ) {
48
			$groups = array_map(
49
				[ 'User', 'makeGroupLinkWiki' ],
50
				User::getGroupsWithPermission( $this->permission )
51
			);
52
53
			if ( $groups ) {
54
				$errors[] = [ 'badaccess-groups', $wgLang->commaList( $groups ), count( $groups ) ];
55
			} else {
56
				$errors[] = [ 'badaccess-group0' ];
57
			}
58
		}
59
60
		$this->errors = $errors;
61
	}
62
63
	public function report() {
64
		global $wgOut;
65
66
		$wgOut->showPermissionsErrorPage( $this->errors, $this->permission );
67
		$wgOut->output();
68
	}
69
}
70