From 9b70c496fd62de9d7f7a3440837df7d026c8a2b1 Mon Sep 17 00:00:00 2001
From: Ron Lucke <lucke@elan-ev.de>
Date: Fri, 2 Feb 2024 07:30:38 +0000
Subject: [PATCH] fix #2925

Closes #2925

Merge request studip/studip!2483
---
 .../Courseware/StructuralElementsSharedIndex.php   | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/lib/classes/JsonApi/Routes/Courseware/StructuralElementsSharedIndex.php b/lib/classes/JsonApi/Routes/Courseware/StructuralElementsSharedIndex.php
index 0dc7c0d447c..1582fbfb18d 100644
--- a/lib/classes/JsonApi/Routes/Courseware/StructuralElementsSharedIndex.php
+++ b/lib/classes/JsonApi/Routes/Courseware/StructuralElementsSharedIndex.php
@@ -42,9 +42,9 @@ class StructuralElementsSharedIndex extends JsonApiController
         }
 
         list($offset, $limit) = $this->getOffsetAndLimit();
-        $resources = [];
+        $elements = [];
         $contents = StructuralElement::findBySQL(
-            'range_id != ? AND range_type = ? ORDER BY mkdate DESC',
+            'range_id != ? AND range_type = ? ORDER BY mkdate ASC',
             [$user->id, 'user']
         );
 
@@ -68,7 +68,15 @@ class StructuralElementsSharedIndex extends JsonApiController
             }
 
             if ($add_content) {
-                $resources[] = $content;
+                $elements[] = $content;
+            }
+        }
+
+        $resources = [];
+        foreach ($elements as $element) {
+            $has_parent = array_column($elements, null, 'id')[$element->parent_id] ?? false;
+            if (!$has_parent) {
+                $resources[] = $element;
             }
         }
 
-- 
GitLab