- Модуль: mobile
- Путь к файлу: ~/bitrix/modules/mobile/classes/general/mobile_helper.php
- Класс: CMobileHelper
- Вызов: CMobileHelper::SaveFile
static function SaveFile($arFile, $arFileStorage)
{
$arResult = array();
if (empty($arFile))
{
$arResult = array(
"ERROR_CODE" => "EMPTY_FILE",
"ERROR_MESSAGE" => "File is empty"
);
}
if (!empty($arFileStorage["DISC_FOLDER"]))
{
$file = $arFileStorage["DISC_FOLDER"]->uploadFile(
$arFile,
array(
'NAME' => $arFile["name"],
'CREATED_BY' => $GLOBALS["USER"]->GetID()
),
array(),
true
);
$arResult["ID"] = $file->getId();
}
elseif (
!empty($arFileStorage["WEBDAV_DATA"])
&& !empty($arFileStorage["WEBDAV_IBLOCK_OBJECT"])
)
{
$dropTargetID = $arFileStorage["WEBDAV_IBLOCK_OBJECT"]->GetMetaID("DROPPED");
$arParent = $arFileStorage["WEBDAV_IBLOCK_OBJECT"]->GetObject(array("section_id" => $dropTargetID));
if (!$arParent["not_found"])
{
$path = $arFileStorage["WEBDAV_IBLOCK_OBJECT"]->_get_path($arParent["item_id"], false);
$tmpName = str_replace(array(":", ".", "/", "\"), "_", ConvertTimeStamp(time(), "FULL"));
$tmpOptions = array("path" => str_replace("//", "/", $path."/".$tmpName));
$arParent = $arFileStorage["WEBDAV_IBLOCK_OBJECT"]->GetObject($tmpOptions);
if ($arParent["not_found"])
{
$rMKCOL = $arFileStorage["WEBDAV_IBLOCK_OBJECT"]->MKCOL($tmpOptions);
if (intval($rMKCOL) == 201)
{
$arFileStorage["WEBDAV_DATA"]["SECTION_ID"] = $arFileStorage["WEBDAV_IBLOCK_OBJECT"]->arParams["changed_element_id"];
}
}
else
{
$arFileStorage["WEBDAV_DATA"]["SECTION_ID"] = $arParent['item_id'];
if (!$arFileStorage["WEBDAV_IBLOCK_OBJECT"]->CheckUniqueName($tmpName, $arFileStorage["WEBDAV_DATA"]["SECTION_ID"], $tmpRes))
{
$path = $arFileStorage["WEBDAV_IBLOCK_OBJECT"]->_get_path($arFileStorage["WEBDAV_DATA"]["SECTION_ID"], false);
$tmpName = randString(6);
$tmpOptions = array("path" => str_replace("//", "/", $path."/".$tmpName));
$rMKCOL = $arFileStorage["WEBDAV_IBLOCK_OBJECT"]->MKCOL($tmpOptions);
if (intval($rMKCOL) == 201)
{
$arFileStorage["WEBDAV_DATA"]["SECTION_ID"] = $arFileStorage["WEBDAV_IBLOCK_OBJECT"]->arParams["changed_element_id"];
}
}
}
}
$options = array(
"new" => true,
'dropped' => true,
"arFile" => $arFile,
"arDocumentStates" => false,
"arUserGroups" => array_merge($arFileStorage["WEBDAV_IBLOCK_OBJECT"]->USER["GROUPS"], array("Author")),
"FILE_NAME" => $arFile["name"],
"IBLOCK_ID" => $arFileStorage["WEBDAV_DATA"]["IBLOCK_ID"],
"IBLOCK_SECTION_ID" => $arFileStorage["WEBDAV_DATA"]["SECTION_ID"],
"USER_FIELDS" => array()
);
$GLOBALS['USER_FIELD_MANAGER']->EditFormAddFields($arFileStorage["WEBDAV_IBLOCK_OBJECT"]->GetUfEntity(), $options['USER_FIELDS']);
$GLOBALS["DB"]->StartTransaction();
if (!$arFileStorage["WEBDAV_IBLOCK_OBJECT"]->put_commit($options))
{
$arResult = array(
"ERROR_CODE" => "error_put",
"ERROR_MESSAGE" => $arFileStorage["WEBDAV_IBLOCK_OBJECT"]->LAST_ERROR
);
$GLOBALS["DB"]->Rollback();
}
else
{
$GLOBALS["DB"]->Commit();
$arResult["ID"] = $options['ELEMENT_ID'];
}
}
else
{
$arResult["ID"] = CFile::SaveFile($arFile, $arFile["MODULE_ID"]);
}
return $arResult;
}