ILIAS  release_8 Revision v8.19
All Data Structures Namespaces Files Functions Variables Modules Pages
class.ilOrgUnitUserAssignmentRepository.php
Go to the documentation of this file.
1 <?php
20 
21 use ilException;
25 
27 {
28  protected static self $instance;
29 
30  public static function getInstance(): self
31  {
32  if (!isset(self::$instance)) {
33  self::$instance = new self();
34  }
35 
36  return self::$instance;
37  }
38 
39  public function findOrCreateAssignment(int $user_id, int $position_id, int $orgu_id): ilOrgUnitUserAssignment
40  {
41  $user_assignment = ilOrgUnitUserAssignment::where(array(
42  'user_id' => $user_id,
43  'position_id' => $position_id,
44  'orgu_id' => $orgu_id,
45  ))->first();
46  if (!$user_assignment) {
47  $user_assignment = new ilOrgUnitUserAssignment();
48  $user_assignment->setPositionId($position_id);
49  $user_assignment->setUserId($user_id);
50  $user_assignment->setOrguId($orgu_id);
51  $user_assignment->create();
52  }
53 
54  return $user_assignment;
55  }
56 
61  public function findAllUserAssingmentsByUserIds(array $arr_user_ids): array
62  {
63  $user_assignment_list = ilOrgUnitUserAssignment::where(['user_id' => $arr_user_ids], 'IN')->get();
64 
65  $user_assignment_list_by_user = [];
66  foreach ($user_assignment_list as $user_assignment) {
67  $user_assignment_list_by_user[$user_assignment->getUserId()][] = $user_assignment;
68  }
69 
70  return $user_assignment_list_by_user;
71  }
72 
77  public function getEmplSuperiorList(array $arr_empl_user_ids): array
78  {
79  global $DIC;
80 
81  $sql = "SELECT
82  orgu_ua.orgu_id AS orgu_id,
83  orgu_ua.user_id AS empl,
84  orgu_ua2.user_id as sup
85  FROM
86  il_orgu_ua as orgu_ua,
87  il_orgu_ua as orgu_ua2
88  WHERE
89  orgu_ua.orgu_id = orgu_ua2.orgu_id
90  and orgu_ua.user_id <> orgu_ua2.user_id
91  and orgu_ua.position_id = " . ilOrgUnitPosition::CORE_POSITION_EMPLOYEE . "
92  and orgu_ua2.position_id = " . ilOrgUnitPosition::CORE_POSITION_SUPERIOR . "
93  AND " . $DIC->database()->in('orgu_ua.user_id', $arr_empl_user_ids, false, 'integer');
94 
95  $st = $DIC->database()->query($sql);
96 
97  $empl_id__sup_ids = [];
98  while ($data = $DIC->database()->fetchAssoc($st)) {
99  $empl_id__sup_ids[$data['empl']][] = $data['sup'];
100  }
101  $this->arr_empl_user_ids = $empl_id__sup_ids;
102 
103  return $empl_id__sup_ids;
104  }
105 
110  public function getPositionsOfUserId(int $user_id): array
111  {
112  $positions = [];
113  foreach ($this->getAssignmentsOfUserId($user_id) as $assignment) {
114  $positions[] = ilOrgUnitPosition::find($assignment->getPositionId());
115  }
116 
117  return $positions;
118  }
119 
123  public function getAssignmentOrFail(int $user_id, int $position_id, int $orgu_id): ilOrgUnitUserAssignment
124  {
126  'user_id' => $user_id,
127  'position_id' => $position_id,
128  'orgu_id' => $orgu_id,
129  ])->first();
130  if (!$ua) {
131  throw new ilException('UserAssignement not found');
132  }
133 
134  assert($ua instanceof ilOrgUnitUserAssignment);
135  return $ua;
136  }
137 
141  public function getAssignmentsOfUserId(int $user_id): array
142  {
143  return ilOrgUnitUserAssignment::where(['user_id' => $user_id])->get();
144  }
145 
149  public function getUserIdsOfOrgUnit(int $orgunit_ref_id): array
150  {
151  return ilOrgUnitUserAssignment::where(['orgu_id' => $orgunit_ref_id])->getArray(null, 'user_id');
152  }
153 
158  public function getUserIdsOfOrgUnits(array $orgunit_ref_id): array
159  {
160  return ilOrgUnitUserAssignment::where(['orgu_id' => $orgunit_ref_id])->getArray(null, 'user_id');
161  }
162 
166  public function getUserIdsOfOrgUnitsOfUsersPosition(int $position_id, int $user_id, bool $recursive = false): array
167  {
169  $position_id,
170  $user_id,
171  $recursive
172  )
173  ])
174  ->getArray(null, 'user_id');
175  }
176 
181  public function getUserIdsOfOrgUnitsInPosition(array $orgu_ids, int $position_id): array
182  {
184  'orgu_id' => $orgu_ids,
185  'position_id' => $position_id,
186  ])->getArray(null, 'user_id');
187  }
188 
193  int $user_id,
194  array $users_position_id,
195  int $position_id,
196  bool $recursive = false
197  ): array {
199  'orgu_id' => $this->getOrgUnitIdsOfUsersPosition($users_position_id, $user_id, $recursive),
200  'position_id' => $position_id,
201  ])->getArray(null, 'user_id');
202  }
203 
208  int $position_id,
209  int $user_id,
210  bool $recursive = false
211  ): array {
212  $orgu_ids = ilOrgUnitUserAssignment::where([
213  'position_id' => $position_id,
214  'user_id' => $user_id,
215  ])->getArray(null, 'orgu_id');
216 
217  if (!$recursive) {
218  return $orgu_ids;
219  }
220 
221  $recursive_orgu_ids = [];
223  foreach ($orgu_ids as $orgu_id) {
224  $recursive_orgu_ids += $tree->getAllChildren($orgu_id);
225  }
226 
227  return $recursive_orgu_ids;
228  }
229 
233  public function getUserIdsOfPosition(int $position_id): array
234  {
236  'position_id' => $position_id,
237  ])->getArray(null, 'user_id');
238  }
239 
243  public function getUserAssignmentsOfPosition(int $position_id): array
244  {
246  'position_id' => $position_id,
247  ])->get();
248  }
249 
250  public function deleteAllAssignmentsOfUser(int $user_id): void
251  {
252  global $DIC;
253  $q = "DELETE FROM il_orgu_ua WHERE user_id = " . $DIC->database()->quote($user_id, "integer");
254  $DIC->database()->manipulate($q);
255  }
256 }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static where($where, $operator=null)
global $DIC
Definition: feed.php:28
getUserIdsOfUsersOrgUnitsInPosition(int $user_id, array $users_position_id, int $position_id, bool $recursive=false)
getOrgUnitIdsOfUsersPosition(int $position_id, int $user_id, bool $recursive=false)
getUserIdsOfOrgUnitsOfUsersPosition(int $position_id, int $user_id, bool $recursive=false)