]> _ Git - cubist_cms-back.git/commitdiff
wip #3323 @0.75
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 15 Jan 2020 13:35:15 +0000 (14:35 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 15 Jan 2020 13:35:15 +0000 (14:35 +0100)
src/app/Console/Commands/SearchIndexCommand.php
src/app/Magic/Search.php

index 27c1928a2f6acb5baf60ac9e02bda47c5eb9f998..a573157ca80aefe3fce9712031aed25d7a32c764 100644 (file)
@@ -16,12 +16,12 @@ use Cubist\Util\XML\DOMSelector;
 
 class SearchIndexCommand extends Command
 {
-    protected $signature = 'cubist:search:index {locale=all}';
+    protected $signature = 'cubist:search:index {variant=all} {locale=all}';
     protected $description = 'Index data for search engine';
 
     public function handle()
     {
-        Search::index($this->argument('locale'));
+        Search::index($this->argument('variant'), $this->argument('locale'));
     }
 
 
index d4d3f6426a818ca3e622a74e70039f72c2b1b912..2a2f06fb821c449c93a8eae60c9d122169777255 100644 (file)
@@ -4,6 +4,7 @@ namespace Cubist\Backpack\app\Magic;
 
 use Cubist\Backpack\app\Magic\Models\Locale;
 use Cubist\Backpack\app\Magic\Menu\Menu;
+use Cubist\Backpack\Facades\App;
 use Cubist\Util\XML\DOMSelector;
 use Cviebrock\LaravelElasticsearch\Facade as Elasticsearch;
 
@@ -129,20 +130,33 @@ class Search
         ]
     ];
 
-    public static function index($locale = 'all')
+    public static function index($variant = 'all', $locale = 'all')
+    {
+        if ($variant !== 'all') {
+            self::indexVariant($variant, $locale);
+            return;
+        }
+
+        foreach (App::getVariants() as $v) {
+            self::indexVariant($v, $locale);
+        }
+    }
+
+    public static function indexVariant($variant, $locale = 'all')
     {
         if ($locale !== 'all') {
-            self::indexLocale($locale);
+            self::indexLocale($variant, $locale);
             return;
         }
         foreach (Locale::getLocales() as $l) {
-            self::indexLocale($l->locale);
+            self::indexLocale($variant, $l->locale);
         }
     }
 
-    public static function indexLocale($locale)
+
+    public static function indexLocale($variant, $locale)
     {
-        $index = config('cubist.internal_search_index') . '_' . $locale;
+        $index = self::_getIndexKey($locale, $variant);
 
         try {
             Elasticsearch::indices()->delete(['index' => $index]);
@@ -170,7 +184,7 @@ class Search
             ]);
 
         /** @var Cubist\Backpack\app\Magic\Menu\Item[] $pages */
-        $pages = Menu::getAllNavigablePages($locale);
+        $pages = Menu::getAllNavigablePages($locale, $variant);
         $indexed = [];
 
         foreach ($pages as $url => $page) {
@@ -256,9 +270,17 @@ class Search
         return self::$_analysis[$locale];
     }
 
-    public static function query($term, $locale, $type = null, $limit = null)
+    protected static function _getIndexKey($locale, $variant = null)
+    {
+        if (null === $variant) {
+            $variant = App::getVariant();
+        }
+        return md5(config('cubist.internal_search_index') . '_' . $variant . '_' . $locale);
+    }
+
+    public static function query($term, $locale, $variant = null, $type = null, $limit = null)
     {
-        $index = config('cubist.internal_search_index') . '_' . $locale;
+        $index = self::_getIndexKey($locale, $variant);
         if (null === $limit) {
             $limit = 50;
         }