From 39baf41a719b7f4663eeba35a23844b0af77652e Mon Sep 17 00:00:00 2001
From: zhoujl <zhoujie.li@math.uzh.ch>
Date: Thu, 7 Dec 2023 11:31:17 +0100
Subject: [PATCH] F4026: Implement to detect and log the FormElement Id which
 triggers a query in sqllog. refs #4026

---
 extension/Classes/Core/AbstractBuildForm.php |  4 ++++
 extension/Classes/Core/Database/Database.php |  4 ++++
 extension/Classes/Core/Form/FormAction.php   |  2 ++
 extension/Classes/Core/Save.php              | 12 ++++++++++++
 4 files changed, 22 insertions(+)

diff --git a/extension/Classes/Core/AbstractBuildForm.php b/extension/Classes/Core/AbstractBuildForm.php
index 074a1b500..8e113ae74 100644
--- a/extension/Classes/Core/AbstractBuildForm.php
+++ b/extension/Classes/Core/AbstractBuildForm.php
@@ -1023,6 +1023,7 @@ abstract class AbstractBuildForm {
 
         // Log / Debug: Last FormElement has been processed.
         $this->store->setVar(SYSTEM_FORM_ELEMENT, '', STORE_SYSTEM);
+        $this->store->setVar(SYSTEM_FORM_ELEMENT_ID, 0, STORE_SYSTEM);
 
         return $html;
     }
@@ -4282,6 +4283,9 @@ EOT;
             }
         }
 
+        $this->store->setVar(SYSTEM_FORM_ELEMENT, '', STORE_SYSTEM);
+        $this->store->setVar(SYSTEM_FORM_ELEMENT_ID, 0, STORE_SYSTEM);
+
         return $tgMax;
     }
 
diff --git a/extension/Classes/Core/Database/Database.php b/extension/Classes/Core/Database/Database.php
index d22f9dcb3..1c8c059fb 100644
--- a/extension/Classes/Core/Database/Database.php
+++ b/extension/Classes/Core/Database/Database.php
@@ -615,11 +615,15 @@ class Database {
             ['level', SYSTEM_REPORT_FULL_LEVEL, STORE_SYSTEM],
             ['form', SIP_FORM, STORE_SIP],
             ['fslId', EXTRA_FORM_SUBMIT_LOG_ID, STORE_EXTRA],
+            ['feId', SYSTEM_FORM_ELEMENT_ID, STORE_SYSTEM]
         ];
 
         $t3msg = '';
         foreach ($logArr as $logItem) {
             $value = $this->store->getVar($logItem[1], $logItem[2]);
+            if($logItem[0] == 'feId' && empty($value)) {
+                $value='all';
+            }
             if (!empty($value)) {
                 $t3msg .= $logItem[0] . ":" . $value . ",";
             }
diff --git a/extension/Classes/Core/Form/FormAction.php b/extension/Classes/Core/Form/FormAction.php
index 353844d37..53444f597 100644
--- a/extension/Classes/Core/Form/FormAction.php
+++ b/extension/Classes/Core/Form/FormAction.php
@@ -228,6 +228,8 @@ class FormAction {
                     break;
             }
         }
+        $this->store->setVar(SYSTEM_FORM_ELEMENT, '', STORE_SYSTEM);
+        $this->store->setVar(SYSTEM_FORM_ELEMENT_ID, 0, STORE_SYSTEM);
 
         return $rc;
     }
diff --git a/extension/Classes/Core/Save.php b/extension/Classes/Core/Save.php
index 4bc1a8ebc..4b5ab83f5 100644
--- a/extension/Classes/Core/Save.php
+++ b/extension/Classes/Core/Save.php
@@ -644,9 +644,14 @@ class Save {
             $this->store->setVar(SYSTEM_FORM_ELEMENT, Logger::formatFormElementName($fe), STORE_SYSTEM);
             $this->store->setVar(SYSTEM_FORM_ELEMENT_ID, $fe[FE_ID], STORE_SYSTEM);
 
+
             $this->formAction->doSqlBeforeSlaveAfter($fe, $recordId, false);
             $this->typeAheadDoTagGlue($fe);
         }
+
+        $this->store->setVar(SYSTEM_FORM_ELEMENT, '', STORE_SYSTEM);
+        $this->store->setVar(SYSTEM_FORM_ELEMENT_ID, 0, STORE_SYSTEM);
+
     }
 
     /**
@@ -910,6 +915,10 @@ class Save {
             }
         }
 
+        $this->store->setVar(SYSTEM_FORM_ELEMENT, '', STORE_SYSTEM);
+        $this->store->setVar(SYSTEM_FORM_ELEMENT_ID, 0, STORE_SYSTEM);
+
+
         // Clean up
         HelperFile::chdir($cwd);
 
@@ -1096,6 +1105,9 @@ class Save {
             }
         }
 
+        $this->store->setVar(SYSTEM_FORM_ELEMENT, '', STORE_SYSTEM);
+        $this->store->setVar(SYSTEM_FORM_ELEMENT_ID, 0, STORE_SYSTEM);
+
         // Save 'allRequiredGiven in STORE_VAR
         $this->store::setVar(VAR_ALL_REQUIRED_GIVEN, $flagAllRequiredGiven, STORE_VAR, true);
     }
-- 
GitLab