From 3c1c4f1fd76fa72d6cc468f829af562591c57440 Mon Sep 17 00:00:00 2001 From: Thomas Hackl <hackl@data-quest.de> Date: Thu, 12 May 2022 08:10:35 +0000 Subject: [PATCH] =?UTF-8?q?Resolve=20"I18N=20f=C3=BCr=20die=20Datenfelder?= =?UTF-8?q?=20der=20Tabelle=20user=5Finst"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #605 Merge request studip/studip!609 --- app/controllers/settings/statusgruppen.php | 27 ++++++++++--------- .../statusgruppen/modify_institute.php | 20 ++++++-------- lib/models/InstituteMember.class.php | 5 ++++ 3 files changed, 27 insertions(+), 25 deletions(-) diff --git a/app/controllers/settings/statusgruppen.php b/app/controllers/settings/statusgruppen.php index 88e42df1266..fd7d91c1f55 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 769f897982a..21373c8d96e 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 a152d84d937..a501c61a303 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; -- GitLab