From 799e09084dc676940bd03aa93f379adf1ed9555e Mon Sep 17 00:00:00 2001
From: Jan-Hendrik Willms <tleilax+studip@gmail.com>
Date: Tue, 14 Feb 2023 09:16:41 +0000
Subject: [PATCH] disallow NULL values for columns Vorname, Nachname and Email
 in table auth_user_md5, fixes #1998

Closes #1998

Merge request studip/studip!1393
---
 app/controllers/course/members.php            | 14 +++----
 app/views/course/members/index.php            | 15 +++++++-
 ....2.16_alter_auth_user_md5_null_columns.php | 38 +++++++++++++++++++
 3 files changed, 59 insertions(+), 8 deletions(-)
 create mode 100644 db/migrations/5.2.16_alter_auth_user_md5_null_columns.php

diff --git a/app/controllers/course/members.php b/app/controllers/course/members.php
index 4e31df1ebb6..e631bb75a89 100644
--- a/app/controllers/course/members.php
+++ b/app/controllers/course/members.php
@@ -121,9 +121,9 @@ class Course_MembersController extends AuthenticatedController
                     $this->sort_by . ' ' . $this->order
                 )
             );
-            $this->awaiting = $filtered_members['awaiting']->toArray('user_id username vorname nachname visible mkdate');
-            $this->accepted = $filtered_members['accepted']->toArray('user_id username vorname nachname visible mkdate');
-            $this->claiming = $filtered_members['claiming']->toArray('user_id username vorname nachname visible mkdate');
+            $this->awaiting = $filtered_members['awaiting']->toArray();
+            $this->accepted = $filtered_members['accepted']->toArray();
+            $this->claiming = $filtered_members['claiming']->toArray();
         }
 
         // Check autor-perms
@@ -144,10 +144,10 @@ class Course_MembersController extends AuthenticatedController
         }
 
         // get member informations
-        $this->dozenten = $filtered_members['dozent']->toArray('user_id username vorname nachname');
-        $this->tutoren = $filtered_members['tutor']->toArray('user_id username vorname nachname mkdate');
-        $this->autoren = $filtered_members['autor']->toArray('user_id username vorname nachname visible mkdate');
-        $this->users = $filtered_members['user']->toArray('user_id username vorname nachname visible mkdate');
+        $this->dozenten = $filtered_members['dozent']->toArray();
+        $this->tutoren = $filtered_members['tutor']->toArray();
+        $this->autoren = $filtered_members['autor']->toArray();
+        $this->users = $filtered_members['user']->toArray();
         $this->studipticket = Seminar_Session::get_ticket();
         $this->subject = $this->getSubject();
         $this->groups = $this->status_groups;
diff --git a/app/views/course/members/index.php b/app/views/course/members/index.php
index 2eef8b69fbc..fc77d2e7f81 100644
--- a/app/views/course/members/index.php
+++ b/app/views/course/members/index.php
@@ -1,3 +1,16 @@
+<?php
+/**
+ * @var array $dozenten
+ * @var array $tutoren
+ * @var array $autoren
+ * @var array $users
+ * @var array $accepted
+ * @var array $awaiting
+ * @var Course $course
+ * @var bool $is_tutor
+ * @var bool $semAdmissionEnabled
+ */
+?>
 <? if (count($dozenten) > 0) : ?>
     <?= $this->render_partial('course/members/dozent_list') ?>
 <? endif ?>
@@ -17,7 +30,7 @@
     <div class="clear"></div>
 <? endif ?>
 
-<? if(count($autoren) >0) : ?>
+<? if (count($autoren) > 0) : ?>
     <br />
     <?= $this->render_partial('course/members/autor_list') ?>
 <? endif ?>
diff --git a/db/migrations/5.2.16_alter_auth_user_md5_null_columns.php b/db/migrations/5.2.16_alter_auth_user_md5_null_columns.php
new file mode 100644
index 00000000000..6cf1f2d49bb
--- /dev/null
+++ b/db/migrations/5.2.16_alter_auth_user_md5_null_columns.php
@@ -0,0 +1,38 @@
+<?php
+/**
+ * @see https://gitlab.studip.de/studip/studip/-/issues/1998
+ */
+final class AlterAuthUserMd5NullColumns extends Migration
+{
+    public function description()
+    {
+        return 'Removes NULL values from columns in auth_user_md5';
+    }
+
+    public function up()
+    {
+        $query = "UPDATE `auth_user_md5` SET `Vorname` = '' WHERE `Vorname` IS NULL";
+        DBManager::get()->exec($query);
+
+        $query = "UPDATE `auth_user_md5` SET `Nachname` = '' WHERE `Nachname` IS NULL";
+        DBManager::get()->exec($query);
+
+        $query = "UPDATE `auth_user_md5` SET `Email` = '' WHERE `Email` IS NULL";
+        DBManager::get()->exec($query);
+
+        $query = "ALTER TABLE `auth_user_md5`
+                  CHANGE COLUMN `Vorname` `Vorname` VARCHAR(64) NOT NULL DEFAULT '',
+                  CHANGE COLUMN `Nachname` `Nachname` VARCHAR(64) NOT NULL DEFAULT '',
+                  CHANGE COLUMN `Email` `Email` VARCHAR(256) NOT NULL DEFAULT ''";
+        DBManager::get()->exec($query);
+    }
+
+    public function down()
+    {
+        $query = "ALTER TABLE `auth_user_md5`
+                  CHANGE COLUMN `Vorname` `Vorname` VARCHAR(64) DEFAULT NULL,
+                  CHANGE COLUMN `Nachname` `Nachname` VARCHAR(64) DEFAULT NULL,
+                  CHANGE COLUMN `Email` `Email` VARCHAR(256) DEFAULT NULL";
+        DBManager::get()->exec($query);
+    }
+}
-- 
GitLab