- Модуль: imconnector
- Путь к файлу: ~/bitrix/modules/imconnector/lib/provider/network/input.php
- Класс: BitrixImConnectorProviderNetworkInput
- Вызов: Input::processingSessionVote
protected function processingSessionVote(array $params): Result
{
$result = clone $this->result;
$messageParams = [];
if (!Loader::includeModule('imopenlines'))
{
$result->addError(new Error(
'Failed to load the imopenlines module',
'ERROR_IMCONNECTOR_FAILED_LOAD_IMOPENLINES',
__METHOD__
));
}
if ($result->isSuccess())
{
$resultProcessing = Connector::initConnectorHandler($this->connector)->processingInputSessionVote($params, $this->line);
if ($resultProcessing->isSuccess())
{
$params = $resultProcessing->getResult()['PARAMS'];
$messageParams = $resultProcessing->getResult()['MESSAGE_PARAMS'];
}
else
{
$result->addErrors($resultProcessing->getErrors());
}
}
if ($result->isSuccess())
{
$params['ACTION'] = $params['ACTION'] === 'dislike' ? 'dislike': 'like';
$resultVote = false;
/** @var BitrixImOpenLinesServicesSessionManager $sessionManager */
$sessionManager = ServiceLocator::getInstance()->get('ImOpenLines.Services.SessionManager');
if ($sessionManager instanceof BitrixImOpenLinesServicesSessionManager)
{
$resultVote = $sessionManager->voteAsUser((int)$messageParams['IMOL_VOTE'], $params['ACTION']);
}
if ($resultVote)
{
$messageParamService = ServiceLocator::getInstance()->get('Im.Services.MessageParam');
if ($messageParamService instanceof BitrixImServicesMessageParam)
{
$messageParamService->setParam((int)$params['MESSAGE_ID'], 'IMOL_VOTE', $params['ACTION'], true);
global $USER_FIELD_MANAGER;
if (
defined('IMOL_FDC')
&& isset($params['VOTE_IP'])
&& is_string($params['VOTE_IP'])
&& $USER_FIELD_MANAGER instanceof CUserTypeManager
&& array_key_exists('UF_IMOPENLINES_SESSION_VOTE_IP', $USER_FIELD_MANAGER->GetUserFields(SessionTable::getUfId()))
)
{
$USER_FIELD_MANAGER->Update(SessionTable::getUfId(), $params['SESSION_ID'], ['UF_IMOPENLINES_SESSION_VOTE_IP' => $params['VOTE_IP']]);
}
}
}
else
{
$result->addError(new Error(
'Voting error',
'ERROR_IMCONNECTOR_VOTING_ERROR',
__METHOD__,
$params
));
}
}
return $result;
}