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