ILIAS  trunk Revision v11.0_alpha-1761-g6dbbfa7b760
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
class.ilMStListCertificates.php
Go to the documentation of this file.
1 <?php
18 declare(strict_types=1);
19 
21 
28 use 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
54  $operation_access = ilOrgUnitOperation::OP_VIEW_CERTIFICATES;
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:35
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
__construct(Container $dic)
ilMStListCertificates constructor.