• Модуль: subscribe
  • Путь к файлу: ~/bitrix/modules/subscribe/classes/general/posting.php
  • Класс: CPostingGeneral
  • Вызов: CPostingGeneral::SaveFile
function SaveFile($ID, $file)
{
	global $DB, $APPLICATION;
	$ID = intval($ID);
	$filesSize = 0;

	$arFileName = CPosting::SplitFileName($file["name"]);
	//Check if file with this name already exists
	$arSameNames = array();
	$rsFile = CPosting::GetFileList($ID);
	while($arFile = $rsFile->Fetch())
	{
		$filesSize += $arFile["FILE_SIZE"];
		$arSavedName = CPosting::SplitFileName($arFile["ORIGINAL_NAME"]);
		if($arFileName[0] == $arSavedName[0] && $arFileName[1] == $arSavedName[1])
			$arSameNames[$arSavedName[2]] = true;
	}

	$max_files_size = COption::GetOptionString("subscribe", "max_files_size") * 1024 *1024;
	if ($max_files_size > 0)
	{
		$filesSize += $file["size"];
		if ($filesSize > $max_files_size)
		{
			$this->LAST_ERROR = GetMessage("class_post_err_files_size", array(
				"#MAX_FILES_SIZE#" => CFile::FormatSize($max_files_size),
			));
			$APPLICATION->ThrowException($this->LAST_ERROR);
			return false;
		}
	}

	while(array_key_exists($arFileName[2], $arSameNames))
	{
		$arFileName[2]++;
	}

	if($arFileName[2] > 0)
	{
		$file["name"] = $arFileName[0]."(".($arFileName[2]).")".$arFileName[1];
	}

	//save file
	$file["MODULE_ID"] = "subscribe";
	$fid = intval(CFile::SaveFile($file, "subscribe", true, true));
	if(($fid > 0) && $DB->Query("INSERT INTO b_posting_file (POSTING_ID, FILE_ID) VALUES (".$ID." ,".$fid.")", false, "File: ".__FILE__."
Line: ".__LINE__)) { return true; } else { $this->LAST_ERROR = GetMessage("class_post_err_att"); $APPLICATION->ThrowException($this->LAST_ERROR); return false; } }