private function getSectionDataForLinkAnalyze($sectionId, array $miscData = array(), $forwardFromSymlinkSectionToReal = true) { if (!empty($miscData['IBLOCK_ID'])) { $iblockId = $miscData['IBLOCK_ID']; CWebDavSymlinkHelper::setIblockIdForSectionId($sectionId, $iblockId); } else { $iblockId = CWebDavSymlinkHelper::getIblockIdForSectionId($sectionId); } if ($forwardFromSymlinkSectionToReal) { if (!empty($this->arParams['dir_array']['ID']) && $this->arParams['dir_array']['ID'] == $sectionId) { //this sectionId is symlink. Forward data to symlink data if (!empty($this->arParams['dir_array'][self::UF_LINK_IBLOCK_ID])) { $sectionId = $this->arParams['dir_array'][self::UF_LINK_SECTION_ID]; $iblockId = $this->arParams['dir_array'][self::UF_LINK_IBLOCK_ID]; CWebDavSymlinkHelper::setIblockIdForSectionId($sectionId, $iblockId); } else { $iblockId = $this->arParams['dir_array']['IBLOCK_ID']; CWebDavSymlinkHelper::setIblockIdForSectionId($sectionId, $iblockId); } } elseif (!empty($miscData['dir_array']['ID']) && $miscData['dir_array']['ID'] == $sectionId) { //this sectionId is symlink. Forward data to symlink data if (!empty($miscData['dir_array'][self::UF_LINK_IBLOCK_ID])) { $sectionId = $miscData['dir_array'][self::UF_LINK_SECTION_ID]; $iblockId = $miscData['dir_array'][self::UF_LINK_IBLOCK_ID]; CWebDavSymlinkHelper::setIblockIdForSectionId($sectionId, $iblockId); } else { $iblockId = $miscData['dir_array']['IBLOCK_ID']; CWebDavSymlinkHelper::setIblockIdForSectionId($sectionId, $iblockId); } } elseif (!empty($miscData['ID']) && $miscData['ID'] == $sectionId) { //this sectionId is symlink. Forward data to symlink data if (!empty($miscData[self::UF_LINK_IBLOCK_ID])) { $sectionId = $miscData[self::UF_LINK_SECTION_ID]; $iblockId = $miscData[self::UF_LINK_IBLOCK_ID]; CWebDavSymlinkHelper::setIblockIdForSectionId($sectionId, $iblockId); } else { $iblockId = $miscData['IBLOCK_ID']; CWebDavSymlinkHelper::setIblockIdForSectionId($sectionId, $iblockId); } } } return array('ID' => $sectionId, 'IBLOCK_ID' => $iblockId); }
public function getDirectory($id, array $extra, $skipCheckId = false) { if (!$skipCheckId && $this->generateId(array('ID' => $extra['id'], 'FILE' => false)) != $id) { return false; } //todo usage propfind with section_id options $storageId = $this->getStorageId(); CTimeZone::Disable(); $dir = CIBlockSection::GetList(array(), array('IBLOCK_ID' => (int) CWebDavSymlinkHelper::getIblockIdForSectionId($extra['id']), 'ID' => (int) $extra['id']), false, array('ID', 'IBLOCK_ID', 'IBLOCK_SECTION_ID', 'CREATED_BY', 'MODIFIED_BY', 'PATH', 'NAME', 'TIMESTAMP_X', 'XML_ID', 'IBLOCK_CODE', CWebDavIblock::UF_LINK_SECTION_ID)); CTimeZone::Enable(); $dir = $dir->fetch(); if (!$dir || !is_array($dir)) { return array(); } $dir['PATH'] = implode('/', $this->getPathArrayForSection($extra['id'])); return $this->formatSectionToResponse($dir); }
private static function deleteSymlinkSections(array $folderInvite) { if (!\Bitrix\Main\Loader::includeModule('iblock')) { return; } self::removeNotifyToUser($folderInvite); \CWebDavDiskDispatcher::addElementForDeletingMark(array('ID' => $folderInvite['LINK_SECTION_ID'], 'IBLOCK_ID' => \CWebDavSymlinkHelper::getIblockIdForSectionId($folderInvite['LINK_SECTION_ID']))); \CWebDavDiskDispatcher::markDeleteBatch(false); \CIBlockSection::delete($folderInvite['LINK_SECTION_ID'], false); self::removeRightsOnSharedSections($folderInvite); return; }