• Модуль: dav
  • Путь к файлу: ~/bitrix/modules/dav/classes/general/webdavserver.php
  • Класс: CDavWebDavServer
  • Вызов: CDavWebDavServer::createFolderPath
private function createFolderPath($storage, $path)
{
	$path = trim($path, '/');
	if ($path == '')
		return true;

	$foldersPath = explode('/', $path);

	$urlManager = Driver::getInstance()->getUrlManager();
	/** @var Folder $folder */
	$folderId = $urlManager->resolveFolderIdFromPath($storage, '/');
	$folder = Folder::loadById($folderId);

	$s = '';
	while (!empty($foldersPath))
	{
		$subFolderName = array_shift($foldersPath);
		$s .= '/' . $subFolderName;
		$folderId = $urlManager->resolveFolderIdFromPath($storage, $s);
		if ($folderId)
		{
			$folder = Folder::loadById($folderId);
			if (!$folder)
			{
				return '409 Conflict';
			}
		}
		else
		{
			if (!$folder->canAdd($storage->getCurrentUserSecurityContext()))
			{
				return '403 Forbidden';
			}
			$folder = $folder->addSubFolder(array('NAME' => $subFolderName, 'CREATED_BY' => $this->getUser()->getId()));
		}
	}

	return true;
}