225 : array {
227
229 $badge->setId($badge_item['id']);
230 $badge->setImageRid($badge_item['image_rid']);
231
232 $images = [
233 'rendered' => null,
234 'large' => null,
235 ];
236 $image_src = $this->badge_image_service->getImageFromResourceId($badge);
237 if ($image_src !== '') {
238 $images[
'rendered'] = $this->
renderer->render(
239 $this->
factory->image()->responsive(
240 $image_src,
241 $badge_item['title']
242 )
243 );
244
245 $image_src_large = $this->badge_image_service->getImageFromResourceId(
246 $badge,
248 );
249 if ($image_src_large !== '') {
250 $images[
'large'] = $this->
factory->image()->responsive(
251 $image_src_large,
252 $badge_item['title']
253 );
254 }
255 }
256
257 $container_title_parts = [
259 $this->
factory->symbol()->icon()->custom(
260 ilObject::_getIcon($badge_item[
'parent_id'],
'big', $badge_item[
'parent_type'] ??
''),
261 $this->lng->txt('obj_' . ($badge_item['parent_type'] ?? ''))
262 )
263 ),
264 'title' => $badge_item['parent_title'] ?? '',
265 ];
266
267 $sortable_container_title_parts = [
268 'title' => $badge_item['parent_title'] ?? ''
269 ];
270 if ($badge_item['deleted']) {
271 $container_title_parts['suffix'] = $container_deleted_title_part;
272 $sortable_container_title_parts['suffix'] = $container_deleted_title_part;
273 } else {
274 if (isset($this->has_access_by_parent_cache[$badge_item['parent_id']])) {
275 $has_access = $this->has_access_by_parent_cache[$badge_item['parent_id']] ?? false;
276 $ref_id = $this->first_ref_id_for_parent_cache[$badge_item['parent_id']] ?? null;
277 } else {
279 $ref_id = array_shift($ref_ids);
280 $this->first_ref_id_for_parent_cache[$badge_item['parent_id']] = $ref_id;
281 $has_access = $ref_id && $this->
access->checkAccess(
'read',
'', $ref_id);
282 $this->has_access_by_parent_cache[$badge_item['parent_id']] = $has_access;
283 }
284
285 if ($has_access) {
286 $container_title_parts[
'title'] = $this->
renderer->render(
287 new Standard(
288 $container_title_parts['title'],
289 (string) new URI(
290 ilLink::_getLink(
291 $ref_id,
292 $badge_item['parent_type'] ?? ''
293 )
294 )
295 )
296 );
297 } else {
298 $container_title_parts['suffix'] = $container_deleted_title_part;
299 $sortable_container_title_parts['suffix'] = $container_deleted_title_part;
300 }
301 }
302
304 $images['large'],
305 $badge_item['title'],
306 [
307 'active' => $badge_item[
'active'] ? $this->
lng->txt(
'yes') : $this->lng->txt(
'no'),
308 'type' => $record['type'],
309 'container' => implode(' ', array_slice($container_title_parts, 1, null, true)),
310 ],
311 true
312 );
313
314 return [
315 'id' => $badge_item['id'],
316 'active' => (bool) $badge_item['active'],
317 'type' => $record['type'],
319 $images['rendered'],
320 $modal
321 ) . ' ') : '',
322 'title' => implode('', [
325 ]),
326 'title_sortable' => $badge_item['title'],
327 'container' => implode(' ', $container_title_parts),
328 'container_sortable' => implode(' ', $sortable_container_title_parts),
329 ];
330 }
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