--- 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']