- Модуль: fileman
- Путь к файлу: ~/bitrix/modules/fileman/classes/general/fileman_utils.php
- Класс: CFilemanCopy
- Вызов: CFilemanCopy::Init
public function Init($Params)
{
global $USER;
$arWarnings = array();
if (!$USER->CanDoOperation('fileman_admin_files') && !$USER->CanDoOperation('fileman_admin_folders'))
$arWarnings[] = GetMessage('FM_UTIL_ACCESS_DENIED');
$io = CBXVirtualIo::GetInstance();
$log = $log ?? null;
if (count($arWarnings) == 0)
{
$pathTo = trim($Params['copyTo'], " /");
$site = CFileMan::__CheckSite($_GET['site']);
$siteTo = $Params['siteTo'] ? $Params['siteTo'] : $site;
$pathTo = $pathTo == "" ? "/" : "/".$pathTo."/";
$absPathTo = CSite::GetSiteDocRoot($siteTo).$pathTo;
$docRootFrom = CSite::GetSiteDocRoot($site);
if (!$io->DirectoryExists($absPathTo))
{
// Create destination directory
$bAccess = $USER->CanDoOperation('fileman_admin_folders') && $USER->CanDoFileOperation('fm_create_new_folder',$pathTo);
if ($Params['createCopyTo'])
{
if ($bAccess)
CFileMan::CreateDir(Array($siteTo, $pathTo));
}
else // Ask to user - create destination folder or no?
{
?>
return;
}
}
foreach ($Params['arFiles'] as $file)
{
$filePath = $file['path'];
$caseOption = $Params['caseOption'];
if($Params["userCaseLastPath"])
{
if ($Params["userCaseLastPath"] != $filePath)
continue;
$caseOption = $Params['userCaseAnswer'];
if ($Params["userCaseToAll"])
$Params['caseOption'] = $caseOption;
$Params["userCaseLastPath"] = false;
}
$arPath_i = Array($site, $filePath);
$absPath_i = $docRootFrom.$filePath;
$bDir_i = $io->DirectoryExists($absPath_i);
$name_i = CFileman::GetFileName($filePath);
$strWarn = "";
// Check if file already exists in destination folder
if ($io->FileExists($absPathTo.$name_i) || ( $bDir_i == $io->DirectoryExists($absPathTo.$name_i) && $bDir_i))
{
$fTmp = $io->GetFile($absPathTo.$name_i);
$fTmp1 = $io->GetFile($absPath_i);
$altName = CFilemanCopy::GetAltFileName($absPathTo, $name_i, $bDir_i);
if ($caseOption == 'ask')
{
?>
return;
}
elseif ($caseOption == 'replace')
{
// We don't need to replace, couse it's one file
if (CFileMan::NormalizePath($pathTo."/".$name_i) == $filePath)
continue;
$strWarn = CFileMan::CopyEx($arPath_i, Array($siteTo, CFileMan::NormalizePath($pathTo."/".$name_i)), !$Params['bCopy'], true);
if ($strWarn != "")
{
$arWarnings[] = $strWarn;
$log = false;
}
elseif ($Params['bSearch'] && $Params['ssess'] && !$Params['bCopy'])
CFilemanSearch::DelFromSearchResult($Params['ssess'], $filePath);
}
elseif ($caseOption == 'auto_rename')
{
$strWarn = CFileMan::CopyEx($arPath_i, Array($siteTo, CFileMan::NormalizePath($pathTo."/".$altName)), !$Params['bCopy']);
if ($strWarn != "")
{
$arWarnings[] = $strWarn;
$log = false;
}
elseif ($Params['bSearch'] && $Params['ssess'] && !$Params['bCopy'])
CFilemanSearch::DelFromSearchResult($Params['ssess'], $filePath);
}
elseif ($caseOption == 'skip')
{
continue;
}
}
else // File not exist
{
$strWarn = CFileMan::CopyEx($arPath_i, Array($siteTo, CFileMan::NormalizePath($pathTo."/".$name_i)), !$Params['bCopy']);
if ($strWarn != "")
{
$arWarnings[] = $strWarn;
$log = false;
}
elseif ($Params['bSearch'] && $Params['ssess'] && !$Params['bCopy'])
CFilemanSearch::DelFromSearchResult($Params['ssess'], $filePath);
}
$module_id = "fileman";
if(COption::GetOptionString($module_id, "log_page", "Y")=="Y" && $log)
{
$res_log['copy_to'] = mb_substr($pathTo, 1);
$res_log['path'] = mb_substr($filePath, 1);
if ($Params['bCopy'] == "copy")
{
if (!$bDir_i)
CEventLog::Log(
"content",
"FILE_COPY",
"fileman",
"",
serialize($res_log)
);
else
CEventLog::Log(
"content",
"SECTION_COPY",
"fileman",
"",
serialize($res_log)
);
}
else
{
if (!$bDir_i)
CEventLog::Log(
"content",
"FILE_MOVE",
"fileman",
"",
serialize($res_log)
);
else
CEventLog::Log(
"content",
"SECTION_MOVE",
"fileman",
"",
serialize($res_log)
);
}
}
}
}
$arWarnings
?>
}