dbXapp
2.0
RAD, CMS, Module und Runtime-IDE fuer dbXapp
Toggle main menu visibility
Loading...
Searching...
No Matches
dbxConfig_dbxContent.class.php
Go to the documentation of this file.
1
<?php
2
namespace
dbx\dbxAdmin;
3
4
require_once dirname(__DIR__, 2) .
'/dbxContent/include/dbxContentTranslate.class.php'
;
5
6
use dbx\dbxContent\dbxContentTranslate;
7
8
class
dbxConfig_dbxContent
{
9
10
private
const
LNG_FD =
'fd:dbxContent|config-lng'
;
11
12
private
const
TRANSLATE_KEYS = array(
13
'lng_translate_provider'
,
14
'lng_translate_api_key'
,
15
'lng_translate_api_url'
,
16
'lng_translate_model'
,
17
);
18
19
private
function
addLngFld($oForm,
string
$name):
void
{
20
$oForm->add_fld($name,
'fd::'
,
'fd::'
,
'fd::'
,
'fd::'
,
'fd::'
,
'fd::'
,
'fd::'
,
'fd::'
,
'fd::'
, self::LNG_FD);
21
}
22
26
private
function
buildFormData(): array {
27
$contentCfg =
dbx
()->get_config(
'dbxContent'
);
28
if
(!is_array($contentCfg)) {
29
$contentCfg = array();
30
}
31
32
$data = array(
33
'lng_translate_provider'
=> strtolower(trim((
string
) ($contentCfg[
'lng_translate_provider'
] ??
'copy'
))),
34
'lng_translate_api_key'
=> (
string
) ($contentCfg[
'lng_translate_api_key'
] ??
''
),
35
'lng_translate_api_url'
=> (
string
) ($contentCfg[
'lng_translate_api_url'
] ??
''
),
36
'lng_translate_model'
=> (
string
) ($contentCfg[
'lng_translate_model'
] ??
'gpt-4o-mini'
),
37
);
38
39
if
($data[
'lng_translate_provider'
] ===
''
|| $data[
'lng_translate_provider'
] ===
'undef'
) {
40
$data[
'lng_translate_provider'
] =
'copy'
;
41
}
42
if
($data[
'lng_translate_model'
] ===
''
|| $data[
'lng_translate_model'
] ===
'undef'
) {
43
$data[
'lng_translate_model'
] =
'gpt-4o-mini'
;
44
}
45
46
$dbxCfg =
dbx
()->get_config(
'dbx'
);
47
if
(!is_array($dbxCfg)) {
48
$dbxCfg = array();
49
}
50
51
$data[
'default_lng'
] = strtolower(trim((
string
) ($dbxCfg[
'default_lng'
] ??
'de'
)));
52
if
($data[
'default_lng'
] ===
''
|| $data[
'default_lng'
] ===
'undef'
) {
53
$data[
'default_lng'
] =
'de'
;
54
}
55
56
$accessible = $dbxCfg[
'accessible_lng'
] ??
'de'
;
57
if
(is_array($accessible)) {
58
$data[
'accessible_lng'
] = implode(
','
, $accessible);
59
}
else
{
60
$data[
'accessible_lng'
] = trim((
string
) $accessible);
61
}
62
if
($data[
'accessible_lng'
] ===
''
|| $data[
'accessible_lng'
] ===
'undef'
) {
63
$data[
'accessible_lng'
] = $data[
'default_lng'
];
64
}
65
66
$homeCfg =
dbx
()->get_config(
'dbxHome'
);
67
$data[
'home_cid'
] = is_array($homeCfg) ? (string) ($homeCfg[
'cid'
] ??
'1'
) :
'1'
;
68
if
($data[
'home_cid'
] ===
''
|| $data[
'home_cid'
] ===
'undef'
) {
69
$data[
'home_cid'
] =
'1'
;
70
}
71
72
return
$data;
73
}
74
78
private
function
normalizeAccessibleLng($raw,
string
$defaultLng): array {
79
$out = array();
80
if
(is_array($raw)) {
81
foreach
($raw as $val) {
82
$val = strtolower(trim((
string
) $val));
83
if
($val !==
''
&& preg_match(
'/^[a-z]{2,3}$/'
, $val)) {
84
$out[] = $val;
85
}
86
}
87
}
else
{
88
$parts = preg_split(
'/\s*,\s*/'
, (
string
) $raw, -1, PREG_SPLIT_NO_EMPTY);
89
if
(is_array($parts)) {
90
foreach
($parts as $val) {
91
$val = strtolower(trim((
string
) $val));
92
if
($val !==
''
&& preg_match(
'/^[a-z]{2,3}$/'
, $val)) {
93
$out[] = $val;
94
}
95
}
96
}
97
}
98
99
$out = array_values(array_unique($out));
100
if
($defaultLng !==
''
&& !in_array($defaultLng, $out,
true
)) {
101
array_unshift($out, $defaultLng);
102
}
103
if
(!count($out)) {
104
$out = array($defaultLng !==
''
? $defaultLng :
'de'
);
105
}
106
107
return
$out;
108
}
109
110
private
function
saveLngConfig(array
$config
):
void
{
111
$defaultLng = strtolower(trim((
string
) (
$config
[
'default_lng'
] ??
'de'
)));
112
if
($defaultLng ===
''
|| !preg_match(
'/^[a-z]{2,3}$/'
, $defaultLng)) {
113
$defaultLng =
'de'
;
114
}
115
116
$accessibleList = $this->normalizeAccessibleLng(
$config
[
'accessible_lng'
] ?? $defaultLng, $defaultLng);
117
118
$dbxCfg =
dbx
()->get_config(
'dbx'
);
119
if
(!is_array($dbxCfg)) {
120
$dbxCfg = array();
121
}
122
$dbxCfg[
'default_lng'
] = $defaultLng;
123
$dbxCfg[
'accessible_lng'
] = implode(
','
, $accessibleList);
124
dbx
()->set_config(
'dbx'
, $dbxCfg);
125
126
$homeCid = trim((
string
) (
$config
[
'home_cid'
] ??
'1'
));
127
if
($homeCid ===
''
|| !ctype_digit($homeCid)) {
128
$homeCid =
'1'
;
129
}
130
131
$homeCfg =
dbx
()->get_config(
'dbxHome'
);
132
if
(!is_array($homeCfg)) {
133
$homeCfg = array();
134
}
135
$homeCfg[
'cid'
] = $homeCid;
136
dbx
()->set_config(
'dbxHome'
, $homeCfg);
137
}
138
139
private
function
saveTranslateConfig(array
$config
):
void
{
140
$contentCfg =
dbx
()->get_config(
'dbxContent'
);
141
if
(!is_array($contentCfg)) {
142
$contentCfg = array();
143
}
144
145
foreach
(self::TRANSLATE_KEYS as $key) {
146
if
(!array_key_exists($key,
$config
)) {
147
continue
;
148
}
149
$contentCfg[$key] =
$config
[$key];
150
}
151
152
if
(!isset($contentCfg[
'dbxConfig_modul'
]) || $contentCfg[
'dbxConfig_modul'
] ===
''
) {
153
$contentCfg[
'dbxConfig_modul'
] =
'secure'
;
154
}
155
156
dbx
()->set_config(
'dbxContent'
, $contentCfg);
157
}
158
159
public
function
run
($action =
''
) {
160
$data = $this->buildFormData();
161
162
$oForm =
dbx
()->get_system_obj(
'dbxForm'
);
163
$oForm->init(
'form-dbxContent-config'
,
'config-dbxContent-shell'
);
164
$oForm->_action = $action !==
''
165
? $action
166
:
'?dbx_modul=dbxAdmin&dbx_run1=config&dbx_run2=edit&xmodul=dbxContent'
;
167
$oForm->_dd = self::LNG_FD;
168
$oForm->_data = $data;
169
$oForm->_fld_change_state =
'*'
;
170
171
$help =
dbx
()->get_include_obj(
'dbxAdminHelp'
,
'dbxAdmin'
);
172
$help->attachForm($oForm,
'content_lng'
);
173
174
$oForm->add_rep(
'section_languages'
,
'Sprachen'
);
175
$oForm->add_rep(
'languages_hint'
,
'Master- und Zielsprachen steuern CMS-Tabellen, Tree-Badges und Startseiten-Aufloesung.'
);
176
$oForm->add_rep(
'section_translate'
,
'Uebersetzung (API)'
);
177
$oForm->add_rep(
'translate_hint'
,
'Provider und API-Zugang fuer automatische Uebersetzung bei Sync und Provision.'
);
178
179
$this->addLngFld($oForm,
'default_lng'
);
180
$this->addLngFld($oForm,
'accessible_lng'
);
181
$this->addLngFld($oForm,
'home_cid'
);
182
183
$this->addLngFld($oForm,
'lng_translate_provider'
);
184
$this->addLngFld($oForm,
'lng_translate_api_key'
);
185
$this->addLngFld($oForm,
'lng_translate_api_url'
);
186
$this->addLngFld($oForm,
'lng_translate_model'
);
187
188
$saveBtn =
dbx
()->get_system_obj(
'dbxTPL'
)->get_tpl(
'dbx|button-submit'
, array(
189
'label'
=>
'Sprach-Config speichern'
,
190
));
191
$oForm->add_obj(
'button'
,
'obj-value'
, $saveBtn);
192
$oForm->add_obj(
'bar_actions'
,
'obj-value'
, $saveBtn);
193
194
if
($oForm->submit() && !$oForm->errors()) {
195
$config
= is_array($oForm->_post) ? $oForm->_post : array();
196
foreach
(array(
'button'
,
'bar_actions'
) as $skip) {
197
unset(
$config
[$skip]);
198
}
199
200
$this->saveLngConfig(
$config
);
201
$this->saveTranslateConfig(
$config
);
202
203
dbx
()->sys_msg(
204
'info'
,
205
'dbxContent'
,
206
'config'
,
207
'Sprach-Config gespeichert'
,
208
'master='
. (
string
) (
$config
[
'default_lng'
] ??
''
) .
'; provider='
. (
string
) (
$config
[
'lng_translate_provider'
] ??
''
)
209
);
210
211
$oForm->_data = $this->buildFormData();
212
}
213
214
$this->applyBarReps($oForm);
215
216
return
$oForm->run();
217
}
218
219
private
function
applyBarReps($oForm): void {
220
$provider =
dbxContentTranslate
::provider();
221
$oForm->add_rep(
'bar_title'
,
'CMS — Sprachen & Uebersetzung'
);
222
$oForm->add_rep(
223
'bar_subtitle'
,
224
'Aktiver Uebersetzungs-Provider: '
. $provider .
' (nach Speichern neu geladen)'
225
);
226
$oForm->add_rep(
'bar_icon'
,
'bi-translate'
);
227
$oForm->add_rep(
'bar_class'
,
'dbx-module-bar'
);
228
$oForm->add_rep(
'bar_title_class'
,
'dbx-module-bar-titleblock'
);
229
$oForm->add_rep(
'bar_actions_class'
,
'dbx-module-bar-actions'
);
230
$oForm->add_rep(
'current_provider'
, $provider);
231
}
232
}
dbx\dbxAdmin\dbxConfig_dbxContent
Definition
dbxConfig_dbxContent.class.php:8
dbx\dbxAdmin\dbxConfig_dbxContent\run
run($action='')
Definition
dbxConfig_dbxContent.class.php:159
dbx\dbxContent\dbxContentTranslate
Definition
dbxContentTranslate.class.php:4
$config
$config['version']
Definition
config.php:2
dbx
DBX schema administration.
dbx
modules
dbxAdmin
include
dbxConfig_dbxContent.class.php
Generated by
1.17.0