function saveGlobalUserSettingsObject($action = "")
 {
     include_once 'Services/Search/classes/class.ilUserSearchOptions.php';
     include_once 'Services/PrivacySecurity/classes/class.ilPrivacySettings.php';
     global $ilias, $ilSetting;
     // see ilUserFieldSettingsTableGUI
     include_once "./Services/User/classes/class.ilUserProfile.php";
     $up = new ilUserProfile();
     $up->skipField("username");
     $field_properties = $up->getStandardFields();
     $profile_fields = array_keys($field_properties);
     $valid = true;
     foreach ($profile_fields as $field) {
         if ($_POST["chb"]["required_" . $field] && !(int) $_POST['chb']['visib_reg_' . $field]) {
             $valid = false;
             break;
         }
     }
     if (!$valid) {
         global $lng;
         ilUtil::sendFailure($lng->txt('invalid_visible_required_options_selected'));
         $this->confirm_change = 1;
         $this->settingsObject();
         return;
     }
     // For the following fields, the required state can not be changed
     $fixed_required_fields = array("firstname" => 1, "lastname" => 1, "upload" => 0, "password" => 0, "language" => 0, "skin_style" => 0, "hits_per_page" => 0, "show_users_online" => 0, "hide_own_online_status" => 0);
     // check if a course export state of any field has been added
     $privacy = ilPrivacySettings::_getInstance();
     if ($privacy->enabledCourseExport() == true && $privacy->courseConfirmationRequired() == true && $action != "save") {
         foreach ($profile_fields as $field) {
             if (!$ilias->getSetting("usr_settings_course_export_" . $field) && $_POST["chb"]["course_export_" . $field] == "1") {
                 #ilUtil::sendQuestion($this->lng->txt('confirm_message_course_export'));
                 #$this->confirm_change = 1;
                 #$this->settingsObject();
                 #return;
             }
         }
     }
     // Reset user confirmation
     if ($action == 'save') {
         include_once 'Services/Membership/classes/class.ilMemberAgreement.php';
         ilMemberAgreement::_reset();
     }
     foreach ($profile_fields as $field) {
         // Enable disable searchable
         if (ilUserSearchOptions::_isSearchable($field)) {
             ilUserSearchOptions::_saveStatus($field, (bool) $_POST['chb']['searchable_' . $field]);
         }
         if (!$_POST["chb"]["visible_" . $field] && !$field_properties[$field]["visible_hide"]) {
             $ilias->setSetting("usr_settings_hide_" . $field, "1");
         } else {
             $ilias->deleteSetting("usr_settings_hide_" . $field);
         }
         if (!$_POST["chb"]["changeable_" . $field] && !$field_properties[$field]["changeable_hide"]) {
             $ilias->setSetting("usr_settings_disable_" . $field, "1");
         } else {
             $ilias->deleteSetting("usr_settings_disable_" . $field);
         }
         // registration visible
         if ((int) $_POST['chb']['visib_reg_' . $field] && !$field_properties[$field]["visib_reg_hide"]) {
             $ilSetting->set('usr_settings_visib_reg_' . $field, '1');
         } else {
             $ilSetting->set('usr_settings_visib_reg_' . $field, '0');
         }
         if ((int) $_POST['chb']['visib_lua_' . $field]) {
             $ilSetting->set('usr_settings_visib_lua_' . $field, '1');
         } else {
             $ilSetting->set('usr_settings_visib_lua_' . $field, '0');
         }
         if ((int) $_POST['chb']['changeable_lua_' . $field]) {
             $ilSetting->set('usr_settings_changeable_lua_' . $field, '1');
         } else {
             $ilSetting->set('usr_settings_changeable_lua_' . $field, '0');
         }
         if ($_POST["chb"]["export_" . $field] && !$field_properties[$field]["export_hide"]) {
             $ilias->setSetting("usr_settings_export_" . $field, "1");
         } else {
             $ilias->deleteSetting("usr_settings_export_" . $field);
         }
         // Course export/visibility
         if ($_POST["chb"]["course_export_" . $field] && !$field_properties[$field]["course_export_hide"]) {
             $ilias->setSetting("usr_settings_course_export_" . $field, "1");
         } else {
             $ilias->deleteSetting("usr_settings_course_export_" . $field);
         }
         // Group export/visibility
         if ($_POST["chb"]["group_export_" . $field] && !$field_properties[$field]["group_export_hide"]) {
             $ilias->setSetting("usr_settings_group_export_" . $field, "1");
         } else {
             $ilias->deleteSetting("usr_settings_group_export_" . $field);
         }
         $is_fixed = array_key_exists($field, $fixed_required_fields);
         if ($is_fixed && $fixed_required_fields[$field] || !$is_fixed && $_POST["chb"]["required_" . $field]) {
             $ilias->setSetting("require_" . $field, "1");
         } else {
             $ilias->deleteSetting("require_" . $field);
         }
     }
     if ($_POST["select"]["default_hits_per_page"]) {
         $ilias->setSetting("hits_per_page", $_POST["select"]["default_hits_per_page"]);
     }
     if ($_POST["select"]["default_show_users_online"]) {
         $ilias->setSetting("show_users_online", $_POST["select"]["default_show_users_online"]);
     }
     if ($_POST["chb"]["export_preferences"]) {
         $ilias->setSetting("usr_settings_export_preferences", $_POST["chb"]["export_preferences"]);
     } else {
         $ilias->deleteSetting("usr_settings_export_preferences");
     }
     $ilias->setSetting('mail_incoming_mail', (int) $_POST['select']['default_mail_incoming_mail']);
     ilUtil::sendSuccess($this->lng->txt("usr_settings_saved"));
     $this->settingsObject();
 }
 /**
  * Save privacy settings
  *
  * @access public
  *
  */
 public function save_privacy()
 {
     global $ilErr, $ilAccess, $ilSetting;
     if (!$ilAccess->checkAccess('write', '', $this->object->getRefId())) {
         $ilErr->raiseError($this->lng->txt('no_permission'), $ilErr->WARNING);
     }
     if ((int) $_POST['rbac_log_age'] > 24) {
         $_POST['rbac_log_age'] = 24;
     } else {
         if ((int) $_POST['rbac_log_age'] < 1) {
             $_POST['rbac_log_age'] = 1;
         }
     }
     $_POST['profile_protection'] = isset($_POST['profile_protection']) ? $_POST['profile_protection'] : array();
     $privacy = ilPrivacySettings::_getInstance();
     $privacy->enableCourseExport((int) in_array('export_course', $_POST['profile_protection']));
     $privacy->enableGroupExport((int) in_array('export_group', $_POST['profile_protection']));
     $privacy->setCourseConfirmationRequired((int) in_array('export_confirm_course', $_POST['profile_protection']));
     $privacy->setGroupConfirmationRequired((int) in_array('export_confirm_group', $_POST['profile_protection']));
     $privacy->showGroupAccessTimes((int) in_array('grp_access_times', $_POST['profile_protection']));
     $privacy->showCourseAccessTimes((int) in_array('crs_access_times', $_POST['profile_protection']));
     $privacy->enableForaStatistics((int) $_POST['fora_statistics']);
     $privacy->enableAnonymousFora((int) $_POST['anonymous_fora']);
     $privacy->enableRbacLog((int) $_POST['rbac_log']);
     $privacy->setRbacLogAge((int) $_POST['rbac_log_age']);
     $privacy->enableSahsProtocolData((int) $_POST['enable_sahs_pd']);
     // validate settings
     $code = $privacy->validate();
     // if error code != 0, display error and do not save
     if ($code != 0) {
         $msg = $this->getErrorMessage($code);
         ilUtil::sendFailure($msg);
     } else {
         $privacy->save();
         include_once 'Services/Membership/classes/class.ilMemberAgreement.php';
         ilMemberAgreement::_reset();
         ilUtil::sendSuccess($this->lng->txt('settings_saved'));
     }
     $this->showPrivacy();
 }
 function update()
 {
     global $lng, $ilCtrl;
     $user_field_definitions = ilUserDefinedFields::_getInstance();
     $user_field_definitions->setFieldType($this->field_definition["field_type"]);
     $access = array();
     $form = $this->initForm("edit");
     if ($this->validateForm($form, $user_field_definitions, $access) && $this->field_id) {
         // field values are set in validateForm()...
         $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);
 }
 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);
 }
 /**
  * Save privacy settings
  *
  * @access public
  *
  */
 public function save_privacy()
 {
     global $ilErr, $ilAccess, $ilSetting;
     if (!$ilAccess->checkAccess('write', '', $this->object->getRefId())) {
         $ilErr->raiseError($this->lng->txt('no_permission'), $ilErr->WARNING);
     }
     if ((int) $_POST['rbac_log_age'] > 24) {
         $_POST['rbac_log_age'] = 24;
     } else {
         if ((int) $_POST['rbac_log_age'] < 1) {
             $_POST['rbac_log_age'] = 1;
         }
     }
     $_POST['profile_protection'] = isset($_POST['profile_protection']) ? $_POST['profile_protection'] : array();
     $privacy = ilPrivacySettings::_getInstance();
     // to determine if agreements need to be reset - see below
     $old_settings = array('export_course' => $privacy->enabledCourseExport(), 'export_group' => $privacy->enabledGroupExport(), 'export_confirm_course' => $privacy->courseConfirmationRequired(), 'export_confirm_group' => $privacy->groupConfirmationRequired(), 'crs_access_times' => $privacy->enabledCourseAccessTimes(), 'grp_access_times' => $privacy->enabledGroupAccessTimes());
     $privacy->enableCourseExport((int) in_array('export_course', $_POST['profile_protection']));
     $privacy->enableGroupExport((int) in_array('export_group', $_POST['profile_protection']));
     $privacy->setCourseConfirmationRequired((int) in_array('export_confirm_course', $_POST['profile_protection']));
     $privacy->setGroupConfirmationRequired((int) in_array('export_confirm_group', $_POST['profile_protection']));
     $privacy->showGroupAccessTimes((int) in_array('grp_access_times', $_POST['profile_protection']));
     $privacy->showCourseAccessTimes((int) in_array('crs_access_times', $_POST['profile_protection']));
     // validate settings
     $code = $privacy->validate();
     // if error code != 0, display error and do not save
     if ($code != 0) {
         $msg = $this->getErrorMessage($code);
         ilUtil::sendFailure($msg);
     } else {
         $privacy->save();
         // reset agreements?
         $do_reset = false;
         if (!$old_settings['export_course'] && $privacy->enabledCourseExport()) {
             $do_reset = true;
         }
         if (!$do_reset && !$old_settings['export_group'] && $privacy->enabledGroupExport()) {
             $do_reset = true;
         }
         if (!$do_reset && !$old_settings['export_confirm_course'] && $privacy->courseConfirmationRequired()) {
             $do_reset = true;
         }
         if (!$do_reset && !$old_settings['export_confirm_group'] && $privacy->groupConfirmationRequired()) {
             $do_reset = true;
         }
         if (!$do_reset && !$old_settings['crs_access_times'] && $privacy->enabledCourseAccessTimes()) {
             $do_reset = true;
         }
         if (!$do_reset && !$old_settings['grp_access_times'] && $privacy->enabledGroupAccessTimes()) {
             $do_reset = true;
         }
         if ($do_reset) {
             include_once 'Services/Membership/classes/class.ilMemberAgreement.php';
             ilMemberAgreement::_reset();
         }
         ilUtil::sendSuccess($this->lng->txt('settings_saved'));
     }
     $this->showPrivacy();
 }
 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);
 }