+++ /dev/null
-<?php
-
-
-namespace App\Models;
-
-use App\Fields\NSISLocale;
-use App\Http\Controllers\Admin\Base\FluidbookTranslateController;
-use App\Http\Controllers\Admin\Operations\FluidbookTranslate\ExcelExportOperation;
-use App\Http\Controllers\Admin\Operations\FluidbookTranslate\ExcelImportOperation;
-use App\Models\Traits\FluidbookPlayerBranches;
-use Cubist\Backpack\Facades\App;
-use Cubist\Backpack\Magic\Models\Translate;
-use Cubist\Util\PHP;
-use Illuminate\Support\Facades\Cache;
-
-// __('!!Traduction des contenus e-learning')
-class ElearningTranslate extends Translate{
-
- protected $table = 'elearning_translate';
-
- protected static $_allTranslations = null;
-
- protected $_enableRevisions = false;
-
- protected $_options = ['name' => 'elearning-translate',
- 'singular' => 'traduction',
- 'plural' => 'traductions',
- 'oneinstance' => true];
-
- protected $_operations = [ExcelExportOperation::class, ExcelImportOperation::class];
-
-
- public function __construct(array $attributes = [])
- {
- PHP::neverStop();
-
- $this->_availableLocales = \Cubist\Locale\Locale::getList(App::getLocale());
- $this->addEditAction('fluidbook_translate.excel_export');
- $this->addEditAction('fluidbook_translate.excel_import');
-
- parent::__construct($attributes);
- }
-
- public function setFields()
- {
- //$this->addField(['name' => 'nsis', 'type' => NSISLocale::class, 'label' => __('Langue de l\'installeur') . ' (' . __('Version offline windows') . ')', 'translatable' => true, 'default' => 'English']);
- parent::setFields();
- }
-
- public function getPaths()
- {
- $res = [];
- foreach (self::getActiveBranches() as $branch) {
- $res['Player - git:' . $branch] = 'resources/fluidbookpublication/player/branches/' . $branch . '/js';
- $res['Player - local:' . $branch] = 'resources/fluidbookpublication/player/local/' . $branch . '/js';
- }
- //$res[__('Compilateur')]='resources/compiler';
- //$res[__('Application')]=''resources/html5app';
- return $res;
- }
-
- public function getExtensions()
- {
- return array_merge(parent::getExtensions(), ['js']);
- }
-
- protected function _getLanguageFile($locale)
- {
- return self::getLanguageFile($locale);
- }
-
- public static function getLanguageFile($locale)
- {
- return resource_path('lang/elearning.' . $locale . '.json');
- }
-
- public static function getAllElearningTranslations($force = false)
- {
- if (null === self::$_allTranslations) {
- $cacheKey = 'all_elearning_translations';
- if ($force) {
- Cache::forget($cacheKey);
- }
- self::$_allTranslations = Cache::remember($cacheKey, 3600, function () {
- start_measure('Get all elearning translations !');
- $t = ElearningTranslate::find(1);
- try {
- $json = json_decode($t->getRawOriginal('content_translatable'), true, 512, JSON_THROW_ON_ERROR);
- } catch (\Exception $e) {
- $json = [];
- }
-
- $res = [];
-
- foreach ($json as $code => $tr) {
- $res[$code] = [];
- foreach ($tr as $k => $v) {
- $res[$code][$k] = ['str' => self::keyToStr($k), 'translation' => $v];
- }
- }
- stop_measure('Get all fluidbook translations !');
- return $res;
-
- });
- }
- return self::$_allTranslations;
- }
-
- public static function getCompiledTranslations()
- {
- $raw = self::getAllElearningTranslations();
- $res = [];
- foreach ($raw as $code => $data) {
- $res[$code] = [];
- foreach ($data as $k => $v) {
- if (is_string($v)) {
- $res[$code][$k] = $v;
- } else {
- $res[$code][$v['str']] = $v['translation'];
- }
- }
- }
- return $res;
- }
-
- /**
- * @throws \JsonException
- */
- public static function updateElearningTranslation($locale, $translations)
- {
- /** @var FluidbookTranslate $t */
- $t = self::find(1);
- $json = json_decode($t->getRawOriginal('content_translatable'), true, 512, JSON_THROW_ON_ERROR);
- foreach ($translations as $k => $v) {
- $json[$locale][$k] = $v;
- }
- $t->setRawAttributes(['content_translatable' => json_encode($json, JSON_THROW_ON_ERROR)]);
- $t->save();
- }
-
- /**
- * @param string $locale
- * @return array[]|null
- * @throws \JsonException
- */
- public static function getElearningTranslation($locale)
- {
- $all = self::getAllFluidbookTranslations();
- $res = $all[$locale] ?? null;
- return $res;
- }
-
-
-}