]> _ Git - cubist_cms-back.git/commitdiff
wip #3322 @0.5
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 15 Jan 2020 11:52:00 +0000 (12:52 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 15 Jan 2020 11:52:00 +0000 (12:52 +0100)
src/app/Magic/Models/Locale.php

index cecc1f5f2e0c7129263e4cd879a0046c735952b7..a28c8a4618d68aac86e74b88723a026d7ab8ee52 100644 (file)
@@ -10,7 +10,7 @@ class Locale extends CubistMagicAbstractModel
 {
     protected $table = 'cubist_locales';
 
-    protected static $_locales = null;
+    protected static $_locales = [];
     protected static $_mainDomains = [];
 
     protected $_options = ['name' => 'locale',
@@ -60,17 +60,26 @@ class Locale extends CubistMagicAbstractModel
     /**
      * @return array
      */
-    public static function getLocalesData($filterVariant = true)
+    public static function getLocalesData($variant = true)
     {
-        $variant = App::getVariant();
-        if (self::$_locales === null) {
+        if (null === $variant || $variant === true) {
+            $variant = App::getVariant();
+        }
+        if ($variant === false) {
+            $variant = 'unset';
+            $filter = false;
+        } else {
+            $filter = true;
+        }
+
+        if (!isset(self::$_locales[$variant])) {
             $class = Locale::getLocaleClass();
 
             $localeEntities = $class::orderBy('default', 'DESC')->get();
             $defaultLocale = null;
             $locales = [];
             foreach ($localeEntities as $locale) {
-                if ($filterVariant && $variant !== 'unset' && $variant !== $locale->variant) {
+                if ($filter && $variant !== 'unset' && $variant !== $locale->variant) {
                     continue;
                 }
                 $locales[] = $locale;
@@ -79,9 +88,9 @@ class Locale extends CubistMagicAbstractModel
                 }
             }
 
-            self::$_locales = ['locales' => $locales, 'default' => $defaultLocale];
+            self::$_locales[$variant] = ['locales' => $locales, 'default' => $defaultLocale];
         }
-        return self::$_locales;
+        return self::$_locales[$variant];
     }
 
     /**
@@ -156,8 +165,12 @@ class Locale extends CubistMagicAbstractModel
         return $res;
     }
 
-    public static function getLocaleData($locale)
+    public static function getLocaleData($locale, $variant = null)
     {
+        if (null === $variant) {
+            $variant = App::getVariant();
+        }
+
         $all = self::getLocalesData()['locales'];
         foreach ($all as $data) {
             if ($data->locale === $locale) {
@@ -167,9 +180,17 @@ class Locale extends CubistMagicAbstractModel
         return null;
     }
 
-    public static function getMainDomain($locale)
+    public static function getMainDomain($locale, $variant = null)
     {
-        if (!isset(self::$_mainDomains[$locale])) {
+        if ($variant === null) {
+            $variant = App::getVariant();
+        }
+
+        if (!isset(self::$_mainDomains[$variant])) {
+            self::$_mainDomains[$variant] = [];
+        }
+
+        if (!isset(self::$_mainDomains[$variant][$locale])) {
             $loc = self::getLocaleData($locale);
             if (null === $loc) {
                 return false;
@@ -184,9 +205,9 @@ class Locale extends CubistMagicAbstractModel
                     break;
                 }
             }
-            self::$_mainDomains[$locale] = $res ?? false;
+            self::$_mainDomains[$variant][$locale] = $res ?? false;
         }
-        return self::$_mainDomains[$locale];
+        return self::$_mainDomains[$variant][$locale];
     }
 
     public static function isLocaleEnabled($locale)