- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/file_temp.php
- Класс: CTempFile
- Вызов: CTempFile::GetDirectoryName
static function GetDirectoryName($hours_to_keep_files = 0, $subdir = "")
{
if($hours_to_keep_files <= 0)
return self::GetFileName('');
if($subdir === "")
{
$dir_name = self::GetAbsoluteRoot().'/BXTEMP-'.date('Y-m-d/H/', time()+3600*$hours_to_keep_files);
$i = 0;
while(true)
{
$i++;
$dir_add = SecurityRandom::getString(32);
$temp_path = $dir_name.$dir_add."/";
if(!file_exists($temp_path))
break;
}
}
else //Fixed name during the session
{
$localStorage = MainApplication::getInstance()->getLocalSession('userSessionData');
if (!isset($localStorage['tempFileToken']))
{
$localStorage->set('tempFileToken', SecurityRandom::getString(32));
}
$token = $localStorage->get('tempFileToken');
$subdir = implode("/", (is_array($subdir) ? $subdir : array($subdir, $token)))."/";
while (strpos($subdir, "//") !== false)
$subdir = str_replace("//", "/", $subdir);
$bFound = false;
for($i = $hours_to_keep_files-1; $i > 0; $i--)
{
$dir_name = self::GetAbsoluteRoot().'/BXTEMP-'.date('Y-m-d/H/', time()+3600*$i);
$temp_path = $dir_name.$subdir;
if(file_exists($temp_path) && is_dir($temp_path))
{
$bFound = true;
break;
}
}
if(!$bFound)
{
$dir_name = self::GetAbsoluteRoot().'/BXTEMP-'.date('Y-m-d/H/', time()+3600*$hours_to_keep_files);
$temp_path = $dir_name.$subdir;
}
}
//Delayed unlink
if(!self::$is_exit_function_registered)
{
self::$is_exit_function_registered = true;
register_shutdown_function(array('CTempFile', 'Cleanup'));
}
//Function ends only here
return $temp_path;
}