From 378647ecac33b591f4a4b4a3bd12ec2a647b8f14 Mon Sep 17 00:00:00 2001
From: Nicole Cordes <typo3@cordes.co>
Date: Mon, 12 Dec 2016 17:53:10 +0100
Subject: [PATCH] [BUGFIX] TCA: Make ###CURRENT_PID### work in
 foreign_table_where in IRRE
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The patch adds the current database row to the data passed to the select
field rendered by foreign_selector of IRRE.
This data is necessary to properly resolve the ###CURRENT_PID### marker
in a foreign_table_where clause.

Resolves: #78960
Releases: master, 7.6
Change-Id: I17f6b4a78d20c101ef7caab227d23c87f138e8ce
Reviewed-on: https://review.typo3.org/50934
Reviewed-by: Markus Klein <markus.klein@typo3.org>
Tested-by: Markus Klein <markus.klein@typo3.org>
Tested-by: TYPO3com <no-reply@typo3.com>
Tested-by: Jasmina Ließmann <code@frauliessmann.de>
Reviewed-by: Nicole Cordes <typo3@cordes.co>
Tested-by: Nicole Cordes <typo3@cordes.co>
---
 .../Form/FormDataProvider/AbstractItemProvider.php  | 13 ++++++++-----
 .../Classes/Form/FormDataProvider/TcaInline.php     |  1 +
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/typo3/sysext/backend/Classes/Form/FormDataProvider/AbstractItemProvider.php b/typo3/sysext/backend/Classes/Form/FormDataProvider/AbstractItemProvider.php
index 302429cffd06..0d81e9bce390 100644
--- a/typo3/sysext/backend/Classes/Form/FormDataProvider/AbstractItemProvider.php
+++ b/typo3/sysext/backend/Classes/Form/FormDataProvider/AbstractItemProvider.php
@@ -1048,11 +1048,14 @@ abstract class AbstractItemProvider
                 }
                 $foreignTableClause = implode('', $whereClauseParts);
             }
-            // Use pid from parent page clause if in flex flom context
-            if (strpos($foreignTableClause, '###CURRENT_PID###') !== false
-                && !empty($result['flexParentDatabaseRow']['pid'])
-            ) {
-                $effectivePid = $result['flexParentDatabaseRow']['pid'];
+            if (strpos($foreignTableClause, '###CURRENT_PID###') !== false) {
+                // Use pid from parent page clause if in flex form context
+                if (!empty($result['flexParentDatabaseRow']['pid'])) {
+                    $effectivePid = $result['flexParentDatabaseRow']['pid'];
+                // Use pid from database row if in inline context
+                } elseif (!$effectivePid && !empty($result['databaseRow']['pid'])) {
+                    $effectivePid = $result['databaseRow']['pid'];
+                }
             }
 
             $siteRootUid = 0;
diff --git a/typo3/sysext/backend/Classes/Form/FormDataProvider/TcaInline.php b/typo3/sysext/backend/Classes/Form/FormDataProvider/TcaInline.php
index 34d6c98b1aa9..840393ac4ec0 100644
--- a/typo3/sysext/backend/Classes/Form/FormDataProvider/TcaInline.php
+++ b/typo3/sysext/backend/Classes/Form/FormDataProvider/TcaInline.php
@@ -255,6 +255,7 @@ class TcaInline extends AbstractDatabaseRecordProvider implements FormDataProvid
                 // do extra handling of pageTsConfig merged here. Just provide "parent" pageTS as is
                 'pageTsConfig' => $result['pageTsConfig'],
                 'userTsConfig' => $result['userTsConfig'],
+                'databaseRow' => $result['databaseRow'],
                 'processedTca' => [
                     'ctrl' => [],
                     'columns' => [
-- 
GitLab