ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
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 // reset agreements
250 $this->listFields();
251 return true;
252 }
253 // not valid
254 ilUtil::sendFailure($this->lng->txt('err_check_input'));
255 $this->form->setValuesByPost();
256 $this->tpl->setContent($this->form->getHTML());
257 return false;
258 }
259
265 protected function editField()
266 {
267 if(!$_REQUEST['field_id'])
268 {
269 $this->listFields();
270 return false;
271 }
272
273 $this->initFieldForm(self::MODE_UPDATE);
274
275 $udf = new ilCourseDefinedFieldDefinition($this->getObjId(),(int) $_REQUEST['field_id']);
276 $this->form->getItemByPostVar('na')->setValue($udf->getName());
277 $this->form->getItemByPostVar('ty')->setValue($udf->getType());
278 $this->form->getItemByPostVar('re')->setChecked($udf->isRequired());
279 $this->form->getItemByPostVar('va')->setValues($udf->getValues());
280 $this->form->getItemByPostVar('va')->setOpenAnswerIndexes($udf->getValueOptions());
281
282 $this->tpl->setContent($this->form->getHTML());
283 }
284
289 protected function updateField()
290 {
291 $GLOBALS['ilLog']->write(__METHOD__.': '.print_r($_POST,true));
292
293 $this->initFieldForm(self::MODE_UPDATE);
294
295 if($this->form->checkInput())
296 {
297 $udf = new ilCourseDefinedFieldDefinition($this->getObjId(),(int) $_REQUEST['field_id']);
298 $udf->setName($this->form->getInput('na'));
299 $udf->setType($this->form->getInput('ty'));
300 $prepared = $udf->prepareValues($this->form->getInput('va'));
301 $udf->setValues($prepared);
302 $udf->setValueOptions($this->form->getItemByPostVar('va')->getOpenAnswerIndexes());
303 $udf->enableRequired($this->form->getInput('re'));
304 $udf->update();
305
306 // Finally reset member agreements
308 ilUtil::sendSuccess($this->lng->txt('settings_saved'));
309 $this->listFields();
310 return true;
311 }
312
313 ilUtil::sendFailure($this->lng->txt('err_check_input'));
314 $this->form->setValuesByPost();
315 $this->tpl->setContent($this->form->getHTML());
316 return false;
317 }
318
323 protected function initFieldForm($a_mode)
324 {
325 if($this->form instanceof ilPropertyFormGUI)
326 {
327 return true;
328 }
329 include_once './Services/Form/classes/class.ilPropertyFormGUI.php';
330 $this->form = new ilPropertyFormGUI();
331
332 switch($a_mode)
333 {
335 $this->form->setFormAction($this->ctrl->getFormAction($this));
336 $this->form->setTitle($this->lng->txt('ps_cdf_add_field'));
337 $this->form->addCommandButton('saveField', $this->lng->txt('save'));
338 $this->form->addCommandButton('listFields', $this->lng->txt('cancel'));
339 break;
340
342 $this->ctrl->setParameter($this,'field_id',(int) $_REQUEST['field_id']);
343 $this->form->setFormAction($this->ctrl->getFormAction($this));
344 $this->form->setTitle($this->lng->txt('ps_cdf_edit_field'));
345 $this->form->addCommandButton('updateField', $this->lng->txt('save'));
346 $this->form->addCommandButton('listFields', $this->lng->txt('cancel'));
347 break;
348 }
349
350 // Name
351 $na = new ilTextInputGUI($this->lng->txt('ps_cdf_name'),'na');
352 $na->setSize(32);
353 $na->setMaxLength(255);
354 $na->setRequired(true);
355 $this->form->addItem($na);
356
357 // Type
358 $ty = new ilRadioGroupInputGUI($this->lng->txt('ps_field_type'),'ty');
359 $ty->setRequired(true);
360 $this->form->addItem($ty);
361
362 if($a_mode == self::MODE_UPDATE)
363 {
364 $ty->setDisabled(true); // #14888
365 }
366
367 // Text type
368 $ty_te = new ilRadioOption($this->lng->txt('ps_type_txt_long'),IL_CDF_TYPE_TEXT);
369 $ty->addOption($ty_te);
370
371 // Select Type
372 $ty_se = new ilRadioOption($this->lng->txt('ps_type_select_long'),IL_CDF_TYPE_SELECT);
373 $ty->addOption($ty_se);
374
375 // Select Type Values
376 include_once './Services/Form/classes/class.ilSelectBuilderInputGUI.php';
377 $ty_se_mu = new ilSelectBuilderInputGUI($this->lng->txt('ps_cdf_value'),'va');
378 $ty_se_mu->setAllowMove(true);
379 $ty_se_mu->setRequired(true);
380 $ty_se_mu->setSize(32);
381 $ty_se_mu->setMaxLength(128);
382 $ty_se->addSubItem($ty_se_mu);
383
384 // Required
385 $re = new ilCheckboxInputGUI($this->lng->txt('ps_cdf_required'),'re');
386 $re->setValue(1);
387 $this->form->addItem($re);
388 }
389
394 protected function editMember(ilPropertyFormGUI $form = null)
395 {
396 $GLOBALS['ilCtrl']->saveParameter($this,'member_id');
397
398 $GLOBALS['ilTabs']->clearTargets();
399 $GLOBALS['ilTabs']->clearSubTabs();
400 $GLOBALS['ilTabs']->setBackTarget($this->lng->txt('back'),$this->ctrl->getLinkTarget($this,'cancelEditMember'));
401
402
403 if($form instanceof ilPropertyFormGUI)
404 {
405 $GLOBALS['tpl']->setContent($form->getHTML());
406 }
407 else
408 {
409 $form = $this->initMemberForm();
411 }
412
413 $GLOBALS['tpl']->setContent($form->getHTML());
414 }
415
416
420 protected function cancelEditMember()
421 {
422 $GLOBALS['ilCtrl']->returnToParent($this);
423 }
424
429 protected function initMemberForm()
430 {
431 include_once './Services/Form/classes/class.ilPropertyFormGUI.php';
432 $form = new ilPropertyFormGUI();
433 $form->setFormAction($GLOBALS['ilCtrl']->getFormAction($this));
434 $title = $this->lng->txt(ilObject::_lookupType($this->getObjId()).'_cdf_edit_member');
435 $name = ilObjUser::_lookupName((int) $_REQUEST['member_id']);
436 $title .= (': '.$name['lastname'].', '.$name['firstname']);
437 $form->setTitle($title);
438
439 include_once './Services/Membership/classes/class.ilMemberAgreementGUI.php';
441
442 $form->addCommandButton('saveMember', $this->lng->txt('save'));
443 $form->addCommandButton('cancelEditMember', $this->lng->txt('cancel'));
444
445 return $form;
446 }
447
448 protected function saveMember()
449 {
450 global $ilUser;
451
452 $GLOBALS['ilCtrl']->saveParameter($this,'member_id');
453
454 $form = $this->initMemberForm();
455 if($form->checkInput())
456 {
457 // save history
458 include_once './Services/Membership/classes/class.ilObjectCustomUserFieldHistory.php';
459 $history = new ilObjectCustomUserFieldHistory($this->getObjId(), (int) $_REQUEST['member_id']);
460 $history->setEditingTime(new ilDateTime(time(),IL_CAL_UNIX));
461 $history->setUpdateUser($ilUser->getId());
462 $history->save();
463
464 ilMemberAgreementGUI::saveCourseDefinedFields($form, $this->getObjId(), (int) $_REQUEST['member_id']);
465 ilUtil::sendSuccess($this->lng->txt('settings_saved'),TRUE);
466 $GLOBALS['ilCtrl']->returnToParent($this);
467 return TRUE;
468 }
469
470 $form->setValuesByPost();
471 ilUtil::sendFailure($this->lng->txt('err_check_input'));
472 return $this->editMember($form);
473 }
474}
475?>
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['PHPCAS_CLIENT']
This global variable is used by the interface class phpCAS.
Definition: CAS.php:276
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