ILIAS  release_8 Revision v8.24
AbstractBaseItem.php
Go to the documentation of this file.
1<?php
2
3declare(strict_types=1);
21
26use Closure;
27
32abstract class AbstractBaseItem implements isItem
33{
35
37 protected int $position = 0;
38 protected ?Closure $available_callable = null;
40 protected ?Closure $visiblility_callable = null;
41
47 {
48 $this->provider_identification = $provider_identification;
49 $this->renderer = new BaseMetaBarItemRenderer();
50 }
51
56 {
57 return $this->renderer;
58 }
59
64 {
66 }
67
71 public function withVisibilityCallable(callable $is_visible): isItem
72 {
73 $clone = clone($this);
74 $clone->visiblility_callable = $is_visible;
75
76 return $clone;
77 }
78
82 public function isVisible(): bool
83 {
84 if (!$this->isAvailable()) {
85 return false;
86 }
87 if (is_callable($this->visiblility_callable)) {
89
90 $value = $callable();
91
92 return $value;
93 }
94
95 return true;
96 }
97
101 public function withAvailableCallable(callable $is_available): isItem
102 {
103 $clone = clone($this);
104 $clone->available_callable = $is_available;
105
106 return $clone;
107 }
108
112 public function isAvailable(): bool
113 {
114 if (is_callable($this->available_callable)) {
115 $callable = $this->available_callable;
116
117 $value = $callable();
118
119 return $value;
120 }
121
122 return true;
123 }
124
128 public function getPosition(): int
129 {
130 return $this->position;
131 }
132
136 public function withPosition(int $position): isItem
137 {
138 $clone = clone($this);
139 $clone->position = $position;
140
141 return $clone;
142 }
143}
__construct(IdentificationInterface $provider_identification)
AbstractBaseItem constructor.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...