1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
log_forum_comments.php
См. документацию.
1<?php
3
5{
6 public static function findLogEventIDByForumEntityID($forumEntityType)
7 {
8 $event_id = false;
9 $arSocNetLogEvents = CSocNetAllowed::GetAllowedLogEvents();
10
11 foreach ($arSocNetLogEvents as $event_id_tmp => $arEventTmp)
12 {
13 if (
14 array_key_exists("FORUM_COMMENT_ENTITY", $arEventTmp)
15 && $arEventTmp["FORUM_COMMENT_ENTITY"] == $forumEntityType
16 )
17 {
18 $event_id = $event_id_tmp;
19 break;
20 }
21 }
22
23 $arSocNetFeaturesSettings = CSocNetAllowed::GetAllowedFeatures();
24 foreach ($arSocNetFeaturesSettings as $feature_tmp => $arFeature)
25 {
26 if (array_key_exists("subscribe_events", $arFeature))
27 {
28 foreach ($arFeature["subscribe_events"] as $event_id_tmp => $arEventTmp)
29 {
30 if (
31 array_key_exists("FORUM_COMMENT_ENTITY", $arEventTmp)
32 && $arEventTmp["FORUM_COMMENT_ENTITY"] == $forumEntityType
33 )
34 {
35 $event_id = $event_id_tmp;
36 break;
37 }
38 }
39 }
40 }
41
42 return $event_id;
43 }
44
45 public static function onAfterCommentAdd($entityType, $entityId, $arData)
46 {
48
50 if (
51 !$log_event_id
52 || $log_event_id == 'tasks' // \Bitrix\Tasks\Integration\Forum\Task\Comment::onAfterAdd()
53 )
54 {
55 return false;
56 }
57
58 $arLogCommentEvent = CSocNetLogTools::FindLogCommentEventByLogEventID($log_event_id);
59 if (!$arLogCommentEvent)
60 {
61 return false;
62 }
63
64 $entityId = intval($entityId);
65 if ($entityId <= 0)
66 {
67 return false;
68 }
69
70 $messageId = $arData['MESSAGE_ID'];
71 if ($messageId <= 0)
72 {
73 return false;
74 }
75
77 if (!$arMessage)
78 {
79 return false;
80 }
81
82 $sText = (COption::GetOptionString("forum", "FILTER", "Y") == "Y" ? $arMessage["POST_MESSAGE_FILTER"] : $arMessage["POST_MESSAGE"]);
83
84 $logFilter = array(
85 "EVENT_ID" => $log_event_id,
86 "SOURCE_ID" => $entityId
87 );
88
89 foreach (GetModuleEvents("socialnetwork", "onAfterCommentAddBefore", true) as $arModuleEvent)
90 {
91 $res = ExecuteModuleEventEx($arModuleEvent, array(
92 $entityType,
94 $arData
95 ));
96
97 if (isset($res) && is_array($res) && isset($res['LOG_ENTRY_ID']) && $res['LOG_ENTRY_ID'] > 1)
98 {
99 $logFilter = array(
100 'ID' => $res['LOG_ENTRY_ID']
101 );
102 }
103 }
104
105 $log_id = null;
106
108 array("ID" => "DESC"),
109 $logFilter,
110 false,
111 false,
112 array("ID", "ENTITY_TYPE", "ENTITY_ID", "SOURCE_ID", "USER_ID")
113 );
114
115 if ($arRes = $dbRes->Fetch())
116 {
117 $log_id = $arRes["ID"];
118 $entity_type = $arRes["ENTITY_TYPE"];
119 $entity_id = $arRes["ENTITY_ID"];
120 $strURL = '';
121
122 if (
123 isset($arLogCommentEvent["METHOD_GET_URL"])
124 && is_callable($arLogCommentEvent["METHOD_GET_URL"])
125 )
126 {
127 $strURL = call_user_func_array($arLogCommentEvent["METHOD_GET_URL"], array(array(
128 "ENTRY_ID" => $arRes["SOURCE_ID"],
129 "ENTRY_USER_ID" => $arRes["USER_ID"],
130 "COMMENT_ID" => $messageId
131 )));
132 }
133
134 $parser = new CTextParser();
135 $parser->allow = array("HTML" => 'N',"ANCHOR" => 'Y',"BIU" => 'Y',"IMG" => "Y","VIDEO" => "Y","LIST" => 'N',"QUOTE" => 'Y',"CODE" => 'Y',"FONT" => 'Y',"SMILES" => "N","UPLOAD" => 'N',"NL2BR" => 'N',"TABLE" => "Y");
136
137 $arFieldsForSocnet = array(
138 "ENTITY_TYPE" => $entity_type,
139 "ENTITY_ID" => $entity_id,
140 "EVENT_ID" => $arLogCommentEvent["EVENT_ID"],
141 "=LOG_DATE" => $DB->CurrentTimeFunction(),
142 "USER_ID" => $arMessage["AUTHOR_ID"],
143 "MESSAGE" => $sText,
144 "TEXT_MESSAGE" => $parser->convert4mail($sText),
145 "URL" => $strURL,
146 "MODULE_ID" => (array_key_exists("MODULE_ID", $arLogCommentEvent) && $arLogCommentEvent["MODULE_ID"] <> '' ? $arLogCommentEvent["MODULE_ID"] : ""),
147 "SOURCE_ID" => $messageId,
148 "LOG_ID" => $log_id
149 );
150
151 if (
152 !array_key_exists("RATING_TYPE_ID", $arLogCommentEvent)
153 || $arLogCommentEvent["RATING_TYPE_ID"] == "FORUM_POST"
154 )
155 {
156 $arFieldsForSocnet["RATING_TYPE_ID"] = "FORUM_POST";
157 $arFieldsForSocnet["RATING_ENTITY_ID"] = $messageId;
158 }
159
160 $ufFileID = array();
161 $dbAddedMessageFiles = CForumFiles::GetList(array("ID" => "ASC"), array("MESSAGE_ID" => $messageId));
162 while ($arAddedMessageFiles = $dbAddedMessageFiles->Fetch())
163 {
164 $ufFileID[] = $arAddedMessageFiles["FILE_ID"];
165 }
166
167 if (count($ufFileID) > 0)
168 {
169 $arFieldsForSocnet["UF_SONET_COM_FILE"] = $ufFileID;
170 }
171
172 $ufDocID = $USER_FIELD_MANAGER->GetUserFieldValue("FORUM_MESSAGE", "UF_FORUM_MESSAGE_DOC", $messageId, LANGUAGE_ID);
173 if ($ufDocID)
174 {
175 $arFieldsForSocnet["UF_SONET_COM_DOC"] = $ufDocID;
176 }
177
178 $ufUrlPreview = $USER_FIELD_MANAGER->GetUserFieldValue("FORUM_MESSAGE", "UF_FORUM_MES_URL_PRV", $messageId, LANGUAGE_ID);
179 if ($ufUrlPreview)
180 {
181 $arFieldsForSocnet["UF_SONET_COM_URL_PRV"] = $ufUrlPreview;
182 }
183
184 $comment_id = CSocNetLogComments::Add($arFieldsForSocnet, false, false);
186 $comment_id,
187 false,
188 false,
189 "LC",
191 );
192 }
193
194 foreach (GetModuleEvents("socialnetwork", "onAfterCommentAddAfter", true) as $arModuleEvent)
195 ExecuteModuleEventEx($arModuleEvent, array(
196 $entityType,
197 $entityId,
198 $arData,
199 $log_id
200 ));
201
202 foreach (GetModuleEvents("socialnetwork", "OnForumCommentIMNotify", true) as $arModuleEvent) // send notification
203 {
204 ExecuteModuleEventEx($arModuleEvent, array(
205 $entityType,
206 $entityId,
207 array(
208 "LOG_ID" => $log_id,
209 "USER_ID" => $arMessage["AUTHOR_ID"],
210 "MESSAGE_ID" => $messageId,
211 "MESSAGE" => $sText,
212 "URL" => $strURL ?? ''
213 )
214 ));
215 }
216
217 return false;
218 }
219
220 public static function onAfterCommentUpdate($entityType, $entityId, $arData)
221 {
223
224 $log_event_id = \CSocNetForumComments::findLogEventIDByForumEntityID($entityType);
225 if (!$log_event_id)
226 {
227 return false;
228 }
229
230 $arLogCommentEvent = CSocNetLogTools::FindLogCommentEventByLogEventID($log_event_id);
231 if (!$arLogCommentEvent)
232 {
233 return false;
234 }
235
236 $entityId = intval($entityId);
237 if ($entityId <= 0)
238 {
239 return false;
240 }
241
242 if (empty($arData["MESSAGE_ID"]))
243 {
244 return false;
245 }
246
247 $log_id = null;
248
249 $parser = new CTextParser();
250 $parser->allow = array("HTML" => 'N',"ANCHOR" => 'Y',"BIU" => 'Y',"IMG" => "Y","VIDEO" => "Y","LIST" => 'N',"QUOTE" => 'Y',"CODE" => 'Y',"FONT" => 'Y',"SMILES" => "N","UPLOAD" => 'N',"NL2BR" => 'N',"TABLE" => "Y");
251
252 switch ($arData["ACTION"])
253 {
254 case "DEL":
255 case "HIDE":
256 $dbLogComment = CSocNetLogComments::GetList(
257 array("ID" => "DESC"),
258 array(
259 "EVENT_ID" => array($arLogCommentEvent["EVENT_ID"]),
260 "SOURCE_ID" => intval($arData["MESSAGE_ID"])
261 ),
262 false,
263 false,
264 array("ID")
265 );
266 while ($arLogComment = $dbLogComment->Fetch())
267 CSocNetLogComments::Delete($arLogComment["ID"]);
268 break;
269 case "SHOW":
270 $dbLogComment = CSocNetLogComments::GetList(
271 array("ID" => "DESC"),
272 array(
273 "EVENT_ID" => array($arLogCommentEvent["EVENT_ID"]),
274 "SOURCE_ID" => intval($arData["MESSAGE_ID"])
275 ),
276 false,
277 false,
278 array("ID")
279 );
280 $arLogComment = $dbLogComment->Fetch();
281 if (!$arLogComment)
282 {
283 $arMessage = CForumMessage::GetByID(intval($arData["MESSAGE_ID"]));
284 if ($arMessage)
285 {
287 array("ID" => "DESC"),
288 array(
289 "EVENT_ID" => $log_event_id,
290 "SOURCE_ID" => $entityId
291 ),
292 false,
293 false,
294 array("ID", "ENTITY_TYPE", "ENTITY_ID")
295 );
296
297 if ($arLog = $dbLog->Fetch())
298 {
299 $log_id = $arLog["ID"];
300 $entity_type = $arLog["ENTITY_TYPE"];
301 $entity_id = $arLog["ENTITY_ID"];
302
303 $sText = (COption::GetOptionString("forum", "FILTER", "Y") == "Y" ? $arMessage["POST_MESSAGE_FILTER"] : $arMessage["POST_MESSAGE"]);
304 $strURL = $APPLICATION->GetCurPageParam("", array("IFRAME", "MID", BX_AJAX_PARAM_ID, "result"));
305 $strURL = ForumAddPageParams(
306 $strURL,
307 array(
308 "MID" => intval($arData["MESSAGE_ID"]),
309 "result" => "reply"
310 ),
311 false,
312 false
313 );
314
315 $arFieldsForSocnet = array(
316 "ENTITY_TYPE" => $entity_type,
317 "ENTITY_ID" => $entity_id,
318 "EVENT_ID" => $arLogCommentEvent["EVENT_ID"],
319 "MESSAGE" => $sText,
320 "TEXT_MESSAGE" => $parser->convert4mail($sText),
321 "URL" => str_replace("?IFRAME=Y", "", str_replace("&IFRAME=Y", "", str_replace("IFRAME=Y&", "", $strURL))),
322 "MODULE_ID" => (array_key_exists("MODULE_ID", $arLogCommentEvent) && $arLogCommentEvent["MODULE_ID"] <> '' ? $arLogCommentEvent["MODULE_ID"] : ""),
323 "SOURCE_ID" => intval($arData["MESSAGE_ID"]),
324 "LOG_ID" => $log_id,
325 "RATING_TYPE_ID" => "FORUM_POST",
326 "RATING_ENTITY_ID" => intval($arData["MESSAGE_ID"])
327 );
328
329 $arFieldsForSocnet["USER_ID"] = $arMessage["AUTHOR_ID"];
330 $arFieldsForSocnet["=LOG_DATE"] = $DB->CurrentTimeFunction();
331
332 $ufFileID = array();
333 $dbAddedMessageFiles = CForumFiles::GetList(array("ID" => "ASC"), array("MESSAGE_ID" => intval($arData["MESSAGE_ID"])));
334 while ($arAddedMessageFiles = $dbAddedMessageFiles->Fetch())
335 $ufFileID[] = $arAddedMessageFiles["FILE_ID"];
336
337 if (count($ufFileID) > 0)
338 $arFieldsForSocnet["UF_SONET_COM_FILE"] = $ufFileID;
339
340 $ufDocID = $USER_FIELD_MANAGER->GetUserFieldValue("FORUM_MESSAGE", "UF_FORUM_MESSAGE_DOC", intval($arData["MESSAGE_ID"]), LANGUAGE_ID);
341 if ($ufDocID)
342 $arFieldsForSocnet["UF_SONET_COM_DOC"] = $ufDocID;
343
344 $ufUrlPreview = $USER_FIELD_MANAGER->GetUserFieldValue("FORUM_MESSAGE", "UF_FORUM_MES_URL_PRV", intval($arData["MESSAGE_ID"]), LANGUAGE_ID);
345 if ($ufUrlPreview)
346 {
347 $arFieldsForSocnet["UF_SONET_COM_URL_PRV"] = $ufUrlPreview;
348 }
349
350 $comment_id = CSocNetLogComments::Add($arFieldsForSocnet, false, false);
352 $comment_id,
353 false,
354 false,
355 "LC",
357 );
358 }
359 }
360 }
361 break;
362 case "EDIT":
363 $arMessage = CForumMessage::GetByID(intval($arData["MESSAGE_ID"]));
364 if ($arMessage)
365 {
366 $dbLogComment = CSocNetLogComments::GetList(
367 array("ID" => "DESC"),
368 array(
369 "EVENT_ID" => array($arLogCommentEvent["EVENT_ID"]),
370 "SOURCE_ID" => intval($arData["MESSAGE_ID"])
371 ),
372 false,
373 false,
374 array("ID")
375 );
376 $arLogComment = $dbLogComment->Fetch();
377 if ($arLogComment)
378 {
379 $sText = (COption::GetOptionString("forum", "FILTER", "Y") == "Y" ? $arMessage["POST_MESSAGE_FILTER"] : $arMessage["POST_MESSAGE"]);
380 $arFieldsForSocnet = array(
381 "MESSAGE" => $sText,
382 "TEXT_MESSAGE" => $parser->convert4mail($sText),
383 );
384
385 $ufFileID = array();
386 $dbAddedMessageFiles = CForumFiles::GetList(array("ID" => "ASC"), array("MESSAGE_ID" => intval($arData["MESSAGE_ID"])));
387 while ($arAddedMessageFiles = $dbAddedMessageFiles->Fetch())
388 $ufFileID[] = $arAddedMessageFiles["FILE_ID"];
389
390 if (count($ufFileID) > 0)
391 $arFieldsForSocnet["UF_SONET_COM_FILE"] = $ufFileID;
392
393 $ufDocID = $USER_FIELD_MANAGER->GetUserFieldValue("FORUM_MESSAGE", "UF_FORUM_MESSAGE_DOC", intval($arData["MESSAGE_ID"]), LANGUAGE_ID);
394 if ($ufDocID)
395 $arFieldsForSocnet["UF_SONET_COM_DOC"] = $ufDocID;
396
397 $ufUrlPreview = $USER_FIELD_MANAGER->GetUserFieldValue("FORUM_MESSAGE", "UF_FORUM_MES_URL_PRV", intval($arData["MESSAGE_ID"]), LANGUAGE_ID);
398 if ($ufUrlPreview)
399 {
400 $arFieldsForSocnet["UF_SONET_COM_URL_PRV"] = $ufUrlPreview;
401 }
402
403 CSocNetLogComments::Update($arLogComment["ID"], $arFieldsForSocnet);
404 }
405 }
406 break;
407 default:
408 }
409
410 foreach (GetModuleEvents("socialnetwork", "onAfterCommentUpdateAfter", true) as $arModuleEvent)
411 {
412 ExecuteModuleEventEx($arModuleEvent, array(
413 $entityType,
414 $entityId,
415 $arData,
416 $log_id
417 ));
418 }
419 }
420}
if(! $messageFields||!isset($messageFields['message_id'])||!isset($messageFields['status'])||!CModule::IncludeModule("messageservice")) $messageId
Определения callback_ismscenter.php:26
global $APPLICATION
Определения include.php:80
static GetByID($ID, $arAddParams=array())
Определения message.php:591
static Delete($ID, $bSetSource=false)
Определения log_comments.php:161
static CounterIncrement( $entityId, $eventId='', $entitiesList=false, $type=CSocNetLogCounter::TYPE_LOG_ENTRY, $forAllAccess=false, $userIdToPushList=[])
Определения log.php:436
static GetList($arOrder=Array("ID"=>"ASC"), $arFilter=Array(), $iNum=0, $arAddParams=array())
Определения message.php:884
static findLogEventIDByForumEntityID($forumEntityType)
Определения log_forum_comments.php:6
static onAfterCommentAdd($entityType, $entityId, $arData)
Определения log_forum_comments.php:45
static onAfterCommentUpdate($entityType, $entityId, $arData)
Определения log_forum_comments.php:220
static Add($arFields, $bSetSource=false, $bSendEvent=true, $bSetLogUpDate=true)
Определения log_comments.php:16
static GetList($arOrder=Array("ID"=> "DESC"), $arFilter=Array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array(), $arParams=array())
Определения log_comments.php:519
static Update($ID, $arFields, $bSetSource=false)
Определения log_comments.php:307
static GetList($arOrder=Array("ID"=> "DESC"), $arFilter=Array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array(), $arParams=array())
Определения log.php:338
static CheckForUserAll($logID)
Определения log_rights.php:467
static FindLogCommentEventByLogEventID($log_event_id)
Определения log_tools.php:142
Определения textparser.php:21
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$res
Определения filter_act.php:7
ForumAddPageParams($page_url="", $params=array(), $addIfNull=false, $htmlSpecialChars=true)
Определения include.php:1546
global $USER_FIELD_MANAGER
Определения attempt.php:6
global $DB
Определения cron_frame.php:29
const BX_AJAX_PARAM_ID(!defined('TAGGED_user_card_size'))
Определения constants.php:99
ExecuteModuleEventEx($arEvent, $arParams=[])
Определения tools.php:5214
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
Определения tools.php:5177
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения tools.php:3778
$entityId
Определения payment.php:4
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
Определения waybill.php:936
if( $_SERVER $arSocNetFeaturesSettings['REQUEST_METHOD']=="GET" &&($RestoreDefaults ?? null)<> '' && $SONET_RIGHT=="W" &&check_bitrix_sessid())
Определения options.php:35
$arRes
Определения options.php:104
if(CModule::IncludeModule("forum")) if(CModule::IncludeModule("blog")) $dbLog
Определения updtr1007.php:132
$dbRes
Определения yandex_detail.php:168