217 : array {
219
221 $badge->setId($badge_item['id']);
222 $badge->setImageRid($badge_item['image_rid']);
223 $badge->setImage($badge_item['image']);
224
225 $images = [
226 'rendered' => null,
227 'large' => null,
228 ];
229 $image_src = $this->badge_image_service->getImageFromResourceId($badge);
230 if ($image_src !== '') {
231 $images[
'rendered'] = $this->
renderer->render(
232 $this->
factory->image()->responsive(
233 $image_src,
234 $badge_item['title']
235 )
236 );
237
238 $image_src_large = $this->badge_image_service->getImageFromResourceId(
239 $badge,
241 );
242 if ($image_src_large !== '') {
243 $images[
'large'] = $this->
factory->image()->responsive(
244 $image_src_large,
245 $badge_item['title']
246 );
247 }
248 }
249
250 $container_title_parts = [
252 $this->
factory->symbol()->icon()->custom(
253 ilObject::_getIcon($badge_item[
'parent_id'],
'big', $badge_item[
'parent_type'] ??
''),
254 $this->lng->txt('obj_' . ($badge_item['parent_type'] ?? ''))
255 )
256 ),
257 'title' => $badge_item['parent_title'] ?? '',
258 ];
259
260 $sortable_container_title_parts = [
261 'title' => $badge_item['parent_title'] ?? ''
262 ];
263 if ($badge_item['deleted']) {
264 $container_title_parts['suffix'] = $container_deleted_title_part;
265 $sortable_container_title_parts['suffix'] = $container_deleted_title_part;
266 } else {
267 if (isset($this->has_access_by_parent_cache[$badge_item['parent_id']])) {
268 $has_access = $this->has_access_by_parent_cache[$badge_item['parent_id']] ?? false;
269 $ref_id = $this->first_ref_id_for_parent_cache[$badge_item[
'parent_id']] ??
null;
270 } else {
272 $ref_id = array_shift($ref_ids);
273 $this->first_ref_id_for_parent_cache[$badge_item[
'parent_id']] =
$ref_id;
275 $this->has_access_by_parent_cache[$badge_item['parent_id']] = $has_access;
276 }
277
278 if ($has_access) {
279 $container_title_parts[
'title'] = $this->
renderer->render(
280 new Standard(
281 $container_title_parts['title'],
282 (string) new URI(
283 ilLink::_getLink(
285 $badge_item['parent_type'] ?? ''
286 )
287 )
288 )
289 );
290 } else {
291 $container_title_parts['suffix'] = $container_deleted_title_part;
292 $sortable_container_title_parts['suffix'] = $container_deleted_title_part;
293 }
294 }
295
297 $images['large'],
298 $badge_item['title'],
299 [
300 'active' => $badge_item[
'active'] ? $this->
lng->txt(
'yes') : $this->lng->txt(
'no'),
301 'type' => $record['type'],
302 'container' => implode(' ', \array_slice($container_title_parts, 1, null, true)),
303 ],
304 true
305 );
306
307 return [
308 'id' => $badge_item['id'],
309 'active' => (bool) $badge_item['active'],
310 'type' => $record['type'],
312 $images['rendered'],
313 $modal
314 ) . ' ') : '',
315 'title' => implode('', [
318 ]),
319 'title_sortable' => $badge_item['title'],
320 'container' => implode(' ', $container_title_parts),
321 'container_sortable' => implode(' ', $sortable_container_title_parts),
322 ];
323 }
renderShyButton(string $label, Modal $modal)
renderModal(Modal $modal)
constructModal(?Image $badge_image, string $badge_title, array $badge_properties=[], bool $enclose_in_div=false)
static _getIcon(int $obj_id=0, string $size="big", string $type="", bool $offline=false)
Get icon for repository item.
static _getAllReferences(int $id)
get all reference ids for object ID