19declare(strict_types=1);
42 protected int $content_obj_id,
44 protected UIFactory $ui_factory,
45 protected DataFactory $data_factory,
52 array $visible_column_ids,
55 mixed $additional_viewcontrol_data,
57 mixed $additional_parameters
62 foreach ($grouping_ids as $grouping_id) {
76 $condition_ref_ids = [];
77 foreach ($grouping->getAssignedItems() as $condition) {
78 $condition_ref_ids[] = $condition[
'target_ref_id'];
82 $records[$grouping->getId()] = $record;
88 foreach ($records as
$id => $record) {
102 mixed $additional_viewcontrol_data,
104 mixed $additional_parameters
106 return count($this->getAllGroupingIDs());
115 $link = $this->static_url->builder()->build($type,
$ref_id);
116 return $this->ui_factory->link()->standard($title, (
string) $link);
124 foreach ($ref_ids as
$ref_id) {
125 $link = $this->buildLinkToObject(
$ref_id);
126 if ($link !==
null) {
130 return $this->ui_factory->listing()->unordered($links);
135 $order_field = array_keys($order->
get())[0] ?? GroupingHandler::COL_TITLE;
136 $order_direction = $order->
get()[$order_field] ?? Order::ASC;
138 $ordering_callable_without_direction = match ($order_field) {
139 GroupingHandler::COL_TITLE, GroupingHandler::COL_DESCRIPTION, GroupingHandler::COL_UNIQUE_FIELD =>
140 fn(
$a,
$b) => (
$a[$order_field] ??
'') <=> (
$b[$order_field] ??
''),
141 GroupingHandler::COL_SOURCE =>
142 fn(
$a,
$b) => (
$a[GroupingHandler::COL_SOURCE]?->getLabel() ??
'') <=> (
$b[GroupingHandler::COL_SOURCE]?->
getLabel() ??
''),
143 GroupingHandler::COL_ASSIGNED_OBJS =>
145 $a_items = (
$a[GroupingHandler::COL_ASSIGNED_OBJS] ??
null)?->getItems() ?? [];
146 $b_items = (
$b[GroupingHandler::COL_ASSIGNED_OBJS] ??
null)?->getItems() ?? [];
147 $a_first_item_label = ($a_items[0] ??
null)?->
getLabel() ??
'';
148 $b_first_item_label = ($b_items[0] ??
null)?->
getLabel() ??
'';
149 return $a_first_item_label <=> $b_first_item_label;
152 $ordering_callable = fn(
$a,
$b) => $order_direction === Order::ASC ?
153 $ordering_callable_without_direction(
$a,
$b) :
154 $ordering_callable_without_direction(
$b,
$a);
156 uasort($records, $ordering_callable);
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
const string COL_ASSIGNED_OBJS
const string COL_DESCRIPTION
const string COL_UNIQUE_FIELD
buildLinkListing(int ... $ref_ids)
__construct(protected int $content_obj_id, protected ilLanguage $lng, protected UIFactory $ui_factory, protected DataFactory $data_factory, protected StaticURL $static_url)
buildLinkToObject(int $ref_id)
getTotalRowCount(mixed $additional_viewcontrol_data, mixed $filter_data, mixed $additional_parameters)
Mainly for the purpose of pagination-support, it is important to know about the total number of recor...
sortRecords(array $records, Order $order)
getRows(DataRowBuilder $row_builder, array $visible_column_ids, Range $range, Order $order, mixed $additional_viewcontrol_data, mixed $filter_data, mixed $additional_parameters)
This is called by the table to retrieve rows; map data-records to rows using the $row_builder e....
Builds a Color from either hex- or rgb values.
Both the subject and the direction need to be specified when expressing an order.
A simple class to express a naive range of whole positive numbers.
static _getVisibleGroupings(int $a_obj_id)
Returns a list of all groupings for which the current user hast write permission on all assigned obje...
Class ilObject Basic functions for all objects.
static _lookupType(int $id, bool $reference=false)
static _exists(int $id, bool $reference=false, ?string $type=null)
checks if an object exists in object_data
static _lookupTitle(int $obj_id)
return['delivery_method'=> 'php',]
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
buildDataRow(string $id, array $record)
$a
thx to https://mlocati.github.io/php-cs-fixer-configurator for the examples