ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
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
4require_once 'Services/Object/classes/class.ilObject2GUI.php';
5require_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}
An exception for terminatinating execution or to throw for unit testing.
error($a_errmsg)
set error message @access public
This class represents a checkbox property in a property form.
static setUserConfig($userid, array $configArray)
Sets the configuration for all given configurations.
Class ilObjContactAdministrationGUI.
__construct($a_id=0, $a_id_type=self::REPOSITORY_NODE_ID, $a_parent_node_id=0)
getType()
{Functions that must be overwritten.}
showConfigurationForm(ilPropertyFormGUI $form=null)
getAdminTabs()
{administration tabs show only permissions and trash folder}
New implementation of ilObjectGUI.
prepareOutput($a_show_subobjects=true)
prepare output
checkPermissionBool($a_perm, $a_cmd="", $a_type="", $a_node_id=null)
Check permission.
checkPermission($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission and redirect on error.
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
This class represents a property form user interface.
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
$type
$DIC
Definition: xapitoken.php:46