Group_Validator   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 35
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 4
eloc 13
c 1
b 0
f 0
dl 0
loc 35
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A validate() 0 9 2
A check_properties() 0 9 2
1
<?php
2
3
declare(strict_types=1);
4
5
/**
6
 * Validates groups.
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\Validator;
26
27
use PinkCrab\Perique_Admin_Menu\Group\Abstract_Group;
28
use PinkCrab\Perique_Admin_Menu\Validator\Abstract_Validator;
29
30
class Group_Validator extends Abstract_Validator {
31
32
	/**
33
	 * Validates a passed group.
34
	 *
35
	 * @param mixed $group
36
	 * @return bool
37
	 */
38
	public function validate( $group ): bool {
39
		$this->reset_errors();
40
41
		if ( ! is_a( $group, Abstract_Group::class ) ) {
42
			$this->push_error( sprintf( '%s Is not a valid group type.', get_class( $group ) ) );
43
			return false;
44
		}
45
46
		return $this->check_properties( $group );
47
	}
48
49
	/**
50
	 * Attempts to get all properties
51
	 * Catches any exceptions thrown and sets to error log.
52
	 *
53
	 * @param \PinkCrab\Perique_Admin_Menu\Group\Abstract_Group $group
54
	 * @return bool
55
	 */
56
	protected function check_properties( Abstract_Group $group ): bool {
57
		try {
58
			$group->get_primary_page();
59
			$group->get_group_title();
60
		} catch ( \Throwable $th ) {
61
			$this->push_error( $th->getMessage() );
62
			return false;
63
		}
64
		return true;
65
	}
66
}
67