19declare(strict_types=1);
39 private readonly array $records,
44 private readonly \Psr\Http\Message\ServerRequestInterface $http_request,
46 private readonly
string $parent_cmd,
49 $form_action = $this->df->uri(
51 $this->
ctrl->getLinkTarget($this->parent_gui, $this->parent_cmd)
58 ] = (new \ILIAS\UI\URLBuilder($form_action))->acquireParameters(
59 [
'mail',
'attachments'],
64 $this->data_factory = new \ILIAS\Data\Factory();
69 return $this->ui_factory
73 $this->
lng->txt(
'attachment'),
76 ->withId(self::class .
'_' . $this->mode->name)
79 ->withRequest($this->http_request);
88 $date_format = $this->data_factory->dateFormat()->withTime12($this->actor->getDateFormat());
90 $date_format = $this->data_factory->dateFormat()->withTime24($this->actor->getDateFormat());
94 'filename' => $this->ui_factory
97 ->text($this->
lng->txt(
'mail_file_name'))
98 ->withIsSortable(
true),
99 'filesize' => $this->ui_factory
102 ->text($this->
lng->txt(
'mail_file_size'))
103 ->withIsSortable(
true),
104 'filecreatedate' => $this->ui_factory
107 ->date($this->
lng->txt(
'create_date'), $date_format)
108 ->withIsSortable(
true),
120 $actions[
'saveAttachments'] = $this->ui_factory->table()->action()->multi(
121 $this->
lng->txt(
'adopt'),
122 $this->url_builder->withParameter(
123 $this->action_parameter_token,
124 self::TABLE_ACTION_SAVE_ATTACHMENTS
129 $actions[
'deleteAttachments'] = $this->ui_factory->table()->action()->multi(
130 $this->
lng->txt(
'delete'),
131 $this->url_builder->withParameter(
132 $this->action_parameter_token,
133 self::TABLE_CONFIRM_DELETE_ATTACHMENTS
147 $records = $this->records;
149 [$order_field, $order_direction] = $order->join([],
static fn($ret, $key, $value) => [$key, $value]);
151 usort($records,
static function (array $left, array $right) use ($order_field):
int {
152 if ($order_field ===
'filename') {
153 return ilStr::strCmp($left[$order_field], $right[$order_field]);
156 return $left[$order_field] <=> $right[$order_field];
159 if ($order_direction ===
'DESC') {
160 $records = array_reverse($records);
170 array $visible_column_ids,
174 ?array $additional_parameters
178 'filename' => $item[
'filename'],
180 'filecreatedate' => (new \DateTimeImmutable(
'@' . $item[
'filecreatedate']))->setTimezone(
181 new \DateTimeZone($this->actor->getTimeZone())
186 ->buildDataRow(urlencode($record[
'filename']), $record);
192 return \count($this->records);
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.
readonly ILIAS UI URLBuilderToken $row_id_token
__construct(private readonly \ilMailAttachmentGUI $parent_gui, private readonly \ilObjUser $actor, private readonly array $records, private readonly \ILIAS\UI\Factory $ui_factory, private readonly \ILIAS\UI\Renderer $ui_renderer, private readonly \ilLanguage $lng, private readonly \ilCtrlInterface $ctrl, private readonly \Psr\Http\Message\ServerRequestInterface $http_request, private readonly \ILIAS\Data\Factory $df, private readonly string $parent_cmd, private readonly AttachmentManagement $mode)
readonly ILIAS Data Factory $data_factory
readonly ILIAS UI URLBuilderToken $action_parameter_token
readonly ILIAS UI URLBuilder $url_builder
getRows(\ILIAS\UI\Component\Table\DataRowBuilder $row_builder, array $visible_column_ids, \ILIAS\Data\Range $range, \ILIAS\Data\Order $order, ?array $filter_data, ?array $additional_parameters)
getTotalRowCount(?array $filter_data, ?array $additional_parameters)
Mainly for the purpose of pagination-support, it is important to know about the total number of recor...
getRecords(\ILIAS\Data\Range $range, \ILIAS\Data\Order $order)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static strCmp(string $a, string $b)
Util class various functions, usage as namespace.
static formatSize(int $size, string $a_mode='short', ?ilLanguage $a_lng=null)
Returns the specified file size value in a human friendly form.
An entity that renders components to a string output.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Interface Observer \BackgroundTasks Contains several chained tasks and infos about them.