server/src/app/Http/Controllers/Api/ThemeController.php
changeset 322 084aae09edf4
parent 321 aefaad270b9b
child 323 47f0611cc57d
--- 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']