From 1539f200262ae9d2f1fbce5acb5ba3541cefbb17 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Wed, 8 Sep 2021 14:47:40 -0400 Subject: [PATCH] SearchKit - Partial backport of 4afe3e --- .../Api4/Action/SearchDisplay/AbstractRunAction.php | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/ext/search_kit/Civi/Api4/Action/SearchDisplay/AbstractRunAction.php b/ext/search_kit/Civi/Api4/Action/SearchDisplay/AbstractRunAction.php index 03d392d511..d18254c7c1 100644 --- a/ext/search_kit/Civi/Api4/Action/SearchDisplay/AbstractRunAction.php +++ b/ext/search_kit/Civi/Api4/Action/SearchDisplay/AbstractRunAction.php @@ -319,6 +319,9 @@ abstract class AbstractRunAction extends \Civi\Api4\Generic\AbstractAction { * @param array $apiParams */ protected function augmentSelectClause(&$apiParams): void { + $existing = array_map(function($item) { + return explode(' AS ', $item)[1] ?? $item; + }, $apiParams['select']); $additions = []; // Add primary key field if actions are enabled if (!empty($this->display['settings']['actions'])) { @@ -334,14 +337,16 @@ abstract class AbstractRunAction extends \Civi\Api4\Generic\AbstractAction { } // Select value fields for in-place editing - if (isset($column['editable']['value']) && !in_array($column['editable']['value'], $apiParams['select'])) { - $apiParams['select'][] = $column['editable']['value']; + if (isset($column['editable']['value'])) { + $additions[] = $column['editable']['value']; } } // Add fields referenced via token $tokens = []; preg_match_all('/\\[([^]]+)\\]/', $possibleTokens, $tokens); - $apiParams['select'] = array_unique(array_merge($apiParams['select'], $additions, $tokens[1])); + // Only add fields not already in SELECT clause + $additions = array_diff(array_merge($additions, $tokens[1]), $existing); + $apiParams['select'] = array_unique(array_merge($apiParams['select'], $additions)); } /** -- 2.25.1