PluginProbe ʕ •ᴥ•ʔ
Admin Columns / 4.7.19
Admin Columns v4.7.19
7.0.19 2.3.5 2.4 2.4.1 2.4.10 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.6.1 2.5.6.2 2.5.6.3 2.5.6.4 3.0 3.0.1 3.0.2 3.0.3 3.0.5 3.0.7 3.1 3.1.1 3.1.10 3.1.2 3.1.3 3.1.5 3.2.3 3.2.7 3.3.1 3.4.1 3.4.6 3.4.8 4.0.1 4.0.3 4.1.6 4.2.2 4.2.5 4.3 4.3.2 4.4.1 4.4.4 4.4.5 4.5.5 4.6.1 4.7.18 4.7.19 4.7.20 4.7.7 7.0.13 7.0.14 7.0.16 trunk 1.0 1.1 1.1.3 1.2 1.2.1 1.3 1.3.1 1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.5.1 1.4.6 1.4.6.1 1.4.6.2 1.4.6.3 1.4.6.4 1.4.7 1.4.8 1.4.9 2.0.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.2 2.2.1 2.2.1.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.5.1 2.2.6 2.2.6.1 2.2.6.2 2.2.6.3 2.2.6.4 2.2.7 2.2.8 2.2.8.1 2.2.9 2.3.1 2.3.2 2.3.3
codepress-admin-columns / classes / ListScreenRepository / Rules.php
codepress-admin-columns / classes / ListScreenRepository Last commit date
Filter 6 months ago Rule 6 months ago Sort 6 months ago Storage 6 months ago Database.php 6 months ago Filter.php 6 months ago ListScreenRepositoryTrait.php 6 months ago Rule.php 6 months ago Rules.php 6 months ago Sort.php 6 months ago Storage.php 6 months ago Types.php 6 months ago
Rules.php
72 lines
1 <?php
2
3 namespace AC\ListScreenRepository;
4
5 use InvalidArgumentException;
6
7 final class Rules {
8
9 const MATCH_ALL = 'all';
10 const MATCH_ANY = 'any';
11
12 /**
13 * @var string
14 */
15 private $match_decision;
16
17 /**
18 * @var Rule[]
19 */
20 private $rules = [];
21
22 public function __construct( $match_decision = null ) {
23 if ( null === $match_decision ) {
24 $match_decision = self::MATCH_ANY;
25 }
26
27 $this->match_decision = $match_decision;
28
29 $this->validate();
30 }
31
32 private function validate() {
33 $match_decisions = [ self::MATCH_ANY, self::MATCH_ALL ];
34
35 if ( ! in_array( $this->match_decision, $match_decisions, true ) ) {
36 throw new InvalidArgumentException( 'Invalid match decision.' );
37 }
38 }
39
40 /**
41 * @param Rule $rule
42 *
43 * @return $this
44 */
45 public function add_rule( Rule $rule ) {
46 $this->rules[] = $rule;
47
48 return $this;
49 }
50
51 public function match( array $args ) {
52 $matches = 0;
53
54 foreach ( $this->rules as $rule ) {
55 if ( $rule->match( $args ) ) {
56 $matches++;
57 }
58 }
59
60 $has_as_least_one_match = $matches > 0;
61
62 switch ( $this->match_decision ) {
63 case self::MATCH_ANY:
64 return $has_as_least_one_match;
65 case self::MATCH_ALL:
66 return $has_as_least_one_match && $matches === count( $this->rules );
67 }
68
69 return false;
70 }
71
72 }