1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
action.php
См. документацию.
1<?php
2
4
5use Bitrix\Extranet\Service\ServiceContainer;
9
10Loc::loadMessages(__FILE__);
11
12class Action
13{
14 public static function vote(array $params = []): array
15 {
16 global $APPLICATION;
17
18 $voteList = [];
19
20 $allowVoteData = \CRatings::checkAllowVote($params);
21 if (!$allowVoteData['RESULT'])
22 {
23 return $voteList;
24 }
25
26 $APPLICATION->RestartBuffer();
27 $userData = [];
28 $remoteAddr = $params['REMOTE_ADDR'];
29
30 if (in_array($params['ACTION'], [ 'plus', 'minus' ]))
31 {
32 $userData = \CRatings::addRatingVote([
33 'ENTITY_TYPE_ID' => $params['ENTITY_TYPE_ID'],
34 'ENTITY_ID' => $params['ENTITY_ID'],
35 'VALUE' => $params['ACTION'] === 'plus' ? 1 : -1,
36 'USER_IP' => $remoteAddr,
37 'USER_ID' => $params['CURRENT_USER_ID'],
38 'REACTION' => (
39 $params['ACTION'] === 'plus'
40 && !empty($params['REACTION'])
41 ? $params['REACTION']
43 ),
44 ]);
45
46 }
47 elseif ($params['ACTION'] === 'change')
48 {
49 $userData = \CRatings::changeRatingVote([
50 'ENTITY_TYPE_ID' => $params['ENTITY_TYPE_ID'],
51 'ENTITY_ID' => $params['ENTITY_ID'],
52 'USER_IP' => $remoteAddr,
53 'USER_ID' => $params['CURRENT_USER_ID'],
54 'REACTION' => (
55 !empty($params['REACTION'])
56 ? $params['REACTION']
58 )
59 ]);
60 }
61 else if ($params['ACTION'] === 'cancel')
62 {
63 $userData = \CRatings::cancelRatingVote([
64 'ENTITY_TYPE_ID' => $params['ENTITY_TYPE_ID'],
65 'ENTITY_ID' => $params['ENTITY_ID'],
66 'USER_ID' => $params['CURRENT_USER_ID'],
67 ]);
68 }
69
71 'ENTITY_TYPE_ID' => $params['ENTITY_TYPE_ID'],
72 'ENTITY_ID' => $params['ENTITY_ID'],
73 'LIST_LIMIT' => 0,
74 'LIST_TYPE' => ($params['ACTION'] === 'minus' ? 'minus' : 'plus'),
75 ]);
76
77 if ($params['RATING_RESULT'] === 'Y')
78 {
79 $voteList = array_merge(
80 $voteList,
81 self::getVoteResult($params['ENTITY_TYPE_ID'], $params['ENTITY_ID'])
82 );
83 }
84
85 $voteList['action'] = $params['ACTION'];
86 $voteList['user_data'] = $userData;
87
88 return $voteList;
89 }
90
91 public static function getVoteResult($entityTypeId, $entityId): array
92 {
93 global $USER;
94
95 $entityId = (int)$entityId;
96 $userId = (int)$USER->getId();
97
98 $ratingResult = \CRatings::getRatingVoteResult($entityTypeId, $entityId, $userId);
99 if (empty($ratingResult))
100 {
101 $ratingResult['USER_HAS_VOTED'] = $USER->isAuthorized() ? 'N' : 'Y';
102 $ratingResult['USER_VOTE'] = 0;
103 $ratingResult['TOTAL_VALUE'] = 0;
104 $ratingResult['TOTAL_VOTES'] = 0;
105 $ratingResult['TOTAL_POSITIVE_VOTES'] = 0;
106 $ratingResult['TOTAL_NEGATIVE_VOTES'] = 0;
107 }
108
109 $resultStatus = $ratingResult['TOTAL_VALUE'] < 0 ? 'minus' : 'plus';
110 $resultTitle = sprintf(
111 Loc::getMessage('RATING_COMPONENT_DESC'),
112 $ratingResult['TOTAL_VOTES'],
113 $ratingResult['TOTAL_POSITIVE_VOTES'],
114 $ratingResult['TOTAL_NEGATIVE_VOTES']
115 );
116
117 return [
118 'resultValue' => $ratingResult['TOTAL_VALUE'],
119 'resultVotes' => $ratingResult['TOTAL_VOTES'],
120 'resultPositiveVotes' => $ratingResult['TOTAL_POSITIVE_VOTES'],
121 'resultNegativeVotes' => $ratingResult['TOTAL_NEGATIVE_VOTES'],
122 'resultStatus' => $resultStatus,
123 'resultTitle' => $resultTitle,
124 ];
125 }
126
127 public static function list(array $params = []): array
128 {
129 $mailInstalled = ModuleManager::isModuleInstalled('mail');
130 $extranetInstalled = ModuleManager::isModuleInstalled('extranet');
131
132 if ($extranetInstalled)
133 {
134 $params['USER_SELECT'] = [ 'UF_DEPARTMENT' ];
135 }
136
137 if ($mailInstalled)
138 {
139 $params['USER_FIELDS'] = [
140 'ID', 'NAME', 'LAST_NAME', 'SECOND_NAME', 'LOGIN',
141 'PERSONAL_PHOTO', 'EXTERNAL_AUTH_ID',
142 ];
143 }
144
146
147 $voteList = [
148 'items' => [],
149 'items_all' => $result['items_all'],
150 'items_page' => $result['items_page'],
151 'reactions' => (
152 isset($result['reactions'])
153 && is_array($result['reactions'])
154 ? $result['reactions']
155 : []
156 ),
157 'list_page' => $result['list_page'],
158 ];
159
160 foreach ($result['items'] as $key => $value)
161 {
162 $userVote = [
163 'USER_ID' => $value['ID'],
164 'VOTE_VALUE' => $value['VOTE_VALUE'],
165 'PHOTO' => $value['PHOTO'],
166 'PHOTO_SRC' => $value['PHOTO_SRC'],
167 'FULL_NAME' => $value['FULL_NAME'],
169 $params['PATH_TO_USER_PROFILE'],
170 [
171 'UID' => $value['USER_ID'],
172 'user_id' => $value['USER_ID'],
173 'USER_ID' => $value['USER_ID'],
174 ],
175 ),
176 ];
177
178 if (
179 $mailInstalled
180 && $value['EXTERNAL_AUTH_ID'] === 'email'
181 )
182 {
183 $userVote['USER_TYPE'] = 'mail';
184 }
185 elseif (
186 $extranetInstalled
187 && (
188 empty($value['UF_DEPARTMENT'])
189 || (int)$value['UF_DEPARTMENT'][0] <= 0
190 )
191 )
192 {
193 if (
194 Loader::includeModule('extranet')
195 && ServiceContainer::getInstance()->getCollaberService()->isCollaberById((int)$value['ID'])
196 )
197 {
198 $userVote['USER_TYPE'] = 'collaber';
199 }
200 else
201 {
202 $userVote['USER_TYPE'] = 'extranet';
203 }
204 }
205
206 $voteList['items'][] = $userVote;
207 }
208
209 if ($params['CURRENT_USER_ID'] > 0)
210 {
211 $event = new \Bitrix\Main\Event(
212 'main',
213 'onRatingListViewed',
214 [
215 'entityTypeId' => $params['ENTITY_TYPE_ID'],
216 'entityId' => $params['ENTITY_ID'],
217 'userId' => $params['CURRENT_USER_ID'],
218 ]
219 );
220 $event->send();
221 }
222
223 return $voteList;
224 }
225}
global $APPLICATION
Определения include.php:80
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
Определения check_mail.php:18
Определения loader.php:13
static includeModule($moduleName)
Определения loader.php:67
static isModuleInstalled($moduleName)
Определения modulemanager.php:125
static vote(array $params=[])
Определения action.php:14
static getVoteResult($entityTypeId, $entityId)
Определения action.php:91
static list(array $params=[])
Определения action.php:127
static makePathFromTemplate($template, $arParams=array())
Определения component_engine.php:355
static getRatingVoteList($arParam)
Определения ratings.php:1984
const REACTION_DEFAULT
Определения ratings.php:7
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$result
Определения get_property_values.php:14
global $USER
Определения csv_new_run.php:40
$entityId
Определения payment.php:4
$event
Определения prolog_after.php:141
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
if(empty($signedUserToken)) $key
Определения quickway.php:257
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
Определения template.php:799