diff -r aefaad270b9b -r 084aae09edf4 server/src/app/Http/Controllers/Api/ThemeController.php --- a/server/src/app/Http/Controllers/Api/ThemeController.php Wed Oct 05 02:31:25 2016 +0200 +++ b/server/src/app/Http/Controllers/Api/ThemeController.php Thu Oct 06 11:14:32 2016 +0200 @@ -35,10 +35,23 @@ */ public function index(Request $request) { + $filter = $request->input('filter', 'bnf'); $index = $request->input('index', 0); - $limit = $request->input('limit', 0); + $limit = $request->input('limit', config('corpusparole.theme_default_limit')); $sort = $request->input('sort', 'count'); + if($filter === 'bnf') { + $include = ".*\|bnf\|.*"; + } + elseif($filter === 'lexvo') { + $include = ".*\|lxv\|.*"; + } + elseif($filter === 'all') { + $include = false; + } + else { + abort(401,"Value for filter parameter must be in 'bnf', 'lexvo', 'all'"); + } if($sort == "count" || $sort == "descending") { $order_field = "_count"; @@ -78,6 +91,10 @@ ] ]; + if($include) { + $query['body']['aggs']['subjects']['aggs']['subjects']['terms']['include'] = $include; + } + $esRes = Es::search($query); $themes = []; @@ -87,7 +104,7 @@ foreach($bucketList as $bucket) { $parts = explode("|", $bucket['key']); $label = $parts[0]; - $url = config('corpusparole.bnf_ark_base_url').$parts[1]; + $url = ['bnf' => config('corpusparole.bnf_ark_base_url'), 'lxv' => config('corpusparole.lexvo_base_url')][$parts[1]].$parts[2]; $themes[$url] = [ "label" => $label, "count" => $bucket['doc_count']