コード例 #1
0
 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);
 }
コード例 #2
0
 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;
 }
コード例 #3
0
 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);
 }