ILIAS  release_7 Revision v7.30-3-g800a261c036
class.ilMStListCertificates.php
Go to the documentation of this file.
1<?php
2
4
10use ilLPStatus;
12use ilMyStaffGUI;
14
21{
22
26 protected $dic;
27
28
34 public function __construct(Container $dic)
35 {
36 $this->dic = $dic;
37 }
38
39
46 public function getData(array $options = array()) : array
47 {
48 //Permission Filter
50
51
52 $_options = array(
53 'filters' => array(),
54 'sort' => array(),
55 'limit' => array(),
56 );
57 $options = array_merge($_options, $options);
58
59 $cert_api = new UserCertificateAPI();
60
61 $data = [];
62 $users_per_position = ilMyStaffAccess::getInstance()->getUsersForUserPerPosition($this->dic->user()->getId());
63 foreach ($users_per_position as $position_id => $users) {
64 if (empty($users)) {
65 continue;
66 }
67 $usr_data_filter = new UserDataFilter();
68 $usr_data_filter = $usr_data_filter->withUserIds($users);
69 $usr_data_filter = $usr_data_filter->withObjIds(ilMyStaffAccess::getInstance()->getIdsForUserAndOperation($this->dic->user()->getId(), $operation_access));
70
71
72 if (!empty($options['filters']['user'])) {
73 $usr_data_filter = $usr_data_filter->withUserIdentification($options['filters']['user']);
74 }
75 if (!empty($options['filters']['obj_title'])) {
76 $usr_data_filter = $usr_data_filter->withObjectTitle($options['filters']['obj_title']);
77 }
78
79 if (!empty($options['filters']['org_unit'])) {
80 $org_unit_id = (int) $options['filters']['org_unit'];
81 $usr_data_filter = $usr_data_filter->withOrgUnitIds([$org_unit_id]);
82 }
83
84 if (!empty($options['sort']['field']) && !empty($options['sort']['direction'])) {
85 if ($options['sort']['field'] === "objectTitle" && $options['sort']['direction'] === "asc") {
86 $usr_data_filter = $usr_data_filter->withSortedObjectTitles(UserDataFilter::SORT_DIRECTION_ASC);
87 } elseif ($options['sort']['field'] === "objectTitle" && $options['sort']['direction'] === "desc") {
88 $usr_data_filter = $usr_data_filter->withSortedObjectTitles(UserDataFilter::SORT_DIRECTION_DESC);
89 } elseif ($options['sort']['field'] === "issuedOnTimestamp" && $options['sort']['direction'] === "asc") {
90 $usr_data_filter = $usr_data_filter->withSortedIssuedOnTimestamps(UserDataFilter::SORT_DIRECTION_ASC);
91 } elseif ($options['sort']['field'] === "issuedOnTimestamp" && $options['sort']['direction'] === "desc") {
92 $usr_data_filter = $usr_data_filter->withSortedIssuedOnTimestamps(UserDataFilter::SORT_DIRECTION_DESC);
93 } elseif ($options['sort']['field'] === "userLogin" && $options['sort']['direction'] === "asc") {
94 $usr_data_filter = $usr_data_filter->withSortedLogins(UserDataFilter::SORT_DIRECTION_ASC);
95 } elseif ($options['sort']['field'] === "userLogin" && $options['sort']['direction'] === "desc") {
96 $usr_data_filter = $usr_data_filter->withSortedLogins(UserDataFilter::SORT_DIRECTION_DESC);
97 } elseif ($options['sort']['field'] === "userFirstName" && $options['sort']['direction'] === "asc") {
98 $usr_data_filter = $usr_data_filter->withSortedFirstNames(UserDataFilter::SORT_DIRECTION_ASC);
99 } elseif ($options['sort']['field'] === "userFirstName" && $options['sort']['direction'] === "desc") {
100 $usr_data_filter = $usr_data_filter->withSortedFirstNames(UserDataFilter::SORT_DIRECTION_DESC);
101 } elseif ($options['sort']['field'] === "userLastName" && $options['sort']['direction'] === "asc") {
102 $usr_data_filter = $usr_data_filter->withSortedLastNames(UserDataFilter::SORT_DIRECTION_ASC);
103 } elseif ($options['sort']['field'] === "userLastName" && $options['sort']['direction'] === "desc") {
104 $usr_data_filter = $usr_data_filter->withSortedLastNames(UserDataFilter::SORT_DIRECTION_DESC);
105 } elseif ($options['sort']['field'] === "userEmail" && $options['sort']['direction'] === "asc") {
106 $usr_data_filter = $usr_data_filter->withSortedEmails(UserDataFilter::SORT_DIRECTION_ASC);
107 } elseif ($options['sort']['field'] === "userEmail" && $options['sort']['direction'] === "desc") {
108 $usr_data_filter = $usr_data_filter->withSortedEmails(UserDataFilter::SORT_DIRECTION_DESC);
109 }
110 }
111
112 if ((!empty($options['limit']['start']) || $options['limit']['start'] === 0)
113 && !empty($options['limit']['end'])
114 ) {
115 $usr_data_filter = $usr_data_filter->withLimitOffset((int) $options['limit']['start']);
116 $usr_data_filter = $usr_data_filter->withLimitCount((int) $options['limit']['end']);
117 }
118
119
120 $data = array_merge($data, $cert_api->getUserCertificateData($usr_data_filter, [ilMyStaffGUI::class, ilMStListCertificatesGUI::class]));
121 }
122
123 $unique_cert_data = [];
124 foreach ($data as $cert_data) {
128 $unique_cert_data[$cert_data->getCertificateId()] = $cert_data;
129 }
130
131 return $unique_cert_data;
132 }
133}
An exception for terminatinating execution or to throw for unit testing.
Customizing of pimple-DIC for ILIAS.
Definition: Container.php:19
__construct(Container $dic)
ilMStListCertificates constructor.
Abstract class ilLPStatus for all learning progress modes E.g ilLPStatusManual, ilLPStatusObjectives ...
Class ilMStListCertificatesGUI.
Class ilMyStaffGUI.
Class ilOrgUnitOperation.
$data
Definition: storeScorm.php:23