ILIAS  trunk Revision v12.0_alpha-377-g3641b37b9db
ILIAS\Certificate\Overview\CertificateOverviewTable Class Reference
+ Inheritance diagram for ILIAS\Certificate\Overview\CertificateOverviewTable:
+ Collaboration diagram for ILIAS\Certificate\Overview\CertificateOverviewTable:

Public Member Functions

 __construct (?Factory $ui_factory=null, ?ilUserCertificateRepository $repo=null, ?ilUIService $ui_service=null, ?ilLanguage $lng=null, ServerRequestInterface|RequestInterface|null $request=null, ?\ILIAS\Data\Factory $data_factory=null, ?ilCtrl $ctrl=null, ?Renderer $ui_renderer=null, ?ilAccessHandler $access=null, ?ilObjUser $user=null)
 
 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 records available. More...
 
 render ()
 
- Public Member Functions inherited from ILIAS\UI\Component\Table\DataRetrieval
 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.g. More...
 
 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 records available. More...
 

Private Member Functions

 mapUiFilterData (array $filter_data)
 
 buildFilter ()
 
 buildTable ()
 
 buildTableRows (array $certificates)
 

Private Attributes

readonly ilUserCertificateRepository $repo
 
readonly ilUIService $ui_service
 
readonly Factory $ui_factory
 
readonly ilLanguage $lng
 
readonly ServerRequestInterface $request
 
readonly ILIAS Data Factory $data_factory
 
readonly ilCtrl ilCtrlInterface $ctrl
 
readonly ILIAS UI Component Input Container Filter Standard $filter
 
readonly Data $table
 
readonly Renderer $ui_renderer
 
readonly ilAccessHandler $access
 
readonly ilObjUser $user
 
readonly DateTimeZone $user_timezone
 

Detailed Description

Definition at line 52 of file CertificateOverviewTable.php.

Constructor & Destructor Documentation

◆ __construct()

ILIAS\Certificate\Overview\CertificateOverviewTable::__construct ( ?Factory  $ui_factory = null,
?ilUserCertificateRepository  $repo = null,
?ilUIService  $ui_service = null,
?ilLanguage  $lng = null,
ServerRequestInterface|RequestInterface|null  $request = null,
?\ILIAS\Data\Factory  $data_factory = null,
?ilCtrl  $ctrl = null,
?Renderer  $ui_renderer = null,
?ilAccessHandler  $access = null,
?ilObjUser  $user = null 
)

Definition at line 68 of file CertificateOverviewTable.php.

79 {
80 global $DIC;
81 $this->ui_factory = $ui_factory ?: $DIC->ui()->factory();
82 $this->repo = $repo ?: new ilUserCertificateRepository();
83 $this->ui_service = $ui_service ?: $DIC->uiService();
84 $this->lng = $lng ?: $DIC->language();
85 $this->request = $request ?: $DIC->http()->request();
86 $this->data_factory = $data_factory ?: new \ILIAS\Data\Factory();
87 $this->ctrl = $ctrl ?: $DIC->ctrl();
88 $this->ui_renderer = $ui_renderer ?: $DIC->ui()->renderer();
89 $this->access = $access ?: $DIC->access();
90 $this->user = $user ?: $DIC->user();
91 $this->user_timezone = new \DateTimeZone($this->user->getTimeZone());
92
93 $this->filter = $this->buildFilter();
94 $this->table = $this->buildTable();
95 }
filter(string $filter_id, array $class_path, string $cmd, bool $activated=true, bool $expanded=true)
global $DIC
Definition: shib_login.php:26

References ILIAS\Certificate\Overview\CertificateOverviewTable\$data_factory, $DIC, ILIAS\Certificate\Overview\CertificateOverviewTable\$repo, ILIAS\Certificate\Overview\CertificateOverviewTable\$request, ILIAS\Certificate\Overview\CertificateOverviewTable\$ui_factory, ILIAS\Certificate\Overview\CertificateOverviewTable\$ui_renderer, ILIAS\Certificate\Overview\CertificateOverviewTable\$ui_service, ILIAS\Repository\access(), ILIAS\Certificate\Overview\CertificateOverviewTable\buildFilter(), ILIAS\Certificate\Overview\CertificateOverviewTable\buildTable(), ILIAS\Repository\ctrl(), ILIAS\Repository\filter(), ILIAS\Repository\lng(), and ILIAS\Repository\user().

+ Here is the call graph for this function:

Member Function Documentation

◆ buildFilter()

ILIAS\Certificate\Overview\CertificateOverviewTable::buildFilter ( )
private

Definition at line 175 of file CertificateOverviewTable.php.

