ILIAS  release_8 Revision v8.23
AbstractBaseItem.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
21 
26 use Closure;
27 
32 abstract class AbstractBaseItem implements isItem
33 {
35 
37  protected int $position = 0;
38  protected ?Closure $available_callable = null;
40  protected ?Closure $visiblility_callable = null;
41 
46  public function __construct(IdentificationInterface $provider_identification)
47  {
48  $this->provider_identification = $provider_identification;
49  $this->renderer = new BaseMetaBarItemRenderer();
50  }
51 
55  public function getRenderer(): MetaBarItemRenderer
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)) {
88  $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 }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
__construct(IdentificationInterface $provider_identification)
AbstractBaseItem constructor.