• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/socialnetworkhandlers.php
  • Класс: BitrixDiskSocialnetworkHandlers
  • Вызов: SocialnetworkHandlers::onSocNetUserToGroupUpdate
static function onSocNetUserToGroupUpdate($id, $fields, $fieldsOld = [])
{
	if (!Loader::includeModule('socialnetwork'))
	{
		return;
	}

	$memberRolesList = BitrixSocialnetworkUserToGroupTable::getRolesMember();

	if(
		isset($fields['ROLE']) &&
		in_array($fields['ROLE'], $memberRolesList) &&
		(
			empty($fieldsOld)
			|| !in_array($fieldsOld['ROLE'], $memberRolesList)
		)
	)
	{
		if(!(isset($fields['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'))
		{
			$storage = Driver::getInstance()->getStorageByGroupId($groupId);
			if(!$storage)
			{
				return;
			}

			$rootObject = $storage->getRootObject();
			if(!$rootObject->canRead($storage->getSecurityContext($userId)))
			{
				return;
			}

			$errorCollection = new ErrorCollection();
			Sharing::connectStorageToUserStorage($userId, $userId, $storage, $errorCollection);
		}
	}
}