• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/cache_files.php
  • Класс: CPHPCacheFiles
  • Вызов: CPHPCacheFiles::clean
function clean($basedir, $initdir = false, $filename = false)
{
	$DOCUMENT_ROOT = rtrim($_SERVER["DOCUMENT_ROOT"], "/");

	if($filename <> '')
	{
		$res = CPHPCacheFiles::_unlink($DOCUMENT_ROOT.$basedir.$initdir.$filename);
		bx_accelerator_reset();
		return $res;
	}
	else
	{
		global $DB;

		$initdir = trim($initdir, "/");
		if($initdir == "")
		{
			$sourceDir = $DOCUMENT_ROOT."/".trim($basedir, "/");
			if(file_exists($sourceDir) && is_dir($sourceDir))
			{
				$dh = opendir($sourceDir);
				if(is_resource($dh))
				{
					while($entry = readdir($dh))
					{
						if(preg_match("/^(\.|\.\.|.*\.~\d+)$/", $entry))
						{
							continue;
						}

						if(is_dir($sourceDir."/".$entry))
						{
							CPHPCacheFiles::clean($basedir, $entry);
						}
						elseif(is_file($sourceDir."/".$entry))
						{
							CPHPCacheFiles::_unlink($sourceDir."/".$entry);
						}
					}
				}
			}
		}
		else
		{
			$source = "/".trim($basedir, "/")."/".$initdir;
			$source = rtrim($source, "/");
			$bDelayedDelete = false;

			if(!preg_match("/^(\.|\.\.|.*\.~\d+)$/", $source) && file_exists($DOCUMENT_ROOT.$source))
			{
				$target = CPHPCacheFiles::_randomizeFile($source.".~");
				if($target != '')
				{
					if(
					$DB->Query("INSERT INTO b_cache_tag (SITE_ID, CACHE_SALT, RELATIVE_PATH, TAG)
						VALUES ('*', '*', '".$DB->ForSQL($target)."', '*')")
					)
					{
						if(@rename($DOCUMENT_ROOT.$source, $DOCUMENT_ROOT.$target))
						{
							$bDelayedDelete = true;
						}
					}
				}
			}

			if($bDelayedDelete)
			{
				CPHPCacheFiles::_addAgent();
			}
			else
			{
				DeleteDirFilesEx($basedir.$initdir);
			}

			bx_accelerator_reset();
		}
	}
}