From 46bafa045fe139105c4f2143fb008cc1c1c508a2 Mon Sep 17 00:00:00 2001 From: Sami Mokaddem Date: Thu, 16 Nov 2023 09:02:40 +0100 Subject: [PATCH] chg: [crud:index] Include all meta-fields regardless of user's preference when in REST context --- src/Controller/Component/CRUDComponent.php | 10 +++++++--- src/Model/Entity/AppModel.php | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/Controller/Component/CRUDComponent.php b/src/Controller/Component/CRUDComponent.php index 8774d32..2a74da4 100644 --- a/src/Controller/Component/CRUDComponent.php +++ b/src/Controller/Component/CRUDComponent.php @@ -96,8 +96,9 @@ class CRUDComponent extends Component $query->order($sort . ' ' . $direction); } } + $isRestOrCSV = $this->Controller->ParamHandler->isRest() || $this->request->is('csv'); if ($this->metaFieldsSupported()) { - $query = $this->includeRequestedMetaFields($query); + $query = $this->includeRequestedMetaFields($query, $isRestOrCSV); } if (!$this->Controller->ParamHandler->isRest()) { @@ -107,7 +108,7 @@ class CRUDComponent extends Component } $data = $this->Controller->paginate($query, $this->Controller->paginate ?? []); $totalCount = $this->Controller->getRequest()->getAttribute('paging')[$this->TableAlias]['count']; - if ($this->Controller->ParamHandler->isRest() || $this->request->is('csv')) { + if ($isRestOrCSV) { if (isset($options['hidden'])) { $data->each(function($value, $key) use ($options) { $hidden = is_array($options['hidden']) ? $options['hidden'] : [$options['hidden']]; @@ -777,8 +778,11 @@ class CRUDComponent extends Component return $data; } - protected function includeRequestedMetaFields($query) + protected function includeRequestedMetaFields($query, $isREST=false) { + if (!empty($isREST)) { + return $query->contain(['MetaFields']); + } $user = $this->Controller->ACL->getUser(); $tableSettings = IndexSetting::getTableSetting($user, $this->Table); if (empty($tableSettings['visible_meta_column'])) { diff --git a/src/Model/Entity/AppModel.php b/src/Model/Entity/AppModel.php index 1cf31bc..0b95b9e 100644 --- a/src/Model/Entity/AppModel.php +++ b/src/Model/Entity/AppModel.php @@ -78,7 +78,7 @@ class AppModel extends Entity $this->meta_fields[$i]['template_namespace'] = $templates[$templateDirectoryId]['namespace']; } } - if (!empty($options['smartFlattenMetafields'])) { + if (!empty($this->meta_fields) && !empty($options['smartFlattenMetafields'])) { $smartFlatten = []; foreach ($this->meta_fields as $metafield) { $key = "{$metafield['template_name']}_v{$metafield['template_version']}:{$metafield['field']}";