Group_Exception   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 3
eloc 17
c 1
b 0
f 0
dl 0
loc 52
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A primary_page_undefined() 0 7 1
A failed_validation() 0 8 1
A group_title_undefined() 0 7 1
1
<?php
2
3
declare(strict_types=1);
4
5
/**
6
 * Group exceptions
7
 *
8
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
9
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
10
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
11
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
12
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
13
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
14
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
15
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
16
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
17
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
18
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
19
 *
20
 * @author Glynn Quelch <[email protected]>
21
 * @license http://www.opensource.org/licenses/mit-license.html  MIT License
22
 * @package PinkCrab\Perique_Admin_Menu
23
 */
24
25
namespace PinkCrab\Perique_Admin_Menu\Exception;
26
27
use Exception;
28
use PinkCrab\Perique_Admin_Menu\Group\Abstract_Group;
29
use PinkCrab\Perique_Admin_Menu\Validator\Group_Validator;
30
use PinkCrab\Perique_Admin_Menu\Validator\Abstract_Validator;
31
32
class Group_Exception extends Exception {
33
34
	/**
35
	 * Exception for a group with no primary page defined.
36
	 *
37
	 * @param \PinkCrab\Perique_Admin_Menu\Group\Abstract_Group $group
38
	 * @return self
39
	 * @code 250
40
	 */
41
	public static function primary_page_undefined( Abstract_Group $group ): self {
42
		return new self(
43
			sprintf(
44
				'The primary page is not defined in %s',
45
				get_class( $group )
46
			),
47
			250
48
		);
49
	}
50
51
	/**
52
	 * Exception for a group with no title set
53
	 *
54
	 * @param \PinkCrab\Perique_Admin_Menu\Group\Abstract_Group $group
55
	 * @return self
56
	 * @code 251
57
	 */
58
	public static function group_title_undefined( Abstract_Group $group ): self {
59
		return new self(
60
			sprintf(
61
				'The group title is not defined in %s',
62
				get_class( $group )
63
			),
64
			251
65
		);
66
	}
67
68
	/**
69
	 * Exception for a group that fails validation
70
	 *
71
	 * @param \PinkCrab\Perique_Admin_Menu\Validator\Group_Validator $validator
72
	 * @param \PinkCrab\Perique_Admin_Menu\Group\Abstract_Group $group
73
	 * @return self
74
	 * @code 252
75
	 */
76
	public static function failed_validation( Group_Validator $validator, Abstract_Group $group ): self {
77
		return new self(
78
			sprintf(
79
				'%s failed Group validation (%s)',
80
				get_class( $group ),
81
				join( ',', $validator->get_errors() )
82
			),
83
			252
84
		);
85
	}
86
}
87