ILIAS  release_4-4 Revision
All Data Structures Namespaces Files Functions Variables Modules Pages
class.ilWorkspaceShareTableGUI.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 2010 Leifos, GPL, see docs/LICENSE */
3 
4 include_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");
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");
76  $this->setFilterCommand("applysharefilter");
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  if($a_load_data)
88  {
89  if(($this->filter["user"] && strlen($this->filter["user"]) > 3) ||
90  ($this->filter["title"] && strlen($this->filter["title"]) > 3) ||
91  $this->filter["acl_date"] ||
92  $this->filter["obj_type"] ||
93  $this->filter["acl_type"] ||
94  $this->filter["crsgrp"])
95  {
96  $this->importData();
97  include_once "Services/User/classes/class.ilUserUtil.php";
98  return;
99  }
100 
101  ilUtil::sendFailure($lng->txt("wsp_shared_mandatory_filter_info"));
102  }
103 
104  $this->disable("header");
105  $this->disable("content");
106  }
107 
108  public function initFilter()
109  {
110  global $lng, $ilSetting, $ilUser;
111 
112  include_once "Services/Membership/classes/class.ilParticipants.php";
113  $this->crs_ids = ilParticipants::_getMembershipByType($ilUser->getId(), "crs");
114  $this->grp_ids = ilParticipants::_getMembershipByType($ilUser->getId(), "grp");
115 
116  $lng->loadLanguageModule("search");
117 
118  $item = $this->addFilterItemByMetaType("user", self::FILTER_TEXT, false, $lng->txt("wsp_shared_user_filter"));
119  $this->filter["user"] = $item->getValue();
120 
121  // incoming back link (shared)
122  if((int)$_REQUEST["shr_id"] && !$this->filter["user"])
123  {
124  $this->filter["user"] = ilObjUser::_lookupName((int)$_REQUEST["shr_id"]);
125  $this->filter["user"] = $this->filter["user"]["login"];
126  $item->setValue($this->filter["user"]);
127  }
128 
129  $item = $this->addFilterItemByMetaType("title", self::FILTER_TEXT, false, $lng->txt("wsp_shared_title"));
130  $this->filter["title"] = $item->getValue();
131 
132  $item = $this->addFilterItemByMetaType("acl_date", self::FILTER_DATE, false, $lng->txt("wsp_shared_date_filter"));
133  $this->filter["acl_date"] = $item->getDate();
134 
135  if(!$this->portfolio_mode)
136  {
137  // see ilPersonalWorkspaceGUI::renderToolbar
138  $options = array(""=>$lng->txt("search_any"));
139  $settings_map = array("blog" => "blogs",
140  "file" => "files");
141  // see ilObjWorkspaceFolderTableGUI
142  foreach(array("file", "blog") as $type)
143  {
144  if(isset($settings_map[$type]) && $ilSetting->get("disable_wsp_".$settings_map[$type]))
145  {
146  continue;
147  }
148  $options[$type] = $lng->txt("wsp_type_".$type);
149  }
150  }
151  else
152  {
153  $options = array("prtf"=>$lng->txt("obj_prtf"));
154  }
155  if(sizeof($options))
156  {
157  asort($options);
158  $item = $this->addFilterItemByMetaType("obj_type", self::FILTER_SELECT, false, $lng->txt("wsp_shared_object_type"));
159  $item->setOptions($options);
160  $this->filter["obj_type"] = $item->getValue();
161  }
162 
163  // see ilWorkspaceAccessGUI::share
164  $options = array();
165  $options["user"] = $lng->txt("wsp_set_permission_single_user");
166 
167  if(sizeof($this->grp_ids))
168  {
169  $options["group"] = $lng->txt("wsp_set_permission_group");
170  }
171 
172  if(sizeof($this->crs_ids))
173  {
174  $options["course"] = $lng->txt("wsp_set_permission_course");
175  }
176 
177  if(!$this->handler->hasRegisteredPermission($this->parent_node_id))
178  {
179  $options["registered"] = $lng->txt("wsp_set_permission_registered");
180  }
181 
182  if($ilSetting->get("enable_global_profiles"))
183  {
184  if(!$this->handler->hasGlobalPasswordPermission($this->parent_node_id))
185  {
186  $options["password"] = $this->lng->txt("wsp_set_permission_all_password");
187  }
188 
189  if(!$this->handler->hasGlobalPermission($this->parent_node_id))
190  {
191  $options["all"] = $this->lng->txt("wsp_set_permission_all");
192  }
193  }
194 
195  if(sizeof($options))
196  {
197  // asort($options);
198  $item = $this->addFilterItemByMetaType("acl_type", self::FILTER_SELECT, false, $lng->txt("wsp_shared_type"));
199  $item->setOptions(array(""=>$lng->txt("search_any"))+$options);
200  $this->filter["acl_type"] = $item->getValue();
201  }
202 
203  if(sizeof($this->crs_ids) || sizeof($this->grp_ids))
204  {
205  $options = array();
206  foreach($this->crs_ids as $crs_id)
207  {
208  $options[$crs_id] = $lng->txt("obj_crs")." ".ilObject::_lookupTitle($crs_id);
209  }
210  foreach($this->grp_ids as $grp_id)
211  {
212  $options[$grp_id] = $lng->txt("obj_grp")." ".ilObject::_lookupTitle($grp_id);
213  }
214  asort($options);
215  $item = $this->addFilterItemByMetaType("crsgrp", self::FILTER_SELECT, false, $lng->txt("wsp_shared_member_filter"));
216  $item->setOptions(array(""=>$lng->txt("search_any"))+$options);
217  $this->filter["crsgrp"] = $item->getValue();
218  }
219  }
220 
221  protected function importData()
222  {
223  global $lng;
224 
225  $data = array();
226 
227  $user_data = array();
228 
229  $objects = $this->handler->findSharedObjects($this->filter, $this->crs_ids, $this->grp_ids);
230  if($objects)
231  {
232  foreach($objects as $wsp_id => $item)
233  {
234  if(!isset($user_data[$item["owner"]]))
235  {
236  $user_data[$item["owner"]] = ilObjUser::_lookupName($item["owner"]);
237  }
238 
239  $data[] = array(
240  "wsp_id" => $wsp_id,
241  "obj_id" => $item["obj_id"],
242  "type" => $item["type"],
243  "obj_type" => $lng->txt("wsp_type_".$item["type"]),
244  "title" => $item["title"],
245  "owner_id" => $item["owner"],
246  "lastname" => $user_data[$item["owner"]]["lastname"],
247  "firstname" => $user_data[$item["owner"]]["firstname"],
248  "login" => $user_data[$item["owner"]]["login"],
249  "acl_type" => $item["acl_type"],
250  "acl_date" => $item["acl_date"]
251  );
252  }
253  }
254 
255  $this->setData($data);
256 
257  include_once('./Services/Link/classes/class.ilLink.php');
258  }
259 
265  protected function fillRow($node)
266  {
267  global $ilCtrl, $lng;
268 
269  $this->tpl->setVariable("LASTNAME", $node["lastname"]);
270  $this->tpl->setVariable("FIRSTNAME", $node["firstname"]);
271  $this->tpl->setVariable("LOGIN", $node["login"]);
272 
273  $this->tpl->setVariable("TITLE", $node["title"]);
274 
275  if(!$this->portfolio_mode)
276  {
277  $this->tpl->setVariable("TYPE", $node["obj_type"]);
278  $this->tpl->setVariable("ICON_ALT", $node["obj_type"]);
279  $this->tpl->setVariable("ICON", ilObject::_getIcon("", "tiny", $node["type"]));
280 
281  $url = $this->handler->getGotoLink($node["wsp_id"], $node["obj_id"]);
282  }
283  else
284  {
285  $url = ilLink::_getStaticLink($node["obj_id"], "prtf", true);
286  }
287  $this->tpl->setVariable("URL_TITLE", $url);
288 
289  $this->tpl->setVariable("ACL_DATE",
290  ilDatePresentation::formatDate(new ilDateTime($node["acl_date"], IL_CAL_UNIX)));
291 
292  asort($node["acl_type"]);
293  foreach($node["acl_type"] as $obj_id)
294  {
295  // see ilWorkspaceAccessTableGUI
296  switch($obj_id)
297  {
299  $title = $icon_alt = $this->lng->txt("wsp_set_permission_registered");
300  $type = "registered";
301  $icon = "";
302  break;
303 
305  $title = $icon_alt = $this->lng->txt("wsp_set_permission_all_password");
306  $type = "all_password";
307  $icon = "";
308  break;
309 
311  $title = $icon_alt = $this->lng->txt("wsp_set_permission_all");
312  $type = "all_password";
313  $icon = "";
314  break;
315 
316  default:
317  $type = ilObject::_lookupType($obj_id);
318  $icon = ilUtil::getTypeIconPath($type, null, "tiny");
319  $icon_alt = $this->lng->txt("obj_".$type);
320 
321  if($type != "usr")
322  {
323  $title = ilObject::_lookupTitle($obj_id);
324  }
325  else
326  {
327  $title = ilUserUtil::getNamePresentation($obj_id, true, true);
328  }
329  break;
330  }
331 
332  if($icon)
333  {
334  $this->tpl->setCurrentBlock("acl_type_icon_bl");
335  $this->tpl->setVariable("ACL_ICON", $icon);
336  $this->tpl->setVariable("ACL_ICON_ALT", $icon_alt);
337  $this->tpl->parseCurrentBlock();
338  }
339 
340  $this->tpl->setCurrentBlock("acl_type_bl");
341  $this->tpl->setVariable("ACL_TYPE", $title);
342  $this->tpl->parseCurrentBlock();
343  }
344 
345  if(!$this->portfolio_mode)
346  {
347  // files may be copied to own workspace
348  if($node["type"] == "file")
349  {
350  $ilCtrl->setParameter($this->parent_obj, "wsp_id",
351  $this->parent_node_id);
352  $ilCtrl->setParameter($this->parent_obj, "item_ref_id",
353  $node["wsp_id"]);
354  $url = $ilCtrl->getLinkTarget($this->parent_obj, "copyshared");
355 
356  $this->tpl->setCurrentBlock("action_bl");
357  $this->tpl->setVariable("URL_ACTION", $url);
358  $this->tpl->setVariable("ACTION", $lng->txt("copy"));
359  $this->tpl->parseCurrentBlock();
360  }
361  }
362  }
363 }
364 
365 ?>
static _lookupName($a_user_id)
lookup user name
static _getIcon($a_obj_id="", $a_size="big", $a_type="", $a_offline=false)
Get icon for repository item.
setDefaultOrderField($a_defaultorderfield)
Set Default order field.
addFilterItemByMetaType($id, $type=self::FILTER_TEXT, $a_optional=false, $caption=NULL)
Add filter by standard type.
setFilterCommand($a_val)
Set filter command.
static _getMembershipByType($a_usr_id, $a_type, $a_only_member_role=false)
get membership by type Get course or group membership
static _lookupTitle($a_id)
lookup object title
const IL_CAL_UNIX
static getTypeIconPath($a_type, $a_obj_id, $a_size='small')
Get type icon path path Return image path for icon_xxx.pngs Or (if enabled) path to custom icon...
setId($a_val)
Set id.
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)
Default behaviour is:
global $ilCtrl
Definition: ilias.php:18
setDefaultOrderDirection($a_defaultorderdirection)
Set Default order direction.
setTitle($a_title, $a_icon=0, $a_icon_alt=0)
Set title and title icon.
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.
Class ilTable2GUI.
if(!is_array($argv)) $options
addColumn($a_text, $a_sort_field="", $a_width="", $a_is_checkbox_action_column=false, $a_class="", $a_tooltip="")
Add a column to the header.
setDisableFilterHiding($a_val=true)
Set disable filter hiding.
static formatDate(ilDateTime $date)
Format a date public.
Date and time handling
setRowTemplate($a_template, $a_template_dir="")
Set row template.
static _lookupType($a_id, $a_reference=false)
lookup object type
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
disable($a_module_name)
diesables particular modules of table
global $ilUser
Definition: imgupload.php:15
global $ilSetting
Definition: privfeed.php:40
global $lng
Definition: privfeed.php:40
setFormAction($a_form_action)
Set Form action parameter.
if($_REQUEST['ilias_path']) define('ILIAS_HTTP_PATH' $_REQUEST['ilias_path']
Definition: index.php:7
setResetCommand($a_val)
Set reset filter command.