1C-Bitrix
25.700.0
Загрузка...
Поиск...
Не найдено
language.php
См. документацию.
1
<?php
2
3
use
Bitrix\Main\Localization\CultureTable
;
4
use
Bitrix\Main\Localization
;
5
6
IncludeModuleLangFile
(__FILE__);
7
8
class
CAllLanguage
9
{
10
var
$LAST_ERROR
;
11
12
public
static
function
GetList
($by =
"sort"
,
$order
=
"asc"
,
$arFilter
= [])
13
{
14
global
$DB
;
15
16
$arSqlSearch = [];
17
18
if
(is_array(
$arFilter
))
19
{
20
foreach
(
$arFilter
as
$key
=>
$val
)
21
{
22
if
((
string
)
$val <>
''
)
23
{
24
switch
(strtoupper(
$key
))
25
{
26
case
"ACTIVE"
:
27
if
(
$val
==
"Y"
||
$val
==
"N"
)
28
{
29
$arSqlSearch[] =
"L.ACTIVE='"
.
$DB
->ForSql(
$val
) .
"'"
;
30
}
31
break
;
32
33
case
"NAME"
:
34
$arSqlSearch[] =
"UPPER(L.NAME) LIKE UPPER('"
.
$DB
->ForSql(
$val
) .
"')"
;
35
break
;
36
37
case
"ID"
:
38
case
"LID"
:
39
$arSqlSearch[] =
"L.LID='"
.
$DB
->ForSql(
$val
) .
"'"
;
40
break
;
41
case
"CODE"
:
42
$arSqlSearch[] =
"L.CODE='"
.
$DB
->ForSql(
$val
) .
"'"
;
43
break
;
44
}
45
}
46
}
47
}
48
49
$strSqlSearch =
""
;
50
foreach
($arSqlSearch as $condition)
51
{
52
$strSqlSearch .=
" AND ("
. $condition .
") "
;
53
}
54
55
$strSql =
56
"SELECT L.*, L.LID as ID, L.LID as LANGUAGE_ID, "
.
57
" C.FORMAT_DATE, C.FORMAT_DATETIME, C.FORMAT_NAME, C.WEEK_START, C.CHARSET, C.DIRECTION "
.
58
"FROM b_language L, b_culture C "
.
59
"WHERE C.ID = L.CULTURE_ID "
.
60
$strSqlSearch;
61
62
if
($by ==
"lid"
|| $by ==
"id"
)
63
{
64
$strSqlOrder =
" ORDER BY L.LID "
;
65
}
66
elseif
($by ==
"active"
)
67
{
68
$strSqlOrder =
" ORDER BY L.ACTIVE "
;
69
}
70
elseif
($by ==
"name"
)
71
{
72
$strSqlOrder =
" ORDER BY L.NAME "
;
73
}
74
elseif
($by ==
"code"
)
75
{
76
$strSqlOrder =
" ORDER BY L.CODE "
;
77
}
78
elseif
($by ==
"def"
)
79
{
80
$strSqlOrder =
" ORDER BY L.DEF "
;
81
}
82
else
83
{
84
$strSqlOrder =
" ORDER BY L.SORT "
;
85
}
86
87
if
(
$order
==
"desc"
)
88
{
89
$strSqlOrder .=
" desc "
;
90
}
91
92
$strSql .= $strSqlOrder;
93
94
$res
=
$DB
->Query($strSql);
95
96
return
$res
;
97
}
98
99
public
static
function
GetByID
(
$ID
)
100
{
101
return
CLanguage::GetList
(
''
,
''
, [
"LID"
=>
$ID
]);
102
}
103
104
public
function
CheckFields
(
$arFields
,
$ID
=
false
)
105
{
106
global
$APPLICATION
,
$DB
;
107
108
$this->LAST_ERROR =
""
;
109
$arMsg = [];
110
111
if
((
$ID
===
false
|| isset(
$arFields
[
"LID"
])) && mb_strlen(
$arFields
[
"LID"
]) <> 2)
112
{
113
$this->LAST_ERROR .=
GetMessage
(
"BAD_LANG_LID"
) .
" "
;
114
$arMsg[] = [
"id"
=>
"LID"
,
"text"
=>
GetMessage
(
"BAD_LANG_LID"
)];
115
}
116
if
(
$ID
===
false
&& !isset(
$arFields
[
"CULTURE_ID"
]))
117
{
118
$this->LAST_ERROR .=
GetMessage
(
"lang_check_culture_not_set"
) .
" "
;
119
$arMsg[] = [
"id"
=>
"CULTURE_ID"
,
"text"
=>
GetMessage
(
"lang_check_culture_not_set"
)];
120
}
121
if
(isset(
$arFields
[
"CULTURE_ID"
]))
122
{
123
if
(
CultureTable::getRowById
(
$arFields
[
"CULTURE_ID"
]) ===
null
)
124
{
125
$this->LAST_ERROR .=
GetMessage
(
"lang_check_culture_incorrect"
) .
" "
;
126
$arMsg[] = [
"id"
=>
"CULTURE_ID"
,
"text"
=>
GetMessage
(
"lang_check_culture_incorrect"
)];
127
}
128
}
129
if
(isset(
$arFields
[
"NAME"
]) && mb_strlen(
$arFields
[
"NAME"
]) < 2)
130
{
131
$this->LAST_ERROR .=
GetMessage
(
"BAD_LANG_NAME"
) .
" "
;
132
$arMsg[] = [
"id"
=>
"NAME"
,
"text"
=>
GetMessage
(
"BAD_LANG_NAME"
)];
133
}
134
if
(isset(
$arFields
[
"SORT"
]) && intval(
$arFields
[
"SORT"
]) <= 0)
135
{
136
$this->LAST_ERROR .=
GetMessage
(
"BAD_LANG_SORT"
) .
" "
;
137
$arMsg[] = [
"id"
=>
"SORT"
,
"text"
=>
GetMessage
(
"BAD_LANG_SORT"
)];
138
}
139
140
if
(!empty($arMsg))
141
{
142
$e =
new
CAdminException
($arMsg);
143
$APPLICATION
->ThrowException($e);
144
}
145
146
if
($this->LAST_ERROR <>
""
)
147
{
148
return
false
;
149
}
150
151
if
(
$ID
===
false
)
152
{
153
$r =
$DB
->Query(
"SELECT 'x' FROM b_language WHERE LID='"
.
$DB
->ForSQL(
$arFields
[
"LID"
], 2) .
"'"
);
154
if
($r->Fetch())
155
{
156
$this->LAST_ERROR .=
GetMessage
(
"BAD_LANG_DUP"
) .
" "
;
157
$e =
new
CAdminException
([[
"id"
=>
"LID"
,
"text"
=>
GetMessage
(
"BAD_LANG_DUP"
)]]);
158
$APPLICATION
->ThrowException($e);
159
return
false
;
160
}
161
}
162
163
return
true
;
164
}
165
166
public
function
Add
(
$arFields
)
167
{
168
global
$DB
;
169
170
if
(!$this->
CheckFields
(
$arFields
))
171
{
172
return
false
;
173
}
174
175
if
(
is_set
(
$arFields
,
"ACTIVE"
) &&
$arFields
[
"ACTIVE"
] !=
"Y"
)
176
{
177
$arFields
[
"ACTIVE"
] =
"N"
;
178
}
179
180
$arInsert =
$DB
->PrepareInsert(
"b_language"
,
$arFields
);
181
182
if
(
is_set
(
$arFields
,
"DEF"
))
183
{
184
if
(
$arFields
[
"DEF"
] ==
"Y"
)
185
{
186
$DB
->Query(
"UPDATE b_language SET DEF='N' WHERE DEF='Y'"
);
187
}
188
else
189
{
190
$arFields
[
"DEF"
] =
"N"
;
191
}
192
}
193
194
$strSql =
195
"INSERT INTO b_language("
. $arInsert[0] .
") "
.
196
"VALUES("
. $arInsert[1] .
")"
;
197
$DB
->Query($strSql);
198
199
Localization\LanguageTable::cleanCache
();
200
201
foreach
(
GetModuleEvents
(
'main'
,
'OnAfterLanguageAdd'
,
true
) as $arEvent)
202
{
203
ExecuteModuleEventEx
($arEvent, [
$arFields
]);
204
}
205
206
return
$arFields
[
"LID"
];
207
}
208
209
public
function
Update
(
$ID
,
$arFields
)
210
{
211
global
$DB
;
212
213
unset(CSite::$MAIN_LANGS_CACHE[
$ID
]);
214
unset(CSite::$MAIN_LANGS_ADMIN_CACHE[
$ID
]);
215
216
if
(!$this->
CheckFields
(
$arFields
,
$ID
))
217
{
218
return
false
;
219
}
220
221
if
(
is_set
(
$arFields
,
"ACTIVE"
) &&
$arFields
[
"ACTIVE"
] !=
"Y"
)
222
{
223
$arFields
[
"ACTIVE"
] =
"N"
;
224
}
225
226
if
(
is_set
(
$arFields
,
"DEF"
))
227
{
228
if
(
$arFields
[
"DEF"
] ==
"Y"
)
229
{
230
$DB
->Query(
"UPDATE b_language SET DEF='N' WHERE DEF='Y'"
);
231
}
232
else
233
{
234
$arFields
[
"DEF"
] =
"N"
;
235
}
236
}
237
238
$strUpdate =
$DB
->PrepareUpdate(
"b_language"
,
$arFields
);
239
$strSql =
"UPDATE b_language SET "
. $strUpdate .
" WHERE LID='"
.
$DB
->ForSql(
$ID
, 2) .
"'"
;
240
$DB
->Query($strSql);
241
242
Localization\LanguageTable::cleanCache
();
243
244
return
true
;
245
}
246
247
public
static
function
Delete
(
$ID
)
248
{
249
global
$APPLICATION
,
$DB
;
250
251
$db_res
= CLang::GetList(
''
,
''
, [
"LANGUAGE_ID"
=>
$ID
]);
252
if
(
$db_res
->Fetch())
253
{
254
return
false
;
255
}
256
257
foreach
(
GetModuleEvents
(
"main"
,
"OnBeforeLanguageDelete"
,
true
) as $arEvent)
258
{
259
if
(
ExecuteModuleEventEx
($arEvent, [
$ID
]) ===
false
)
260
{
261
$err =
GetMessage
(
"MAIN_BEFORE_DEL_ERR1"
) .
' '
. $arEvent[
'TO_NAME'
];
262
if
($ex =
$APPLICATION
->GetException())
263
{
264
$err .=
': '
. $ex->GetString();
265
}
266
$APPLICATION
->throwException($err);
267
return
false
;
268
}
269
}
270
271
foreach
(
GetModuleEvents
(
"main"
,
"OnLanguageDelete"
,
true
) as $arEvent)
272
{
273
ExecuteModuleEventEx
($arEvent, [
$ID
]);
274
}
275
276
CFavorites::OnLanguageDelete
(
$ID
);
277
278
$res
=
$DB
->Query(
"DELETE FROM b_language WHERE LID='"
.
$DB
->ForSQL(
$ID
, 2) .
"'"
,
true
);
279
280
Localization\LanguageTable::cleanCache
();
281
282
return
$res
;
283
}
284
285
public
static
function
SelectBox
($sFieldName, $sValue, $sDefaultValue =
""
, $sFuncName =
""
, $field =
"class=\"typeselect\""
)
286
{
287
$l
=
CLanguage::GetList
();
288
$s =
'<select name="'
. $sFieldName .
'" '
. $field;
289
$s1 =
''
;
290
if
($sFuncName <>
''
)
291
{
292
$s .=
' OnChange="'
. $sFuncName .
'"'
;
293
}
294
$s .=
'>'
.
"\n"
;
295
$found =
false
;
296
while
(($l_arr =
$l
->Fetch()))
297
{
298
$found = ($l_arr[
"LID"
] == $sValue);
299
$s1 .=
'<option value="'
. $l_arr[
"LID"
] .
'"'
. ($found ?
' selected'
:
''
) .
'>['
. htmlspecialcharsex($l_arr[
"LID"
]) .
'] '
. htmlspecialcharsex($l_arr[
"NAME"
]) .
'</option>'
.
"\n"
;
300
}
301
if
($sDefaultValue <>
''
)
302
{
303
$s .=
"<option value='' "
. ($found ?
""
:
"selected"
) .
">"
. htmlspecialcharsex($sDefaultValue) .
"</option>"
;
304
}
305
return
$s . $s1 .
'</select>'
;
306
}
307
308
public
static
function
GetLangSwitcherArray
()
309
{
310
global
$APPLICATION
;
311
312
$result
= [];
313
$db_res
=
Localization\LanguageTable::getList
([
314
'filter'
=> [
'=ACTIVE'
=>
'Y'
],
315
'order'
=> [
'SORT'
=>
'ASC'
],
316
'cache'
=> [
'ttl'
=> 86400],
317
]);
318
while
(
$ar
=
$db_res
->fetch())
319
{
320
$ar
[
"NAME"
] =
htmlspecialcharsbx
(
$ar
[
"NAME"
]);
321
$ar
[
"SELECTED"
] = (
$ar
[
"LID"
] == LANG);
322
323
$p
= rtrim(str_replace(
"&#"
,
"#"
, preg_replace(
"/lang=[^&#]*&*/"
,
""
,
$_SERVER
[
"QUERY_STRING"
])),
"&"
);
324
$ar
[
"PATH"
] =
$APPLICATION
->GetCurPage() .
"?lang="
.
$ar
[
"LID"
] . (
$p <>
''
?
'&'
.
htmlspecialcharsbx
(
$p
) :
''
);
325
326
$result
[] =
$ar
;
327
}
328
return
$result
;
329
}
330
}
331
332
class
CLanguage
extends
CAllLanguage
333
{
334
}
335
336
class
CLangAdmin
extends
CLanguage
337
{
338
}
$db_res
$db_res
Определения
options_user_settings.php:8
$APPLICATION
global $APPLICATION
Определения
include.php:80
Bitrix\Main\Localization\CultureTable
Определения
culture.php:30
Bitrix\Main\ORM\Data\DataManager\cleanCache
static cleanCache()
Определения
datamanager.php:1983
Bitrix\Main\ORM\Data\DataManager\getRowById
static getRowById($id, array $parameters=[])
Определения
datamanager.php:380
Bitrix\Main\ORM\Data\DataManager\getList
static getList(array $parameters=array())
Определения
datamanager.php:431
CAdminException
Определения
adminexception.php:4
CAllLanguage
Определения
language.php:9
CAllLanguage\CheckFields
CheckFields($arFields, $ID=false)
Определения
language.php:104
CAllLanguage\GetLangSwitcherArray
static GetLangSwitcherArray()
Определения
language.php:308
CAllLanguage\Delete
static Delete($ID)
Определения
language.php:247
CAllLanguage\GetByID
static GetByID($ID)
Определения
language.php:99
CAllLanguage\$LAST_ERROR
$LAST_ERROR
Определения
language.php:10
CAllLanguage\SelectBox
static SelectBox($sFieldName, $sValue, $sDefaultValue="", $sFuncName="", $field="class=\"typeselect\"")
Определения
language.php:285
CAllLanguage\Add
Add($arFields)
Определения
language.php:166
CAllLanguage\Update
Update($ID, $arFields)
Определения
language.php:209
CAllLanguage\GetList
static GetList($by="sort", $order="asc", $arFilter=[])
Определения
language.php:12
CFavorites\OnLanguageDelete
static OnLanguageDelete($language_id)
Определения
favorites.php:243
CLangAdmin
Определения
language.php:337
CLanguage
Определения
language.php:333
$arFields
$arFields
Определения
dblapprove.php:5
$res
$res
Определения
filter_act.php:7
$result
$result
Определения
get_property_values.php:14
$ID
if($ajaxMode) $ID
Определения
get_user.php:27
$p
$p
Определения
group_list_element_edit.php:23
$_SERVER
$_SERVER["DOCUMENT_ROOT"]
Определения
cron_frame.php:9
$DB
global $DB
Определения
cron_frame.php:29
$l
$l
Определения
options.php:783
ExecuteModuleEventEx
ExecuteModuleEventEx($arEvent, $arParams=[])
Определения
tools.php:5214
htmlspecialcharsbx
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
Определения
tools.php:2701
GetModuleEvents
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
Определения
tools.php:5177
IncludeModuleLangFile
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения
tools.php:3778
is_set
is_set($a, $k=false)
Определения
tools.php:2133
GetMessage
GetMessage($name, $aReplace=null)
Определения
tools.php:3397
Bitrix\Main\Localization
Определения
culture.php:8
$order
$order
Определения
payment.php:8
elseif
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения
prolog_main_admin.php:393
$ar
$ar
Определения
options.php:199
$key
if(empty($signedUserToken)) $key
Определения
quickway.php:257
$val
$val
Определения
options.php:1793
$arFilter
$arFilter
Определения
user_search.php:106
bitrix
modules
main
classes
general
language.php
Создано системой
1.14.0