PluginProbe ʕ •ᴥ•ʔ
Admin Columns / 7.0.19
Admin Columns v7.0.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 1 month ago Rule 1 month ago Sort 1 month ago Storage 1 month ago Base.php 1 month ago Database.php 1 month ago Filter.php 1 month ago Rule.php 1 month ago Rules.php 1 month ago Sort.php 1 month ago Storage.php 1 month ago Types.php 1 month ago
Rules.php
70 lines
1 <?php
2
3 namespace AC\ListScreenRepository;
4
5 use InvalidArgumentException;
6
7 final class Rules
8 {
9
10 public const MATCH_ALL = 'all';
11 public const MATCH_ANY = 'any';
12
13 private string $match_decision;
14
15 /**
16 * @var Rule[]
17 */
18 private array $rules = [];
19
20 public function __construct(?string $match_decision = null)
21 {
22 $this->match_decision = $match_decision ?? self::MATCH_ANY;
23
24 $this->validate();
25 }
26
27 private function validate()
28 {
29 $match_decisions = [self::MATCH_ANY, self::MATCH_ALL];
30
31 if ( ! in_array($this->match_decision, $match_decisions, true)) {
32 throw new InvalidArgumentException('Invalid match decision.');
33 }
34 }
35
36 /**
37 * @param Rule $rule
38 *
39 * @return $this
40 */
41 public function add_rule(Rule $rule)
42 {
43 $this->rules[] = $rule;
44
45 return $this;
46 }
47
48 public function match(array $args)
49 {
50 $matches = 0;
51
52 foreach ($this->rules as $rule) {
53 if ($rule->match($args)) {
54 $matches++;
55 }
56 }
57
58 $has_as_least_one_match = $matches > 0;
59
60 switch ($this->match_decision) {
61 case self::MATCH_ANY:
62 return $has_as_least_one_match;
63 case self::MATCH_ALL:
64 return $has_as_least_one_match && $matches === count($this->rules);
65 }
66
67 return false;
68 }
69
70 }