diff --git a/app/controllers/settings/statusgruppen.php b/app/controllers/settings/statusgruppen.php index 88e42df126669c2164a824abbe4c1689bf8a8de5..fd7d91c1f55a1f4c6cb90155ef383b825da55f12 100644 --- a/app/controllers/settings/statusgruppen.php +++ b/app/controllers/settings/statusgruppen.php @@ -339,19 +339,20 @@ class Settings_StatusgruppenController extends Settings_SettingsController } if ($this->shallChange('', 'institute_data')) { - $query = "UPDATE user_inst - SET raum = ?, sprechzeiten = ?, Telefon = ?, Fax = ? - WHERE Institut_id = ? AND user_id = ?"; - $statement = DBManager::get()->prepare($query); - $statement->execute([ - Request::get('raum'), - Request::get('sprech'), - Request::get('tel'), - Request::get('fax'), - $id, - $this->user->user_id, - ]); - if ($statement->rowCount() > 0) { + $entry = InstituteMember::findByUserAndInstitute($this->user->user_id, $id); + + if (!$entry) { + $entry = new InstituteMember(); + $entry->institut_id = $id; + $entry->user_id = $this->user->user_id; + } + + $entry->raum = Request::i18n('raum'); + $entry->sprechzeiten = Request::i18n('sprech'); + $entry->telefon = Request::i18n('tel'); + $entry->fax = Request::i18n('fax'); + + if ($entry->store() !== false) { $changed = true; $success[] = sprintf(_('Ihre Daten an der Einrichtung %s wurden geƤndert.'), htmlReady(Request::get('name'))); diff --git a/app/views/settings/statusgruppen/modify_institute.php b/app/views/settings/statusgruppen/modify_institute.php index 769f897982ad9efbc24461477d8f06a53869a425..21373c8d96e3c0d2df481c7070a51cb404c401fb 100644 --- a/app/views/settings/statusgruppen/modify_institute.php +++ b/app/views/settings/statusgruppen/modify_institute.php @@ -25,27 +25,23 @@ $entries = (array)DataFieldEntry::getDataFieldEntries([$user->user_id, $inst_id] </label> <label> <?= _('Raum') ?> - <input type="text" name="raum" id="raum" - value="<?= htmlReady($institute['raum']) ?>" - <? if ($locked) echo 'disabled'; ?>> + <?= I18N::input('raum', $institute['raum'], + ['id' => 'raum', 'disabled' => $locked ? true : false]) ?> </label> <label> <?= _('Sprechzeit') ?> - <input type="text" name="sprech" id="sprech" - value="<?= htmlReady($institute['sprechzeiten']) ?>" - <? if ($locked) echo 'disabled'; ?>> + <?= I18N::input('sprech', $institute['sprechzeiten'], + ['id' => 'sprech', 'disabled' => $locked ? true : false]) ?> </label> <label> <?= _('Telefon') ?> - <input type="tel" name="tel" - value="<?= htmlReady($institute['telefon']) ?>" - <? if ($locked) echo 'disabled'; ?>> + <?= I18N::input('tel', $institute['telefon'], + ['id' => 'telefon', 'disabled' => $locked ? true : false]) ?> </label> <label> <?= _('Fax') ?> - <input type="tel" name="fax" - value="<?= htmlReady($institute['fax']) ?>" - <? if ($locked) echo 'disabled'; ?>> + <?= I18N::input('fax', $institute['fax'], + ['id' => 'fax', 'disabled' => $locked ? true : false]) ?> </label> <? foreach ($entries as $id => $entry): ?> diff --git a/lib/models/InstituteMember.class.php b/lib/models/InstituteMember.class.php index a152d84d9378d5a8b97391b6ed644531e5638b1b..a501c61a303aefe6ff7c44a2c697632737c0742a 100644 --- a/lib/models/InstituteMember.class.php +++ b/lib/models/InstituteMember.class.php @@ -74,6 +74,11 @@ class InstituteMember extends SimpleORMap implements PrivacyObject $config['additional_fields']['institute_name'] = []; + $config['i18n_fields']['raum'] = true; + $config['i18n_fields']['sprechzeiten'] = true; + $config['i18n_fields']['telefon'] = true; + $config['i18n_fields']['fax'] = true; + $config['registered_callbacks']['after_delete'][] = function ($member) { $institute = $member->institute; $user_id = $member->user_id;