From 74658534080290b03b3d9ccf622b7f8789eb126b Mon Sep 17 00:00:00 2001
From: Rasmus Fuhse <fuhse@data-quest.de>
Date: Fri, 10 Feb 2023 08:22:48 +0000
Subject: [PATCH] Resolve "Fehler bei Migration CreateCwUnitsTable"

Closes #2144

Merge request studip/studip!1386
---
 db/migrations/5.3.16_create_cw_units_table.php        | 6 +++---
 lib/classes/JsonApi/Routes/Courseware/UnitsCreate.php | 5 ++---
 lib/models/Courseware/Unit.php                        | 4 ++--
 3 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/db/migrations/5.3.16_create_cw_units_table.php b/db/migrations/5.3.16_create_cw_units_table.php
index 7b9fac35ff0..0e461201141 100644
--- a/db/migrations/5.3.16_create_cw_units_table.php
+++ b/db/migrations/5.3.16_create_cw_units_table.php
@@ -20,7 +20,7 @@ class CreateCwUnitsTable extends Migration
             `public`                  TINYINT(4) NOT NULL DEFAULT '1',
             `creator_id`              CHAR(32) COLLATE latin1_bin DEFAULT NULL,
             `release_date`            INT(11) UNSIGNED DEFAULT NULL,
-            `withdraw_date`           INT(11) UNSIGNED NOT NULL,
+            `withdraw_date`           INT(11) UNSIGNED DEFAULT NULL,
             `mkdate`                  INT(11) UNSIGNED NOT NULL,
             `chdate`                  INT(11) UNSIGNED NOT NULL,
 
@@ -36,8 +36,8 @@ class CreateCwUnitsTable extends Migration
 
         // create unit for each courseware root node
         $insert = $db->prepare(
-            "INSERT INTO `cw_units` (`range_id`, `range_type`, `structural_element_id`, `content_type`, `public`, `creator_id`) 
-             VALUES (?, ?, ?, 'courseware', true, ?)"
+            "INSERT INTO `cw_units` (`range_id`, `range_type`, `structural_element_id`, `content_type`, `public`, `creator_id`, `mkdate`, `chdate`)
+             VALUES (?, ?, ?, 'courseware', true, ?, UNIX_TIMESTAMP(), UNIX_TIMESTAMP())"
         );
         foreach ($cw_root_nodes as $courseware) {
             $insert->execute([$courseware['range_id'], $courseware['range_type'], $courseware['id'], $courseware['owner_id']]);
diff --git a/lib/classes/JsonApi/Routes/Courseware/UnitsCreate.php b/lib/classes/JsonApi/Routes/Courseware/UnitsCreate.php
index 8098bca93f8..da152b2398f 100644
--- a/lib/classes/JsonApi/Routes/Courseware/UnitsCreate.php
+++ b/lib/classes/JsonApi/Routes/Courseware/UnitsCreate.php
@@ -100,8 +100,8 @@ class UnitsCreate extends JsonApiController
             'content_type' => 'courseware',
             'creator_id' => $user->id,
             'public' => self::arrayGet($json, 'data.attributes.public', ''),
-            'release_date' => self::arrayGet($json, 'data.attributes.release-date', ''),
-            'withdraw_date' => self::arrayGet($json, 'data.attributes.withdraw-date', ''),
+            'release_date' => self::arrayGet($json, 'data.attributes.release-date'),
+            'withdraw_date' => self::arrayGet($json, 'data.attributes.withdraw-date'),
         ]);
         
         $unit->store();
@@ -119,4 +119,3 @@ class UnitsCreate extends JsonApiController
         return $type_map[$type] ?? null;
     }
 }
-
diff --git a/lib/models/Courseware/Unit.php b/lib/models/Courseware/Unit.php
index 4dc1eeb08a4..5782d11c063 100644
--- a/lib/models/Courseware/Unit.php
+++ b/lib/models/Courseware/Unit.php
@@ -99,8 +99,8 @@ class Unit extends \SimpleORMap
             'content_type' => 'courseware',
             'creator_id' => $user->id,
             'public' => '',
-            'release_date' => '',
-            'withdraw_date' => '',
+            'release_date' => null,
+            'withdraw_date' => null,
         ]);
         
         $newUnit->store();
-- 
GitLab