ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
ILIAS\Mail\Attachments\MailAttachmentTableGUI Class Reference
+ Inheritance diagram for ILIAS\Mail\Attachments\MailAttachmentTableGUI:
+ Collaboration diagram for ILIAS\Mail\Attachments\MailAttachmentTableGUI:

Public Member Functions

 __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)
 
 get ()
 
 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 records available. More...
 
- Public Member Functions inherited from ILIAS\UI\Component\Table\DataRetrieval
 getRows (DataRowBuilder $row_builder, array $visible_column_ids, Range $range, Order $order, ?array $filter_data, ?array $additional_parameters)
 This is called by the table to retrieve rows; map data-records to rows using the $row_builder e.g. More...
 
 getTotalRowCount (?array $filter_data, ?array $additional_parameters)
 Mainly for the purpose of pagination-support, it is important to know about the total number of records available. More...
 

Private Member Functions

 getColumnDefinition ()
 
 getActions ()
 
 getRecords (\ILIAS\Data\Range $range, \ILIAS\Data\Order $order)
 

Private Attributes

readonly ILIAS UI URLBuilder $url_builder
 
readonly ILIAS UI URLBuilderToken $action_parameter_token
 
readonly ILIAS UI URLBuilderToken $row_id_token
 
readonly ILIAS Data Factory $data_factory
 

Additional Inherited Members

- Data Fields inherited from ILIAS\Mail\Attachments\MailAttachmentCommands
const string CMD_SHOW_ATTACHMENTS = 'showAttachments'
 
const string CMD_CANCEL_SAVE_ATTACHMENTS = 'cancelSaveAttachments'
 
const string CMD_DELETE_ATTACHMENTS = 'deleteAttachments'
 
const string CMD_HANDLE_TABLE_ACTIONS = 'handleTableActions'
 
const string DEFAULT_CMD = self::CMD_SHOW_ATTACHMENTS
 
const string TABLE_CONFIRM_DELETE_ATTACHMENTS = 'confirmDeleteAttachments'
 
const string TABLE_ACTION_SAVE_ATTACHMENTS = 'saveAttachments'
 

Detailed Description

Definition at line 26 of file MailAttachmentTableGUI.php.

Constructor & Destructor Documentation

◆ __construct()

ILIAS\Mail\Attachments\MailAttachmentTableGUI::__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 
)
Parameters
list<array{"filename"string, "filesize": int, "filecreatedate": int}> $records

Definition at line 36 of file MailAttachmentTableGUI.php.

48 {
49 $form_action = $this->df->uri(
50 ilUtil::_getHttpPath() . '/' .
51 $this->ctrl->getLinkTarget($this->parent_gui, $this->parent_cmd)
52 );
53
54 [
58 ] = (new \ILIAS\UI\URLBuilder($form_action))->acquireParameters(
59 ['mail', 'attachments'],
60 'table_action',
61 'filename'
62 );
63
64 $this->data_factory = new \ILIAS\Data\Factory();
65 }
readonly ILIAS UI URLBuilderToken $row_id_token
readonly ILIAS UI URLBuilderToken $action_parameter_token
static _getHttpPath()

References ILIAS\Mail\Attachments\MailAttachmentTableGUI\$action_parameter_token, ILIAS\Mail\Attachments\MailAttachmentTableGUI\$row_id_token, ILIAS\Mail\Attachments\MailAttachmentTableGUI\$url_builder, ilUtil\_getHttpPath(), and ILIAS\Repository\ctrl().

+ Here is the call graph for this function:

Member Function Documentation

◆ get()

ILIAS\Mail\Attachments\MailAttachmentTableGUI::get ( )

Definition at line 67 of file MailAttachmentTableGUI.php.

68 {
69 return $this->ui_factory
70 ->table()
71 ->data(
72 $this,
73 $this->lng->txt('attachment'),
74 $this->getColumnDefinition(),
75 )
76 ->withId(self::class . '_' . $this->mode->name)
77 ->withOrder(new \ILIAS\Data\Order('filename', \ILIAS\Data\Order::ASC))
78 ->withActions($this->getActions())
79 ->withRequest($this->http_request);
80 }
This describes a Data Table.
Definition: Data.php:31
withId(string $id)
The DataTable comes with a storage to keep e.g.
Interface Observer \BackgroundTasks Contains several chained tasks and infos about them.

References ILIAS\Data\Order\ASC, ILIAS\Mail\Attachments\MailAttachmentTableGUI\getActions(), ILIAS\Mail\Attachments\MailAttachmentTableGUI\getColumnDefinition(), and ILIAS\Repository\lng().

+ Here is the call graph for this function:

◆ getActions()

ILIAS\Mail\Attachments\MailAttachmentTableGUI::getActions ( )
private
Returns
array<string, \ILIAS\UI\Component\Table\Action\Action>

Definition at line 115 of file MailAttachmentTableGUI.php.

115 : array
116 {
117 $actions = [];
118
119 if ($this->mode === AttachmentManagement::CONSUME) {
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
125 ),
126 $this->row_id_token
127 );
128 } else {
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
134 ),
135 $this->row_id_token
136 );
137 }
138
139 return $actions;
140 }

