diff options
| author | David Siegfried <david.siegfried@uni-vechta.de> | 2022-09-01 08:24:35 +0000 |
|---|---|---|
| committer | David Siegfried <david.siegfried@uni-vechta.de> | 2022-09-01 08:24:35 +0000 |
| commit | bdf2f4da7b0c090f6fae71f4b1c19bfea3d6b5e0 (patch) | |
| tree | 1e236643db600d9d370e28b4fd095554785c5182 /lib/models/User.class.php | |
| parent | 1361b2929303878139a42329511accc1ccf180e8 (diff) | |
use SORM instead plain sql, closes #1491
Closes #1491
Merge request studip/studip!930
Diffstat (limited to 'lib/models/User.class.php')
| -rw-r--r-- | lib/models/User.class.php | 39 |
1 files changed, 17 insertions, 22 deletions
diff --git a/lib/models/User.class.php b/lib/models/User.class.php index 2f768c3..1fc2922 100644 --- a/lib/models/User.class.php +++ b/lib/models/User.class.php @@ -295,17 +295,14 @@ class User extends AuthUserMd5 implements Range, PrivacyObject */ public static function findByDatafield($datafield_id, $value) { - $query = "SELECT range_id - FROM datafields_entries - WHERE datafield_id = :datafield_id - AND content = :value"; - $search = DBManager::get()->prepare($query); - $search->execute(compact('datafield_id', 'value')); - $users = []; - foreach ($search->fetchAll(PDO::FETCH_COLUMN) as $user_id) { - $users[] = new User($user_id); - } - return $users; + return User::findMany( + SimpleCollection::createFromArray( + DatafieldEntryModel::findBySQL( + 'datafield_id = :datafield_id AND content = :value', + compact('datafield_id', 'value') + ) + )->pluck('range_id') + ); } public static function findDozentenByTermin_id($termin_id) @@ -1091,20 +1088,18 @@ class User extends AuthUserMd5 implements Range, PrivacyObject // Generische Datenfelder zusammenführen (bestehende Einträge des // "neuen" Nutzers werden dabei nicht überschrieben) $old_user = User::find($old_id); - - $query = "INSERT INTO datafields_entries - (datafield_id, range_id, sec_range_id, content, mkdate, chdate) - VALUES (:datafield_id, :range_id, :sec_range_id, :content, - :mkdate, :chdate) - ON DUPLICATE KEY - UPDATE content = IF(content IN ('', 'default_value'), VALUES(content), content), - chdate = UNIX_TIMESTAMP()"; - - $old_user->datafields->each(function ($field) use ($new_id, $query) { + $old_user->datafields->each(function ($field) use ($new_id) { if (!$field->isNew() && $field->content !== null) { $data = $field->toArray('datafield_id sec_range_id content mkdate chdate'); $data['range_id'] = $new_id; - DBManager::get()->execute($query, $data); + + $datafield = DatafieldEntryModel::findOneBySQL('datafield_id = ?', [$data['datafield_id']]); + if(!$datafield) { + $datafield = DatafieldEntryModel::build($data); + } else { + $datafield->setData($data); + } + $datafield->store(); } }); |
