• Модуль: 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"]
		);
	}
}