ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
class.ilMStListCertificates.php
Go to the documentation of this file.
1<?php
18declare(strict_types=1);
19
21
28use ilMyStaffGUI;
30
36{
37 protected Container $dic;
38
43 public function __construct(Container $dic)
44 {
45 $this->dic = $dic;
46 }
47
51 final public function getData(array $options = array()): array
52 {
53 //Permission Filter
55
56 $_options = array(
57 'filters' => array(),
58 'sort' => array(),
59 'limit' => array(),
60 );
61 $options = array_merge($_options, $options);
62
63 $cert_api = new UserCertificateAPI();
64
65 $data = [];
66 $users_per_position = ilMyStaffAccess::getInstance()->getUsersForUserPerPosition($this->dic->user()->getId());
67 foreach ($users_per_position as $position_id => $users) {
68 if (empty($users)) {
69 continue;
70 }
71 $usr_data_filter = new UserDataFilter();
72 $usr_data_filter = $usr_data_filter->withUserIds($users);
73 $usr_data_filter = $usr_data_filter->withObjIds(ilMyStaffAccess::getInstance()->getIdsForUserAndOperation(
74 $this->dic->user()->getId(),
75 $operation_access
76 ));
77
78 if (!empty($options['filters']['user'])) {
79 $usr_data_filter = $usr_data_filter->withUserIdentification($options['filters']['user']);
80 }
81 if (!empty($options['filters']['obj_title'])) {
82 $usr_data_filter = $usr_data_filter->withObjectTitle($options['filters']['obj_title']);
83 }
84 if (!empty($options['filters']['org_unit'])) {
85 $org_unit_id = (int) $options['filters']['org_unit'];
86 $usr_data_filter = $usr_data_filter->withOrgUnitIds([$org_unit_id]);
87 }
88
89 if (!empty($options['sort']['field']) && !empty($options['sort']['direction'])) {
90 if ($options['sort']['field'] === "objectTitle" && $options['sort']['direction'] === "asc") {
91 $usr_data_filter = $usr_data_filter->withSortedObjectTitles(UserDataFilter::SORT_DIRECTION_ASC);
92 } elseif ($options['sort']['field'] === "objectTitle" && $options['sort']['direction'] === "desc") {
93 $usr_data_filter = $usr_data_filter->withSortedObjectTitles(UserDataFilter::SORT_DIRECTION_DESC);
94 } elseif ($options['sort']['field'] === "issuedOnTimestamp" && $options['sort']['direction'] === "asc") {
95 $usr_data_filter = $usr_data_filter->withSortedIssuedOnTimestamps(UserDataFilter::SORT_DIRECTION_ASC);
96 } elseif ($options['sort']['field'] === "issuedOnTimestamp" && $options['sort']['direction'] === "desc") {
97 $usr_data_filter = $usr_data_filter->withSortedIssuedOnTimestamps(UserDataFilter::SORT_DIRECTION_DESC);
98 } elseif ($options['sort']['field'] === "userLogin" && $options['sort']['direction'] === "asc") {
99 $usr_data_filter = $usr_data_filter->withSortedLogins(UserDataFilter::SORT_DIRECTION_ASC);
100 } elseif ($options['sort']['field'] === "userLogin" && $options['sort']['direction'] === "desc") {
101 $usr_data_filter = $usr_data_filter->withSortedLogins(UserDataFilter::SORT_DIRECTION_DESC);
102 } elseif ($options['sort']['field'] === "userFirstName" && $options['sort']['direction'] === "asc") {
103 $usr_data_filter = $usr_data_filter->withSortedFirstNames(UserDataFilter::SORT_DIRECTION_ASC);
104 } elseif ($options['sort']['field'] === "userFirstName" && $options['sort']['direction'] === "desc") {
105 $usr_data_filter = $usr_data_filter->withSortedFirstNames(UserDataFilter::SORT_DIRECTION_DESC);
106 } elseif ($options['sort']['field'] === "userLastName" && $options['sort']['direction'] === "asc") {
107 $usr_data_filter = $usr_data_filter->withSortedLastNames(UserDataFilter::SORT_DIRECTION_ASC);
108 } elseif ($options['sort']['field'] === "userLastName" && $options['sort']['direction'] === "desc") {
109 $usr_data_filter = $usr_data_filter->withSortedLastNames(UserDataFilter::SORT_DIRECTION_DESC);
110 } elseif ($options['sort']['field'] === "userEmail" && $options['sort']['direction'] === "asc") {
111 $usr_data_filter = $usr_data_filter->withSortedEmails(UserDataFilter::SORT_DIRECTION_ASC);
112 } elseif ($options['sort']['field'] === "userEmail" && $options['sort']['direction'] === "desc") {
113 $usr_data_filter = $usr_data_filter->withSortedEmails(UserDataFilter::SORT_DIRECTION_DESC);
114 }
115 }
116
117 if ((!empty($options['limit']['start']) || $options['limit']['start'] === 0)
118 && !empty($options['limit']['end'])
119 ) {
120 $usr_data_filter = $usr_data_filter->withLimitOffset((int) $options['limit']['start']);
121 $usr_data_filter = $usr_data_filter->withLimitCount((int) $options['limit']['end']);
122 }
123
124 $data = array_merge($data, $cert_api->getUserCertificateData(
125 $usr_data_filter,
126 [ilMyStaffGUI::class, ilMStListCertificatesGUI::class]
127 ));
128 }
129
130 $unique_cert_data = [];
131 foreach ($data as $cert_data) {
132 assert($cert_data instanceof UserCertificateDto);
133 $unique_cert_data[$cert_data->getCertificateId()] = $cert_data;
134 }
135
136 return $unique_cert_data;
137 }
138}
Customizing of pimple-DIC for ILIAS.
Definition: Container.php:36
__construct(Container $dic)
ilMStListCertificates constructor.
Class ilMStListCertificatesGUI.
Class ilMyStaffGUI.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...