1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
file_input.php
См. документацию.
1<?
4{
5 private static
6 $bMultiple = false,
7 $bUseUpload = false,
8 $bUseMedialib = false,
9 $bUseFileDialog = false,
10 $bUseCloud = false,
11 $bShowDescInput = false,
12 $bShowDelInput = true,
13 $curFileIds = array(),
14 $curFiles = array(),
15 $jsId,
16 $bFileExists,
17 $menuNew,
18 $menuExist,
19 $delInputName,
20 $descInputName,
21 $maxPreviewWidth,
22 $maxPreviewHeight,
23 $minPreviewWidth,
24 $minPreviewHeight,
25 $maxCount,
26 $inputSize = 50,
27 $arInputs = array(),
28 $inputNameTemplate,
29 $showInfo,
30 $bViewMode
31 ;
32
33 private static function Init($showInfo, $inputName, $maxCount = false)
34 {
35 self::$bMultiple = false;
36 self::$bUseUpload = false;
37 self::$bUseMedialib = false;
38 self::$bUseFileDialog = false;
39 self::$bUseCloud = false;
40 self::$bShowDelInput = false;
41 self::$bShowDescInput = false;
42 self::$bViewMode = false;
43 self::$maxCount = $maxCount;
44 self::$showInfo = $showInfo;
45
46 self::$maxPreviewWidth = max((isset($showInfo['MAX_SIZE']['W']) ? $showInfo['MAX_SIZE']['W'] : 200), 40);
47 self::$maxPreviewHeight = max((isset($showInfo['MAX_SIZE']['H']) ? $showInfo['MAX_SIZE']['H'] : 200), 40);
48
49 self::$minPreviewWidth = min((isset($showInfo['MIN_SIZE']['W']) ? $showInfo['MIN_SIZE']['W'] : 120), 500);
50 self::$minPreviewHeight = min((isset($showInfo['MIN_SIZE']['H']) ? $showInfo['MIN_SIZE']['H'] : 100), 500);
51
52 self::$jsId = 'bx_file_'.mb_strtolower(preg_replace("/[^a-z0-9]/i", "_", $inputName));
53 }
54
62 public static function Show(
63 $strInputName,
64 $strFileId = "",
65 $showInfo = false,
66 $inputs = array()
67 )
68 {
69 global $USER;
70
71 CJSCore::Init('file_input');
72 ob_start();
73
74 $uploadInput = $inputs['upload'] === true ? array() : $inputs['upload'];
75 $medialibInput = $inputs['medialib'] === true ? array() : $inputs['medialib'];
76 $fileDialogInput = $inputs['file_dialog'] === true ? array() : $inputs['file_dialog'];
77 $cloudInput = $inputs['cloud'] === true ? array() : $inputs['cloud'];
78
79 self::Init($showInfo, $strInputName);
80
81 //1. Upload from PC
82 if(is_array($uploadInput))
83 {
84 self::$bUseUpload = true;
85 if(!array_key_exists("NAME", $uploadInput))
86 $uploadInput["NAME"] = $strInputName;
87 }
88
89 //2. Select file from medialib
90 if(COption::GetOptionString('fileman', "use_medialib", "Y") != "N" && is_array($medialibInput))
91 {
92 self::$bUseMedialib = true;
93 if(!array_key_exists("NAME", $medialibInput))
94 $medialibInput["NAME"] = $strInputName;
95 }
96
97 //3. Select file from file dialog
98 if(is_array($fileDialogInput))
99 {
100 self::$bUseFileDialog = true;
101 if(!array_key_exists("NAME", $fileDialogInput))
102 $fileDialogInput["NAME"] = $strInputName;
103 }
104
105 //4. Select file from cloud
106 if(
107 is_array($cloudInput)
108 && $USER->CanDoOperation("clouds_browse")
109 && CModule::IncludeModule("clouds")
111 )
112 {
113 self::$bUseCloud = true;
114 if(!array_key_exists("NAME", $cloudInput))
115 $cloudInput["NAME"] = $strInputName;
116 }
117
118 if($inputs['description'] !== false)
119 {
120 self::$bShowDescInput = true;
121 self::$descInputName = isset($inputs['description']["NAME"]) ? $inputs['description']["NAME"] : self::GetInputName($strInputName, "_descr");
122 }
123
124 if($inputs['del'] !== false)
125 {
126 self::$bShowDelInput = true;
127 self::$delInputName = isset($inputs['del']["NAME"]) ? $inputs['del']["NAME"] : self::GetInputName($strInputName, "_del");
128 }
129
130 // $arFile - Array with current file or false if it's empty
131 self::$curFileIds = is_array($strFileId) && !array_key_exists("tmp_name", $strFileId)? $strFileId : array($strFileId);
132 self::$curFiles = array();
133 self::$bFileExists = false;
134
135 foreach(self::$curFileIds as $fileId)
136 {
137 if (is_array($fileId))
138 continue;
139 if (mb_strlen($fileId ?? '') <= 1 && intval($fileId) === 0)
140 continue;
141
142 self::$bFileExists = true;
143 if($arFile = self::GetFile($fileId))
144 {
145 $arFile['FILE_NOT_FOUND'] = false;
146 if (self::$bShowDescInput && isset($inputs['description']['VALUE']))
147 $arFile['DESCRIPTION'] = $inputs['description']['VALUE'];
148 }
149 else
150 {
151 $arFile = array(
152 'FILE_NOT_FOUND' => true,
153 'DEL_NAME' => self::$delInputName
154 );
155 }
156 self::$curFiles[] = $arFile;
157 }
158
159 self::$bViewMode = self::IsViewMode();
160 if (self::$bViewMode)
161 self::$bShowDelInput = false;
162
163 if (!self::$bViewMode || self::$bFileExists)
164 {
165 $inputs = array(
166 'upload' => self::$bUseUpload,
167 'medialib' => self::$bUseMedialib,
168 'file_dialog' => self::$bUseFileDialog,
169 'cloud' => self::$bUseCloud,
170 'del' => self::$bShowDelInput,
171 'description' => self::$bShowDescInput
172 );
173
174 self::$arInputs = array(
175 'upload' => $uploadInput,
176 'medialib' => $medialibInput,
177 'file_dialog' => $fileDialogInput,
178 'cloud' => $cloudInput
179 );
180
181 self::DisplayControl($inputs);
182 }
183
184 $result = ob_get_contents();
185 ob_end_clean();
186 return $result;
187 }
188
197 public static function ShowMultiple(
198 $values = array(),
199 $inputNameTemplate = "", // #IND# will be replaced by autoincrement int (0, 1, 2,..)
200 $showInfo = false,
201 $maxCount = false,
202 $inputs = array()
203 )
204 {
205 CJSCore::Init('file_input');
206 ob_start();
207
208 global $USER;
209 self::Init($showInfo, $inputNameTemplate, $maxCount);
210 self::$bMultiple = true;
211
212 $arDescInput = (is_array($inputs['description']) && isset($inputs['description']['VALUES']) && isset($inputs['description']['NAME_TEMPLATE'])) ? $inputs['description'] : false;
213
214 $inputs = array(
215 'upload' => $inputs['upload'] === true,
216 'medialib' => $inputs['medialib'] === true && COption::GetOptionString('fileman', "use_medialib", "Y") != "N",
217 'file_dialog' => $inputs['file_dialog'] === true,
218 'cloud' => $inputs['cloud'] === true && $USER->CanDoOperation("clouds_browse") && CModule::IncludeModule("clouds") && CCloudStorage::HasActiveBuckets(),
219 'del' => $inputs['del'] !== false,
220 'description' => $inputs['description'] === true || $arDescInput
221 );
222
223 self::$bUseUpload = $inputs['upload'];
224 self::$bUseMedialib = $inputs['medialib'];
225 self::$bUseFileDialog = $inputs['file_dialog'];
226 self::$bUseCloud = $inputs['cloud'];
227 self::$bShowDelInput = $inputs['del'];
228 self::$bShowDescInput = $inputs['description'];
229 self::$inputNameTemplate = $inputNameTemplate;
230
231 self::$bViewMode = self::IsViewMode();
232 if (self::$bViewMode)
233 self::$bShowDelInput = false;
234
235 if (self::$bShowDelInput)
236 self::$delInputName = self::GetInputName($inputNameTemplate, "_del");
237
238 if (self::$bShowDescInput)
239 {
240 self::$descInputName = '';
241 if ($arDescInput)
242 self::$descInputName = $arDescInput['NAME_TEMPLATE'];
243
244 if (empty(self::$descInputName))
245 self::$descInputName = self::GetInputName($inputNameTemplate, "_descr");
246 }
247
248 // $arFile - Array with current file or false if it's empty
249 self::$curFiles = array();
250 self::$bFileExists = false;
251
252 if ($arDescInput)
253 {
254 reset($arDescInput['VALUES']);
255 }
256
257 foreach($values as $inputName => $fileId)
258 {
259 if (mb_strlen($fileId) <= 1 && intval($fileId) === 0)
260 continue;
261
262 self::$bFileExists = true;
263 if($arFile = self::GetFile($fileId))
264 {
265 $arFile['FILE_NOT_FOUND'] = false;
266 $arFile['INPUT_NAME'] = $inputName;
267 $arFile['DEL_NAME'] = self::GetInputName($inputName, '_del');
268 $arFile['DESC_NAME'] = self::GetInputName($inputName, '_descr');
269
270 if ($arDescInput)
271 {
272 $arFile['DESC_NAME'] = key($arDescInput['VALUES']);
273 $arFile['DESCRIPTION'] = current($arDescInput['VALUES']);
274 next($arDescInput['VALUES']);
275 }
276 }
277 else
278 {
279 $arFile = array(
280 'FILE_NOT_FOUND' => true,
281 'INPUT_NAME' => $inputName,
282 'DEL_NAME' => self::GetInputName($inputName, '_del'),
283 'DESC_NAME' => self::GetInputName($inputName, '_descr')
284 );
285 }
286
287 self::$curFiles[] = $arFile;
288 }
289
290 self::DisplayControl($inputs);
291
292 $result = ob_get_contents();
293 ob_end_clean();
294 return $result;
295 }
296
297 private static function GetFile($fileId = "")
298 {
299 $arFile = CFile::GetFileArray($fileId);
301 //Check if not ID but file path was given
302 if(!is_array($arFile) && $fileId != "")
303 {
304 $strFilePath = $_SERVER["DOCUMENT_ROOT"].$fileId;
305 if($io->FileExists($strFilePath))
306 {
307 $flTmp = $io->GetFile($strFilePath);
308 $arFile = array(
309 "PATH" => $fileId,
310 "FILE_SIZE" => $flTmp->GetFileSize(),
311 "DESCRIPTION" => "",
312 );
313
314 $arImageSize = CFile::GetImageSize($strFilePath);
315 if(is_array($arImageSize))
316 {
317 $arFile["WIDTH"] = intval($arImageSize[0]);
318 $arFile["HEIGHT"] = intval($arImageSize[1]);
319 }
320 }
321 elseif(self::$showInfo['IMAGE'] == 'N')
322 {
323 $arFile = array(
324 "PATH" => $fileId,
325 "FORMATED_SIZE" => '',
326 "DESCRIPTION" => "",
327 "IS_IMAGE" => false
328 );
329 return $arFile;
330 }
331 }
332
333
334 $sImagePath = isset($arFile["PATH"]) ? $arFile["PATH"] : $arFile["SRC"];
335 if(
336 $arFile["HANDLER_ID"]
337 || (defined("BX_IMG_SERVER") && mb_substr($sImagePath, 0, mb_strlen(BX_IMG_SERVER)) === BX_IMG_SERVER)
338 || $io->FileExists($_SERVER["DOCUMENT_ROOT"].$sImagePath)
339 )
340 {
341 $arFile["FORMATED_SIZE"] = CFile::FormatSize($arFile["FILE_SIZE"]);
342 $arFile["IS_IMAGE"] = $arFile["WIDTH"] > 0 && $arFile["HEIGHT"] > 0 && self::$showInfo['IMAGE'] != 'N';
343
344 //Mantis:#65168
345 if ($arFile["CONTENT_TYPE"] && $arFile["IS_IMAGE"] && mb_strpos($arFile["CONTENT_TYPE"], 'application') !== false)
346 {
347 $arFile["IS_IMAGE"] = false;
348 }
349
350 unset($arFile["MODULE_ID"], $arFile["CONTENT_TYPE"], $arFile["SUBDIR"], $arFile["~src"]);
351 return $arFile;
352 }
353
354 return false;
355 }
356
357 private static function DisplayControl($inputs = array())
358 {
359 self::$menuNew = array();
360 self::$menuExist = array();
361
362 if ($inputs['upload'])
363 {
364 self::$menuNew[] = array("ID" => "upload", "GLOBAL_ICON" => "adm-menu-upload-pc", "TEXT" => GetMessage("ADM_FILE_UPLOAD"), "CLOSE_ON_CLICK" => false);
365 self::$menuExist[] = array("ID" => "upload", "GLOBAL_ICON" => "adm-menu-upload-pc", "TEXT" => GetMessage("ADM_FILE_NEW_UPLOAD"), "CLOSE_ON_CLICK" => false);
366 }
367 if ($inputs['medialib'])
368 {
369 self::$menuNew[] = array("TEXT" => GetMessage("ADM_FILE_MEDIALIB"), "GLOBAL_ICON" => "adm-menu-upload-medialib", "ONCLICK" => "OpenMedialibDialog".self::$jsId."()");
370 self::$menuExist[] = array("TEXT" => GetMessage("ADM_FILE_NEW_MEDIALIB"), "GLOBAL_ICON" => "adm-menu-upload-medialib", "ONCLICK" => "OpenMedialibDialog".self::$jsId."()");
371 }
372 if ($inputs['file_dialog'])
373 {
374 self::$menuNew[] = array("TEXT" => GetMessage("ADM_FILE_SITE"), "GLOBAL_ICON" => "adm-menu-upload-site", "ONCLICK" => "OpenFileDialog".self::$jsId."()");
375 self::$menuExist[] = array("TEXT" => GetMessage("ADM_FILE_NEW_SITE"), "GLOBAL_ICON" => "adm-menu-upload-site", "ONCLICK" => "OpenFileDialog".self::$jsId."()");
376 }
377
378 if ($inputs['cloud'])
379 {
380 self::$menuNew[] = array("TEXT" => GetMessage("ADM_FILE_CLOUD"), "GLOBAL_ICON" => "adm-menu-upload-cloud", "ONCLICK" => "OpenCloudDialog".self::$jsId."()");
381 self::$menuExist[] = array("TEXT" => GetMessage("ADM_FILE_NEW_CLOUD"), "GLOBAL_ICON" => "adm-menu-upload-cloud", "ONCLICK" => "OpenCloudDialog".self::$jsId."()");
382 }
383
384 $arConfig = array(
385 'id' => self::$jsId,
386 'fileExists' => self::$bFileExists,
387 'files' => self::$curFiles,
388 'menuNew' => self::$menuNew,
389 'menuExist' => self::$menuExist,
390 'multiple' => self::$bMultiple,
391 'useUpload' => self::$bUseUpload,
392 'useMedialib' => self::$bUseMedialib,
393 'useFileDialog' => self::$bUseFileDialog,
394 'useCloud' => self::$bUseCloud,
395 'delName' => self::$delInputName,
396 'descName' => self::$descInputName,
397 'inputSize' => self::$inputSize,
398 'minPreviewHeight' => self::$minPreviewHeight,
399 'minPreviewWidth' => self::$minPreviewWidth,
400 'showDesc' => self::$bShowDescInput,
401 'showDel' => self::$bShowDelInput,
402 'maxCount' => self::$maxCount,
403 'viewMode' => self::$bViewMode
404 );
405
406 if (self::$bMultiple)
407 $arConfig['inputNameTemplate'] = self::$inputNameTemplate;
408 else
409 $arConfig['inputs'] = self::$arInputs;
410
411 if (self::$bUseCloud)
412 $arConfig['cloudDialogPath'] = '/bitrix/admin/clouds_file_search.php?lang='.LANGUAGE_ID.'&n=';
413
414
415 //Base container
416 ?><div class="adm-input-file-control" id="<?= self::$jsId.'_cont'?>"><?
417 if (!self::$bViewMode)
418 self::DisplayDialogs();
419
420 if (self::$bFileExists)
421 foreach(self::$curFiles as $ind => $arFile)
422 self::DisplayFile($arFile, $ind);
423 ?>
424 <script>
425 var topWindow = BX.PageObject.getRootWindow();
426 (topWindow.BX.file_input) ? new topWindow.BX.file_input(<?= CUtil::PHPToJSObject($arConfig)?>) : new BX.file_input(<?= CUtil::PHPToJSObject($arConfig)?>)
427 </script>
428 </div>
429 <?/* Used to refresh form content - workaround for IE bug (mantis:37969) */?>
430 <div id="<?= self::$jsId.'_ie_bogus_container'?>"><input type="hidden" value="" /></div>
431 <?
432 }
433
434 private static function DisplayDialogs()
435 {
436 if(self::$bUseMedialib)
437 {
438 CMedialib::ShowDialogScript(array(
439 "event" => "OpenMedialibDialog".self::$jsId,
440 "arResultDest" => array(
441 "FUNCTION_NAME" => "SetValueFromMedialib".self::$jsId,
442 )
443 ));
444 }
445
446 if (self::$bUseFileDialog)
447 {
449 (
450 Array(
451 "event" => "OpenFileDialog".self::$jsId,
452 "arResultDest" => array("FUNCTION_NAME" => "SetValueFromFileDialog".self::$jsId),
453 "arPath" => array("SITE" => SITE_ID, "PATH" =>"/upload"),
454 "select" => 'F',// F - file only, D - folder only
455 "operation" => 'O',
456 "showUploadTab" => true,
457 "allowAllFiles" => true,
458 "SaveConfig" => true,
459 )
460 );
461 }
462 }
463
464 private static function DisplayFile($arFile = array(), $ind = 0)
465 {
466 $hintId = self::$jsId.'_file_disp_'.$ind;
467 $bNotFound = $arFile['FILE_NOT_FOUND'];
468
469 // Hint
470 $hint = '';
471
472 if (!$bNotFound)
473 {
474 $sImagePath = isset($arFile["PATH"]) ? $arFile["PATH"] : $arFile["SRC"];
475 $descName = isset($arFile['DESC_NAME']) ? $arFile['DESC_NAME'] : self::$descInputName;
476
477 if ($arFile['FORMATED_SIZE'] != '')
478 $hint .= '<span class="adm-input-file-hint-row">'.GetMessage('ADM_FILE_INFO_SIZE').':&nbsp;&nbsp;'.$arFile['FORMATED_SIZE'].'</span>';
479
480 if ($arFile['IS_IMAGE'])
481 $hint .= '<span class="adm-input-file-hint-row">'.GetMessage('ADM_FILE_INFO_DIM').':&nbsp;&nbsp;'.$arFile['WIDTH'].'x'.$arFile['HEIGHT'].'</span>';
482 if ($sImagePath != '')
483 $hint .= '<span class="adm-input-file-hint-row">'.GetMessage('ADM_FILE_INFO_LINK').':&nbsp;&nbsp;<a href="'.CHTTP::urnEncode($sImagePath, "UTF-8").'">'.htmlspecialcharsbx($sImagePath).'</a></span>';
484
485 if (!self::$bShowDescInput && $arFile['DESCRIPTION'] != "")
486 $hint .= '<span class="adm-input-file-hint-row">'.GetMessage('ADM_FILE_DESCRIPTION').':&nbsp;&nbsp;'.htmlspecialcharsbx($arFile['DESCRIPTION']).'</span>';
487 }
488 ?><span class="adm-input-file-exist-cont" id="<?= self::$jsId?>_file_cont_<?= $ind?>">
489 <div class="adm-input-file-ex-wrap<?if(self::$bMultiple){echo ' adm-input-cont-bordered';}?>">
490 <?
491 if ($bNotFound)
492 {
493 ?>
494 <span id="<?= self::$jsId.'_file_404_'.$ind?>" class="adm-input-file-not-found">
495 <?= GetMessage('ADM_FILE_NOT_FOUND')?>
496 </span>
497 <?
498 }
499 elseif ($arFile['IS_IMAGE'])
500 {
501 $file = CFile::ResizeImageGet($arFile['ID'], array('width' => self::$maxPreviewWidth, 'height' => self::$maxPreviewHeight), BX_RESIZE_IMAGE_PROPORTIONAL, true);
502 ?>
503 <span id="<?= $hintId?>" class="adm-input-file-preview" style="<?if(self::$minPreviewWidth > 0){echo 'min-width: '.self::$minPreviewWidth.'px;';}?> <?if(self::$minPreviewHeight > 0){echo 'min-height:'.self::$minPreviewHeight.'px;';}?>">
504 <?= CFile::Show2Images($file['src'], $arFile['SRC'], self::$maxPreviewWidth, self::$maxPreviewHeight);?><?
505 if (!self::IsViewMode() || self::$bShowDelInput)
506 {
507 ?><div id="<?= self::$jsId.'_file_del_lbl_'.$ind?>" class="adm-input-file-del-lbl"><?= GetMessage
508 ('ADM_FILE_DELETED_TITLE')?></div><?
509 }
510 ?></span>
511 <?
512 }
513 else
514 {
515 $val = !empty($arFile['FILE_NAME']) ? $arFile['FILE_NAME'] : $sImagePath;
516 ?>
517 <a id="<?= $hintId?>" href="<?= htmlspecialcharsbx($arFile['SRC'])?>" class="adm-input-file-name"><?= htmlspecialcharsbx($val)?></a>
518 <?
519 }
520
521 if ($hint != '')
522 {
523 ?>
524 <script>
525 new (BX.PageObject.getRootWindow()).BX.CHint({
526 parent: (BX.PageObject.getRootWindow()).BX("<?= $hintId?>"),
527 show_timeout: 10,
528 hide_timeout: 200,
529 dx: 2,
530 preventHide: true,
531 min_width: 250,
532 hint: '<?= CUtil::JSEscape($hint)?>'
533 });
534 </script>
535 <?
536 }
537
538 if (!self::$bViewMode)
539 self::ShowOpenerMenuHtml(self::$jsId.'_menu_'.$ind, $ind);
540
541 if (!$bNotFound && self::$bShowDescInput)
542 {
543 ?>
544 <div id="<?= self::$jsId.'_file_desc_'.$ind?>" class="adm-input-file-desc-inp-cont" <?if($arFile['DESCRIPTION'] == ""){echo 'style="display: none;"';}?>>
545 <input name="<?= $descName?>" class="adm-input" type="text" value="<?= htmlspecialcharsbx($arFile['DESCRIPTION'])?>" size="<?= self::$inputSize?>" placeholder="<?= GetMessage("ADM_FILE_DESC")?>" <?if(self::$bViewMode){echo ' disabled="disabled"';}?>>
546 </div>
547 <?
548 }
549 ?>
550 </div>
551 </span>
552 <?
553 }
554
555 private static function ShowOpenerMenuHtml($id, $data=false)
556 {
557 ?><span <?if($data !== false){echo 'data-bx-meta="'.$data.'"';}?> id="<?= $id?>" class="adm-btn add-file-popup-btn"></span><?
558 }
559
560 private static function GetInputName($inputName, $type = "")
561 {
562 if ($type == "")
563 return $inputName;
564 $p = mb_strpos($inputName, "[");
565 return ($p > 0) ? mb_substr($inputName, 0, $p).$type.mb_substr($inputName, $p) : $inputName.$type;
566 }
567
568 private static function IsViewMode()
569 {
570 return !self::$bUseUpload && !self::$bUseMedialib && !self::$bUseFileDialog && !self::$bUseCloud;
571 }
572}
$type
Определения options.php:106
static ShowScript($arConfig)
Определения file_dialog.php:9
static GetInstance()
Определения virtual_io.php:60
static HasActiveBuckets()
Определения storage.php:1801
static ResizeImageGet($file, $arSize, $resizeType=BX_RESIZE_IMAGE_PROPORTIONAL, $bInitSizes=false, $arFilters=false, $bImmediate=false, $jpgQuality=false)
Определения file.php:2242
static Show2Images($strImage1, $strImage2, $iMaxW=0, $iMaxH=0, $sParams=false, $sPopupTitle=false, $iSizeWHTTP=0, $iSizeHHTTP=0)
Определения file.php:1933
static FormatSize($size, $precision=2)
Определения file.php:1453
Определения file_input.php:4
static Show( $strInputName, $strFileId="", $showInfo=false, $inputs=array())
Определения file_input.php:62
static ShowMultiple( $values=array(), $inputNameTemplate="", $showInfo=false, $maxCount=false, $inputs=array())
Определения file_input.php:197
static urnEncode($str, $charset=false)
Определения http.php:596
static Init($arExt=array(), $bReturn=false)
Определения jscore.php:66
$data['IS_AVAILABLE']
Определения .description.php:13
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$result
Определения get_property_values.php:14
$p
Определения group_list_element_edit.php:23
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
global $USER
Определения csv_new_run.php:40
$io
Определения csv_new_run.php:98
$inputName
Определения options.php:197
const BX_RESIZE_IMAGE_PROPORTIONAL
Определения constants.php:11
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
Определения tools.php:2701
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения tools.php:3778
GetMessage($name, $aReplace=null)
Определения tools.php:3397
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
font style
Определения invoice.php:442
font size
Определения invoice.php:442
$val
Определения options.php:1793
const SITE_ID
Определения sonet_set_content_view.php:12