- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/integration/disk/hiddenstorage.php
- Класс: Bitrix\Crm\Integration\Disk\HiddenStorage
- Вызов: HiddenStorage::findOrCreateFolder
private function findOrCreateFolder(string $code): ?Folder
{
$parentFolder = Folder::load(['=CODE' => $code, 'STORAGE_ID' => $this->storage->getId()]);
if (!$parentFolder)
{
$parentFolder = $this->storage->addFolder([
'NAME' => $code,
'CODE' => $code,
'CREATED_BY' => SystemUser::SYSTEM_USER_ID
], [], true);
}
if ($parentFolder instanceof Folder)
{
$subFolderName = date('Y-m-d');
$subFolder = $parentFolder->getChild(['=NAME' => $subFolderName, '=TYPE' => FolderTable::TYPE_FOLDER]);
if ($subFolder)
{
return $subFolder;
}
$lockKey = sprintf('%s|%s', $code, $subFolderName);
$this->lock($lockKey);
$subFolder = $parentFolder->addSubFolder([
'NAME' => $subFolderName,
'CREATED_BY' => SystemUser::SYSTEM_USER_ID
]);
$this->unlock($lockKey);
if ($subFolder instanceof Folder)
{
return $subFolder;
}
$this->errorCollection = array_merge($this->errorCollection, $subFolder->getErrors());
return null;
}
$this->errorCollection = array_merge($this->errorCollection, $parentFolder->getErrors());
return null;
}