51 : array
52 {
53
55
56 $_options = array(
57 'filters' => array(),
58 'sort' => array(),
59 'limit' => array(),
60 );
62
63 $cert_api = new UserCertificateAPI();
64
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);
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") {
92 } elseif (
$options[
'sort'][
'field'] ===
"objectTitle" &&
$options[
'sort'][
'direction'] ===
"desc") {
94 } elseif (
$options[
'sort'][
'field'] ===
"issuedOnTimestamp" &&
$options[
'sort'][
'direction'] ===
"asc") {
96 } elseif (
$options[
'sort'][
'field'] ===
"issuedOnTimestamp" &&
$options[
'sort'][
'direction'] ===
"desc") {
98 } elseif (
$options[
'sort'][
'field'] ===
"userLogin" &&
$options[
'sort'][
'direction'] ===
"asc") {
100 } elseif (
$options[
'sort'][
'field'] ===
"userLogin" &&
$options[
'sort'][
'direction'] ===
"desc") {
102 } elseif (
$options[
'sort'][
'field'] ===
"userFirstName" &&
$options[
'sort'][
'direction'] ===
"asc") {
104 } elseif (
$options[
'sort'][
'field'] ===
"userFirstName" &&
$options[
'sort'][
'direction'] ===
"desc") {
106 } elseif (
$options[
'sort'][
'field'] ===
"userLastName" &&
$options[
'sort'][
'direction'] ===
"asc") {
108 } elseif (
$options[
'sort'][
'field'] ===
"userLastName" &&
$options[
'sort'][
'direction'] ===
"desc") {
110 } elseif (
$options[
'sort'][
'field'] ===
"userEmail" &&
$options[
'sort'][
'direction'] ===
"asc") {
112 } elseif (
$options[
'sort'][
'field'] ===
"userEmail" &&
$options[
'sort'][
'direction'] ===
"desc") {
114 }
115 }
116
117 if ((!empty(
$options[
'limit'][
'start']) ||
$options[
'limit'][
'start'] === 0)
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 }
final const SORT_DIRECTION_ASC
final const SORT_DIRECTION_DESC
const OP_VIEW_CERTIFICATES