function update() { global $lng, $ilCtrl; $user_field_definitions = ilUserDefinedFields::_getInstance(); $user_field_definitions->setFieldType($this->field_definition["field_type"]); // gather old select options $old_options = null; if ($this->field_id) { $old_values = $user_field_definitions->getDefinition($this->field_id); if ($old_values["field_type"] == UDF_TYPE_SELECT) { $old_options = $old_values["field_values"]; } $perms = $this->permissions->hasPermissions(ilUDFPermissionHelper::CONTEXT_FIELD, $this->field_id, array(array(ilUDFPermissionHelper::ACTION_FIELD_EDIT_PROPERTY, ilUDFPermissionHelper::SUBACTION_FIELD_TITLE), array(ilUDFPermissionHelper::ACTION_FIELD_EDIT_PROPERTY, ilUDFPermissionHelper::SUBACTION_FIELD_PROPERTIES), array(ilUDFPermissionHelper::ACTION_FIELD_EDIT_ACCESS, ilUDFPermissionHelper::SUBACTION_FIELD_ACCESS_VISIBLE_PERSONAL), array(ilUDFPermissionHelper::ACTION_FIELD_EDIT_ACCESS, ilUDFPermissionHelper::SUBACTION_FIELD_ACCESS_VISIBLE_REGISTRATION), array(ilUDFPermissionHelper::ACTION_FIELD_EDIT_ACCESS, ilUDFPermissionHelper::SUBACTION_FIELD_ACCESS_VISIBLE_LOCAL), array(ilUDFPermissionHelper::ACTION_FIELD_EDIT_ACCESS, ilUDFPermissionHelper::SUBACTION_FIELD_ACCESS_VISIBLE_COURSES), array(ilUDFPermissionHelper::ACTION_FIELD_EDIT_ACCESS, ilUDFPermissionHelper::SUBACTION_FIELD_ACCESS_VISIBLE_GROUPS), array(ilUDFPermissionHelper::ACTION_FIELD_EDIT_ACCESS, ilUDFPermissionHelper::SUBACTION_FIELD_ACCESS_CHANGEABLE_PERSONAL), array(ilUDFPermissionHelper::ACTION_FIELD_EDIT_ACCESS, ilUDFPermissionHelper::SUBACTION_FIELD_ACCESS_CHANGEABLE_LOCAL), array(ilUDFPermissionHelper::ACTION_FIELD_EDIT_ACCESS, ilUDFPermissionHelper::SUBACTION_FIELD_ACCESS_REQUIRED), array(ilUDFPermissionHelper::ACTION_FIELD_EDIT_ACCESS, ilUDFPermissionHelper::SUBACTION_FIELD_ACCESS_EXPORT), array(ilUDFPermissionHelper::ACTION_FIELD_EDIT_ACCESS, ilUDFPermissionHelper::SUBACTION_FIELD_ACCESS_SEARCHABLE), array(ilUDFPermissionHelper::ACTION_FIELD_EDIT_ACCESS, ilUDFPermissionHelper::SUBACTION_FIELD_ACCESS_CERTIFICATE))); } $access = array(); $form = $this->initForm("edit"); if ($this->validateForm($form, $user_field_definitions, $access, $perms) && $this->field_id) { // field values are set in validateForm()... if (!$perms || $perms[ilUDFPermissionHelper::ACTION_FIELD_EDIT_PROPERTY][ilUDFPermissionHelper::SUBACTION_FIELD_PROPERTIES]) { // diff old select options against new to handle deleted values properly if (is_array($old_options)) { foreach ($old_options as $old_option) { if (!in_array($old_option, $user_field_definitions->getFieldValues())) { ilUserDefinedData::deleteFieldValue($this->field_id, $old_option); } } } } else { if (is_array($old_options)) { $user_field_definitions->setFieldValues($old_options); } } if (!$perms || $perms[ilUDFPermissionHelper::ACTION_FIELD_EDIT_PROPERTY][ilUDFPermissionHelper::SUBACTION_FIELD_TITLE]) { $user_field_definitions->setFieldName($form->getInput("name")); } else { $user_field_definitions->setFieldName($this->field_definition["field_name"]); } $user_field_definitions->enableVisible($access['visible']); $user_field_definitions->enableVisibleRegistration((int) $access['visib_reg']); $user_field_definitions->enableVisibleLocalUserAdministration($access['visib_lua']); $user_field_definitions->enableCourseExport($access['course_export']); $user_field_definitions->enableGroupExport($access['group_export']); $user_field_definitions->enableChangeable($access['changeable']); $user_field_definitions->enableChangeableLocalUserAdministration($access['changeable_lua']); $user_field_definitions->enableRequired($access['required']); $user_field_definitions->enableExport($access['export']); $user_field_definitions->enableSearchable($access['searchable']); $user_field_definitions->enableCertificate($access['certificate']); $user_field_definitions->update($this->field_id); if ($access['course_export']) { include_once 'Services/Membership/classes/class.ilMemberAgreement.php'; ilMemberAgreement::_reset(); } ilUtil::sendSuccess($lng->txt('udf_added_field'), true); $ilCtrl->redirect($this); } $form->setValuesByPost(); $this->edit($form); }
function deleteValue($a_field_id, $a_value_id) { global $ilDB; $definition = $this->getDefinition($a_field_id); $counter = 0; $new_values = array(); foreach ($definition['field_values'] as $value) { if ($counter++ != $a_value_id) { $new_values[] = $value; } else { $old_value = $value; } } $values = array('field_values' => array('clob', serialize($new_values))); $ilDB->update('udf_definition', $values, array('field_id' => array('integer', $a_field_id))); // sets value to '' where old value is $old_value include_once "./Services/User/classes/class.ilUserDefinedData.php"; ilUserDefinedData::deleteFieldValue($a_field_id, $old_value); // fianally read data $this->__read(); return true; }
function update() { global $lng, $ilCtrl; $user_field_definitions = ilUserDefinedFields::_getInstance(); $user_field_definitions->setFieldType($this->field_definition["field_type"]); // gather old select options $old_options = null; if ($this->field_id) { $old_values = $user_field_definitions->getDefinition($this->field_id); if ($old_values["field_type"] == UDF_TYPE_SELECT) { $old_options = $old_values["field_values"]; } } $access = array(); $form = $this->initForm("edit"); if ($this->validateForm($form, $user_field_definitions, $access) && $this->field_id) { // field values are set in validateForm()... // diff old select options against new to handle deleted values properly if (is_array($old_options)) { foreach ($old_options as $old_option) { if (!in_array($old_option, $user_field_definitions->getFieldValues())) { ilUserDefinedData::deleteFieldValue($this->field_id, $old_option); } } } $user_field_definitions->setFieldName($form->getInput("name")); $user_field_definitions->enableVisible($access['visible']); $user_field_definitions->enableVisibleRegistration((int) $access['visib_reg']); $user_field_definitions->enableVisibleLocalUserAdministration($access['visib_lua']); $user_field_definitions->enableCourseExport($access['course_export']); $user_field_definitions->enableGroupExport($access['group_export']); $user_field_definitions->enableChangeable($access['changeable']); $user_field_definitions->enableChangeableLocalUserAdministration($access['changeable_lua']); $user_field_definitions->enableRequired($access['required']); $user_field_definitions->enableExport($access['export']); $user_field_definitions->enableSearchable($access['searchable']); $user_field_definitions->enableCertificate($access['certificate']); $user_field_definitions->update($this->field_id); if ($access['course_export']) { include_once 'Services/Membership/classes/class.ilMemberAgreement.php'; ilMemberAgreement::_reset(); } ilUtil::sendSuccess($lng->txt('udf_added_field'), true); $ilCtrl->redirect($this); } $form->setValuesByPost(); $this->edit($form); }