1C-Bitrix
25.700.0
Загрузка...
Поиск...
Не найдено
action.php
См. документацию.
1
<?php
2
3
namespace
Bitrix\Main\Rating\Internal
;
4
5
use Bitrix\Extranet\Service\ServiceContainer;
6
use
Bitrix\Main\Loader
;
7
use
Bitrix\Main\Localization\Loc
;
8
use
Bitrix\Main\ModuleManager
;
9
10
Loc::loadMessages(__FILE__);
11
12
class
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'
]
42
: \
CRatings::REACTION_DEFAULT
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'
]
57
: \
CRatings::REACTION_DEFAULT
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
70
$voteList =
\CRatings::getRatingVoteList
([
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
145
$result
=
\CRatings::getRatingVoteList
(
$params
);
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'
],
168
'URL'
=>
\CComponentEngine::makePathFromTemplate
(
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
}
$APPLICATION
global $APPLICATION
Определения
include.php:80
$userId
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
Определения
check_mail.php:18
Bitrix\Main\Loader
Определения
loader.php:13
Bitrix\Main\Loader\includeModule
static includeModule($moduleName)
Определения
loader.php:67
Bitrix\Main\Localization\Loc
Определения
loc.php:12
Bitrix\Main\ModuleManager
Определения
modulemanager.php:6
Bitrix\Main\ModuleManager\isModuleInstalled
static isModuleInstalled($moduleName)
Определения
modulemanager.php:125
Bitrix\Main\Rating\Internal\Action
Определения
action.php:13
Bitrix\Main\Rating\Internal\Action\vote
static vote(array $params=[])
Определения
action.php:14
Bitrix\Main\Rating\Internal\Action\getVoteResult
static getVoteResult($entityTypeId, $entityId)
Определения
action.php:91
Bitrix\Main\Rating\Internal\Action\list
static list(array $params=[])
Определения
action.php:127
CComponentEngine\makePathFromTemplate
static makePathFromTemplate($template, $arParams=array())
Определения
component_engine.php:355
CRatings\getRatingVoteList
static getRatingVoteList($arParam)
Определения
ratings.php:1984
CRatings\REACTION_DEFAULT
const REACTION_DEFAULT
Определения
ratings.php:7
array
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения
file_new.php:804
$result
$result
Определения
get_property_values.php:14
$USER
global $USER
Определения
csv_new_run.php:40
Bitrix\Main\Rating\Internal
Определения
action.php:3
$entityId
$entityId
Определения
payment.php:4
$event
$event
Определения
prolog_after.php:141
elseif
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения
prolog_main_admin.php:393
$key
if(empty($signedUserToken)) $key
Определения
quickway.php:257
$params
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
Определения
template.php:799
bitrix
modules
main
lib
rating
internal
action.php
Создано системой
1.14.0