From 61cff0278cb6e8a21feedbcef10094d0d43119a6 Mon Sep 17 00:00:00 2001
From: Ron Lucke <lucke@elan-ev.de>
Date: Mon, 23 Jan 2023 07:29:48 +0000
Subject: [PATCH] BIEST #2049

Closes #2049

Merge request studip/studip!1328
---
 lib/models/Courseware/StructuralElement.php | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/lib/models/Courseware/StructuralElement.php b/lib/models/Courseware/StructuralElement.php
index 9aa4f90e625..dbe2e62581d 100644
--- a/lib/models/Courseware/StructuralElement.php
+++ b/lib/models/Courseware/StructuralElement.php
@@ -817,6 +817,12 @@ SQL;
      */
     public function copy(User $user, StructuralElement $parent, string $purpose = ''): StructuralElement
     {
+        $ancestorIds = array_column($parent->findAncestors(), 'id');
+        $ancestorIds[] = $parent->id;
+        if (in_array($this->id, $ancestorIds)) {
+            throw new \InvalidArgumentException('Cannot copy into descendants.');
+        }
+
         $file_ref_id = $this->copyImage($user, $parent);
 
         $element = self::build([
-- 
GitLab