diff --git a/libraries/classes/Display/Results.php b/libraries/classes/Display/Results.php index 7a5b75219665..d826da2ab528 100644 --- a/libraries/classes/Display/Results.php +++ b/libraries/classes/Display/Results.php @@ -982,7 +982,6 @@ private function getMoveForwardButtonsForTableNavigation( * @param array $sortDirection sort direction * @param bool $isLimitedDisplay with limited operations * or not - * @param string $unsortedSqlQuery query without the sort part * * @return string html content */ @@ -992,8 +991,7 @@ private function getTableHeadersForColumns( array $sortExpression, array $sortExpressionNoDirection, array $sortDirection, - $isLimitedDisplay, - $unsortedSqlQuery + $isLimitedDisplay ) { // required to generate sort links that will remember whether the // "Show all" button has been clicked @@ -1040,7 +1038,7 @@ private function getTableHeadersForColumns( $fieldsMeta[$i], $sortExpression, $sortExpressionNoDirection, - $unsortedSqlQuery, + $analyzedSqlResults, $sessionMaxRows, $comments, $sortDirection, @@ -1092,7 +1090,6 @@ private function getTableHeadersForColumns( * * @param array $displayParts which elements to display * @param array $analyzedSqlResults analyzed sql results - * @param string $unsortedSqlQuery the unsorted sql query * @param array $sortExpression sort expression * @param array $sortExpressionNoDirection sort expression without direction * @param array $sortDirection sort direction @@ -1110,7 +1107,6 @@ private function getTableHeadersForColumns( private function getTableHeaders( array $displayParts, array $analyzedSqlResults, - $unsortedSqlQuery, array $sortExpression = [], array $sortExpressionNoDirection = [], array $sortDirection = [], @@ -1161,8 +1157,7 @@ private function getTableHeaders( $sortExpression, $sortExpressionNoDirection, $sortDirection, - $isLimitedDisplay, - $unsortedSqlQuery + $isLimitedDisplay ); // Display column at rightside - checkboxes or empty column @@ -1513,7 +1508,7 @@ private function getCommentForRow(array $commentsMap, FieldMetadata $fieldsMeta) * @param FieldMetadata $fieldsMeta set of field properties * @param array $sortExpression sort expression * @param array $sortExpressionNoDirection sort expression without direction - * @param string $unsortedSqlQuery the unsorted sql query + * @param array $analyzedSqlResults analyzed sql results * @param int $sessionMaxRows maximum rows resulted by sql * @param string $comments comment for row * @param array $sortDirection sort direction @@ -1536,7 +1531,7 @@ private function getOrderLinkAndSortedHeaderHtml( FieldMetadata $fieldsMeta, array $sortExpression, array $sortExpressionNoDirection, - $unsortedSqlQuery, + array $analyzedSqlResults, $sessionMaxRows, string $comments, array $sortDirection, @@ -1565,19 +1560,16 @@ private function getOrderLinkAndSortedHeaderHtml( $fieldsMeta ); - if ( - preg_match( - '@(.*)([[:space:]](LIMIT (.*)|PROCEDURE (.*)|FOR UPDATE|LOCK IN SHARE MODE))@is', - $unsortedSqlQuery, - $regs3 - ) - ) { - $singleSortedSqlQuery = $regs3[1] . $singleSortOrder . $regs3[2]; - $multiSortedSqlQuery = $regs3[1] . $multiSortOrder . $regs3[2]; - } else { - $singleSortedSqlQuery = $unsortedSqlQuery . $singleSortOrder; - $multiSortedSqlQuery = $unsortedSqlQuery . $multiSortOrder; - } + $singleSortedSqlQuery = Query::replaceClause( + $analyzedSqlResults['statement'], + $analyzedSqlResults['parser']->list, + $singleSortOrder + ); + $multiSortedSqlQuery = Query::replaceClause( + $analyzedSqlResults['statement'], + $analyzedSqlResults['parser']->list, + $multiSortOrder + ); $singleUrlParams = [ 'db' => $this->properties['db'], @@ -3711,7 +3703,6 @@ public function getTable( $this->properties['table'] = $fieldsMeta[0]->table; } - $unsortedSqlQuery = ''; $sortByKeyData = []; // can the result be sorted? if ($displayParts['sort_lnk'] == '1' && isset($analyzedSqlResults['statement'])) { @@ -3764,7 +3755,6 @@ public function getTable( $headers = $this->getTableHeaders( $displayParts, $analyzedSqlResults, - $unsortedSqlQuery, $sortExpression, $sortExpressionNoDirection, $sortDirection, diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 9839c0c226f2..ec82c6f9aa35 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -3025,6 +3025,11 @@ parameters: count: 1 path: libraries/classes/Display/Results.php + - + message: "#^Method PhpMyAdmin\\\\Display\\\\Results\\:\\:getOrderLinkAndSortedHeaderHtml\\(\\) has parameter \\$analyzedSqlResults with no value type specified in iterable type array\\.$#" + count: 1 + path: libraries/classes/Display/Results.php + - message: "#^Method PhpMyAdmin\\\\Display\\\\Results\\:\\:getOrderLinkAndSortedHeaderHtml\\(\\) has parameter \\$sortDirection with no value type specified in iterable type array\\.$#" count: 1 @@ -3306,7 +3311,7 @@ parameters: path: libraries/classes/Display/Results.php - - message: "#^Parameter \\#5 \\$sortExpressionNoDirection of method PhpMyAdmin\\\\Display\\\\Results\\:\\:getTableHeaders\\(\\) expects array\\, array\\ given\\.$#" + message: "#^Parameter \\#4 \\$sortExpressionNoDirection of method PhpMyAdmin\\\\Display\\\\Results\\:\\:getTableHeaders\\(\\) expects array\\, array\\ given\\.$#" count: 1 path: libraries/classes/Display/Results.php diff --git a/psalm-baseline.xml b/psalm-baseline.xml index d682318aa87f..e06760099b52 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -5997,7 +5997,7 @@ $GLOBALS['cfg']['Order'] $delUrlParams - + $_SESSION['tmpval']['max_rows'] $_SESSION['tmpval']['pos'] / $_SESSION['tmpval']['max_rows'] $_SESSION['tmpval']['query'] @@ -6005,10 +6005,14 @@ $analyzedSqlResults['parser']->list $analyzedSqlResults['parser']->list $analyzedSqlResults['parser']->list + $analyzedSqlResults['parser']->list + $analyzedSqlResults['parser']->list $analyzedSqlResults['select_tables'] $analyzedSqlResults['statement'] $analyzedSqlResults['statement'] $analyzedSqlResults['statement'] + $analyzedSqlResults['statement'] + $analyzedSqlResults['statement'] $analyzedSqlResults['statement']->from $clause $clauseIsUnique @@ -6278,7 +6282,8 @@ $firstShownRec $sortExpressionNoDirection[$indexInExpression] - + + $analyzedSqlResults['parser']->list $analyzedSqlResults['parser']->list $analyzedSqlResults['parser']->list $analyzedSqlResults['statement']->expr diff --git a/test/classes/Display/ResultsTest.php b/test/classes/Display/ResultsTest.php index ce4e0abf91fe..c02068972846 100644 --- a/test/classes/Display/ResultsTest.php +++ b/test/classes/Display/ResultsTest.php @@ -1466,13 +1466,13 @@ public function testGetTable(): void [ 'column_name' => 'id', 'order_link' => 'id' . '' . '' . "\n" . '', 'comments' => '', 'is_browse_pointer_enabled' => true, @@ -1493,13 +1493,13 @@ public function testGetTable(): void [ 'column_name' => 'name', 'order_link' => 'name' . '' . '' . "\n" . '', 'comments' => '', 'is_browse_pointer_enabled' => true, @@ -1520,15 +1520,15 @@ public function testGetTable(): void [ 'column_name' => 'datetimefield', 'order_link' => 'datetimefield' . '' . '' . "\n" . '', 'comments' => '', 'is_browse_pointer_enabled' => true,