• Модуль: learning
  • Путь к файлу: ~/bitrix/modules/learning/classes/general/clearnhelper.php
  • Класс: CLearnHelper
  • Вызов: CLearnHelper::CopyDirFiles
static function CopyDirFiles($path_from, $path_to, $ReWrite = True, $Recursive = False)
{
	if (mb_strpos($path_to."/", $path_from."/") === 0 || realpath($path_to) === realpath($path_from))
		return false;

	if (is_dir($path_from))
	{
		CheckDirPath($path_to."/");
	}
	elseif(is_file($path_from))
	{
		$p = bxstrrpos($path_to, "/");
		$path_to_dir = mb_substr($path_to, 0, $p);
		CheckDirPath($path_to_dir."/");

		if (file_exists($path_to) && !$ReWrite)
			return False;

		@copy($path_from, $path_to);
		if(is_file($path_to))
			@chmod($path_to, BX_FILE_PERMISSIONS);

		return True;
	}
	else
	{
		return True;
	}

	if ($handle = @opendir($path_from))
	{
		while (($file = readdir($handle)) !== false)
		{
			if ($file == "." || $file == "..")
				continue;

			// skip files with non-safe names
			if ( ! CLearnHelper::IsBaseFilenameSafe($file) )
				continue;

			if (is_dir($path_from."/".$file) && $Recursive)
			{
				self::CopyDirFiles($path_from."/".$file, $path_to."/".$file, $ReWrite, $Recursive);
			}
			elseif (is_file($path_from."/".$file))
			{
				if (file_exists($path_to."/".$file) && !$ReWrite)
					continue;

				@copy($path_from."/".$file, $path_to."/".$file);
				@chmod($path_to."/".$file, BX_FILE_PERMISSIONS);
			}
		}
		@closedir($handle);

		return true;
	}

	return false;
}