ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
class.ilWorkspaceShareTableGUI.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 2010 Leifos, GPL, see docs/LICENSE */
3
4include_once("./Services/Table/classes/class.ilTable2GUI.php");
5
15{
16 protected $handler; // [ilWorkspaceAccessHandler]
17 protected $parent_node_id; // [int]
18 protected $filter; // [array]
19 protected $crs_ids; // [array]
20 protected $grp_ids; // [array]
21 protected $portfolio_mode = false; // [bool]
22
32 function __construct($a_parent_obj, $a_parent_cmd, $a_handler, $a_parent_node_id = null, $a_load_data = false)
33 {
34 global $ilCtrl, $lng;
35
36 $this->handler = $a_handler;
37
38 if(stristr(get_class($a_parent_obj), "portfolio"))
39 {
40 $this->parent_node_id = $a_parent_node_id;
41 $this->portfolio_mode = true;
42 }
43
44 parent::__construct($a_parent_obj, $a_parent_cmd);
45
46 $this->setId("il_tbl_wspsh".(int)$this->portfolio_mode);
47
48 $this->setTitle($lng->txt("wsp_shared_resources"));
49
50 $this->addColumn($this->lng->txt("lastname"), "lastname");
51 $this->addColumn($this->lng->txt("firstname"), "firstname");
52 $this->addColumn($this->lng->txt("login"), "login");
53
54 if(!$this->portfolio_mode)
55 {
56 $this->addColumn($this->lng->txt("wsp_shared_object_type"), "obj_type");
57 }
58
59 $this->addColumn($this->lng->txt("wsp_shared_date"), "acl_date");
60 $this->addColumn($this->lng->txt("wsp_shared_title"), "title");
61 $this->addColumn($this->lng->txt("wsp_shared_type"));
62
63 if(!$this->portfolio_mode)
64 {
65 $this->addColumn($this->lng->txt("action"));
66 }
67
68 $this->setDefaultOrderField("acl_date");
69 $this->setDefaultOrderDirection("desc");
70
71 $this->setFormAction($ilCtrl->getFormAction($a_parent_obj));
72 $this->setRowTemplate("tpl.shared_row.html", "Services/PersonalWorkspace");
73
74 $this->setDisableFilterHiding(true);
75 $this->setResetCommand("resetsharefilter", $this->lng->txt("wsp_shared_filter_reset_button"));
76 $this->setFilterCommand("applysharefilter", $this->lng->txt("wsp_shared_filter_button"));
77
78 $this->initFilter();
79
80 // reset will remove all filters
81 if($this->portfolio_mode &&
82 !$this->filter["obj_type"])
83 {
84 $this->filter["obj_type"] = "prtf";
85 }
86
87 // incoming request: check for validity
88 if($a_load_data)
89 {
90 /*
91 if(($this->filter["user"] && strlen($this->filter["user"]) > 3) ||
92 ($this->filter["title"] && strlen($this->filter["title"]) > 3) ||
93 $this->filter["acl_date"] ||
94 $this->filter["obj_type"] ||
95 $this->filter["acl_type"] ||
96 $this->filter["crsgrp"])
97 {
98 */
99
100 // #16630
101 $this->importData();
102 include_once "Services/User/classes/class.ilUserUtil.php";
103 return;
104 }
105 else
106 {
107 ilUtil::sendInfo($lng->txt("wsp_shared_mandatory_filter_info"));
108 }
109
110 // initial state: show filters only
111 $this->disable("header");
112 $this->disable("content");
113 }
114
115 public function initFilter()
116 {
117 global $lng, $ilSetting, $ilUser;
118
119 include_once "Services/Membership/classes/class.ilParticipants.php";
120 $this->crs_ids = ilParticipants::_getMembershipByType($ilUser->getId(), "crs");
121 $this->grp_ids = ilParticipants::_getMembershipByType($ilUser->getId(), "grp");
122
123 $lng->loadLanguageModule("search");
124
125 $item = $this->addFilterItemByMetaType("user", self::FILTER_TEXT, false, $lng->txt("wsp_shared_user_filter"));
126 $this->filter["user"] = $item->getValue();
127
128 // incoming back link (shared)
129 if((int)$_REQUEST["shr_id"] &&
130 !is_array($_SESSION["form_".$this->getId()]) && // #17747
131 !$this->filter["user"])
132 {
133 $this->filter["user"] = ilObjUser::_lookupName((int)$_REQUEST["shr_id"]);
134 $this->filter["user"] = $this->filter["user"]["login"];
135 $item->setValue($this->filter["user"]);
136 }
137
138 $item = $this->addFilterItemByMetaType("title", self::FILTER_TEXT, false, $lng->txt("wsp_shared_title"));
139 $this->filter["title"] = $item->getValue();
140
141 $item = $this->addFilterItemByMetaType("acl_date", self::FILTER_DATE, false, $lng->txt("wsp_shared_date_filter"));
142 $this->filter["acl_date"] = $item->getDate();
143
144 if(!$this->portfolio_mode)
145 {
146 // see ilPersonalWorkspaceGUI::renderToolbar
147 $options = array(""=>$lng->txt("search_any"));
148 $settings_map = array("blog" => "blogs",
149 "file" => "files");
150 // see ilObjWorkspaceFolderTableGUI
151 foreach(array("file", "blog") as $type)
152 {
153 if(isset($settings_map[$type]) && $ilSetting->get("disable_wsp_".$settings_map[$type]))
154 {
155 continue;
156 }
157 $options[$type] = $lng->txt("wsp_type_".$type);
158 }
159 }
160 else
161 {
162 $options = array("prtf"=>$lng->txt("obj_prtf"));
163 }
164 if(sizeof($options))
165 {
166 asort($options);
167 $item = $this->addFilterItemByMetaType("obj_type", self::FILTER_SELECT, false, $lng->txt("wsp_shared_object_type"));
168 $item->setOptions($options);
169 $this->filter["obj_type"] = $item->getValue();
170 }
171
172 // see ilWorkspaceAccessGUI::share
173 $options = array();
174 $options["user"] = $lng->txt("wsp_set_permission_single_user");
175
176 if(sizeof($this->grp_ids))
177 {
178 $options["group"] = $lng->txt("wsp_set_permission_group");
179 }
180
181 if(sizeof($this->crs_ids))
182 {
183 $options["course"] = $lng->txt("wsp_set_permission_course");
184 }
185
186 if(!$this->handler->hasRegisteredPermission($this->parent_node_id))
187 {
188 $options["registered"] = $lng->txt("wsp_set_permission_registered");
189 }
190
191 if($ilSetting->get("enable_global_profiles"))
192 {
193 if(!$this->handler->hasGlobalPasswordPermission($this->parent_node_id))
194 {
195 $options["password"] = $this->lng->txt("wsp_set_permission_all_password");
196 }
197
198 if(!$this->handler->hasGlobalPermission($this->parent_node_id))
199 {
200 $options["all"] = $this->lng->txt("wsp_set_permission_all");
201 }
202 }
203
204 if(sizeof($options))
205 {
206 // asort($options);
207 $item = $this->addFilterItemByMetaType("acl_type", self::FILTER_SELECT, false, $lng->txt("wsp_shared_type"));
208 $item->setOptions(array(""=>$lng->txt("search_any"))+$options);
209 $this->filter["acl_type"] = $item->getValue();
210 }
211
212 if(sizeof($this->crs_ids) || sizeof($this->grp_ids))
213 {
214 $options = array();
215 foreach($this->crs_ids as $crs_id)
216 {
217 $options[$crs_id] = $lng->txt("obj_crs")." ".ilObject::_lookupTitle($crs_id);
218 }
219 foreach($this->grp_ids as $grp_id)
220 {
221 $options[$grp_id] = $lng->txt("obj_grp")." ".ilObject::_lookupTitle($grp_id);
222 }
223 asort($options);
224 $item = $this->addFilterItemByMetaType("crsgrp", self::FILTER_SELECT, false, $lng->txt("wsp_shared_member_filter"));
225 $item->setOptions(array(""=>$lng->txt("search_any"))+$options);
226 $this->filter["crsgrp"] = $item->getValue();
227 }
228 }
229
230 protected function importData()
231 {
232 global $lng;
233
234 $data = array();
235
236 $user_data = array();
237
238 $objects = $this->handler->findSharedObjects($this->filter, $this->crs_ids, $this->grp_ids);
239 if($objects)
240 {
241 foreach($objects as $wsp_id => $item)
242 {
243 if(!isset($user_data[$item["owner"]]))
244 {
245 $user_data[$item["owner"]] = ilObjUser::_lookupName($item["owner"]);
246 }
247
248 // #18535 - deleted user?
249 if(!$user_data[$item["owner"]]["login"])
250 {
251 continue;
252 }
253
254 $data[] = array(
255 "wsp_id" => $wsp_id,
256 "obj_id" => $item["obj_id"],
257 "type" => $item["type"],
258 "obj_type" => $lng->txt("wsp_type_".$item["type"]),
259 "title" => $item["title"],
260 "owner_id" => $item["owner"],
261 "lastname" => $user_data[$item["owner"]]["lastname"],
262 "firstname" => $user_data[$item["owner"]]["firstname"],
263 "login" => $user_data[$item["owner"]]["login"],
264 "acl_type" => $item["acl_type"],
265 "acl_date" => $item["acl_date"]
266 );
267 }
268 }
269
270 $this->setData($data);
271
272 include_once('./Services/Link/classes/class.ilLink.php');
273 }
274
280 protected function fillRow($node)
281 {
282 global $ilCtrl, $lng;
283
284 $this->tpl->setVariable("LASTNAME", $node["lastname"]);
285 $this->tpl->setVariable("FIRSTNAME", $node["firstname"]);
286 $this->tpl->setVariable("LOGIN", $node["login"]);
287
288 $this->tpl->setVariable("TITLE", $node["title"]);
289
290 if(!$this->portfolio_mode)
291 {
292 $this->tpl->setVariable("TYPE", $node["obj_type"]);
293 $this->tpl->setVariable("ICON_ALT", $node["obj_type"]);
294 $this->tpl->setVariable("ICON", ilObject::_getIcon("", "tiny", $node["type"]));
295
296 $url = $this->handler->getGotoLink($node["wsp_id"], $node["obj_id"]);
297 }
298 else
299 {
300 $url = ilLink::_getStaticLink($node["obj_id"], "prtf", true);
301 }
302 $this->tpl->setVariable("URL_TITLE", $url);
303
304 $this->tpl->setVariable("ACL_DATE",
305 ilDatePresentation::formatDate(new ilDateTime($node["acl_date"], IL_CAL_UNIX)));
306
307 asort($node["acl_type"]);
308 foreach($node["acl_type"] as $obj_id)
309 {
310 // see ilWorkspaceAccessTableGUI
311 switch($obj_id)
312 {
314 $title = $icon_alt = $this->lng->txt("wsp_set_permission_registered");
315 $type = "registered";
316 break;
317
319 $title = $icon_alt = $this->lng->txt("wsp_set_permission_all_password");
320 $type = "all_password";
321 break;
322
324 $title = $icon_alt = $this->lng->txt("wsp_set_permission_all");
325 $type = "all_password";
326 break;
327
328 default:
329 $type = ilObject::_lookupType($obj_id);
330 /*
331 $icon = ilUtil::getTypeIconPath($type, null, "tiny");
332 $icon_alt = $this->lng->txt("obj_".$type);
333 */
334 if($type != "usr")
335 {
336 $title = ilObject::_lookupTitle($obj_id);
337 }
338 else
339 {
340 $title = ilUserUtil::getNamePresentation($obj_id, false, true);
341 }
342 break;
343 }
344
345 /* #17758
346 if($icon)
347 {
348 $this->tpl->setCurrentBlock("acl_type_icon_bl");
349 $this->tpl->setVariable("ACL_ICON", $icon);
350 $this->tpl->setVariable("ACL_ICON_ALT", $icon_alt);
351 $this->tpl->parseCurrentBlock();
352 }
353 */
354
355 $this->tpl->setCurrentBlock("acl_type_bl");
356 $this->tpl->setVariable("ACL_TYPE", $title);
357 $this->tpl->parseCurrentBlock();
358 }
359
360 if(!$this->portfolio_mode)
361 {
362 // files may be copied to own workspace
363 if($node["type"] == "file")
364 {
365 $ilCtrl->setParameter($this->parent_obj, "wsp_id",
366 $this->parent_node_id);
367 $ilCtrl->setParameter($this->parent_obj, "item_ref_id",
368 $node["wsp_id"]);
369 $url = $ilCtrl->getLinkTarget($this->parent_obj, "copyshared");
370
371 $this->tpl->setCurrentBlock("action_bl");
372 $this->tpl->setVariable("URL_ACTION", $url);
373 $this->tpl->setVariable("ACTION", $lng->txt("copy"));
374 $this->tpl->parseCurrentBlock();
375 }
376 else
377 {
378 $this->tpl->touchBlock("action_col_bl");
379 }
380 }
381 }
382}
383
384?>
$_SESSION["AccountId"]
const IL_CAL_UNIX
static formatDate(ilDateTime $date)
Format a date @access public.
@classDescription Date and time handling
static _lookupName($a_user_id)
lookup user name
static _lookupTitle($a_id)
lookup object title
static _getIcon($a_obj_id="", $a_size="big", $a_type="", $a_offline=false)
Get icon for repository item.
static _lookupType($a_id, $a_reference=false)
lookup object type
static _getMembershipByType($a_usr_id, $a_type, $a_only_member_role=false)
get membership by type Get course or group membership
Class ilTable2GUI.
setDisableFilterHiding($a_val=true)
Set disable filter hiding.
addColumn($a_text, $a_sort_field="", $a_width="", $a_is_checkbox_action_column=false, $a_class="", $a_tooltip="", $a_tooltip_with_html=false)
Add a column to the header.
setTitle($a_title, $a_icon=0, $a_icon_alt=0)
Set title and title icon.
getId()
Get element id.
setData($a_data)
set table data @access public
setResetCommand($a_val, $a_caption=null)
Set reset filter command.
setRowTemplate($a_template, $a_template_dir="")
Set row template.
setDefaultOrderField($a_defaultorderfield)
Set Default order field.
setId($a_val)
Set id.
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
addFilterItemByMetaType($id, $type=self::FILTER_TEXT, $a_optional=false, $caption=NULL)
Add filter by standard type.
setDefaultOrderDirection($a_defaultorderdirection)
Set Default order direction.
setFilterCommand($a_val, $a_caption=null)
Set filter command.
disable($a_module_name)
diesables particular modules of table
static getNamePresentation($a_user_id, $a_user_image=false, $a_profile_link=false, $a_profile_back_link="", $a_force_first_lastname=false, $a_omit_login=false, $a_sortable=true, $a_return_data_array=false)
Default behaviour is:
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
Workspace share handler table GUI class.
__construct($a_parent_obj, $a_parent_cmd, $a_handler, $a_parent_node_id=null, $a_load_data=false)
Constructor.
global $ilCtrl
Definition: ilias.php:18
global $lng
Definition: privfeed.php:40
global $ilSetting
Definition: privfeed.php:40
$url
Definition: shib_logout.php:72
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