12 private const MAX_ACTION_UUID_LENGTH = 1000;
16 return \Bitrix\Main\Loader::includeModule(
"pull");
22 string $actionUuid =
'',
30 \CPullWatch::AddToStack($this->getTag($voteId),
32 "module_id" =>
"vote",
37 "actionUuid" => $this->truncateActionUid($actionUuid),
46 string $actionUuid =
'',
54 \CPullWatch::AddToStack($this->getTag($voteId),
56 "module_id" =>
"vote",
57 "command" =>
"resume",
61 "actionUuid" => $this->truncateActionUid($actionUuid),
76 $userId = CurrentUser::get()?->getId();
78 $questionsUpdateData = $this->getUpdatePullData($attach);
82 'AUTHOR_ID' => $isPublicVote ?
$userId :
null,
83 'COUNTER' => (int)($attach[
'COUNTER'] ?? 0),
84 'QUESTIONS' => $questionsUpdateData,
97 'userAnswerMap' => $userAnswerMap,
102 \CPullWatch::AddToStack($this->getTag($voteId),
104 'module_id' =>
'vote',
105 'command' =>
'voting',
115 questionsUpdateData: $questionsUpdateData,
116 userAnswerMap: $userAnswerMap,
117 actionUuid: $actionUuid,
129 return \CPullWatch::Add(
$userId, $this->getTag($voteId));
132 private function sendToUser(
135 array $questionsUpdateData,
136 array $userAnswerMap,
146 'module_id' =>
'vote',
147 'command' =>
'user_vote',
150 'AUTHOR_ID' => $authorId,
151 'COUNTER' => (
int)($attach[
'COUNTER'] ?? 0),
152 'QUESTIONS' => $questionsUpdateData,
153 'userAnswerMap' => $userAnswerMap,
155 'actionUuid' => $this->truncateActionUid($actionUuid),
160 private function getTag(
int $voteId): string
162 return "VOTE_{$voteId}";
165 private function getUpdatePullData(Attach $attach):
array
168 foreach ($attach[
'QUESTIONS'] as $question)
172 'COUNTER' => (int)($question[
"COUNTER"] ?? 0),
174 foreach ($question[
'ANSWERS'] as $answer)
176 $result[$question[
'ID']][
'ANSWERS'][$answer[
'ID']] = [
177 'PERCENT' => $answer[
'PERCENT'],
179 'COUNTER' => (int)($answer[
'COUNTER'] ?? 0),
187 private function truncateActionUid(
string $actionUuid): string
189 return mb_substr($actionUuid, 0, self::MAX_ACTION_UUID_LENGTH);
if(!Loader::includeModule('messageservice')) $provider
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
getUserEventsAnswersStatByUserId(int $userId)
add(array $eventFields, array $ballot, $setCounter=true)
sendStop(int $voteId, int $entityId=0, string $actionUuid='',)
addUserWatch(int $userId, int $voteId)
sendResume(int $voteId, int $entityId=0, string $actionUuid='',)
sendVoting(Attach $attach, string $actionUuid='')
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']