ILIAS  release_7 Revision v7.30-3-g800a261c036
All Data Structures Namespaces Files Functions Variables Modules Pages
class.ilMStListCertificates.php
Go to the documentation of this file.
1 <?php
2 
4 
10 use ilLPStatus;
12 use 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
49  $operation_access = ilOrgUnitOperation::OP_VIEW_CERTIFICATES;
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 }
$data
Definition: storeScorm.php:23
Customizing of pimple-DIC for ILIAS.
Definition: Container.php:18
__construct(Container $dic)
ilMStListCertificates constructor.