References ILIAS\Mail\Attachments\CONSUME, and ILIAS\Repository\lng().

Referenced by ILIAS\Mail\Attachments\MailAttachmentTableGUI\get().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getColumnDefinition()

ILIAS\Mail\Attachments\MailAttachmentTableGUI::getColumnDefinition ( )
private
Returns
array<string, \ILIAS\UI\Component\Table\Column\Column>

Definition at line 85 of file MailAttachmentTableGUI.php.

85 : array
86 {
87 if ((int) $this->actor->getTimeFormat() === \ilCalendarSettings::TIME_FORMAT_12) {
88 $date_format = $this->data_factory->dateFormat()->withTime12($this->actor->getDateFormat());
89 } else {
90 $date_format = $this->data_factory->dateFormat()->withTime24($this->actor->getDateFormat());
91 }
92
93 return [
94 'filename' => $this->ui_factory
95 ->table()
96 ->column()
97 ->text($this->lng->txt('mail_file_name'))
98 ->withIsSortable(true),
99 'filesize' => $this->ui_factory
100 ->table()
101 ->column()
102 ->text($this->lng->txt('mail_file_size'))
103 ->withIsSortable(true),
104 'filecreatedate' => $this->ui_factory
105 ->table()
106 ->column()
107 ->date($this->lng->txt('create_date'), $date_format)
108 ->withIsSortable(true),
109 ];
110 }

References ILIAS\Repository\lng(), and ilCalendarSettings\TIME_FORMAT_12.

Referenced by ILIAS\Mail\Attachments\MailAttachmentTableGUI\get().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getRecords()

ILIAS\Mail\Attachments\MailAttachmentTableGUI::getRecords ( \ILIAS\Data\Range  $range,
\ILIAS\Data\Order  $order 
)
private
Returns
list<array{"filename": string, "filesize": int, "filecreatedate": int}>

Definition at line 145 of file MailAttachmentTableGUI.php.

145 : array
146 {
147 $records = $this->records;
148
149 [$order_field, $order_direction] = $order->join([], static fn($ret, $key, $value) => [$key, $value]);
150
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]);
154 }
155
156 return $left[$order_field] <=> $right[$order_field];
157 });
158
159 if ($order_direction === 'DESC') {
160 $records = array_reverse($records);
161 }
162
163 $records = \array_slice($records, $range->getStart(), $range->getLength());
164
165 return $records;
166 }
static strCmp(string $a, string $b)
Definition: class.ilStr.php:87

References ILIAS\UI\Implementation\Component\Table\$range, ILIAS\Data\Range\getLength(), ILIAS\Data\Range\getStart(), and ilStr\strCmp().

+ Here is the call graph for this function:

◆ getRows()

ILIAS\Mail\Attachments\MailAttachmentTableGUI::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 
)

Definition at line 168 of file MailAttachmentTableGUI.php.

175 : \Generator {
176 foreach ($this->getRecords($range, $order) as $item) {
177 $record = [
178 'filename' => $item['filename'],
179 'filesize' => ilUtil::formatSize($item['filesize'], 'long'),
180 'filecreatedate' => (new \DateTimeImmutable('@' . $item['filecreatedate']))->setTimezone(
181 new \DateTimeZone($this->actor->getTimeZone())
182 )
183 ];
184
185 yield $row_builder
186 ->buildDataRow(urlencode($record['filename']), $record);
187 }
188 }
getRecords(\ILIAS\Data\Range $range, \ILIAS\Data\Order $order)
static formatSize(int $size, string $a_mode='short', ?ilLanguage $a_lng=null)
Returns the specified file size value in a human friendly form.

References ilUtil\formatSize().

+ Here is the call graph for this function:

◆ getTotalRowCount()

ILIAS\Mail\Attachments\MailAttachmentTableGUI::getTotalRowCount ( ?array  $filter_data,
?array  $additional_parameters 
)

Mainly for the purpose of pagination-support, it is important to know about the total number of records available.

Given the nature of a DataTable, which is, opposite to a PresentationTable, rather administrative than explorative, this information will increase user experience quite a bit. However, you may return null, if the call is to costly, but expect the View Control to look a little different in this case.

Make sure that potential filters or user restrictions are being applied to the count.

Implements ILIAS\UI\Component\Table\DataRetrieval.

Definition at line 190 of file MailAttachmentTableGUI.php.

190 : ?int
191 {
192 return \count($this->records);
193 }

Field Documentation

◆ $action_parameter_token

readonly ILIAS UI URLBuilderToken ILIAS\Mail\Attachments\MailAttachmentTableGUI::$action_parameter_token
private

◆ $data_factory

readonly ILIAS Data Factory ILIAS\Mail\Attachments\MailAttachmentTableGUI::$data_factory
private

Definition at line 31 of file MailAttachmentTableGUI.php.

◆ $row_id_token

readonly ILIAS UI URLBuilderToken ILIAS\Mail\Attachments\MailAttachmentTableGUI::$row_id_token
private

◆ $url_builder

readonly ILIAS UI URLBuilder ILIAS\Mail\Attachments\MailAttachmentTableGUI::$url_builder
private

The documentation for this class was generated from the following file: