Bristol SU Support Package
RoleTagged.php
Go to the documentation of this file.
1 <?php
2 
3 
5 
6 
7 use BristolSU\ControlDB\Contracts\Repositories\Tags\RoleTag as RoleTagRepositoryContract;
10 
14 class RoleTagged extends RoleFilter
15 {
16 
23 
27  public function __construct(RoleTagRepositoryContract $roleTagRepository)
28  {
29  $this->roleTagRepository = $roleTagRepository;
30  }
31 
39  public function evaluate($settings): bool
40  {
41  try {
42  $tags = $this->role()->tags();
43  } catch (\Exception $e) {
44  return false;
45  }
46  foreach ($tags as $tag) {
47  if ($tag->fullReference() === $settings['tag']) {
48  return true;
49  }
50  }
51  return false;
52  }
53 
63  public function options(): Form
64  {
65  $tags = $this->roleTagRepository->all();
66  $values = [];
67  foreach ($tags as $tag) {
68  $values[] = [
69  'id' => $tag->fullReference(),
70  'name' => sprintf('%s (%s)', $tag->name(), $tag->fullReference()),
71  'role' => $tag->category()->name()
72  ];
73  }
74  return \FormSchema\Generator\Form::make()->withField(
75  \FormSchema\Generator\Field::select('tag')->values($values)->label('Role Name')
76  ->required(true)
77  )->getSchema();
78  }
79 
85  public function name()
86  {
87  return 'Role Tagged';
88  }
89 
95  public function description()
96  {
97  return 'Returns true if a role is tagged';
98  }
99 
105  public function alias()
106  {
107  return 'role_tagged';
108  }
109 }
__construct(RoleTagRepositoryContract $roleTagRepository)
Definition: RoleTagged.php:27