ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
class.ilObjFileAccessSettingsGUI.php
Go to the documentation of this file.
1 <?php
2 /*
3  +-----------------------------------------------------------------------------+
4  | ILIAS open source |
5  +-----------------------------------------------------------------------------+
6  | Copyright (c) 1998-2001 ILIAS open source, University of Cologne |
7  | |
8  | This program is free software; you can redistribute it and/or |
9  | modify it under the terms of the GNU General Public License |
10  | as published by the Free Software Foundation; either version 2 |
11  | of the License, or (at your option) any later version. |
12  | |
13  | This program is distributed in the hope that it will be useful, |
14  | but WITHOUT ANY WARRANTY; without even the implied warranty of |
15  | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
16  | GNU General Public License for more details. |
17  | |
18  | You should have received a copy of the GNU General Public License |
19  | along with this program; if not, write to the Free Software |
20  | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
21  +-----------------------------------------------------------------------------+
22 */
23 
37 include_once "./Services/Object/classes/class.ilObjectGUI.php";
38 
40 {
41  private $disk_quota_obj;
42 
47  function ilObjFileAccessSettingsGUI($a_data,$a_id,$a_call_by_reference)
48  {
49  global $tree;
50 
51  $this->type = "facs";
52  $this->ilObjectGUI($a_data,$a_id,$a_call_by_reference, false);
53  $this->folderSettings = new ilSetting('fold');
54 
55  // Load the disk quota settings object
56  require_once 'Services/WebDAV/classes/class.ilObjDiskQuotaSettings.php';
57  $this->disk_quota_obj = new ilObjDiskQuotaSettings($a_id, $a_call_by_reference);
58  $this->disk_quota_obj->read();
59  }
66  public function executeCommand()
67  {
68  global $rbacsystem,$ilErr,$ilAccess, $ilias, $lng;
69 
70  $next_class = $this->ctrl->getNextClass($this);
71  $cmd = $this->ctrl->getCmd();
72 
73  $this->prepareOutput();
74 
75  if(!$ilAccess->checkAccess('read','',$this->object->getRefId()))
76  {
77  $ilias->raiseError($lng->txt('no_permission'),$ilias->error_obj->MESSAGE);
78  }
79 
80  switch($next_class)
81  {
82  case 'ilpermissiongui':
83  $this->tabs_gui->setTabActive('perm_settings');
84  include_once("Services/AccessControl/classes/class.ilPermissionGUI.php");
85  $perm_gui =& new ilPermissionGUI($this);
86  $ret =& $this->ctrl->forwardCommand($perm_gui);
87  break;
88 
89  case 'ilfmsettingsgui':
90  $this->tabs_gui->setTabActive('fm_settings_tab');
91  include_once './Services/WebServices/FileManager/classes/class.ilFMSettingsGUI.php';
92  $fmg = new ilFMSettingsGUI($this);
93  $this->ctrl->forwardCommand($fmg);
94  break;
95 
96  default:
97  if(!$cmd || $cmd == 'view')
98  {
99  $cmd = "editDownloadingSettings";
100  }
101 
102  $this->$cmd();
103  break;
104  }
105  return true;
106  }
107 
114  public function getAdminTabs()
115  {
116  global $rbacsystem, $ilAccess;
117 
118  $GLOBALS['lng']->loadLanguageModule('fm');
119 
120  if ($rbacsystem->checkAccess("visible,read",$this->object->getRefId()))
121  {
122  $this->tabs_gui->addTarget('downloading_settings',
123  $this->ctrl->getLinkTarget($this, "editDownloadingSettings"),
124  array("editDownloadingSettings", "view"));
125 
126  $this->tabs_gui->addTarget('upload_settings',
127  $this->ctrl->getLinkTarget($this, "editUploadSettings"),
128  array("editUploadSettings", "view"));
129 
130  $this->tabs_gui->addTarget('preview_settings',
131  $this->ctrl->getLinkTarget($this, "editPreviewSettings"),
132  array("editPreviewSettings", "view"));
133 
134  $this->tabs_gui->addTarget('webdav',
135  $this->ctrl->getLinkTarget($this, "editWebDAVSettings"),
136  array("editWebDAVSettings", "view"));
137 
138  $this->tabs_gui->addTarget(
139  'fm_settings_tab',
140  $this->ctrl->getLinkTargetByClass('ilFMSettingsGUI','settings'),
141  array(),
142  'ilfmsettingsgui'
143  );
144 
145  $this->tabs_gui->addTarget("disk_quota",
146  $this->ctrl->getLinkTarget($this, "editDiskQuotaSettings"),
147  array("editDiskQuota", "view"));
148  }
149  if ($rbacsystem->checkAccess('edit_permission',$this->object->getRefId()))
150  {
151  $this->tabs_gui->addTarget("perm_settings",
152  $this->ctrl->getLinkTargetByClass('ilpermissiongui',"perm"),
153  array(),'ilpermissiongui');
154  }
155  }
156 
160  public function editDownloadingSettings()
161  {
162  global $rbacsystem, $ilErr, $ilTabs;
163 
164  $this->tabs_gui->setTabActive('downloading_settings');
165 
166  if (! $rbacsystem->checkAccess("visible,read",$this->object->getRefId()))
167  {
168  $ilErr->raiseError($lng->txt("no_permission"),$ilErr->WARNING);
169  }
170 
171  global $tpl, $ilCtrl, $lng, $tree, $settings;
172 
173  require_once("./Services/Form/classes/class.ilPropertyFormGUI.php");
174  require_once("./Services/Form/classes/class.ilCheckboxInputGUI.php");
175  require_once("./Services/Form/classes/class.ilRadioGroupInputGUI.php");
176  require_once("./Services/Form/classes/class.ilRadioOption.php");
177  require_once("./Services/Form/classes/class.ilTextAreaInputGUI.php");
178 
179  $form = new ilPropertyFormGUI();
180  $form->setFormAction($ilCtrl->getFormAction($this));
181  $form->setTitle($lng->txt("settings"));
182 
183  // Backwards compatibility with ILIAS 3.9: Use the name of the
184  // uploaded file as the filename for the downloaded file instead
185  // of the title of the file object.
186  $dl_prop = new ilCheckboxInputGUI($lng->txt("download_with_uploaded_filename"), "download_with_uploaded_filename");
187  $dl_prop->setValue('1');
188  // default value should reflect previous behaviour (-> 0)
189  $dl_prop->setChecked($this->object->isDownloadWithUploadedFilename() == 1);
190  $dl_prop->setInfo($lng->txt('download_with_uploaded_filename_info'));
191  $form->addItem($dl_prop);
192 
193  // Show download action for folder
194  $dl_prop = new ilCheckboxInputGUI($lng->txt("enable_download_folder"), "enable_download_folder");
195  $dl_prop->setValue('1');
196  // default value should reflect previous behaviour (-> 0)
197  $dl_prop->setChecked($this->folderSettings->get("enable_download_folder", 0) == 1);
198  $dl_prop->setInfo($lng->txt('enable_download_folder_info'));
199  $form->addItem($dl_prop);
200 
201  // multi download
202  $dl_prop = new ilCheckboxInputGUI($lng->txt("enable_multi_download"), "enable_multi_download");
203  $dl_prop->setValue('1');
204  // default value should reflect previous behaviour (-> 0)
205  $dl_prop->setChecked($this->folderSettings->get("enable_multi_download", 0) == 1);
206  $dl_prop->setInfo($lng->txt('enable_multi_download_info'));
207  $form->addItem($dl_prop);
208 
209  // Inline file extensions
210  $tai_prop = new ilTextAreaInputGUI($lng->txt('inline_file_extensions'), 'inline_file_extensions');
211  $tai_prop->setValue($this->object->getInlineFileExtensions());
212  $tai_prop->setInfo($lng->txt('inline_file_extensions_info'));
213  $tai_prop->setCols(80);
214  $tai_prop->setRows(5);
215  $form->addItem($tai_prop);
216 
217 
218  // command buttons
219  $form->addCommandButton('saveDownloadingSettings', $lng->txt('save'));
220  $form->addCommandButton('view', $lng->txt('cancel'));
221 
222  $tpl->setContent($form->getHTML());
223  }
224 
228  public function saveDownloadingSettings()
229  {
230  global $rbacsystem, $ilErr, $ilCtrl, $lng;
231 
232  if (! $rbacsystem->checkAccess("write",$this->object->getRefId()))
233  {
234  $ilErr->raiseError($lng->txt("no_permission"),$ilErr->WARNING);
235  }
236 
237  $this->object->setDownloadWithUploadedFilename(ilUtil::stripSlashes($_POST['download_with_uploaded_filename']));
238  $this->object->setInlineFileExtensions(ilUtil::stripSlashes($_POST['inline_file_extensions']));
239  $this->object->update();
240 
241  $this->folderSettings->set("enable_download_folder", $_POST["enable_download_folder"] == 1);
242  $this->folderSettings->set("enable_multi_download", $_POST["enable_multi_download"] == 1);
243 
244  ilUtil::sendInfo($lng->txt('settings_saved'),true);
245  $ilCtrl->redirect($this, "editDownloadingSettings");
246  }
247 
251  public function editWebDAVSettings()
252  {
253  global $rbacsystem, $ilErr, $ilTabs;
254  global $tpl, $ilCtrl, $lng, $tree, $settings;
255 
256 
257  $this->tabs_gui->setTabActive('webdav');
258 
259  if (! $rbacsystem->checkAccess("visible,read",$this->object->getRefId()))
260  {
261  $ilErr->raiseError($lng->txt("no_permission"),$ilErr->WARNING);
262  }
263 
264  require_once("./Services/Form/classes/class.ilPropertyFormGUI.php");
265  require_once("./Services/Form/classes/class.ilCheckboxInputGUI.php");
266  require_once("./Services/Form/classes/class.ilRadioGroupInputGUI.php");
267  require_once("./Services/Form/classes/class.ilRadioOption.php");
268  require_once("./Services/Form/classes/class.ilTextAreaInputGUI.php");
269  require_once("./Services/WebDAV/classes/class.ilDAVServer.php");
270 
271  $form = new ilPropertyFormGUI();
272  $form->setFormAction($ilCtrl->getFormAction($this));
273  $form->setTitle($lng->txt("settings"));
274 
275  // Enable webdav
276  $ilDAVServer = ilDAVServer::getInstance();
277  $isPearAuthHTTPInstalled = @include_once("Auth/HTTP.php");
278  $cb_prop = new ilCheckboxInputGUI($lng->txt("enable_webdav"), "enable_webdav");
279  $cb_prop->setValue('1');
280  $cb_prop->setChecked($this->object->isWebdavEnabled() && $isPearAuthHTTPInstalled);
281  $cb_prop->setDisabled(! $isPearAuthHTTPInstalled);
282  $cb_prop->setInfo($isPearAuthHTTPInstalled ?
283  sprintf($lng->txt('enable_webdav_info'),$ilDAVServer->getMountURI($tree->getRootId(),0,null,null,true)) :
284  $lng->txt('webdav_pear_auth_http_needed')
285  );
286  $form->addItem($cb_prop);
287 
288  // Webdav help text
289  if ($isPearAuthHTTPInstalled)
290  {
291  $rgi_prop = new ilRadioGroupInputGUI($lng->txt('webfolder_instructions'), 'custom_webfolder_instructions_choice');
292  $rgi_prop->addOption(new ilRadioOption($lng->txt('use_default_instructions'), 'default'));
293  $rgi_prop->addOption(new ilRadioOption($lng->txt('use_customized_instructions'), 'custom'));
294  $rgi_prop->setValue($this->object->isCustomWebfolderInstructionsEnabled() ? 'custom':'default');
295  $rgi_prop->setDisabled(! $isPearAuthHTTPInstalled);
296  $form->addItem($rgi_prop);
297  $tai_prop = new ilTextAreaInputGUI('', 'custom_webfolder_instructions');
298  $tai_prop->setValue($this->object->getCustomWebfolderInstructions());
299  $tai_prop->setInfo($lng->txt("webfolder_instructions_info"));
300  $tai_prop->setCols(80);
301  $tai_prop->setRows(20);
302  $tai_prop->setDisabled(! $isPearAuthHTTPInstalled);
303  $form->addItem($tai_prop);
304  }
305 
306  // command buttons
307  $form->addCommandButton('saveWebDAVSettings', $lng->txt('save'));
308  $form->addCommandButton('view', $lng->txt('cancel'));
309 
310  $tpl->setContent($form->getHTML());
311  }
312 
316  public function saveWebDAVSettings()
317  {
318  global $rbacsystem, $ilErr, $ilCtrl, $lng;
319 
320  if (! $rbacsystem->checkAccess("write",$this->object->getRefId()))
321  {
322  $ilErr->raiseError($lng->txt("no_permission"),$ilErr->WARNING);
323  }
324 
325  $this->object->setWebdavEnabled($_POST['enable_webdav'] == '1');
326 // $this->object->setWebdavActionsVisible($_POST['webdav_actions_visible'] == '1');
327  $this->object->setCustomWebfolderInstructionsEnabled($_POST['custom_webfolder_instructions_choice']=='custom');
328  $this->object->setCustomWebfolderInstructions(ilUtil::stripSlashes($_POST['custom_webfolder_instructions'], false));
329  $this->object->update();
330 
331  ilUtil::sendInfo($lng->txt('settings_saved'),true);
332  $ilCtrl->redirect($this, "editWebDAVSettings");
333  }
334 
339  {
340  parent::setTitleAndDescription();
341  $this->tpl->setDescription($this->object->getDescription());
342  }
343 
344 
345  // DISK QUOTA --------------------------------------------------------------
349  function addDiskQuotaSubtabs($a_active_subtab)
350  {
351  global $ilCtrl, $ilTabs;
352 
353  include_once("./Services/COPage/classes/class.ilPageEditorSettings.php");
354 
355  $ilTabs->addSubTabTarget("settings",
356  $ilCtrl->getLinkTarget($this, "editDiskQuotaSettings"),
357  array("editDiskQuotaSettings"));
358 
359  require_once 'Services/WebDAV/classes/class.ilDiskQuotaActivationChecker.php';
361  {
362  $ilTabs->addSubTabTarget("disk_quota_report",
363  $ilCtrl->getLinkTarget($this, "viewDiskQuotaReport"),
364  array("viewDiskQuotaReport"));
365  }
366 
367  $ilTabs->addSubTabTarget("disk_quota_reminder_mail",
368  $ilCtrl->getLinkTarget($this, "editDiskQuotaMailTemplate"),
369  array("editDiskQuotaMailTemplate"));
370 
371  $ilTabs->setSubTabActive($a_active_subtab);
372  }
373 
374 
378  public function editDiskQuotaSettings()
379  {
380  global $rbacsystem, $ilErr, $ilSetting, $tpl, $lng, $ilCtrl;
381 
382 
383  if (! $rbacsystem->checkAccess("visible,read",$this->object->getRefId()))
384  {
385  $ilErr->raiseError($lng->txt("no_permission"),$ilErr->WARNING);
386  }
387 
388  $this->tabs_gui->setTabActive('disk_quota');
389  $this->addDiskQuotaSubtabs('settings');
390 
391  require_once("./Services/Form/classes/class.ilPropertyFormGUI.php");
392  require_once("./Services/Form/classes/class.ilCheckboxInputGUI.php");
393  require_once("./Services/Form/classes/class.ilRadioGroupInputGUI.php");
394  require_once("./Services/Form/classes/class.ilRadioOption.php");
395  require_once("./Services/Form/classes/class.ilTextAreaInputGUI.php");
396  require_once("./Services/WebDAV/classes/class.ilDAVServer.php");
397 
398  $lng->loadLanguageModule("file");
399 
400  $form = new ilPropertyFormGUI();
401  $form->setFormAction($ilCtrl->getFormAction($this));
402  $form->setTitle($lng->txt("settings"));
403 
404  include_once "Services/Administration/classes/class.ilAdministrationSettingsFormHandler.php";
407  $form,
408  $this
409  );
410 
411  /*
412  // command buttons
413  $form->addCommandButton('saveDiskQuotaSettings', $lng->txt('save'));
414  $form->addCommandButton('editDiskQuotaSettings', $lng->txt('cancel'));
415  */
416 
417  $tpl->setContent($form->getHTML());
418  }
419 
423  public function saveDiskQuotaSettings()
424  {
425  global $rbacsystem, $ilErr, $ilCtrl, $lng;
426 
427  if (! $rbacsystem->checkAccess("write",$this->object->getRefId()))
428  {
429  $ilErr->raiseError($lng->txt("no_permission"),$ilErr->WARNING);
430  }
431 
432  // ilUtil::sendInfo($lng->txt('settings_saved'),true);
433  $ilCtrl->redirect($this, "editDiskQuotaSettings");
434  }
435 
440  public function viewDiskQuotaReport()
441  {
442  global $rbacsystem, $ilErr, $ilSetting, $lng;
443 
444  if (! $rbacsystem->checkAccess("visible,read",$this->object->getRefId()))
445  {
446  $ilErr->raiseError($lng->txt("no_permission"),$ilErr->WARNING);
447  }
448 
449  $this->tabs_gui->setTabActive('disk_quota');
450  $this->addDiskQuotaSubtabs('disk_quota_report');
451 
452  // nothing to do if disk quota is not active
453  require_once 'Services/WebDAV/classes/class.ilDiskQuotaActivationChecker.php';
455  {
456  return;
457  }
458 
459  // get the form
460  $this->tpl->addBlockfile('ADM_CONTENT','adm_content','tpl.disk_quota_report.html',
461  "Services/WebDAV");
462 
463  // get the date of the last update
464  require_once("./Services/WebDAV/classes/class.ilDiskQuotaChecker.php");
466  if ($last_update == null)
467  {
468  // nothing to do if disk usage report has not been run
469  $this->tpl->setVariable('LAST_UPDATE_TEXT',$lng->txt('disk_quota_report_not_run_yet'));
470  return;
471  }
472  else
473  {
474  $this->tpl->setVariable('LAST_UPDATE_TEXT',$lng->txt('last_update').': '.ilFormat::formatDate($last_update,'datetime',true));
475  }
476 
477  // Filter
478  $_SESSION['quota_usage_filter'] = isset($_POST['usage_filter']) ? $_POST['usage_filter'] : $_SESSION['quota_usage_filter'];
479  if ($_SESSION['quota_usage_filter'] == 0)
480  {
481  $_SESSION['quota_usage_filter'] = 4;
482  }
483  $_SESSION['quota_access_filter'] = isset($_POST['access_filter']) ? $_POST['access_filter'] : $_SESSION['quota_access_filter'];
484  if ($_SESSION['quota_access_filter'] == 0)
485  {
486  $_SESSION['quota_access_filter'] = 1;
487  }
488  $usage_action[1] = $lng->txt('all_users');
489  $usage_action[2] = $lng->txt('filter_users_without_disk_usage');
490  $usage_action[3] = $lng->txt('filter_users_with_disk_usage');
491  $usage_action[4] = $lng->txt('filter_users_with_exceeded_disk_quota');
492  $access_action[1] = $lng->txt('all_users');
493  $access_action[2] = $lng->txt('filter_users_with_access');
494  $access_action[3] = $lng->txt('filter_users_without_access');
495 
496  $select_usage_filter = ilUtil::formSelect($_SESSION['quota_usage_filter'],"usage_filter",$usage_action,false,true);
497  $select_access_filter = ilUtil::formSelect($_SESSION['quota_access_filter'],"access_filter",$access_action,false,true);
498 
499  $this->tpl->setCurrentBlock("filter");
500  $this->tpl->setVariable("FILTER_TXT_FILTER",$lng->txt('filter'));
501  $this->tpl->setVariable("SELECT_USAGE_FILTER",$select_usage_filter);
502  $this->tpl->setVariable("SELECT_ACCESS_FILTER",$select_access_filter);
503  $this->tpl->setVariable("FILTER_ACTION",$this->ctrl->getLinkTarget($this, 'viewDiskQuotaReport'));
504  $this->tpl->setVariable("FILTER_NAME",'view');
505  $this->tpl->setVariable("FILTER_VALUE",$lng->txt('apply_filter'));
506  $this->tpl->parseCurrentBlock();
507 
508  // load templates for table
509  $a_tpl = new ilTemplate('tpl.table.html',true,true);
510  $a_tpl->addBlockfile("TBL_CONTENT", "tbl_content", "tpl.obj_tbl_rows.html");
511 
512  // create table
513  require_once './Services/Table/classes/class.ilTableGUI.php';
514  $tbl = new ilTableGUI(0, false);
515 
516  // title & header columns
517  $header_vars = array('login','firstname','lastname','email','access_until','last_login','disk_quota','disk_usage', 'last_reminder');
518  $tbl->setHeaderNames(
519  array(
520  $lng->txt('login'),
521  $lng->txt('firstname'),
522  $lng->txt('lastname'),
523  $lng->txt('email'),
524  $lng->txt('access_until'),
525  $lng->txt('last_login'),
526  $lng->txt('disk_quota'),
527  $lng->txt('disk_usage'),
528  $lng->txt('last_reminder')
529  )
530  );
531  $tbl->setHeaderVars(
532  $header_vars,
533  $this->ctrl->getParameterArray($this,'viewDiskQuotaReport',false)
534  );
535 
536  $tbl->enable("numinfo_header");
537  $tbl->setFormName("cmd");
538  $tbl->setSelectAllCheckbox("id");
539 
540  // sorting
541  $tbl->setOrderColumn($_GET["sort_by"]);
542  $tbl->setOrderDirection($_GET["sort_order"]);
543 
544  // fetch the data
546  $_SESSION['quota_usage_filter'],
547  $_SESSION['quota_access_filter'],
548  $header_vars[$tbl->getOrderColumn()], $tbl->getOrderDirection());
549 
550  // paging
551  $tbl->setLimit($_GET["limit"]);
552  $tbl->setOffset($_GET["offset"]);
553  $tbl->setMaxCount(count($data));
554 
555  // footer
556  $tbl->setFooter("tblfooter",$lng->txt("previous"),$lng->txt("next"));
557 
558  // render table
559  $tbl->setTemplate($a_tpl);
560 
561  // render rows
562  $count = 0;
563  for ($i = $tbl->getOffset(); $i < count($data) && $i < $tbl->getOffset() + $tbl->getLimit(); $i++)
564  {
565  $row = $data[$i];
566 
567  // build columns
568  foreach ($header_vars as $key)
569  {
570  switch ($key)
571  {
572  case 'login' :
573  //build link
574  $this->ctrl->setParameterByClass("ilobjusergui", "ref_id", "7");
575  $this->ctrl->setParameterByClass("ilobjusergui", "obj_id", $row["usr_id"]);
576  $link = $this->ctrl->getLinkTargetByClass("ilobjusergui", "view");
577  $tbl_content_cell = '<a href="'.$link.'">'.htmlspecialchars($row[$key]).'</a>';
578  break;
579  case 'disk_quota' :
580  if ($row['role_id'] == SYSTEM_ROLE_ID)
581  {
582  $tbl_content_cell = "<span class=\"smallgreen\">".$lng->txt('access_unlimited').'</span>';
583  }
584  else
585  {
586  $tbl_content_cell = ilFormat::formatSize($row[$key],'short');
587  }
588  break;
589  case 'disk_usage' :
590  if ($row['last_update'] == null)
591  {
592  $tbl_content_cell = $lng->txt('unknown');
593  }
594  else if ($row['disk_usage'] > $row['disk_quota'])
595  {
596  $tbl_content_cell = "<span class=\"smallred\">".ilFormat::formatSize($row[$key],'short').'</span>';
597  }
598  else
599  {
600  $tbl_content_cell = ilFormat::formatSize($row[$key],'short');
601  }
602  break;
603  case 'access_until' :
604  if (! $row['active'])
605  {
606  $tbl_content_cell = "<span class=\"smallred\">".$lng->txt('inactive').'</span>';
607  }
608  else if ($row['time_limit_unlimited'])
609  {
610  $tbl_content_cell = "<span class=\"smallgreen\">".$lng->txt('access_unlimited').'</span>';
611  }
612  else if ($row['expired'])
613  {
614  $tbl_content_cell = "<span class=\"smallred\">".$lng->txt('access_expired').'</span>';
615  }
616  else
617  {
618  $tbl_content_cell = ilFormat::formatDate($row[$key]);
619  }
620  break;
621  case 'last_login' :
622  case 'last_reminder' :
623  if ($row[$key] == null)
624  {
625  $tbl_content_cell = $lng->txt('no_date');
626  }
627  else
628  {
629  $tbl_content_cell = ilFormat::formatDate($row[$key]);
630  }
631  break;
632  default :
633  $tbl_content_cell = htmlspecialchars($row[$key]);
634  }
635  /*
636  if (is_array($tbl_content_cell))
637  {
638  $tbl->tpl->setCurrentBlock("tbl_cell_subtitle");
639  $tbl->tpl->setVariable("TBL_CELL_SUBTITLE",$tbl_content_cell[1]);
640  $tbl->tpl->parseCurrentBlock();
641  $tbl_content_cell = "<b>".$tbl_content_cell[0]."</b>";
642  }*/
643 
644  $tbl->tpl->setCurrentBlock("tbl_content_cell");
645  $tbl->tpl->setVariable("TBL_CONTENT_CELL",$tbl_content_cell);
646 
647  $tbl->tpl->parseCurrentBlock();
648  }
649 
650  $tbl->tpl->setCurrentBlock("tbl_content_row");
651  $rowcolor = ilUtil::switchColor($count,"tblrow1","tblrow2");
652  $tbl->tpl->setVariable("ROWCOLOR", $rowcolor);
653  $tbl->tpl->parseCurrentBlock();
654 
655  $count++;
656  }
657  $tbl->render();
658 
659  // Add table to page
660  $this->tpl->setVariable("USER_TABLE",$a_tpl->get());
661  }
662 
663  protected function initDiskQuotaMailTemplateForm()
664  {
665  global $lng;
666 
667  $lng->loadLanguageModule("meta");
668  $lng->loadLanguageModule("mail");
669 
670  include_once "Services/Form/classes/class.ilPropertyFormGUI.php";
671  $form = new ilPropertyFormGUI();
672  $form->setFormAction($this->ctrl->getFormAction($this));
673 
674  $form->setTitle($lng->txt("disk_quota_reminder_mail"));
675  $form->setDescription($lng->txt("disk_quota_reminder_mail_desc"));
676 
677  foreach($lng->getInstalledLanguages() as $lang_key)
678  {
679  $lang_def = ($lang_key == $lng->getDefaultLanguage())
680  ? " (".$lng->txt("default").")"
681  : "";
682 
683  $sec = new ilFormSectionHeaderGUI();
684  $sec->setTitle($lng->txt("meta_l_".$lang_key).$lang_def);
685  $form->addItem($sec);
686 
687  $subj = new ilTextInputGUI($lng->txt("subject"), "subject_".$lang_key);
688  $subj->setRequired(true);
689  $form->addItem($subj);
690 
691  $sal_g = new ilTextInputGUI($lng->txt("mail_salutation_general"), "sal_g_".$lang_key);
692  $sal_g->setRequired(true);
693  $form->addItem($sal_g);
694 
695  $sal_f = new ilTextInputGUI($lng->txt("mail_salutation_female"), "sal_f_".$lang_key);
696  $sal_f->setRequired(true);
697  $form->addItem($sal_f);
698 
699  $sal_m = new ilTextInputGUI($lng->txt("mail_salutation_male"), "sal_m_".$lang_key);
700  $sal_m->setRequired(true);
701  $form->addItem($sal_m);
702 
703  $body = new ilTextAreaInputGUI($lng->txt("message_content"), "body_".$lang_key);
704  $body->setRequired(true);
705  $body->setRows(10);
706  $form->addItem($body);
707 
708  // current values
709  $amail = $this->disk_quota_obj->_lookupReminderMailTemplate($lang_key);
710  $subj->setValue($amail["subject"]);
711  $sal_g->setValue($amail["sal_g"]);
712  $sal_f->setValue($amail["sal_f"]);
713  $sal_m->setValue($amail["sal_m"]);
714  $body->setValue($amail["body"]);
715  }
716 
717  $form->addCommandButton("saveDiskQuotaMailTemplate", $lng->txt("save"));
718  $form->addCommandButton("editDiskQuotaSettings", $lng->txt("cancel"));
719 
720  return $form;
721  }
722 
726  public function editDiskQuotaMailTemplate(ilPropertyFormGUI $a_form = null)
727  {
728  global $rbacsystem, $ilErr, $lng;
729 
730  if (! $rbacsystem->checkAccess("visible,read",$this->object->getRefId()))
731  {
732  $ilErr->raiseError($lng->txt("no_permission"),$ilErr->WARNING);
733  }
734 
735  $this->tabs_gui->setTabActive("disk_quota");
736  $this->addDiskQuotaSubtabs("disk_quota_reminder_mail");
737 
738  if(!$a_form)
739  {
740  $a_form = $this->initDiskQuotaMailTemplateForm();
741  }
742 
743  $tpl = new ilTemplate("tpl.disk_quota_reminder_mail.html", true, true, "Services/WebDAV");
744  $tpl->setVariable("TXT_USE_PLACEHOLDERS", $lng->txt("mail_nacc_use_placeholder"));
745  $tpl->setVariable("TXT_MAIL_SALUTATION", $lng->txt("mail_nacc_salutation"));
746  $tpl->setVariable("TXT_FIRST_NAME", $lng->txt("firstname"));
747  $tpl->setVariable("TXT_LAST_NAME", $lng->txt("lastname"));
748  $tpl->setVariable("TXT_EMAIL", $lng->txt("email"));
749  $tpl->setVariable("TXT_LOGIN", $lng->txt("mail_nacc_login"));
750  $tpl->setVariable("TXT_DISK_QUOTA", $lng->txt("disk_quota"));
751  $tpl->setVariable("TXT_DISK_USAGE", $lng->txt("disk_usage"));
752  $tpl->setVariable("TXT_DISK_USAGE_DETAILS", $lng->txt("disk_usage_details"));
753  $tpl->setVariable("TXT_ADMIN_MAIL", $lng->txt("mail_nacc_admin_mail"));
754  $tpl->setVariable("TXT_ILIAS_URL", $lng->txt("mail_nacc_ilias_url"));
755  $tpl->setVariable("TXT_CLIENT_NAME", $lng->txt("mail_nacc_client_name"));
756 
757  include_once "Services/UIComponent/Panel/classes/class.ilPanelGUI.php";
759  $legend->setHeadingStyle(ilPanelGUI::HEADING_STYLE_BLOCK);
760  $legend->setHeading($lng->txt("mail_nacc_use_placeholder"));
761  $legend->setBody($tpl->get());
762 
763  $this->tpl->setContent($a_form->getHTML().$legend->getHTML());
764  }
765 
767  {
768  global $lng;
769 
770  $form = $this->initDiskQuotaMailTemplateForm();
771  if($form->checkInput())
772  {
773  foreach($lng->getInstalledLanguages() as $lang_key)
774  {
775  $this->disk_quota_obj->_writeReminderMailTemplate(
776  $lang_key,
777  $form->getInput("subject_".$lang_key),
778  $form->getInput("sal_g_".$lang_key),
779  $form->getInput("sal_f_".$lang_key),
780  $form->getInput("sal_m_".$lang_key),
781  $form->getInput("body_".$lang_key)
782  );
783  }
784 
785  ilUtil::sendSuccess($this->lng->txt("msg_obj_modified"), true);
786  $this->ctrl->redirect($this, "editDiskQuotaMailTemplate");
787  }
788 
789  $form->setValuesByPost();
790  $this->editDiskQuotaMailTemplate($form);
791  }
792 
796  private function initUploadSettingsForm()
797  {
798  global $ilCtrl, $lng;
799 
800  require_once("./Services/Form/classes/class.ilPropertyFormGUI.php");
801  $form = new ilPropertyFormGUI();
802  $form->setFormAction($ilCtrl->getFormAction($this));
803  $form->setTitle($lng->txt("settings"));
804 
805  require_once("Services/FileUpload/classes/class.ilFileUploadSettings.php");
806 
807  // drag and drop file upload
808  $chk_enabled = new ilCheckboxInputGUI($lng->txt("enable_dnd_upload"), "enable_dnd_upload");
809  $chk_enabled->setValue('1');
810  $chk_enabled->setChecked(ilFileUploadSettings::isDragAndDropUploadEnabled());
811  $chk_enabled->setInfo($lng->txt('enable_dnd_upload_info'));
812  $form->addItem($chk_enabled);
813 
814  // drag and drop file upload in repository
815  $chk_repo = new ilCheckboxInputGUI($lng->txt("enable_repository_dnd_upload"), "enable_repository_dnd_upload");
816  $chk_repo->setValue('1');
818  $chk_repo->setInfo($lng->txt('enable_repository_dnd_upload_info'));
819  $chk_enabled->addSubItem($chk_repo);
820 
821  // concurrent uploads
822  $num_prop = new ilNumberInputGUI($lng->txt("concurrent_uploads"), "concurrent_uploads");
823  $num_prop->setDecimals(0);
824  $num_prop->setMinValue(1);
825  $num_prop->setMinvalueShouldBeGreater(false);
826  $num_prop->setMaxValue(ilFileUploadSettings::CONCURRENT_UPLOADS_MAX);
827  $num_prop->setMaxvalueShouldBeLess(false);
828  $num_prop->setMaxLength(5);
829  $num_prop->setSize(10);
830  $num_prop->setValue(ilFileUploadSettings::getConcurrentUploads());
831  $num_prop->setInfo($lng->txt('concurrent_uploads_info'));
832  $chk_enabled->addSubItem($num_prop);
833 
834  include_once("./Services/Utilities/classes/class.ilFileUtils.php");
835 
836  // default white list
837  $ne = new ilNonEditableValueGUI($this->lng->txt("file_suffix_default_white"), "");
839  $ne->setInfo($this->lng->txt("file_suffix_default_white_info"));
840  $form->addItem($ne);
841 
842  // file suffix custom black list
843  $ti = new ilTextInputGUI($this->lng->txt("file_suffix_custom_black"), "suffix_repl_additional");
844  $ti->setMaxLength(200);
845  $ti->setSize(40);
846  $ti->setInfo($this->lng->txt("file_suffix_custom_black_info"));
847  $form->addItem($ti);
848 
849  // file suffix custom white list
850  $ti = new ilTextInputGUI($this->lng->txt("file_suffix_custom_white"), "suffix_custom_white_list");
851  $ti->setMaxLength(200);
852  $ti->setSize(40);
853  $ti->setInfo($this->lng->txt("file_suffix_custom_white_info"));
854  $form->addItem($ti);
855 
856  // resulting overall white list
857  $ne = new ilNonEditableValueGUI($this->lng->txt("file_suffix_overall_white"), "");
858  $ne->setValue(implode(", ", ilFileUtils::getValidExtensions()));
859  $ne->setInfo($this->lng->txt("file_suffix_overall_white_info"));
860  $form->addItem($ne);
861 
862  // command buttons
863  $form->addCommandButton('saveUploadSettings', $lng->txt('save'));
864  $form->addCommandButton('view', $lng->txt('cancel'));
865 
866  return $form;
867  }
868 
872  public function editUploadSettings()
873  {
874  global $rbacsystem, $ilErr, $tpl, $lng, $ilSetting;
875 
876  $this->tabs_gui->setTabActive('upload_settings');
877 
878  if (!$rbacsystem->checkAccess("visible,read", $this->object->getRefId()))
879  {
880  $ilErr->raiseError($lng->txt("no_permission"),$ilErr->WARNING);
881  }
882 
883  // get form
884  $form = $this->initUploadSettingsForm();
885 
886  require_once("Services/FileUpload/classes/class.ilFileUploadSettings.php");
887 
888  // set current values
889  $val = array();
890  $val["enable_dnd_upload"] = ilFileUploadSettings::isDragAndDropUploadEnabled();
891  $val["enable_repository_dnd_upload"] = ilFileUploadSettings::isRepositoryDragAndDropUploadEnabled();
892  $val["concurrent_uploads"] = ilFileUploadSettings::getConcurrentUploads();
893  $val["suffix_repl_additional"] = $ilSetting->get("suffix_repl_additional");
894  $val["suffix_custom_white_list"] = $ilSetting->get("suffix_custom_white_list");
895  $form->setValuesByArray($val);
896 
897  // set content
898  $tpl->setContent($form->getHTML());
899  }
900 
904  public function saveUploadSettings()
905  {
906  global $rbacsystem, $ilErr, $ilCtrl, $lng, $tpl, $ilSetting;
907 
908  if (!$rbacsystem->checkAccess("write",$this->object->getRefId()))
909  {
910  $ilErr->raiseError($lng->txt("no_permission"),$ilErr->WARNING);
911  }
912 
913  // get form
914  $form = $this->initUploadSettingsForm();
915  if ($form->checkInput())
916  {
917  require_once("Services/FileUpload/classes/class.ilFileUploadSettings.php");
919  ilFileUploadSettings::setRepositoryDragAndDropUploadEnabled($_POST["enable_repository_dnd_upload"] == 1);
920  ilFileUploadSettings::setConcurrentUploads($_POST["concurrent_uploads"]);
921 
922  // file suffic replacements
923  $ilSetting->set("suffix_repl_additional", $_POST["suffix_repl_additional"]);
924  $ilSetting->set("suffix_custom_white_list", $_POST["suffix_custom_white_list"]);
925 
926  ilUtil::sendSuccess($lng->txt('settings_saved'), true);
927  $ilCtrl->redirect($this, "editUploadSettings");
928  }
929  else
930  {
931  $form->setValuesByPost();
932  $tpl->setContent($form->getHTML());
933  }
934  }
935 
939  private function initPreviewSettingsForm()
940  {
941  global $ilCtrl, $lng;
942 
943  require_once("./Services/Form/classes/class.ilPropertyFormGUI.php");
944  $form = new ilPropertyFormGUI();
945  $form->setFormAction($ilCtrl->getFormAction($this));
946  $form->setTitle($lng->txt("settings"));
947 
948  require_once("Services/Preview/classes/class.ilPreviewSettings.php");
949 
950  // drag and drop file upload in repository
951  $chk_prop = new ilCheckboxInputGUI($lng->txt("enable_preview"), "enable_preview");
952  $chk_prop->setValue('1');
953  $chk_prop->setChecked(ilPreviewSettings::isPreviewEnabled());
954  $chk_prop->setInfo($lng->txt('enable_preview_info'));
955  $form->addItem($chk_prop);
956 
957  $num_prop = new ilNumberInputGUI($lng->txt("max_previews_per_object"), "max_previews_per_object");
958  $num_prop->setDecimals(0);
959  $num_prop->setMinValue(1);
960  $num_prop->setMinvalueShouldBeGreater(false);
961  $num_prop->setMaxValue(ilPreviewSettings::MAX_PREVIEWS_MAX);
962  $num_prop->setMaxvalueShouldBeLess(false);
963  $num_prop->setMaxLength(5);
964  $num_prop->setSize(10);
965  $num_prop->setValue(ilPreviewSettings::getMaximumPreviews());
966  $num_prop->setInfo($lng->txt('max_previews_per_object_info'));
967  $form->addItem($num_prop);
968 
969  // command buttons
970  $form->addCommandButton('savePreviewSettings', $lng->txt('save'));
971  $form->addCommandButton('view', $lng->txt('cancel'));
972 
973  return $form;
974  }
975 
979  public function editPreviewSettings()
980  {
981  global $rbacsystem, $ilErr, $tpl, $lng;
982 
983  $this->tabs_gui->setTabActive('preview_settings');
984 
985  if (!$rbacsystem->checkAccess("visible,read", $this->object->getRefId()))
986  {
987  $ilErr->raiseError($lng->txt("no_permission"),$ilErr->WARNING);
988  }
989 
990  // set warning if ghostscript not installed
991  include_once("./Services/Preview/classes/class.ilGhostscriptRenderer.php");
993  {
994  ilUtil::sendInfo($lng->txt("ghostscript_not_configured"));
995  }
996 
997  // get form
998  $form = $this->initPreviewSettingsForm();
999 
1000  // set current values
1001  require_once("Services/Preview/classes/class.ilPreviewSettings.php");
1002 
1003  $val = array();
1004  $val["enable_preview"] = ilPreviewSettings::isPreviewEnabled();
1005  $val["max_previews_per_object"] = ilPreviewSettings::getMaximumPreviews();
1006  $form->setValuesByArray($val);
1007 
1008  $html = $form->getHTML();
1009 
1010  // build renderer HTML
1011  require_once("Services/Preview/classes/class.ilRendererFactory.php");
1012  require_once("Services/Preview/classes/class.ilRendererTableGUI.php");
1013 
1014  $renderers = ilRendererFactory::getRenderers();
1015 
1016  $table = new ilRendererTableGUI($this, array("editPreviewSettings", "view"));
1017  $table->setMaxCount(sizeof($renderers));
1018  $table->setData($renderers);
1019 
1020  $html .= "<br/>" . $table->getHTML();
1021 
1022  // set content
1023  $tpl->setContent($html);
1024  }
1025 
1029  public function savePreviewSettings()
1030  {
1031  global $rbacsystem, $ilErr, $ilCtrl, $tpl, $lng;
1032 
1033  $this->tabs_gui->setTabActive('preview_settings');
1034 
1035  if (!$rbacsystem->checkAccess("write",$this->object->getRefId()))
1036  {
1037  $ilErr->raiseError($lng->txt("no_permission"),$ilErr->WARNING);
1038  }
1039 
1040  // get form
1041  $form = $this->initPreviewSettingsForm();
1042  if ($form->checkInput())
1043  {
1044  require_once("Services/Preview/classes/class.ilPreviewSettings.php");
1045  ilPreviewSettings::setPreviewEnabled($_POST["enable_preview"] == 1);
1046  ilPreviewSettings::setMaximumPreviews($_POST["max_previews_per_object"]);
1047 
1048  ilUtil::sendSuccess($lng->txt('settings_saved'), true);
1049  $ilCtrl->redirect($this, "editPreviewSettings");
1050  }
1051  else
1052  {
1053  $form->setValuesByPost();
1054  $tpl->setContent($form->getHTML());
1055  }
1056  }
1057 
1058  public function addToExternalSettingsForm($a_form_id)
1059  {
1060  global $ilSetting;
1061 
1062  switch($a_form_id)
1063  {
1065 
1066  $fields = array('file_suffix_repl' => $ilSetting->get("suffix_repl_additional"));
1067 
1068  return array(array("editUploadSettings", $fields));
1069  }
1070  }
1071 }
1072 
1073 ?>
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
This class represents an option in a radio group.
static getRenderers()
Gets an array containing all available preview renderers.
ILIAS Setting Class.
static setDragAndDropUploadEnabled($newValue)
Sets whether drag and drop file upload is enabled.
static setMaximumPreviews($a_value)
Sets the maximum number of preview pictures per object.
static setRepositoryDragAndDropUploadEnabled($newValue)
Sets whether drag and drop file upload in the repository is enabled.
$_POST['username']
Definition: cron.php:12
editDiskQuotaMailTemplate(ilPropertyFormGUI $a_form=null)
Edit disk quota settings.
$_SESSION["AccountId"]
This class represents a property form user interface.
Displays an overview of all loaded preview renderers.
$_GET["client_id"]
$tbl
Definition: example_048.php:81
$legend
static isGhostscriptInstalled()
Determines whether Ghostscript is installed.
This class represents a section header in a property form.
static getConcurrentUploads()
Gets the number of files that can be uploaded at the same time.
$cmd
Definition: sahs_server.php:35
setValue($a_value)
Set Value.
This class represents a checkbox property in a property form.
saveDiskQuotaSettings()
Save disk quota settings.
ilObjectGUI($a_data, $a_id=0, $a_call_by_reference=true, $a_prepare_output=true)
Constructor public.
ilObjFileAccessSettingsGUI($a_data, $a_id, $a_call_by_reference)
Constructor public.
Class ilTableGUI.
static setConcurrentUploads($newValue)
Sets the number of files that can be uploaded at the same time.
static addFieldsToForm($a_form_id, ilPropertyFormGUI $a_form, ilObjectGUI $a_parent_gui)
global $ilCtrl
Definition: ilias.php:18
setDecimals($a_decimals)
Set Decimal Places.
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
initPreviewSettingsForm()
Initializes the preview settings form.
static isRepositoryDragAndDropUploadEnabled()
Gets whether drag and drop file upload in the repository is enabled.
static _lookupDiskUsageReportLastUpdate()
Returns the SQL datetime of the last update of the disk usage report.
static getDefaultValidExtensionWhiteList()
Valid extensions.
This class represents a property in a property form.
addOption($a_option)
Add Option.
viewDiskQuotaReport()
The disk quota report list shows user accounts, their disk quota and their disk usage, as well as the last time a reminder was sent.
This class represents a number property in a property form.
static formSelect($selected, $varname, $options, $multiple=false, $direct_text=false, $size="0", $style_class="", $attribs="", $disabled=false)
Builds a select form field with options and shows the selected option first.
Class ilObjectGUI Basic methods of all Output classes.
setValue($a_value)
Set Value.
special template class to simplify handling of ITX/PEAR
This class represents a text property in a property form.
setMaxLength($a_maxlength)
Set Max Length.
editDiskQuotaSettings()
Edit disk quota settings.
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
static getValidExtensions()
static getInstance()
Get singelton iunstance.
static getMaximumPreviews()
Gets the maximum number of preview pictures per object.
static isPreviewEnabled()
Gets whether the preview functionality is enabled.
prepareOutput()
prepare output
static setPreviewEnabled($a_value)
Sets whether the preview functionality is enabled.
initUploadSettingsForm()
Initializes the upload settings form.
static getInstance()
Get instance.
formatDate($a_date, $a_mode="datetime", $a_omit_seconds=false, $a_relative=TRUE)
format a date according to the user language shortcut for Format::fmtDateTime public ...
This class represents a non editable value in a property form.
global $ilSetting
Definition: privfeed.php:40
static formatSize($size, $a_mode='short', $a_lng=null)
Returns the specified file size value in a human friendly form.
This class represents a text area property in a property form.
static switchColor($a_num, $a_css1, $a_css2)
switches style sheets for each even $a_num (used for changing colors of different result rows) ...
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
$GLOBALS['PHPCAS_CLIENT']
This global variable is used by the interface class phpCAS.
Definition: CAS.php:276
const HEADING_STYLE_BLOCK
File manager settings.
setTitleAndDescription()
called by prepare output
addDiskQuotaSubtabs($a_active_subtab)
Add disk quota subtabs.
$html
Definition: example_001.php:87
setRequired($a_required)
Set Required.
static isDragAndDropUploadEnabled()
Gets whether drag and drop file upload is enabled.
static _fetchDiskQuotaReport($a_usage_filter=3, $a_access_filter=1, $a_order_column='disk_usage', $a_order_by='desc')
Reads disk quota/disk usage report of the user accounts.