• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/file.php
  • Класс: CFile
  • Вызов: CFile::transformName
static function transformName($name, $forceRandom = false, $bSkipExt = false)
{
	//safe filename without path
	$fileName = GetFileName($name);

	$originalName = ($forceRandom != true && COption::GetOptionString("main", "save_original_file_name", "N") == "Y");
	if($originalName)
	{
		//transforming original name:

		//transliteration
		if(COption::GetOptionString("main", "translit_original_file_name", "N") == "Y")
		{
			$fileName = CUtil::translit($fileName, LANGUAGE_ID, array(
				"max_len" => 1024,
				"safe_chars" => ".",
				"replace_space" => '-',
				"change_case" => false,
			));
		}

		//replace invalid characters
		if(COption::GetOptionString("main", "convert_original_file_name", "Y") == "Y")
		{
			$io = CBXVirtualIo::GetInstance();
			$fileName = $io->RandomizeInvalidFilename($fileName);
		}
	}

	//.jpe is not image type on many systems
	if($bSkipExt == false && strtolower(GetFileExtension($fileName)) == "jpe")
	{
		$fileName = substr($fileName, 0, -4).".jpg";
	}

	//double extension vulnerability
	$fileName = RemoveScriptExtension($fileName);

	if(!$originalName)
	{
		//name is randomly generated
		$fileName = SecurityRandom::getString(32).($bSkipExt == true || ($ext = GetFileExtension($fileName)) == ''? '' : ".".$ext);
	}

	return $fileName;
}