176 {
177 return $this->ui_service->filter()->standard(
178 'certificates_overview_filter',
179 $this->ctrl->getLinkTargetByClass(
180 ilObjCertificateSettingsGUI::class,
182 ),
183 [
184 'certificate_id' => $this->ui_factory->input()->field()->text($this->lng->txt('certificate_id')),
185 'issue_date' => $this->ui_factory->input()->field()
186 ->duration($this->lng->txt('certificate_issue_date'))
187 ->withFormat($this->user->getDateTimeFormat())
188 ->withUseTime(true),
189 'object' => $this->ui_factory->input()->field()->text($this->lng->txt('obj')),
190 'obj_id' => $this->ui_factory->input()->field()->text($this->lng->txt('object_id')),
191 'owner' => $this->ui_factory->input()->field()->text($this->lng->txt('owner')),
192 ],
193 [true, true, true, true, true],
194 true,
195 true
196 );
197 }
This describes a standard filter.
Definition: Standard.php:27

References ilObjCertificateSettingsGUI\CMD_CERTIFICATES_OVERVIEW, and ILIAS\Repository\ctrl().

Referenced by ILIAS\Certificate\Overview\CertificateOverviewTable\__construct().

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

◆ buildTable()

ILIAS\Certificate\Overview\CertificateOverviewTable::buildTable ( )
private

Definition at line 199 of file CertificateOverviewTable.php.

199 : Data
200 {
201 $ui_table = $this->ui_factory->table();
202
203 return $ui_table->data(
204 $this,
205 $this->lng->txt('certificates'),
206 [
207 'certificate_id' => $ui_table->column()->text($this->lng->txt('certificate_id')),
208 'issue_date' => $ui_table->column()->date($this->lng->txt('certificate_issue_date'), $this->user->getDateTimeFormat()),
209 'object' => $ui_table->column()->text($this->lng->txt('obj')),
210 'obj_id' => $ui_table->column()->text($this->lng->txt('object_id')),
211 'owner' => $ui_table->column()->text($this->lng->txt('owner'))
212 ],
213 )
214 ->withOrder(new Order('issue_date', Order::DESC))
215 ->withId('certificateOverviewTable')
216 ->withRequest($this->request)
217 ->withActions($this->buildTableActions());
218 }
const DESC
Definition: Order.php:31
This describes a Data Table.
Definition: Data.php:33

References ILIAS\Repository\lng(), and ILIAS\UI\Component\Table\Data\withOrder().

Referenced by ILIAS\Certificate\Overview\CertificateOverviewTable\__construct().

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

◆ buildTableRows()

ILIAS\Certificate\Overview\CertificateOverviewTable::buildTableRows ( array  $certificates)
private
Parameters
ilUserCertificate[]$certificates
Returns
list<array{"id": int, "certificate": string, "issue_date": int, "object": string, "obj_id": string, "owner": string}>

Definition at line 261 of file CertificateOverviewTable.php.

261 : array
262 {
263 $table_rows = [];
264
265 $ref_id_cache = [];
266 $owner_cache = [];
267 $object_title_cache = [];
268
269 foreach ($certificates as $certificate) {
270 if (!isset($ref_id_cache[$certificate->getObjId()])) {
271 $ref_id_cache[$certificate->getObjId()] = ilObject::_getAllReferences($certificate->getObjId());
272 }
273 $ref_ids = $ref_id_cache[$certificate->getObjId()];
274
275 if (!isset($object_title_cache[$certificate->getObjId()])) {
276 $object_title = ilObject::_lookupTitle($certificate->getObjId());
277 foreach ($ref_ids as $refId) {
278 if ($this->access->checkAccess('read', '', $refId)) {
279 $object_title = $this->ui_renderer->render(
280 $this->ui_factory->link()->standard($object_title, ilLink::_getLink($refId))
281 );
282 break;
283 }
284 }
285
286 $object_title_cache[$certificate->getObjId()] = $object_title;
287 }
288
289
290
291 if (!isset($owner_cache[$certificate->getUserId()])) {
292 $owner_cache[$certificate->getUserId()] = ilObjUser::_lookupLogin($certificate->getUserId());
293 }
294
295 $table_rows[] = [
296 'id' => $certificate->getId(),
297 'certificate_id' => $certificate->getCertificateId()->asString(),
298 'issue_date' => $certificate->getAcquiredTimestamp(),
299 'object' => $object_title_cache[$certificate->getObjId()],
300 'obj_id' => (string) $certificate->getObjId(),
301 'owner' => $owner_cache[$certificate->getUserId()],
302 ];
303 }
304
305 return $table_rows;
306 }
static _lookupLogin(int $a_user_id)
static _getAllReferences(int $id)
get all reference ids for object ID
static _lookupTitle(int $obj_id)
$refId
Definition: xapitoken.php:56

