/** * Stores a user's details. */ public function store_action() { $this->check_ticket(); $changed = false; if (Config::get()->ENABLE_SKYPE_INFO) { $new_skype_name = Request::get('skype_name'); if ($new_skype_name != $this->config->SKYPE_NAME) { $this->config->store('SKYPE_NAME', $new_skype_name); Visibility::updatePrivacySettingWithTest(Request::get('skype_name'), _("Skype Name"), "skype_name", 'privatedata', 1, $this->user->user_id); $changed = true; } if (Request::int('skype_online_status') != $this->config->SKYPE_ONLINE_STATUS) { $this->config->store('SKYPE_ONLINE_STATUS', Request::int('skype_online_status')); Visibility::updatePrivacySettingWithTest(Request::int('skype_online_status'), _("Skype Online Status"), "skype_online_status", 'skype_name', 1, $this->user->user_id); $changed = true; } } $mapping = array('telefon' => 'privatnr', 'cell' => 'privatcell', 'anschrift' => 'privadr', 'home' => 'Home', 'motto' => 'motto', 'hobby' => 'hobby', 'lebenslauf' => 'lebenslauf', 'schwerp' => 'schwerp', 'publi' => 'publi'); // Visibilitymapping Remove in Stud.IP 3.0 with a migration $vis_mapping = array('telefon' => 'private_phone', 'cell' => 'private_cell', 'anschrift' => 'privadr', 'home' => 'homepage', 'motto' => 'motto', 'hobby' => 'hobby', 'lebenslauf' => 'lebenslauf', 'schwerp' => 'schwerp', 'publi' => 'publi'); $settingsname = array('telefon' => _('Private Telefonnummer'), 'cell' => _('Private Handynummer'), 'anschrift' => _('Private Adresse'), 'home' => _('Homepage-Adresse'), 'motto' => _('Motto'), 'hobby' => _('Hobbies'), 'lebenslauf' => _('Lebenslauf'), 'schwerp' => _('Arbeitsschwerpunkte'), 'publi' => _('Publikationen')); foreach ($mapping as $key => $column) { $value = Request::get($key); if (in_array($key, array('hobby', 'lebenslauf', 'schwerp', 'publi'))) { // purify HTML input for these fields if wysiwyg is used $value = Studip\Markup::purifyHtml($value); } if ($this->user->{$column} != $value && $this->shallChange('user_info.' . $column, $column, $value)) { $this->user->{$column} = $value; Visibility::updatePrivacySettingWithTest($value, $settingsname[$key], $vis_mapping[$key], 'privatedata', 1, $this->user->user_id); $changed = true; } } $datafields_changed = false; $errors = array(); $datafields = DataFieldEntry::getDataFieldEntries($this->user->user_id, 'user'); $data = Request::getArray('datafields'); foreach ($datafields as $id => $entry) { if (isset($data[$id]) && $data[$id] != $entry->getValue()) { // i really dont know if this is correct but it works Visibility::updatePrivacySettingWithTest($data[$id], $entry->getName(), $entry->getID(), 'additionaldata', 1, $this->user->user_id); $entry->setValueFromSubmit($data[$id]); if ($entry->isValid()) { if ($entry->store()) { $datafields_changed = true; } } else { $errors[] = sprintf(_('Fehlerhafter Eintrag im Feld <em>%s</em>: %s (Eintrag wurde nicht gespeichert)'), $entry->getName(), $entry->getDisplayValue()); } } } if (count($errors) > 0) { $this->reportErrorWithDetails(_('Bitte überprüfen Sie Ihre Eingaben.'), $errors); } else { if ($this->user->store() || $changed || $datafields_changed) { $this->reportSuccess(_('Daten im Lebenslauf u.a. wurden geändert.')); setTempLanguage($this->user->user_id); $this->postPrivateMessage(_('Daten im Lebenslauf u.a. wurden geändert.')); restoreLanguage(); } } $this->redirect('settings/details'); }