ILIAS  release_7 Revision v7.30-3-g800a261c036
class.ilOrgUnitUserAssignmentGUI.php
Go to the documentation of this file.
1<?php
2
4
14{
15 const CMD_ASSIGNMENTS_RECURSIVE = 'assignmentsRecursive';
16
17 const SUBTAB_ASSIGNMENTS = 'user_assignments';
18 const SUBTAB_ASSIGNMENTS_RECURSIVE = 'user_assignments_recursive';
19
20 public function executeCommand()
21 {
22 if (!ilObjOrgUnitAccess::_checkAccessPositions((int) filter_input(INPUT_GET, "ref_id", FILTER_SANITIZE_NUMBER_INT))) {
23 ilUtil::sendFailure($this->lng()->txt("permission_denied"), true);
24 $this->ctrl()->redirectByClass(ilObjOrgUnitGUI::class);
25 }
26
27 $r = $this->http()->request();
28 switch ($this->ctrl()->getNextClass()) {
29 case strtolower(ilRepositorySearchGUI::class):
30 switch ($this->ctrl()->getCmd()) {
31 case 'addUserFromAutoComplete':
32 if ($r->getQueryParams()['addusertype'] == "staff") {
33 $this->addStaff();
34 }
35 break;
36 default:
37 $repo = new ilRepositorySearchGUI();
38 $repo->setCallback($this, 'addStaffFromSearch');
39 $this->ctrl()->forwardCommand($repo);
40 break;
41 }
42 break;
43
44 default:
45 parent::executeCommand();
46 break;
47 }
48 }
49
50
51 protected function index()
52 {
53 $this->addSubTabs();
54 $this->activeSubTab(self::SUBTAB_ASSIGNMENTS);
55
56 // Header
57 $types = ilOrgUnitPosition::getArray('id', 'title');
58 //$types = array();
59 $this->ctrl()->setParameterByClass(ilRepositorySearchGUI::class, 'addusertype', 'staff');
60 ilRepositorySearchGUI::fillAutoCompleteToolbar($this, $this->dic()->toolbar(), array(
61 'auto_complete_name' => $this->txt('user'),
62 'user_type' => $types,
63 'submit_name' => $this->txt('add'),
64 ));
65
66 // Tables
67 $html = '';
68 foreach (ilOrgUnitPosition::getActiveForPosition($this->getParentRefId()) as $ilOrgUnitPosition) {
69 $ilOrgUnitUserAssignmentTableGUI = new ilOrgUnitUserAssignmentTableGUI($this, self::CMD_INDEX, $ilOrgUnitPosition);
70 $html .= $ilOrgUnitUserAssignmentTableGUI->getHTML();
71 }
72 $this->setContent($html);
73 }
74
75 protected function assignmentsRecursive()
76 {
77 $this->addSubTabs();
78 $this->activeSubTab(self::SUBTAB_ASSIGNMENTS_RECURSIVE);
79 // Tables
80 $html = '';
81 foreach (ilOrgUnitPosition::getActiveForPosition($this->getParentRefId()) as $ilOrgUnitPosition) {
82 $ilOrgUnitRecursiveUserAssignmentTableGUI =
84 self::CMD_ASSIGNMENTS_RECURSIVE,
85 $ilOrgUnitPosition);
86 $html .= $ilOrgUnitRecursiveUserAssignmentTableGUI->getHTML();
87 }
88 $this->setContent($html);
89 }
90
91
92 protected function confirm()
93 {
94 $this->ctrl()->saveParameter($this, 'position_id');
95 $r = $this->http()->request();
96 $ilOrgUnitPosition = ilOrgUnitPosition::findOrFail($r->getQueryParams()['position_id']);
100 $confirmation = new ilConfirmationGUI();
101 $confirmation->setFormAction($this->ctrl()->getFormAction($this));
102 $confirmation->setCancel($this->txt(self::CMD_CANCEL), self::CMD_CANCEL);
103 $confirmation->setConfirm($this->txt('remove_user'), self::CMD_DELETE);
104 $confirmation->setHeaderText(sprintf($this->txt('msg_confirm_remove_user'), $ilOrgUnitPosition->getTitle()));
105 $confirmation->addItem('usr_id', $r->getQueryParams()['usr_id'], ilObjUser::_lookupLogin($r->getQueryParams()['usr_id']));
106
107 $this->setContent($confirmation->getHTML());
108 }
109
110
111 protected function delete()
112 {
113 $r = $this->http()->request();
115 ->getAssignmentOrFail($_POST['usr_id'], $r->getQueryParams()['position_id'], $this->getParentRefId());
116 $ua->delete();
117 ilUtil::sendSuccess($this->txt('remove_successful'), true);
118 $this->cancel();
119 }
120
121
122 protected function cancel()
123 {
124 $this->ctrl()->redirect($this, self::CMD_INDEX);
125 }
126
127
128 public function addStaff()
129 {
130 if (!$this->dic()->access()->checkAccess("write", "", $this->getParentRefId())) {
131 ilUtil::sendFailure($this->txt("permission_denied"), true);
132 $this->ctrl()->redirect($this, self::CMD_INDEX);
133 }
134
135 $users = explode(',', $_POST['user_login']);
136 $user_ids = array();
137 foreach ($users as $user) {
138 $user_id = ilObjUser::_lookupId($user);
139 if ($user_id) {
140 $user_ids[] = $user_id;
141 }
142 }
143
144 if (!count($user_ids)) {
145 ilUtil::sendFailure($this->txt("user_not_found"), true);
146 $this->ctrl()->redirect($this, self::CMD_INDEX);
147 }
148
149 $position_id = (int) ($_POST['user_type'] ?? ilOrgUnitPosition::CORE_POSITION_EMPLOYEE);
150
151 if (!$position_id && !$position = ilOrgUnitPosition::find($position_id)) {
152 ilUtil::sendFailure($this->txt("user_not_found"), true);
153 $this->ctrl()->redirect($this, self::CMD_INDEX);
154 }
155 foreach ($user_ids as $user_id) {
156 ilOrgUnitUserAssignment::findOrCreateAssignment($user_id, $position_id, $this->getParentRefId());
157 }
158
159 ilUtil::sendSuccess($this->txt("users_successfuly_added"), true);
160 $this->ctrl()->redirect($this, self::CMD_INDEX);
161 }
162
166 public function addStaffFromSearch(array $user_ids, ?string $user_type = null)
167 {
168 if (!$this->dic()->access()->checkAccess("write", "", $this->getParentRefId())) {
169 ilUtil::sendFailure($this->txt("permission_denied"), true);
170 $this->ctrl()->redirect($this, self::CMD_INDEX);
171 }
172
173 if (!count($user_ids)) {
174 ilUtil::sendFailure($this->txt("user_not_found"), true);
175 $this->ctrl()->redirect($this, self::CMD_INDEX);
176 }
177
178 $position_id = (int) ($user_type ?? ilOrgUnitPosition::CORE_POSITION_EMPLOYEE);
179
180 if (!$position_id && !$position = ilOrgUnitPosition::find($position_id)) {
181 ilUtil::sendFailure($this->txt("user_not_found"), true);
182 $this->ctrl()->redirect($this, self::CMD_INDEX);
183 }
184 foreach ($user_ids as $user_id) {
185 ilOrgUnitUserAssignment::findOrCreateAssignment($user_id, $position_id, $this->getParentRefId());
186 }
187
188 ilUtil::sendSuccess($this->txt("users_successfuly_added"), true);
189 $this->ctrl()->redirect($this, self::CMD_INDEX);
190 }
191
192 public function addSubTabs()
193 {
194 $this->pushSubTab(self::SUBTAB_ASSIGNMENTS, $this->ctrl()
195 ->getLinkTarget($this, self::CMD_INDEX));
196 $this->pushSubTab(self::SUBTAB_ASSIGNMENTS_RECURSIVE, $this->ctrl()
197 ->getLinkTarget($this, self::CMD_ASSIGNMENTS_RECURSIVE));
198 }
199}
$_POST["username"]
static findOrFail($primary_key, array $add_constructor_args=array())
Tries to find the object and throws an Exception if object is not found, instead of returning null.
static getArray($key=null, $values=null)
An exception for terminatinating execution or to throw for unit testing.
Confirmation screen class.
static _checkAccessPositions(int $ref_id)
static _lookupLogin($a_user_id)
lookup login
static _lookupId($a_user_str)
Lookup id by login.
static getActiveForPosition($orgu_ref_id)
Class ilOrgUnitUserAssignmentGUI.
addStaffFromSearch(array $user_ids, ?string $user_type=null)
Class ilOrgUnitUserAssignmentTableGUI.
static findOrCreateAssignment($user_id, $position_id, $orgu_id)
static fillAutoCompleteToolbar($parent_object, ilToolbarGUI $toolbar=null, $a_options=array(), $a_sticky=false)
fill toolbar with
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
static http()
Fetches the global http state from ILIAS.