References $refId, ilObject\_getAllReferences(), ilObjUser\_lookupLogin(), ilObject\_lookupTitle(), and ILIAS\Repository\access().

+ Here is the call graph for this function:

◆ getTotalRowCount()

ILIAS\Certificate\Overview\CertificateOverviewTable::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 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 164 of file CertificateOverviewTable.php.

168 : ?int {
169 $ui_filter_data = $this->mapUiFilterData($this->ui_service->filter()->getData($this->filter));
170
171 return $this->repo->fetchCertificatesForOverviewCount($ui_filter_data);
172 }

◆ mapUiFilterData()

ILIAS\Certificate\Overview\CertificateOverviewTable::mapUiFilterData ( array  $filter_data)
private
Parameters
array{certificate_idnull|string, issue_date: string[], object: null|string, owner: null|string} $filter_data
Returns
array{certificate_id: null|string, issue_date: array{from: null|DateTimeImmutable, to: null|DateTimeImmutable}, object: null|string, owner: null|string} $filter_data

Definition at line 133 of file CertificateOverviewTable.php.

133 : array
134 {
135 if (isset($filter_data['issue_date']) && $filter_data['issue_date'] !== '') {
136 try {
137 $from = new DateTimeImmutable($filter_data['issue_date'][0], $this->user_timezone);
138 } catch (Throwable) {
139 $from = null;
140 }
141
142 try {
143 $to = new DateTimeImmutable($filter_data['issue_date'][1], $this->user_timezone);
144 $seconds_to_add = 59 - (int) $to->format('s');
145 $to = $to->modify("+$seconds_to_add seconds");
146 } catch (Throwable) {
147 $to = null;
148 }
149
150 $filter_data['issue_date'] = [
151 'from' => $from,
152 'to' => $to
153 ];
154 } else {
155 $filter_data['issue_date'] = [
156 'from' => null,
157 'to' => null
158 ];
159 }
160
161 return $filter_data;
162 }

References ILIAS\Repository\int().

+ Here is the call graph for this function:

◆ render()

ILIAS\Certificate\Overview\CertificateOverviewTable::render ( )

Definition at line 308 of file CertificateOverviewTable.php.

308 : string
309 {
310 return $this->ui_renderer->render([$this->filter, $this->table]);
311 }

References ILIAS\Repository\filter().

+ Here is the call graph for this function:

Field Documentation

◆ $access

readonly ilAccessHandler ILIAS\Certificate\Overview\CertificateOverviewTable::$access
private

Definition at line 64 of file CertificateOverviewTable.php.

◆ $ctrl

readonly ilCtrl ilCtrlInterface ILIAS\Certificate\Overview\CertificateOverviewTable::$ctrl
private

Definition at line 60 of file CertificateOverviewTable.php.

◆ $data_factory

readonly ILIAS Data Factory ILIAS\Certificate\Overview\CertificateOverviewTable::$data_factory
private

◆ $filter

readonly ILIAS UI Component Input Container Filter Standard ILIAS\Certificate\Overview\CertificateOverviewTable::$filter
private

Definition at line 61 of file CertificateOverviewTable.php.

◆ $lng

readonly ilLanguage ILIAS\Certificate\Overview\CertificateOverviewTable::$lng
private

Definition at line 57 of file CertificateOverviewTable.php.

◆ $repo

readonly ilUserCertificateRepository ILIAS\Certificate\Overview\CertificateOverviewTable::$repo
private

◆ $request

readonly ServerRequestInterface ILIAS\Certificate\Overview\CertificateOverviewTable::$request
private

◆ $table

readonly Data ILIAS\Certificate\Overview\CertificateOverviewTable::$table
private

Definition at line 62 of file CertificateOverviewTable.php.

◆ $ui_factory

readonly Factory ILIAS\Certificate\Overview\CertificateOverviewTable::$ui_factory
private

◆ $ui_renderer

readonly Renderer ILIAS\Certificate\Overview\CertificateOverviewTable::$ui_renderer
private

◆ $ui_service

readonly ilUIService ILIAS\Certificate\Overview\CertificateOverviewTable::$ui_service
private

◆ $user

readonly ilObjUser ILIAS\Certificate\Overview\CertificateOverviewTable::$user
private

Definition at line 65 of file CertificateOverviewTable.php.

◆ $user_timezone

readonly DateTimeZone ILIAS\Certificate\Overview\CertificateOverviewTable::$user_timezone
private

Definition at line 66 of file CertificateOverviewTable.php.


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