• Модуль: webdav
  • Путь к файлу: ~/bitrix/modules/webdav/classes/iblock.php
  • Класс: CWebDavIblock
  • Вызов: CWebDavIblock::getRootSectionIdForUser
static function getRootSectionIdForUser($iblockId, $userId)
{
	global $USER_FIELD_MANAGER;
	global $UF_USE_BP;
	$result = CIBlockWebdavSocnet::getSectionId($iblockId, 'user', $userId);
	if (($result = intval($result)) > 0)
	{
		return $result;
	}

	$fields = Array(
		'IBLOCK_ID' => $iblockId,
		'ACTIVE' => 'Y',
		'SOCNET_GROUP_ID' => false,
		'IBLOCK_SECTION_ID' => 0,
		'UF_USE_BP' => 'N',
		'UF_USE_EXT_SERVICES' => CWebDavIblock::resolveDefaultUseExtServices(),
	);

	$user = CUser::getById($userId)->fetch();
	if(empty($user))
	{
		return false;
	}
	$fields['NAME'] = trim($user['LAST_NAME'] . ' ' . $user['FIRST_NAME']);
	$fields['NAME'] = trim(!empty($fields["NAME"]) ? $fields['NAME'] : $user['LOGIN']);
	$fields['CREATED_BY'] = $user['ID'];
	$fields['MODIFIED_BY'] = $user['ID'];

	if (CIBlock::GetArrayByID($iblockId, "RIGHTS_MODE") === "E")
	{
		$tasks = CWebDavIblock::GetTasks();
		$fields['RIGHTS'] = array(
			'n0' => array('GROUP_CODE' => 'U' . $userId, 'TASK_ID' => $tasks['X'])
		);
	}

	$UF_USE_BP = $fields['UF_USE_BP'];
	$USER_FIELD_MANAGER->editFormAddFields('IBLOCK_' . $iblockId . '_SECTION', $fields);
	$section = new CIBlockSection;
	$sectionId = $section->add($fields);
	if (!$sectionId)
	{
		return false;
	}

	WDClearComponentCache(array(
		'webdav.element.edit',
		'webdav.element.hist',
		'webdav.element.upload',
		'webdav.element.view',
		'webdav.menu',
		'webdav.section.edit',
		'webdav.section.list'
	));

	return $sectionId;
}