From 4416a4fe4f09de572ac3c56c5fd83b65e747591c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julio=20Cesar=20Laura=20Avenda=C3=B1o?= Date: Thu, 16 Jan 2020 14:28:53 -0400 Subject: [PATCH] PMCORE-1049 --- .../unit/workflow/engine/classes/PmDynaformTest.php | 6 ++++++ workflow/engine/classes/PmDynaform.php | 13 +++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/tests/unit/workflow/engine/classes/PmDynaformTest.php b/tests/unit/workflow/engine/classes/PmDynaformTest.php index fa4693ae0..d02565b06 100644 --- a/tests/unit/workflow/engine/classes/PmDynaformTest.php +++ b/tests/unit/workflow/engine/classes/PmDynaformTest.php @@ -909,6 +909,8 @@ class PmDynaformTest extends TestCase $sqlOriginal3 = 'DUMMY'; + $sqlOriginal4 = 'SELECT U.USR_UID, U.USR_USERNAME FROM PMT_CODES C INNER JOIN USERS U ON U.USR_USERNAME = C.USR_USERNAME'; + // Instance the class PmDynaform $pmDynaform = new PmDynaform([]); @@ -924,6 +926,10 @@ class PmDynaformTest extends TestCase // Test another string, shoul be return the same value $sqlParsed3 = $pmDynaform->sqlParse($sqlOriginal3); $this->assertEquals($sqlOriginal3, $sqlParsed3); + + // Test bug PMCORE-1049 + $sqlParsed4 = $pmDynaform->sqlParse($sqlOriginal4); + $this->assertNotFalse(strpos($sqlParsed4, 'C.USR_USERNAME')); } /** diff --git a/workflow/engine/classes/PmDynaform.php b/workflow/engine/classes/PmDynaform.php index 6f7da3e5a..0fd7cf05e 100644 --- a/workflow/engine/classes/PmDynaform.php +++ b/workflow/engine/classes/PmDynaform.php @@ -1023,8 +1023,17 @@ class PmDynaform . " JOIN " . $dt[$key]["table"] . ($dt[$key]["table"] == $dt[$key]["alias"] ? "" : " " . $dt[$key]["alias"]) . " " - . $dt[$key]["ref_type"] . " " - . rtrim($dt[$key]["ref_clause"], " INNER"); + . $dt[$key]["ref_type"] . " "; + + // Get the last 6 chars of the string + $tempString = mb_substr($dt[$key]["ref_clause"], -6); + + // If the last section is a "INNER" statement we need to remove it + if (strcasecmp($tempString, " INNER") === 0) { + $from .= mb_substr($dt[$key]["ref_clause"], 0, mb_strlen($dt[$key]["ref_clause"]) - 6); + } else { + $from .= $dt[$key]["ref_clause"]; + } } } }