Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<?php
/**
* Copyright Maarch since 2008 under licence GPLv3.
* See LICENCE.txt file at the root folder for more details.
* This file is part of Maarch software.
*/
/**
* @brief Language Controller
* @author dev@maarch.org
*/
namespace SrcCore\controllers;
use Slim\Http\Request;
use Slim\Http\Response;
use SrcCore\models\CoreConfigModel;
use SrcCore\models\ValidatorModel;
use User\models\UserModel;
class LanguageController
{
public static function get(array $args = [])
{
ValidatorModel::stringType($args, ['lang']);
if (empty($args['lang'])) {
$user = UserModel::getById(['select' => ['preferences'], 'id' => $GLOBALS['id']]);
$user['preferences'] = json_decode($user['preferences'], true);
$args['lang'] = $user['preferences']['lang'];
}
$language = LanguageController::getLanguage(['language' => $args['lang']]);
return $language['lang'];
}
public function getByLang(Request $request, Response $response, array $args)
{
$language = LanguageController::getLanguage(['language' => $args['lang']]);
return $response->withJson($language);
}
public static function getAvailableLanguages()
{
$files = array_diff(scandir('lang'), ['..', '.']);
$loadedXml = CoreConfigModel::getConfig();
if (!empty((string)$loadedXml->config->customLangPathDirectory)) {
$overloadDirectory = (string)$loadedXml->config->customLangPathDirectory;
$files = array_merge($files, array_diff(scandir($overloadDirectory), ['..', '.']));
}
$files = array_unique($files);
$languages = [];
foreach ($files as $value) {
$languages[] = str_replace('.json', '', $value);
}
return $languages;
}
private static function getLanguage(array $args)
{
ValidatorModel::notEmpty($args, ['language']);
ValidatorModel::stringType($args, ['language']);
$language = ['lang' => []];
if (is_file("lang/{$args['language']}.json")) {
$file = file_get_contents("lang/{$args['language']}.json");
$language = json_decode($file, true);
}
$loadedXml = CoreConfigModel::getConfig();
if (!empty((string)$loadedXml->config->customLangPathDirectory)) {
$overloadDirectory = rtrim((string)$loadedXml->config->customLangPathDirectory, '/');
$overloadFile = "{$overloadDirectory}/{$args['language']}.json";
if (is_file($overloadFile)) {
$file = file_get_contents($overloadFile);
$overloadedLanguage = json_decode($file, true);
foreach ($overloadedLanguage['lang'] as $key => $value) {
$language['lang'][$key] = $value;
}
}
}
if (empty($language['lang'])) {
return ['lang' => []];
}
return $language;
}
}