Bristol SU Support Package
src
Logic
Contracts
Audience
LogicAudience.php
Go to the documentation of this file.
1
<?php
2
3
namespace
BristolSU\Support\Logic\Contracts\Audience
;
4
5
use
BristolSU\Support\Logic\Audience\AudienceMember
;
6
use
BristolSU\Support\Logic\Logic
;
7
use
BristolSU\ControlDB\Contracts\Models\Group
;
8
use
BristolSU\ControlDB\Contracts\Models\Role
;
9
use
BristolSU\ControlDB\Contracts\Models\User
;
10
14
abstract
class
LogicAudience
15
{
16
23
abstract
public
function
audience
(
Logic
$logic);
24
33
public
function
userAudience
(
Logic
$logic)
34
{
35
return
collect($this->
audience
($logic))->filter(
function
(
AudienceMember
$audienceMember) {
36
return
$audienceMember->
hasAudience
();
37
})->map(
function
(
AudienceMember
$audienceMember) {
38
return
$audienceMember->
user
();
39
})->flatten(1)->unique(
function
(User $user) {
40
return
$user->id();
41
})->values();
42
}
43
50
public
function
groupAudience
(
Logic
$logic)
51
{
52
return
collect($this->
audience
($logic))->filter(
function
(
AudienceMember
$audienceMember) {
53
return
$audienceMember->
groups
()->count() > 0 || $audienceMember->
roles
()->count() > 0;
54
})->map(
function
(
AudienceMember
$audienceMember) {
55
return
$audienceMember->
groups
()->merge($audienceMember->
roles
()->map(
function
(Role $role) {
56
return
$role->group();
57
}));
58
})->flatten(1)->unique(
function
(Group $group) {
59
return
$group->id();
60
})->values();
61
}
62
69
public
function
roleAudience
(
Logic
$logic)
70
{
71
return
collect($this->
audience
($logic))->filter(
function
(
AudienceMember
$audienceMember) {
72
return
$audienceMember->
roles
()->count();
73
})->map(
function
(
AudienceMember
$audienceMember) {
74
return
$audienceMember->
roles
();
75
})->flatten(1)->unique(
function
(Role $role) {
76
return
$role->id();
77
})->values();
78
}
79
}
BristolSU\Support\Logic\Contracts\Audience\LogicAudience\roleAudience
roleAudience(Logic $logic)
Definition:
LogicAudience.php:69
BristolSU\Support\Logic\Contracts\Audience\LogicAudience\audience
audience(Logic $logic)
BristolSU\Support\Logic\Contracts\Audience\LogicAudience\groupAudience
groupAudience(Logic $logic)
Definition:
LogicAudience.php:50
User
BristolSU\Support\Logic\Audience\AudienceMember\groups
groups()
Definition:
AudienceMember.php:63
BristolSU\Support\Logic\Audience\AudienceMember\user
user()
Definition:
AudienceMember.php:93
AudienceMember
Group
BristolSU\Support\Logic\Contracts\Audience\LogicAudience
Definition:
LogicAudience.php:14
BristolSU\Support\Logic\Logic
Definition:
Logic.php:16
BristolSU\Support\Logic\Contracts\Audience
Definition:
AudienceMemberFactory.php:3
BristolSU\Support\Logic\Audience\AudienceMember\hasAudience
hasAudience()
Definition:
AudienceMember.php:140
Role
BristolSU\Support\Logic\Contracts\Audience\LogicAudience\userAudience
userAudience(Logic $logic)
Definition:
LogicAudience.php:33
BristolSU\Support\Logic\Audience\AudienceMember
Definition:
AudienceMember.php:19
BristolSU\Support\Logic\Audience\AudienceMember\roles
roles()
Definition:
AudienceMember.php:76
Logic
Generated by
1.8.13