1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
language.php
См. документацию.
1<?php
2
5
7
9{
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
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
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
277
278 $res = $DB->Query("DELETE FROM b_language WHERE LID='" . $DB->ForSQL($ID, 2) . "'", true);
279
281
282 return $res;
283 }
284
285 public static function SelectBox($sFieldName, $sValue, $sDefaultValue = "", $sFuncName = "", $field = "class=\"typeselect\"")
286 {
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"]) . ']&nbsp;' . 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 = [];
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 <> '' ? '&amp;' . htmlspecialcharsbx($p) : '');
325
326 $result[] = $ar;
327 }
328 return $result;
329 }
330}
331
333{
334}
335
337{
338}
$db_res
Определения options_user_settings.php:8
global $APPLICATION
Определения include.php:80
static cleanCache()
Определения datamanager.php:1983
static getRowById($id, array $parameters=[])
Определения datamanager.php:380
static getList(array $parameters=array())
Определения datamanager.php:431
Определения language.php:9
CheckFields($arFields, $ID=false)
Определения language.php:104
static GetLangSwitcherArray()
Определения language.php:308
static Delete($ID)
Определения language.php:247
static GetByID($ID)
Определения language.php:99
$LAST_ERROR
Определения language.php:10
static SelectBox($sFieldName, $sValue, $sDefaultValue="", $sFuncName="", $field="class=\"typeselect\"")
Определения language.php:285
Add($arFields)
Определения language.php:166
Update($ID, $arFields)
Определения language.php:209
static GetList($by="sort", $order="asc", $arFilter=[])
Определения language.php:12
static OnLanguageDelete($language_id)
Определения favorites.php:243
Определения language.php:337
Определения language.php:333
$arFields
Определения dblapprove.php:5
$res
Определения filter_act.php:7
$result
Определения get_property_values.php:14
if($ajaxMode) $ID
Определения get_user.php:27
$p
Определения group_list_element_edit.php:23
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
global $DB
Определения cron_frame.php:29
$l
Определения options.php:783
ExecuteModuleEventEx($arEvent, $arParams=[])
Определения tools.php:5214
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
Определения tools.php:2701
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
Определения tools.php:5177
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения tools.php:3778
is_set($a, $k=false)
Определения tools.php:2133
GetMessage($name, $aReplace=null)
Определения tools.php:3397
$order
Определения payment.php:8
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
$ar
Определения options.php:199
if(empty($signedUserToken)) $key
Определения quickway.php:257
$val
Определения options.php:1793
$arFilter
Определения user_search.php:106