public static function OnSocNetUserToGroupUpdate($ID, $arFields) { if (intval($ID) <= 0) { return false; } if (!CModule::IncludeModule('socialnetwork')) { return false; } if (!CModule::IncludeModule('webdav')) { return false; } if (isset($arFields['ROLE']) && ($arFields['ROLE'] == SONET_ROLES_USER || $arFields['ROLE'] == SONET_ROLES_MODERATOR || $arFields['ROLE'] == SONET_ROLES_OWNER)) { if (!isset($arFields['USER_ID'])) { $query = CSocNetUserToGroup::GetList(array(), array('ID' => $ID), false, false, array('USER_ID', 'GROUP_ID')); if ($query) { $row = $query->fetch(); if ($row) { $userId = $row['USER_ID']; $groupId = $row['GROUP_ID']; } } } if (!empty($userId) && !empty($groupId) && CSocNetFeatures::IsActiveFeature(SONET_ENTITY_GROUP, $groupId, 'files')) { $dispatcher = new \Bitrix\Webdav\InviteDispatcher(); $attachObjectType = CWebDavSymlinkHelper::ENTITY_TYPE_GROUP; $attachObjectId = (int) $groupId; $inviteComponentParams = array('attachObject' => array('id' => $attachObjectId, 'type' => $attachObjectType), 'attachToUserId' => $userId, 'inviteFromUserId' => $userId, 'canEdit' => true); $response = CWebDavTools::allowAutoconnectShareGroupFolder() ? $dispatcher->processActionConnect($inviteComponentParams) : $dispatcher->processActionInvite($inviteComponentParams); if ($response['status'] == $dispatcher::STATUS_SUCCESS) { } } } CIBlockWebdavSocnet::ClearTagCache('wd_socnet'); }
public static function onBeforeConfirmNotify($module, $tag, $value, $arNotify) { global $USER; $userId = $USER->getId(); if ($module == 'webdav' && $userId) { $tagData = explode('|', $tag); $folderInviteId = intval($tagData[2]); if ($tagData[0] == "WEBDAV" && $tagData[1] == "INVITE" && $folderInviteId > 0 && $userId == $tagData[3]) { if (\Bitrix\Main\Loader::includeModule('im')) { CIMNotify::DeleteByTag(\Bitrix\Webdav\FolderInviteTable::getNotifyTag(array('ID' => $folderInviteId, 'INVITE_USER_ID' => $userId))); } //decline if ($value === 'N') { \Bitrix\Webdav\FolderInviteTable::delete($folderInviteId); return false; } $targetSectionData = CWebDavIblock::getRootSectionDataForUser($userId); if (!$targetSectionData) { return false; } $folderInviteData = \Bitrix\Webdav\FolderInviteTable::getRowById($folderInviteId); if (!$folderInviteData) { return false; } $sectionToShare = CIBlockSection::getList(array(), array('ID' => $folderInviteData['SECTION_ID'], 'IBLOCK_ID' => $folderInviteData['IBLOCK_ID'], 'CHECK_PERMISSIONS' => 'N'), false, array('NAME', 'SOCNET_GROUP_ID'))->fetch(); if (empty($sectionToShare['NAME']) || empty($sectionToShare['SOCNET_GROUP_ID'])) { return false; } if (\Bitrix\Main\Loader::includeModule('socialnetwork')) { $group = CSocNetGroup::GetList(array(), array('ID' => $sectionToShare['SOCNET_GROUP_ID']), false, false, array('NAME'))->fetch(); } if (empty($group)) { return false; } $groupId = $sectionToShare['SOCNET_GROUP_ID']; $dispatcher = new \Bitrix\Webdav\InviteDispatcher(); $attachObjectType = CWebDavSymlinkHelper::ENTITY_TYPE_GROUP; $attachObjectId = (int) $groupId; $inviteComponentParams = array('attachObject' => array('id' => $attachObjectId, 'type' => $attachObjectType), 'attachToUserId' => $folderInviteData['INVITE_USER_ID'], 'inviteFromUserId' => $folderInviteData['USER_ID'], 'canEdit' => $folderInviteData['CAN_EDIT']); $response = $dispatcher->processActionConnect($inviteComponentParams); if ($response['status'] == $dispatcher::STATUS_SUCCESS) { \Bitrix\Webdav\FolderInviteTable::update($folderInviteId, array('IS_APPROVED' => true, 'LINK_SECTION_ID' => $response['sectionId'])); } return $response['status'] == $dispatcher::STATUS_SUCCESS; } } }