- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/log_tools.php
- Класс: CSocNetLogComponent
- Вызов: CSocNetLogComponent::saveRawFilesToUF
static function saveRawFilesToUF($arAttachedFilesRaw, $ufCode, &$arFields)
{
if (empty($arFields[$ufCode]))
{
$arFields[$ufCode] = array();
}
$arRelation = array();
$type = false;
foreach ($arAttachedFilesRaw as $attachedFileRow)
{
if (
!empty($attachedFileRow["base64"])
&& !empty($attachedFileRow["url"])
)
{
$fileContent = base64_decode($attachedFileRow["base64"]);
$arUri = parse_url($attachedFileRow["url"]);
if (
!empty($arUri)
&& !empty($arUri["path"])
)
{
$fileName = $arUri["path"];
}
if (
!empty($fileContent)
&& !empty($fileName)
)
{
$fileName = CTempFile::GetFileName($fileName);
if(CheckDirPath($fileName))
{
file_put_contents($fileName, $fileContent);
$arFile = CFile::MakeFileArray($fileName);
$resultId = self::saveFileToUF($arFile, $type, false);
if ($resultId)
{
$arFields[$ufCode][] = $resultId;
}
if (!empty($attachedFileRow["id"]))
{
$arRelation[$attachedFileRow["id"]] = $resultId;
}
}
}
}
}
if (!empty($arRelation))
{
$arFields["DETAIL_TEXT"] = preg_replace_callback(
"/[DISKs+FILEs+IDs*=s*pseudo@([d]+)]/is".BX_UTF_PCRE_MODIFIER,
function ($matches) use ($arRelation, $type)
{
if (isset($arRelation[intval($matches[1])]))
{
if ($type === "disk")
{
return "[DISK FILE ID=".$arRelation[intval($matches[1])]."]";
}
elseif ($type === "webdav")
{
return "[DOCUMENT ID=".intval($arRelation[intval($matches[1])])."]";
}
else
{
return "[DISK FILE ID=pseudo@".$matches[1]."]";
}
}
else
{
return "[DISK FILE ID=pseudo@".$matches[1]."]";
}
},
$arFields["DETAIL_TEXT"]
);
}
}