[BUGFIX] Do not re-sort IRRE children when sorting parent
[Packages/TYPO3.CMS.git] / typo3 / sysext / core / Classes / DataHandling / DataHandler.php
index e9af779..93d8ae6 100644 (file)
@@ -4373,14 +4373,16 @@ class DataHandler implements LoggerAwareInterface
         // This is the actual pid of the moving to destination
         $resolvedPid = $this->resolvePid($table, $destPid);
         // Finding out, if the record may be moved from where it is. If the record is a non-page, then it depends on edit-permissions.
-        // If the record is a page, then there are two options: If the page is moved within itself, (same pid) it's edit-perms of the pid. If moved to another place then its both delete-perms of the pid and new-page perms on the destination.
+        // If the record is a page, then there are two options: If the page is moved within itself,
+        // (same pid) it's edit-perms of the pid. If moved to another place then its both delete-perms of the pid and new-page perms on the destination.
         if ($table !== 'pages' || $resolvedPid == $moveRec['pid']) {
             // Edit rights for the record...
             $mayMoveAccess = $this->checkRecordUpdateAccess($table, $uid);
         } else {
             $mayMoveAccess = $this->doesRecordExist($table, $uid, 'delete');
         }
-        // Finding out, if the record may be moved TO another place. Here we check insert-rights (non-pages = edit, pages = new), unless the pages are moved on the same pid, then edit-rights are checked
+        // Finding out, if the record may be moved TO another place. Here we check insert-rights (non-pages = edit, pages = new),
+        // unless the pages are moved on the same pid, then edit-rights are checked
         if ($table !== 'pages' || $resolvedPid != $moveRec['pid']) {
             // Insert rights for the record...
             $mayInsertAccess = $this->checkRecordInsertAccess($table, $resolvedPid, 4);
@@ -4592,13 +4594,13 @@ class DataHandler implements LoggerAwareInterface
      * If child records are found, they are also move to the new $destPid.
      *
      * @param string $table Record Table
-     * @param string $uid Record UID
-     * @param string $destPid Position to move to
+     * @param int $uid Record UID
+     * @param int $destPid Position to move to
      */
     public function moveRecord_procFields($table, $uid, $destPid)
     {
         $row = BackendUtility::getRecordWSOL($table, $uid);
-        if (is_array($row)) {
+        if (is_array($row) && (int)$destPid !== (int)$row['pid']) {
             $conf = $GLOBALS['TCA'][$table]['columns'];
             foreach ($row as $field => $value) {
                 $this->moveRecord_procBasedOnFieldType($table, $uid, $destPid, $field, $value, $conf[$field]['config']);