From 5648f3219c41a328ae6aa4237f26bde561148da3 Mon Sep 17 00:00:00 2001 From: Thibaud Fabre Date: Mon, 27 Jun 2016 17:17:50 +0200 Subject: [PATCH] Remove records property from story search results --- .../Phrasea/Controller/Api/V1Controller.php | 26 ++++++++++++------- .../Phrasea/Fractal/IncludeResolver.php | 1 - .../Phrasea/Search/StoryTransformer.php | 9 ++++++- .../V1SearchCompositeResultTransformer.php | 8 ++++++ .../SearchEngine/SearchEngineOptions.php | 2 ++ 5 files changed, 35 insertions(+), 11 deletions(-) diff --git a/lib/Alchemy/Phrasea/Controller/Api/V1Controller.php b/lib/Alchemy/Phrasea/Controller/Api/V1Controller.php index 0c631bad63..5fa9bbaede 100644 --- a/lib/Alchemy/Phrasea/Controller/Api/V1Controller.php +++ b/lib/Alchemy/Phrasea/Controller/Api/V1Controller.php @@ -1117,6 +1117,7 @@ class V1Controller extends Controller 'results.records.status' => new CallbackTransformer(), 'results.records.caption' => new CallbackTransformer(), ]); + $includeResolver = new IncludeResolver($transformerResolver); $fractal = new \League\Fractal\Manager(); @@ -1406,20 +1407,27 @@ class V1Controller extends Controller */ private function resolveSearchIncludes(Request $request) { - if ($request->attributes->get('_extended', false)) { - return [ + $includes = []; + + if ($request->get('search_type') != SearchEngineOptions::RECORD_STORY) { + $includes += [ 'results.stories.records.subdefs', 'results.stories.records.metadata', 'results.stories.records.caption', - 'results.stories.records.status', - 'results.records.subdefs', - 'results.records.metadata', - 'results.records.caption', - 'results.records.status', + 'results.stories.records.status' ]; } - return []; + if ($request->attributes->get('_extended', false)) { + $includes += [ + 'results.records.subdefs', + 'results.records.metadata', + 'results.records.caption', + 'results.records.status' + ]; + } + + return $includes; } /** @@ -1435,7 +1443,7 @@ class V1Controller extends Controller 'results.subdefs', 'results.metadata', 'results.caption', - 'results.status', + 'results.status' ]; } diff --git a/lib/Alchemy/Phrasea/Fractal/IncludeResolver.php b/lib/Alchemy/Phrasea/Fractal/IncludeResolver.php index df76ac97a3..c8c6a62adb 100644 --- a/lib/Alchemy/Phrasea/Fractal/IncludeResolver.php +++ b/lib/Alchemy/Phrasea/Fractal/IncludeResolver.php @@ -54,7 +54,6 @@ class IncludeResolver private function figureOutWhichIncludes(ResourceTransformerAccessibleScope $scope) { $transformer = $scope->getResourceTransformer(); - $includes = $transformer->getDefaultIncludes(); foreach ($transformer->getAvailableIncludes() as $include) { diff --git a/lib/Alchemy/Phrasea/Search/StoryTransformer.php b/lib/Alchemy/Phrasea/Search/StoryTransformer.php index df73f5580d..0c1d17dc35 100644 --- a/lib/Alchemy/Phrasea/Search/StoryTransformer.php +++ b/lib/Alchemy/Phrasea/Search/StoryTransformer.php @@ -15,8 +15,15 @@ use League\Fractal\TransformerAbstract; class StoryTransformer extends TransformerAbstract { + /** + * @var array + */ protected $availableIncludes = ['thumbnail', 'metadatas', 'records']; - protected $defaultIncludes = ['thumbnail', 'metadatas', 'records']; + + /** + * @var array + */ + protected $defaultIncludes = ['thumbnail', 'metadatas']; /** * @var SubdefTransformer diff --git a/lib/Alchemy/Phrasea/Search/V1SearchCompositeResultTransformer.php b/lib/Alchemy/Phrasea/Search/V1SearchCompositeResultTransformer.php index f8b46894df..4023f769dc 100644 --- a/lib/Alchemy/Phrasea/Search/V1SearchCompositeResultTransformer.php +++ b/lib/Alchemy/Phrasea/Search/V1SearchCompositeResultTransformer.php @@ -14,13 +14,21 @@ use League\Fractal\TransformerAbstract; class V1SearchCompositeResultTransformer extends TransformerAbstract { + /** + * @var string[] + */ protected $availableIncludes = ['stories', 'records']; + + /** + * @var string[] + */ protected $defaultIncludes = ['stories', 'records']; /** * @var RecordTransformer */ private $recordTransformer; + /** * @var StoryTransformer */ diff --git a/lib/Alchemy/Phrasea/SearchEngine/SearchEngineOptions.php b/lib/Alchemy/Phrasea/SearchEngine/SearchEngineOptions.php index 53446c2e97..77bfecd071 100644 --- a/lib/Alchemy/Phrasea/SearchEngine/SearchEngineOptions.php +++ b/lib/Alchemy/Phrasea/SearchEngine/SearchEngineOptions.php @@ -24,6 +24,7 @@ class SearchEngineOptions { const RECORD_RECORD = 0; const RECORD_GROUPING = 1; + const RECORD_STORY = 2; const TYPE_IMAGE = 'image'; const TYPE_VIDEO = 'video'; const TYPE_AUDIO = 'audio'; @@ -296,6 +297,7 @@ class SearchEngineOptions $this->search_type = self::RECORD_RECORD; break; case self::RECORD_GROUPING: + case self::RECORD_STORY: $this->search_type = self::RECORD_GROUPING; break; }