From a0470bbb814d7fe10ddf1744f258b92194643de3 Mon Sep 17 00:00:00 2001
From: Elmar Ludwig <elmar.ludwig@uni-osnabrueck.de>
Date: Mon, 15 Nov 2021 15:33:49 +0100
Subject: [PATCH] allow unsetting group folder option, fixes #422

---
 app/controllers/course/statusgroups.php | 5 ++---
 app/views/course/statusgroups/edit.php  | 2 +-
 lib/models/Statusgruppen.php            | 7 +++----
 3 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/app/controllers/course/statusgroups.php b/app/controllers/course/statusgroups.php
index eae298c0f5a..79c595bc2f0 100644
--- a/app/controllers/course/statusgroups.php
+++ b/app/controllers/course/statusgroups.php
@@ -518,8 +518,7 @@ class Course_StatusgroupsController extends AuthenticatedController
                 $endtime = 0;
             }
         }
-        $statusgruppe = new Statusgruppen($group_id);
-        $position = $statusgruppe->position;
+        $position = Statusgruppen::find($group_id)->position;
         $group = Statusgruppen::createOrUpdate(
             $group_id,
             Request::get('name'),
@@ -528,7 +527,7 @@ class Course_StatusgroupsController extends AuthenticatedController
             Request::int('selfassign', 0) + Request::int('exclusive', 0),
             strtotime(Request::get('selfassign_start', 'now')),
             Request::get('selfassign_end') ? strtotime(Request::get('selfassign_end')) : 0,
-            Request::int('makefolder', 0) || $statusgruppe->hasFolder(),
+            Request::int('makefolder', 0),
             Request::getArray('dates')
         );
 
diff --git a/app/views/course/statusgroups/edit.php b/app/views/course/statusgroups/edit.php
index 2cc857735de..d4bdde24b36 100644
--- a/app/views/course/statusgroups/edit.php
+++ b/app/views/course/statusgroups/edit.php
@@ -23,7 +23,7 @@
             </label>
         <?php elseif ($group->hasFolder()) : ?>
             <label>
-                <input type="checkbox" checked disabled>
+                <input type="checkbox" name="makefolder" value="1" checked>
                 <?= _('Zu dieser Gruppe gehört ein Dateiordner.')  ?>
             </label>
         <?php endif ?>
diff --git a/lib/models/Statusgruppen.php b/lib/models/Statusgruppen.php
index 16cd3d78696..d064259cfcd 100644
--- a/lib/models/Statusgruppen.php
+++ b/lib/models/Statusgruppen.php
@@ -156,9 +156,7 @@ class Statusgruppen extends SimpleORMap implements PrivacyObject
          * Create document folder if requested (ID is needed here,
          * so we do that after store()).
          */
-        if ($makefolder) {
-            $group->updateFolder(true);
-        }
+        $group->updateFolder($makefolder);
 
         return $group;
     }
@@ -358,11 +356,12 @@ class Statusgruppen extends SimpleORMap implements PrivacyObject
         // Keep existing folder, but disconnect it from group.
         if ($this->hasFolder() && !$set) {
             $folder = $this->getFolder();
-            $folder->type = 'StandardFolder';
+            $folder->folder_type = 'StandardFolder';
             unset($folder->data_content['group']);
             return $folder->store();
         }
 
+        // Update existing folder name
         if ($this->hasFolder() && $set) {
             $folder = $this->getFolder();
             $folder->name = _('Dateiordner der Gruppe:') . ' ' . $this->name;
-- 
GitLab