- Модуль: translate
- Путь к файлу: ~/bitrix/modules/translate/lib/io/directory.php
- Класс: BitrixTranslateIODirectory
- Вызов: Directory::copyLangOnly
public function copyLangOnly(
MainIODirectory $target,
string $languageId,
bool $convertEncoding = false,
string $sourceEncoding = '',
string $targetEncoding = ''
): bool
{
if (mb_strpos($target->getPhysicalPath(), $this->getPhysicalPath()) === 0)
{
$this->addError(new MainError('Destination is inside in the source folder.'));
return false;
}
if (!$this->isExists())
{
$this->addError(new MainError('Source is not exists.'));
return false;
}
$children = $this->getChildren();
$retFlag = true;
/** @var MainIODirectory $dir */
foreach ($children as $dir)
{
$dirName = $dir->getName();
if (
!$dir instanceof MainIODirectory ||
!$dir->isDirectory() ||
in_array($dirName, TranslateIGNORE_FS_NAMES, true)
)
{
continue;
}
if ($dirName === 'lang' || $dirName === 'payment')
{
$source = new self($dir->getPhysicalPath(). '/'. $languageId);
if ($source->isExists())
{
if (!$target->isExists())
{
$target->create();
}
$targetDir = $target->createSubdirectory($dirName)->createSubdirectory($languageId);
$res = $source->copy(
$targetDir,
true,
true,
$convertEncoding,
$sourceEncoding,
$targetEncoding
);
if (!$res)
{
$retFlag = false;
$this->addErrors($source->getErrors());
}
}
}
else
{
$source = new self($dir->getPhysicalPath());
$res = $source->copyLangOnly(
(new MainIODirectory($target->getPhysicalPath(). '/'. $dirName)),
$languageId,
$convertEncoding,
$sourceEncoding,
$targetEncoding
);
if (!$res)
{
$retFlag = false;
$this->addErrors($source->getErrors());
}
}
}
return $retFlag;
}