ILIAS  release_5-0 Revision 5.0.0-1144-gc4397b1f870
class.ilObjectCustomUserFieldsGUI.php
Go to the documentation of this file.
1<?php
2/*
3 +-----------------------------------------------------------------------------+
4 | ILIAS open source |
5 +-----------------------------------------------------------------------------+
6 | Copyright (c) 1998-2006 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*/
23include_once('Modules/Course/classes/Export/class.ilCourseDefinedFieldDefinition.php');
24include_once('Services/Membership/classes/class.ilMemberAgreement.php');
25
36{
37 const MODE_CREATE = 1;
38 const MODE_UPDATE = 2;
39
40 private $form = null;
41
42 private $lng;
43 private $tpl;
44 private $ctrl;
45 private $tabs_gui;
46
47 private $obj_id;
48 private $ref_id;
49
50 private $cdf;
51
59 public function __construct($a_obj_id)
60 {
61 global $lng,$tpl,$ilCtrl,$ilTabs;
62
63 $this->lng = $lng;
64 $this->lng->loadLanguageModule('ps');
65 $this->lng->loadLanguageModule(ilObject::_lookupType($a_obj_id));
66
67 $this->tpl = $tpl;
68 $this->ctrl = $ilCtrl;
69 $this->tabs_gui = $ilTabs;
70
71 $this->obj_id = $a_obj_id;
72
73 // Currently only supported for container objects
74 $refs = ilObject::_getAllReferences($this->obj_id);
75 $this->ref_id = end($refs);
76 }
77
84 public function executeCommand()
85 {
86 global $ilErr, $ilAccess, $lng;
87
88 if(!$ilAccess->checkAccess('write','',$this->ref_id))
89 {
90 $ilErr->raiseError($lng->txt('permission_denied'),$ilErr->WARNING);
91 }
92
93 $cmd = $this->ctrl->getCmd();
94
95 switch($next_class = $this->ctrl->getNextClass($this))
96 {
97 default:
98 if(!$cmd)
99 {
100 $cmd = 'show';
101 }
102 $this->$cmd();
103 break;
104 }
105 }
106
111 public function getObjId()
112 {
113 return $this->obj_id;
114 }
115
120 protected function show()
121 {
123 {
124 ilUtil::sendInfo($this->lng->txt('ps_cdf_warning_modify'));
125 }
126 $this->listFields();
127 }
128
133 protected function listFields()
134 {
135 global $ilToolbar;
136
137 $ilToolbar->addButton(
138 $this->lng->txt('ps_cdf_add_field'),
139 $this->ctrl->getLinkTarget($this,'addField')
140 );
141
142 include_once './Services/Membership/classes/class.ilObjectCustomUserFieldsTableGUI.php';
143 $table = new ilObjectCustomUserFieldsTableGUI($this,'listFields');
145 $this->tpl->setContent($table->getHTML());
146 }
147
152 protected function saveFields()
153 {
155 foreach($fields as $field_obj)
156 {
157 $field_obj->enableRequired((bool) isset($_POST['required'][$field_obj->getId()]));
158 $field_obj->update();
159 }
160
162 ilUtil::sendSuccess($this->lng->txt('settings_saved'));
163 $this->listFields();
164 return true;
165 }
166
171 protected function confirmDeleteFields()
172 {
173 if(!count($_POST['field_ids']))
174 {
175 ilUtil::sendFailure($this->lng->txt('ps_cdf_select_one'));
176 $this->listFields();
177 return false;
178 }
179 include_once './Services/Utilities/classes/class.ilConfirmationGUI.php';
180 $confirm = new ilConfirmationGUI();
181 $confirm->setFormAction($this->ctrl->getFormAction($this));
182 $confirm->setHeaderText($this->lng->txt('ps_cdf_delete_sure'));
183
184 foreach($_POST['field_ids'] as $field_id)
185 {
186 $tmp_field = new ilCourseDefinedFieldDefinition($this->getObjId(),$field_id);
187
188 $confirm->addItem('field_ids[]', $field_id, $tmp_field->getName());
189 }
190
191 $confirm->setConfirm($this->lng->txt('delete'), 'deleteFields');
192 $confirm->setCancel($this->lng->txt('cancel'), 'listFields');
193 $this->tpl->setContent($confirm->getHTML());
194 }
195
200 protected function deleteFields()
201 {
202 foreach((array) $_POST['field_ids'] as $field_id)
203 {
204 $tmp_field = new ilCourseDefinedFieldDefinition($this->obj_id,$field_id);
205 $tmp_field->delete();
206 }
207
209
210 ilUtil::sendSuccess($this->lng->txt('ps_cdf_deleted'));
211 $this->listFields();
212 return true;
213 }
214
219 protected function addField()
220 {
221 $this->initFieldForm(self::MODE_CREATE);
222
223 $this->form->getItemByPostVar('va')->setValues(array(''));
224
225 $this->tpl->setContent($this->form->getHTML());
226 }
227
232 protected function saveField()
233 {
234 $GLOBALS['ilLog']->write(__METHOD__.': '.print_r($_POST,true));
235
236 $this->initFieldForm(self::MODE_CREATE);
237 if($this->form->checkInput())
238 {
239 $udf = new ilCourseDefinedFieldDefinition($this->getObjId());
240 $udf->setName($this->form->getInput('na'));
241 $udf->setType($this->form->getInput('ty'));
242 $udf->setValues($udf->prepareValues($this->form->getInput('va')));
243 $udf->setValueOptions($this->form->getItemByPostVar('va')->getOpenAnswerIndexes()); // #14720
244 $udf->enableRequired($this->form->getInput('re'));
245 $udf->save();
246
247 ilUtil::sendSuccess($this->lng->txt('ps_cdf_added_field'));
248 $this->listFields();
249 return true;
250 }
251 // not valid
252 ilUtil::sendFailure($this->lng->txt('err_check_input'));
253 $this->form->setValuesByPost();
254 $this->tpl->setContent($this->form->getHTML());
255 return false;
256 }
257
263 protected function editField()
264 {
265 if(!$_REQUEST['field_id'])
266 {
267 $this->listFields();
268 return false;
269 }
270
271 $this->initFieldForm(self::MODE_UPDATE);
272
273 $udf = new ilCourseDefinedFieldDefinition($this->getObjId(),(int) $_REQUEST['field_id']);
274 $this->form->getItemByPostVar('na')->setValue($udf->getName());
275 $this->form->getItemByPostVar('ty')->setValue($udf->getType());
276 $this->form->getItemByPostVar('re')->setChecked($udf->isRequired());
277 $this->form->getItemByPostVar('va')->setValues($udf->getValues());
278 $this->form->getItemByPostVar('va')->setOpenAnswerIndexes($udf->getValueOptions());
279
280 $this->tpl->setContent($this->form->getHTML());
281 }
282
287 protected function updateField()
288 {
289 $GLOBALS['ilLog']->write(__METHOD__.': '.print_r($_POST,true));
290
291 $this->initFieldForm(self::MODE_UPDATE);
292
293 if($this->form->checkInput())
294 {
295 $udf = new ilCourseDefinedFieldDefinition($this->getObjId(),(int) $_REQUEST['field_id']);
296 $udf->setName($this->form->getInput('na'));
297 $udf->setType($this->form->getInput('ty'));
298 $prepared = $udf->prepareValues($this->form->getInput('va'));
299 $udf->setValues($prepared);
300 $udf->setValueOptions($this->form->getItemByPostVar('va')->getOpenAnswerIndexes());
301 $udf->enableRequired($this->form->getInput('re'));
302 $udf->update();
303
304 // Finally reset member agreements
306 ilUtil::sendSuccess($this->lng->txt('settings_saved'));
307 $this->listFields();
308 return true;
309 }
310
311 ilUtil::sendFailure($this->lng->txt('err_check_input'));
312 $this->form->setValuesByPost();
313 $this->tpl->setContent($this->form->getHTML());
314 return false;
315 }
316
321 protected function initFieldForm($a_mode)
322 {
323 if($this->form instanceof ilPropertyFormGUI)
324 {
325 return true;
326 }
327 include_once './Services/Form/classes/class.ilPropertyFormGUI.php';
328 $this->form = new ilPropertyFormGUI();
329
330 switch($a_mode)
331 {
333 $this->form->setFormAction($this->ctrl->getFormAction($this));
334 $this->form->setTitle($this->lng->txt('ps_cdf_add_field'));
335 $this->form->addCommandButton('saveField', $this->lng->txt('save'));
336 $this->form->addCommandButton('listFields', $this->lng->txt('cancel'));
337 break;
338
340 $this->ctrl->setParameter($this,'field_id',(int) $_REQUEST['field_id']);
341 $this->form->setFormAction($this->ctrl->getFormAction($this));
342 $this->form->setTitle($this->lng->txt('ps_cdf_edit_field'));
343 $this->form->addCommandButton('updateField', $this->lng->txt('save'));
344 $this->form->addCommandButton('listFields', $this->lng->txt('cancel'));
345 break;
346 }
347
348 // Name
349 $na = new ilTextInputGUI($this->lng->txt('ps_cdf_name'),'na');
350 $na->setSize(32);
351 $na->setMaxLength(255);
352 $na->setRequired(true);
353 $this->form->addItem($na);
354
355 // Type
356 $ty = new ilRadioGroupInputGUI($this->lng->txt('ps_field_type'),'ty');
357 $ty->setRequired(true);
358 $this->form->addItem($ty);
359
360 if($a_mode == self::MODE_UPDATE)
361 {
362 $ty->setDisabled(true); // #14888
363 }
364
365 // Text type
366 $ty_te = new ilRadioOption($this->lng->txt('ps_type_txt_long'),IL_CDF_TYPE_TEXT);
367 $ty->addOption($ty_te);
368
369 // Select Type
370 $ty_se = new ilRadioOption($this->lng->txt('ps_type_select_long'),IL_CDF_TYPE_SELECT);
371 $ty->addOption($ty_se);
372
373 // Select Type Values
374 include_once './Services/Form/classes/class.ilSelectBuilderInputGUI.php';
375 $ty_se_mu = new ilSelectBuilderInputGUI($this->lng->txt('ps_cdf_value'),'va');
376 $ty_se_mu->setAllowMove(true);
377 $ty_se_mu->setRequired(true);
378 $ty_se_mu->setSize(32);
379 $ty_se_mu->setMaxLength(128);
380 $ty_se->addSubItem($ty_se_mu);
381
382 // Required
383 $re = new ilCheckboxInputGUI($this->lng->txt('ps_cdf_required'),'re');
384 $re->setValue(1);
385 $this->form->addItem($re);
386 }
387
392 protected function editMember(ilPropertyFormGUI $form = null)
393 {
394 $GLOBALS['ilCtrl']->saveParameter($this,'member_id');
395
396 $GLOBALS['ilTabs']->clearTargets();
397 $GLOBALS['ilTabs']->clearSubTabs();
398 $GLOBALS['ilTabs']->setBackTarget($this->lng->txt('back'),$this->ctrl->getLinkTarget($this,'cancelEditMember'));
399
400
401 if($form instanceof ilPropertyFormGUI)
402 {
403 $GLOBALS['tpl']->setContent($form->getHTML());
404 }
405 else
406 {
407 $form = $this->initMemberForm();
409 }
410
411 $GLOBALS['tpl']->setContent($form->getHTML());
412 }
413
414
418 protected function cancelEditMember()
419 {
420 $GLOBALS['ilCtrl']->returnToParent($this);
421 }
422
427 protected function initMemberForm()
428 {
429 include_once './Services/Form/classes/class.ilPropertyFormGUI.php';
430 $form = new ilPropertyFormGUI();
431 $form->setFormAction($GLOBALS['ilCtrl']->getFormAction($this));
432 $title = $this->lng->txt(ilObject::_lookupType($this->getObjId()).'_cdf_edit_member');
433 $name = ilObjUser::_lookupName((int) $_REQUEST['member_id']);
434 $title .= (': '.$name['lastname'].', '.$name['firstname']);
435 $form->setTitle($title);
436
437 include_once './Services/Membership/classes/class.ilMemberAgreementGUI.php';
439
440 $form->addCommandButton('saveMember', $this->lng->txt('save'));
441 $form->addCommandButton('cancelEditMember', $this->lng->txt('cancel'));
442
443 return $form;
444 }
445
446 protected function saveMember()
447 {
448 global $ilUser;
449
450 $GLOBALS['ilCtrl']->saveParameter($this,'member_id');
451
452 $form = $this->initMemberForm();
453 if($form->checkInput())
454 {
455 // save history
456 include_once './Services/Membership/classes/class.ilObjectCustomUserFieldHistory.php';
457 $history = new ilObjectCustomUserFieldHistory($this->getObjId(), (int) $_REQUEST['member_id']);
458 $history->setEditingTime(new ilDateTime(time(),IL_CAL_UNIX));
459 $history->setUpdateUser($ilUser->getId());
460 $history->save();
461
462 ilMemberAgreementGUI::saveCourseDefinedFields($form, $this->getObjId(), (int) $_REQUEST['member_id']);
463 ilUtil::sendSuccess($this->lng->txt('settings_saved'),TRUE);
464 $GLOBALS['ilCtrl']->returnToParent($this);
465 return TRUE;
466 }
467
468 $form->setValuesByPost();
469 ilUtil::sendFailure($this->lng->txt('err_check_input'));
470 return $this->editMember($form);
471 }
472}
473?>
const IL_CAL_UNIX
This class represents a checkbox property in a property form.
Confirmation screen class.
static _getFields($a_container_id, $a_sort=IL_CDF_SORT_NAME)
Get all fields of a container.
@classDescription Date and time handling
static setCourseDefinedFieldValues(ilPropertyFormGUI $form, $a_obj_id, $a_usr_id=0)
static addCustomFields($form, $a_obj_id, $a_type, $a_mode='user')
Add custom course fields.
static saveCourseDefinedFields(ilPropertyFormGUI $form, $a_obj_id, $a_usr_id=0)
Save course defined fields.
static _hasAgreementsByObjId($a_obj_id)
Check if there is any user agreement.
static _deleteByObjId($a_obj_id)
Delete all entries by obj_id.
static _lookupName($a_user_id)
lookup user name
Editing history for object custom user fields.
saveFields()
Save Field settings (currently only required status)
editMember(ilPropertyFormGUI $form=null)
Edit Member.
initFieldForm($a_mode)
Init/create property form for fields.
confirmDeleteFields()
Show delete confirmation screen.
@classDescription Table presentation of course/group relevant user data fields
static _getAllReferences($a_id)
get all reference ids of object
static _lookupType($a_id, $a_reference=false)
lookup object type
This class represents a property form user interface.
This class represents a property in a property form.
This class represents an option in a radio group.
Input GUI for the configuration of select input elements.
This class represents a text property in a property form.
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
$_POST['username']
Definition: cron.php:12
$GLOBALS['ct_recipient']
global $ilCtrl
Definition: ilias.php:18
$cmd
Definition: sahs_server.php:35
if($_REQUEST['ilias_path']) define('ILIAS_HTTP_PATH' $_REQUEST['ilias_path']
Definition: index.php:7
global $ilUser
Definition: imgupload.php:15