ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
All Data Structures Namespaces Files Functions Variables Modules Pages
class.ilObjContactAdministrationGUI.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2015 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
4 require_once 'Services/Object/classes/class.ilObject2GUI.php';
5 require_once 'Services/Contact/BuddySystem/classes/class.ilBuddySystem.php';
6 
14 {
15 
19  protected $dic;
23  protected $rbacsystem;
27  protected $error;
31  public $lng;
32 
38  public function __construct($a_id = 0, $a_id_type = self::REPOSITORY_NODE_ID, $a_parent_node_id = 0)
39  {
40  global $DIC, $ilErr;
41 
42  $this->dic = $DIC;
43  $this->rbacsystem = $this->dic->rbac()->system();
44  $this->lng = $this->dic->language();
45  $this->error = $ilErr;
46  parent::__construct($a_id, $a_id_type, $a_parent_node_id);
47  $this->lng->loadLanguageModule('buddysystem');
48  }
49 
53  public function getType()
54  {
55  return 'cadm';
56  }
57 
61  public function getAdminTabs()
62  {
63  if ($this->checkPermissionBool('read')) {
64  $this->tabs_gui->addTarget('settings', $this->ctrl->getLinkTarget($this, 'showConfigurationForm'), array('', 'view', 'showConfigurationForm', 'saveConfigurationForm'), __CLASS__);
65  }
66 
67  if ($this->checkPermissionBool('edit_permission')) {
68  $this->tabs_gui->addTarget('perm_settings', $this->ctrl->getLinkTargetByClass(array(get_class($this), 'ilpermissiongui'), 'perm'), array('perm', 'info', 'owner'), 'ilpermissiongui');
69  }
70  }
71 
75  public function executeCommand()
76  {
77  $next_class = $this->ctrl->getNextClass($this);
78  $cmd = $this->ctrl->getCmd();
79  $this->prepareOutput();
80 
81  switch ($next_class) {
82  case 'ilpermissiongui':
83  require_once 'Services/AccessControl/classes/class.ilPermissionGUI.php';
84  $perm_gui = new ilPermissionGUI($this);
85  $this->ctrl->forwardCommand($perm_gui);
86  break;
87 
88  default:
89  if ($cmd == '' || $cmd == 'view') {
90  $cmd = 'showConfigurationForm';
91  }
92  $this->$cmd();
93  break;
94  }
95  }
96 
100  protected function getConfigurationForm()
101  {
102  require_once 'Services/Form/classes/class.ilPropertyFormGUI.php';
103  $form = new ilPropertyFormGUI();
104  $form->setTitle($this->lng->txt('settings'));
105  $form->setFormAction($this->ctrl->getFormAction($this, 'saveConfigurationForm'));
106 
107  $enabled = new ilCheckboxInputGUI($this->lng->txt('buddy_enable'), 'enable');
108  $enabled->setValue(1);
109  $enabled->setInfo($this->lng->txt('buddy_enable_info'));
110  $enabled->setDisabled(!$this->checkPermissionBool('write'));
111 
112  $notification = new ilCheckboxInputGUI($this->lng->txt('buddy_use_osd'), 'use_osd');
113  $notification->setValue(1);
114  $notification->setInfo($this->lng->txt('buddy_use_osd_info'));
115  $notification->setDisabled(!$this->checkPermissionBool('write'));
116  $enabled->addSubItem($notification);
117 
118  $form->addItem($enabled);
119 
120  if ($this->checkPermissionBool('write')) {
121  $form->addCommandButton('saveConfigurationForm', $this->lng->txt('save'));
122  }
123 
124  return $form;
125  }
126 
130  protected function showConfigurationForm(ilPropertyFormGUI $form = null)
131  {
132  if (!$this->rbacsystem->checkAccess("visible,read", $this->object->getRefId())) {
133  $this->error->raiseError($this->lng->txt("no_permission"), $this->error->WARNING);
134  }
135 
136  if (!($form instanceof ilPropertyFormGUI)) {
137  require_once 'Services/Notifications/classes/class.ilNotificationDatabaseHelper.php';
139 
140  $form = $this->getConfigurationForm();
141  $form->setValuesByArray(array(
142  'enable' => (bool) ilBuddySystem::getInstance()->getSetting('enabled', 0),
143  'use_osd' => isset($cfg['buddysystem_request']) && array_search('osd', $cfg['buddysystem_request']) !== false
144  ));
145  }
146 
147  $this->tpl->setContent($form->getHTML());
148  }
149 
153  protected function saveConfigurationForm()
154  {
155  $this->checkPermission('write');
156 
157  $form = $this->getConfigurationForm();
158  if (!$form->checkInput()) {
159  $form->setValuesByPost();
160  $this->showConfigurationForm($form);
161  return;
162  }
163 
164  ilBuddySystem::getInstance()->setSetting('enabled', (bool) $form->getInput('enable') ? 1 : 0);
165 
166  require_once 'Services/Notifications/classes/class.ilNotificationDatabaseHelper.php';
168 
169  $new_cfg = array();
170  foreach ($cfg as $type => $channels) {
171  $new_cfg[$type] = array();
172  foreach ($channels as $channel) {
173  $new_cfg[$type][$channel] = true;
174  }
175  }
176 
177  if (!isset($new_cfg['buddysystem_request']) || !is_array($new_cfg['buddysystem_request'])) {
178  $new_cfg['buddysystem_request'] = array();
179  }
180 
181  if ((bool) $form->getInput('use_osd') && !array_key_exists('osd', $new_cfg['buddysystem_request'])) {
182  $new_cfg['buddysystem_request']['osd'] = true;
183  } elseif (!(bool) $form->getInput('use_osd') && array_key_exists('osd', $new_cfg['buddysystem_request'])) {
184  $new_cfg['buddysystem_request']['osd'] = false;
185  }
186 
188 
189  ilUtil::sendSuccess($this->lng->txt('saved_successfully'), true);
190  $this->ctrl->redirect($this);
191  }
192 }
checkPermission($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
This class represents a property form user interface.
checkPermissionBool($a_perm, $a_cmd="", $a_type="", $a_node_id=null)
Check permission.
New implementation of ilObjectGUI.
$type
Class ilObjContactAdministrationGUI.
This class represents a checkbox property in a property form.
setValue($a_value)
Set Value.
__construct($a_id=0, $a_id_type=self::REPOSITORY_NODE_ID, $a_parent_node_id=0)
showConfigurationForm(ilPropertyFormGUI $form=null)
__construct(Container $dic, ilPlugin $plugin)
static setUserConfig($userid, array $configArray)
Sets the configuration for all given configurations.
$DIC
Definition: xapitoken.php:46
prepareOutput($a_show_subobjects=true)
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.