aboutsummaryrefslogtreecommitdiff
path: root/lib/classes
diff options
context:
space:
mode:
authorDavid Siegfried <david.siegfried@uni-vechta.de>2022-09-01 08:24:35 +0000
committerDavid Siegfried <david.siegfried@uni-vechta.de>2022-09-01 08:24:35 +0000
commitbdf2f4da7b0c090f6fae71f4b1c19bfea3d6b5e0 (patch)
tree1e236643db600d9d370e28b4fd095554785c5182 /lib/classes
parent1361b2929303878139a42329511accc1ccf180e8 (diff)
use SORM instead plain sql, closes #1491
Closes #1491 Merge request studip/studip!930
Diffstat (limited to 'lib/classes')
-rw-r--r--lib/classes/Context.php13
-rw-r--r--lib/classes/I18NStringDatafield.php56
-rw-r--r--lib/classes/admission/userfilter/DatafieldCondition.class.php5
3 files changed, 36 insertions, 38 deletions
diff --git a/lib/classes/Context.php b/lib/classes/Context.php
index 09b3a1b..33e1097 100644
--- a/lib/classes/Context.php
+++ b/lib/classes/Context.php
@@ -242,14 +242,11 @@ class Context
&& !match_route('dispatch.php/course/members/additional_input')
&& !match_route('dispatch.php/course/change_view/*'))
{
- $query = "SELECT 1
- FROM datafields_entries
- WHERE range_id = ? AND sec_range_id = ?
- LIMIT 1";
- $statement = DBManager::get()->prepare($query);
- $statement->execute([$GLOBALS['user']->id, $course['Seminar_id']]);
-
- if (!$statement->rowCount()) {
+ $count = DatafieldEntryModel::countBySql(
+ 'range_id = ? AND sec_range_id = ?',
+ [$GLOBALS['user']->id, $course['Seminar_id']]
+ );
+ if (!$count) {
header('Location: ' . URLHelper::getURL('dispatch.php/course/members/additional_input'));
page_close();
die;
diff --git a/lib/classes/I18NStringDatafield.php b/lib/classes/I18NStringDatafield.php
index 4e78178..69c0053 100644
--- a/lib/classes/I18NStringDatafield.php
+++ b/lib/classes/I18NStringDatafield.php
@@ -52,22 +52,23 @@ class I18NStringDatafield extends I18NString
public function storeTranslations()
{
if (is_array($this->lang)) {
- $db = DBManager::get();
$object_id = $this->metadata['object_id'];
/* Replace translations */
- $deleted = $db->execute("DELETE FROM `datafields_entries` "
- . "WHERE `datafield_id` = ? "
- . "AND `range_id` = ? "
- . "AND `sec_range_id` = ? "
- . "AND `lang` <> ''",
- [$object_id[0], $object_id[1], $object_id[2]]);
- $i18nSQL = $db->prepare("INSERT INTO `datafields_entries` "
- . "(`datafield_id`, `range_id`, `sec_range_id`, `content`, `lang`) "
- . "VALUES (?,?,?,?,?)");
+ DatafieldEntryModel::deleteBySQL(
+ "`datafield_id` = ? AND `range_id` = ? AND `sec_range_id` = ? AND `lang` <> ''",
+ [$object_id[0], $object_id[1], $object_id[2]]
+ );
foreach ($this->lang as $lang => $value) {
if (mb_strlen($value)) {
- $i18nSQL->execute([$object_id[0], $object_id[1], $object_id[2],
- (string) $value, (string) $lang]);
+ DataField::create(
+ [
+ 'datafield_id' => $object_id[0],
+ 'range_id' => $object_id[1],
+ 'sec_range_id' => $object_id[2],
+ 'content' => (string) $value,
+ 'lang' => (string) $lang,
+ ]
+ );
}
}
}
@@ -85,18 +86,15 @@ class I18NStringDatafield extends I18NString
*/
public static function load($object_id, $table = '', $field = '', $base = null)
{
- $db = DBManager::get();
if (is_null($base)) {
- $base = $db->fetchColumn("SELECT `content` "
- . "FROM `datafields_entries` "
- . "WHERE `datafield_id` = ? "
- . "AND `range_id` = ? "
- . "AND `sec_range_id` = ? "
- . "AND `lang` = ''", $object_id);
+ $base = DataField::findOneBySQL(
+ "`datafield_id` = ? AND `range_id` = ? AND `sec_range_id` = ? AND `lang` = ''",
+ $object_id
+ );
}
$table = null;
$field = null;
- return new self($base, self::fetchDataForField($object_id, $table, $field),
+ return new self($base->content, self::fetchDataForField($object_id, $table, $field),
compact('object_id', 'table', 'field'));
}
@@ -110,13 +108,17 @@ class I18NStringDatafield extends I18NString
*/
public static function fetchDataForField($object_id, $table, $field)
{
- $db = DBManager::get();
- return $db->fetchPairs("SELECT `lang`, `content` "
- . "FROM `datafields_entries` "
- . "WHERE `datafield_id` = ? "
- . "AND `range_id` = ? "
- . "AND `sec_range_id` = ? "
- . "AND `lang` <> ''", $object_id);
+ $result = [];
+
+ DatafieldEntryModel::findEachBySQL(
+ function (DatafieldEntryModel $model) use (&$result) {
+ $result[$model->lang] = $model->content;
+ },
+ "`datafield_id` = ? AND `range_id` = ? AND `sec_range_id` = ? AND `lang` <> ''",
+ $object_id
+ );
+
+ return $result;
}
/**
diff --git a/lib/classes/admission/userfilter/DatafieldCondition.class.php b/lib/classes/admission/userfilter/DatafieldCondition.class.php
index 471b806..966fe8e 100644
--- a/lib/classes/admission/userfilter/DatafieldCondition.class.php
+++ b/lib/classes/admission/userfilter/DatafieldCondition.class.php
@@ -88,7 +88,6 @@ class DatafieldCondition extends UserFilterField
public function getUsers($restrictions = [])
{
$db = DBManager::get();
- $users = [];
// Standard query getting the values without respecting other values.
$select = "SELECT user_id FROM
auth_user_md5 LEFT JOIN
@@ -103,8 +102,8 @@ class DatafieldCondition extends UserFilterField
* Gets the value for the given user that is relevant for this
*
* @param String $userId User to check.
- * @param Array additional conditions that are required for check.
- * @return The value(s) for this user.
+ * @param Array $additional additional conditions that are required for check.
+ * @return array The value(s) for this user.
*/
public function getUserValues($userId, $additional = null)
{