- Модуль: fileman
- Путь к файлу: ~/bitrix/modules/fileman/classes/general/file_input.php
- Класс: CFileInput
- Вызов: CFileInput::Show
static function Show(
$strInputName,
$strFileId = "",
$showInfo = false,
$inputs = array()
)
{
global $USER;
CJSCore::Init('file_input');
ob_start();
$uploadInput = $inputs['upload'] === true ? array() : $inputs['upload'];
$medialibInput = $inputs['medialib'] === true ? array() : $inputs['medialib'];
$fileDialogInput = $inputs['file_dialog'] === true ? array() : $inputs['file_dialog'];
$cloudInput = $inputs['cloud'] === true ? array() : $inputs['cloud'];
self::Init($showInfo, $strInputName);
//1. Upload from PC
if(is_array($uploadInput))
{
self::$bUseUpload = true;
if(!array_key_exists("NAME", $uploadInput))
$uploadInput["NAME"] = $strInputName;
}
//2. Select file from medialib
if(COption::GetOptionString('fileman', "use_medialib", "Y") != "N" && is_array($medialibInput))
{
self::$bUseMedialib = true;
if(!array_key_exists("NAME", $medialibInput))
$medialibInput["NAME"] = $strInputName;
}
//3. Select file from file dialog
if(is_array($fileDialogInput))
{
self::$bUseFileDialog = true;
if(!array_key_exists("NAME", $fileDialogInput))
$fileDialogInput["NAME"] = $strInputName;
}
//4. Select file from cloud
if(
is_array($cloudInput)
&& $USER->CanDoOperation("clouds_browse")
&& CModule::IncludeModule("clouds")
&& CCloudStorage::HasActiveBuckets()
)
{
self::$bUseCloud = true;
if(!array_key_exists("NAME", $cloudInput))
$cloudInput["NAME"] = $strInputName;
}
if($inputs['description'] !== false)
{
self::$bShowDescInput = true;
self::$descInputName = isset($inputs['description']["NAME"]) ? $inputs['description']["NAME"] : self::GetInputName($strInputName, "_descr");
}
if($inputs['del'] !== false)
{
self::$bShowDelInput = true;
self::$delInputName = isset($inputs['del']["NAME"]) ? $inputs['del']["NAME"] : self::GetInputName($strInputName, "_del");
}
// $arFile - Array with current file or false if it's empty
self::$curFileIds = is_array($strFileId) && !array_key_exists("tmp_name", $strFileId)? $strFileId : array($strFileId);
self::$curFiles = array();
self::$bFileExists = false;
foreach(self::$curFileIds as $fileId)
{
if (is_array($fileId))
continue;
if (mb_strlen($fileId ?? '') <= 1 && intval($fileId) === 0)
continue;
self::$bFileExists = true;
if($arFile = self::GetFile($fileId))
{
$arFile['FILE_NOT_FOUND'] = false;
if (self::$bShowDescInput && isset($inputs['description']['VALUE']))
$arFile['DESCRIPTION'] = $inputs['description']['VALUE'];
}
else
{
$arFile = array(
'FILE_NOT_FOUND' => true,
'DEL_NAME' => self::$delInputName
);
}
self::$curFiles[] = $arFile;
}
self::$bViewMode = self::IsViewMode();
if (self::$bViewMode)
self::$bShowDelInput = false;
if (!self::$bViewMode || self::$bFileExists)
{
$inputs = array(
'upload' => self::$bUseUpload,
'medialib' => self::$bUseMedialib,
'file_dialog' => self::$bUseFileDialog,
'cloud' => self::$bUseCloud,
'del' => self::$bShowDelInput,
'description' => self::$bShowDescInput
);
self::$arInputs = array(
'upload' => $uploadInput,
'medialib' => $medialibInput,
'file_dialog' => $fileDialogInput,
'cloud' => $cloudInput
);
self::DisplayControl($inputs);
}
$result = ob_get_contents();
ob_end_clean();
return $result;
}