ILIAS  release_7 Revision v7.30-3-g800a261c036
All Data Structures Namespaces Files Functions Variables Modules Pages
AbstractBaseItem.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
21 
26 use Closure;
27 
32 abstract class AbstractBaseItem implements isItem
33 {
35 
39  protected $renderer;
43  protected $position = 0;
56 
62  {
63  $this->provider_identification = $provider_identification;
64  $this->renderer = new BaseMetaBarItemRenderer();
65  }
66 
70  public function getRenderer() : MetaBarItemRenderer
71  {
72  return $this->renderer;
73  }
74 
79  {
81  }
82 
86  public function withVisibilityCallable(callable $is_visible) : isItem
87  {
88  $clone = clone($this);
89  $clone->visiblility_callable = $is_visible;
90 
91  return $clone;
92  }
93 
97  public function isVisible() : bool
98  {
99  if (!$this->isAvailable()) {
100  return false;
101  }
102  if (is_callable($this->visiblility_callable)) {
103  $callable = $this->visiblility_callable;
104 
105  $value = $callable();
106 
107  return $value;
108  }
109 
110  return true;
111  }
112 
116  public function withAvailableCallable(callable $is_available) : isItem
117  {
118  $clone = clone($this);
119  $clone->available_callable = $is_available;
120 
121  return $clone;
122  }
123 
127  public function isAvailable() : bool
128  {
129  if (is_callable($this->available_callable)) {
130  $callable = $this->available_callable;
131 
132  $value = $callable();
133 
134  return $value;
135  }
136 
137  return true;
138  }
139 
143  public function getPosition() : int
144  {
145  return $this->position;
146  }
147 
151  public function withPosition(int $position) : isItem
152  {
153  $clone = clone($this);
154  $clone->position = $position;
155 
156  return $clone;
157  }
158 }
__construct(IdentificationInterface $provider_identification)
AbstractBaseItem constructor.