Bristol SU Support Package
src
Logic
LogicTester.php
Go to the documentation of this file.
1
<?php
2
3
namespace
BristolSU\Support\Logic
;
4
5
use
BristolSU\ControlDB\Contracts\Models\Group
;
6
use
BristolSU\ControlDB\Contracts\Models\Role
;
7
use
BristolSU\ControlDB\Contracts\Models\User
;
8
use
BristolSU\Support\Logic\Contracts\LogicTester
as
LogicTesterContract
;
9
use
BristolSU\Support\Logic\Specification\AndSpecification
;
10
use
BristolSU\Support\Logic\Specification\OrSpecification
;
11
use
BristolSU\Support\Logic\Specification\FilterFalseSpecification
;
12
use
BristolSU\Support\Logic\Specification\FilterTrueSpecification
;
13
17
class
LogicTester
implements
LogicTesterContract
18
{
19
30
public
function
evaluate
(
Logic
$logic, $userModel = null, $groupModel = null, $roleModel = null): bool
31
{
32
$allTrue = [];
33
$anyTrue = [];
34
$allFalse = [];
35
$anyFalse = [];
36
37
foreach
($logic->
allTrueFilters
as $filter) {
38
$allTrue[] =
new
FilterTrueSpecification
($filter, $userModel, $groupModel, $roleModel);
39
}
40
41
foreach
($logic->
anyTrueFilters
as $filter) {
42
$anyTrue[] =
new
FilterTrueSpecification
($filter, $userModel, $groupModel, $roleModel);
43
}
44
45
foreach
($logic->
allFalseFilters
as $filter) {
46
$allFalse[] =
new
FilterFalseSpecification
($filter, $userModel, $groupModel, $roleModel);
47
}
48
49
foreach
($logic->
anyFalseFilters
as $filter) {
50
$anyFalse[] =
new
FilterFalseSpecification
($filter, $userModel, $groupModel, $roleModel);
51
}
52
53
54
return
(
new
AndSpecification
(
55
new
AndSpecification
(...$allTrue),
56
new
OrSpecification
(...$anyTrue),
57
new
AndSpecification
(...$allFalse),
58
new
OrSpecification
(...$anyFalse)
59
))->isSatisfied();
60
}
61
62
63
}
BristolSU\Support\Logic\Logic\anyFalseFilters
anyFalseFilters()
Definition:
Logic.php:110
OrSpecification
User
BristolSU\Support\Logic\Specification\FilterFalseSpecification
Definition:
FilterFalseSpecification.php:17
Group
BristolSU\Support\Logic\Logic\allFalseFilters
allFalseFilters()
Definition:
Logic.php:90
BristolSU\Support\Logic\Logic\allTrueFilters
allTrueFilters()
Definition:
Logic.php:80
BristolSU\Support\Logic\Logic
Definition:
Logic.php:16
BristolSU\Support\Logic\Specification\FilterTrueSpecification
Definition:
FilterTrueSpecification.php:15
Role
BristolSU\Support\Logic\Specification\OrSpecification
Definition:
OrSpecification.php:12
LogicTester
FilterTrueSpecification
BristolSU\Support\Logic\LogicTester
Definition:
LogicTester.php:17
BristolSU\Support\Logic
BristolSU\Support\Logic\Specification\AndSpecification
Definition:
AndSpecification.php:12
BristolSU\Support\Logic\Logic\anyTrueFilters
anyTrueFilters()
Definition:
Logic.php:100
FilterFalseSpecification
BristolSU\Support\Logic\LogicTester\evaluate
evaluate(Logic $logic, $userModel=null, $groupModel=null, $roleModel=null)
Definition:
LogicTester.php:30
AndSpecification
Generated by
1.8.13