ILIAS  release_5-0 Revision 5.0.0-1144-gc4397b1f870
class.ilWorkspaceAccessGUI.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3
16{
17 protected $ctrl;
18 protected $lng;
19 protected $node_id;
20 protected $access_handler;
21 protected $footer;
22
25 const PERMISSION_ALL = -5;
26
27
28 function __construct($a_node_id, $a_access_handler, $a_is_portfolio = false, $a_footer = null)
29 {
30 global $ilCtrl, $lng;
31
32 $this->ctrl = $ilCtrl;
33 $this->lng = $lng;
34 $this->node_id = $a_node_id;
35 $this->access_handler = $a_access_handler;
36 $this->is_portfolio = (bool)$a_is_portfolio;
37 $this->footer = $a_footer;
38 }
39
40 function executeCommand()
41 {
42 global $ilTabs, $tpl, $ilErr;
43
44 $next_class = $this->ctrl->getNextClass($this);
45 $cmd = $this->ctrl->getCmd();
46
47 if (!$this->getAccessHandler()->checkAccess("write", "", $this->node_id))
48 {
49 $ilErr->raiseError($this->lng->txt('permission_denied'), $ilErr->WARNING);
50 }
51
52 switch($next_class)
53 {
54 case "ilmailsearchcoursesgui";
55 $ilTabs->setBackTarget($this->lng->txt("back"),
56 $this->ctrl->getLinkTarget($this, "share"));
57 include_once('Services/Contact/classes/class.ilMailSearchCoursesGUI.php');
58 $csearch = new ilMailSearchCoursesGUI($this->access_handler, $this->node_id);
59 $this->ctrl->setReturn($this, 'share');
60 $this->ctrl->forwardCommand($csearch);
61
62 $this->setObjectTitle();
63 break;
64
65 case "ilmailsearchgroupsgui";
66 $ilTabs->setBackTarget($this->lng->txt("back"),
67 $this->ctrl->getLinkTarget($this, "share"));
68 include_once('Services/Contact/classes/class.ilMailSearchGroupsGUI.php');
69 $gsearch = new ilMailSearchGroupsGUI($this->access_handler, $this->node_id);
70 $this->ctrl->setReturn($this, 'share');
71 $this->ctrl->forwardCommand($gsearch);
72
73 $this->setObjectTitle();
74 break;
75
76 case "ilmailsearchgui";
77 $ilTabs->setBackTarget($this->lng->txt("back"),
78 $this->ctrl->getLinkTarget($this, "share"));
79 include_once('Services/Contact/classes/class.ilMailSearchGUI.php');
80 $usearch = new ilMailSearchGUI($this->access_handler, $this->node_id);
81 $this->ctrl->setReturn($this, 'share');
82 $this->ctrl->forwardCommand($usearch);
83
84 $this->setObjectTitle();
85 break;
86
87 case "ilpublicuserprofilegui";
88 $ilTabs->clearTargets();
89 $ilTabs->setBackTarget($this->lng->txt("back"),
90 $this->ctrl->getLinkTarget($this, "share"));
91
92 include_once('./Services/User/classes/class.ilPublicUserProfileGUI.php');
93 $prof = new ilPublicUserProfileGUI($_REQUEST["user"]);
94 $prof->setBackUrl($this->ctrl->getLinkTarget($this, "share"));
95 $tpl->setContent($prof->getHTML());
96 break;
97
98 default:
99 // $this->prepareOutput();
100 if(!$cmd)
101 {
102 $cmd = "share";
103 }
104 return $this->$cmd();
105 }
106
107 return true;
108 }
109
115 protected function setObjectTitle()
116 {
117 global $tpl;
118
119 if(!$this->is_portfolio)
120 {
121 $obj_id = $this->access_handler->getTree()->lookupObjectId($this->node_id);
122 }
123 else
124 {
125 $obj_id = $this->node_id;
126 }
127 $tpl->setTitle(ilObject::_lookupTitle($obj_id));
128 }
129
130 protected function getAccessHandler()
131 {
133 }
134
135 protected function share()
136 {
137 global $ilToolbar, $tpl, $ilUser, $ilSetting;
138
139 $options = array();
140 $options["user"] = $this->lng->txt("wsp_set_permission_single_user");
141
142 include_once 'Modules/Group/classes/class.ilGroupParticipants.php';
143 $grp_ids = ilGroupParticipants::_getMembershipByType($ilUser->getId(), 'grp');
144 if(sizeof($grp_ids))
145 {
146 $options["group"] = $this->lng->txt("wsp_set_permission_group");
147 }
148
149 include_once 'Modules/Course/classes/class.ilCourseParticipants.php';
150 $crs_ids = ilCourseParticipants::_getMembershipByType($ilUser->getId(), 'crs');
151 if(sizeof($crs_ids))
152 {
153 $options["course"] = $this->lng->txt("wsp_set_permission_course");
154 }
155
156 if(!$this->getAccessHandler()->hasRegisteredPermission($this->node_id))
157 {
158 $options["registered"] = $this->lng->txt("wsp_set_permission_registered");
159 }
160
161 if($ilSetting->get("enable_global_profiles"))
162 {
163 if(!$this->getAccessHandler()->hasGlobalPasswordPermission($this->node_id))
164 {
165 $options["password"] = $this->lng->txt("wsp_set_permission_all_password");
166 }
167
168 if(!$this->getAccessHandler()->hasGlobalPermission($this->node_id))
169 {
170 $options["all"] = $this->lng->txt("wsp_set_permission_all");
171 }
172 }
173
174 include_once "Services/Form/classes/class.ilPropertyFormGUI.php";
175 $actions = new ilSelectInputGUI("", "action");
176 $actions->setOptions($options);
177 $ilToolbar->addInputItem($actions);
178
179 $ilToolbar->setFormAction($this->ctrl->getFormAction($this));
180
181 include_once "Services/UIComponent/Button/classes/class.ilSubmitButton.php";
182 $button = ilSubmitButton::getInstance();
183 $button->setCaption("add");
184 $button->setCommand("addpermissionhandler");
185 $ilToolbar->addButtonInstance($button);
186
187 include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceAccessTableGUI.php";
188 $table = new ilWorkspaceAccessTableGUI($this, "share", $this->node_id, $this->getAccessHandler());
189 $tpl->setContent($table->getHTML().$this->footer);
190 }
191
192 public function addPermissionHandler()
193 {
194 switch($_REQUEST["action"])
195 {
196 case "user":
197 $this->ctrl->setParameterByClass("ilmailsearchgui", "ref", "wsp");
198 $this->ctrl->redirectByClass("ilmailsearchgui");
199
200 case "group":
201 $this->ctrl->setParameterByClass("ilmailsearchgroupsgui", "ref", "wsp");
202 $this->ctrl->redirectByClass("ilmailsearchgroupsgui");
203
204 case "course":
205 $this->ctrl->setParameterByClass("ilmailsearchcoursesgui", "ref", "wsp");
206 $this->ctrl->redirectByClass("ilmailsearchcoursesgui");
207
208 case "registered":
209 $this->getAccessHandler()->addPermission($this->node_id, self::PERMISSION_REGISTERED);
210 ilUtil::sendSuccess($this->lng->txt("wsp_permission_registered_info"), true);
211 $this->ctrl->redirect($this, "share");
212
213 case "password":
214 $this->showPasswordForm();
215 break;
216
217 case "all":
218 $this->getAccessHandler()->addPermission($this->node_id, self::PERMISSION_ALL);
219 ilUtil::sendSuccess($this->lng->txt("wsp_permission_all_info"), true);
220 $this->ctrl->redirect($this, "share");
221 }
222 }
223
224 public function removePermission()
225 {
226 if($_REQUEST["obj_id"])
227 {
228 $this->getAccessHandler()->removePermission($this->node_id, (int)$_REQUEST["obj_id"]);
229 ilUtil::sendSuccess($this->lng->txt("wsp_permission_removed"), true);
230 }
231
232 $this->ctrl->redirect($this, "share");
233 }
234
235 protected function initPasswordForm()
236 {
237 include_once "Services/Form/classes/class.ilPropertyFormGUI.php";
238 $form = new ilPropertyFormGUI();
239 $form->setFormAction($this->ctrl->getFormAction($this));
240 $form->setTitle($this->lng->txt("wsp_set_permission_all_password"));
241
242 $password = new ilPasswordInputGUI($this->lng->txt("password"), "password");
243 $password->setRequired(true);
244 $form->addItem($password);
245
246 $form->addCommandButton('savepasswordform', $this->lng->txt("save"));
247 $form->addCommandButton('share', $this->lng->txt("cancel"));
248
249 return $form;
250 }
251
252 protected function showPasswordForm(ilPropertyFormGUI $a_form = null)
253 {
254 global $tpl;
255
256 if(!$a_form)
257 {
258 $a_form = $this->initPasswordForm();
259 }
260 $tpl->setContent($a_form->getHTML());
261 }
262
263 protected function savePasswordForm()
264 {
265 $form = $this->initPasswordForm();
266 if($form->checkInput())
267 {
268 $this->getAccessHandler()->addPermission($this->node_id,
269 self::PERMISSION_ALL_PASSWORD, md5($form->getInput("password")));
270 ilUtil::sendSuccess($this->lng->txt("wsp_permission_all_info"), true);
271 $this->ctrl->redirect($this, "share");
272 }
273
274 $form->setValuesByPost();
275 $this->showPasswordForm($form);
276 }
277}
278
279?>
global $tpl
Definition: ilias.php:8
static _lookupTitle($a_id)
lookup object title
static _getMembershipByType($a_usr_id, $a_type, $a_only_member_role=false)
get membership by type Get course or group membership
This class represents a password property in a property form.
This class represents a property form user interface.
GUI class for public user profile presentation.
This class represents a selection list property in a property form.
static getInstance()
Factory.
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
showPasswordForm(ilPropertyFormGUI $a_form=null)
setObjectTitle()
restore object title
__construct($a_node_id, $a_access_handler, $a_is_portfolio=false, $a_footer=null)
Workspace access handler table GUI class.
global $ilCtrl
Definition: ilias.php:18
global $ilSetting
Definition: privfeed.php:40
$cmd
Definition: sahs_server.php:35
if($_REQUEST['ilias_path']) define('ILIAS_HTTP_PATH' $_REQUEST['ilias_path']
Definition: index.php:7
if(!is_array($argv)) $options
global $ilUser
Definition: imgupload.php:15