1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
log_comments.php
См. документацию.
1<?php
2
3require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/socialnetwork/classes/general/log_comments.php");
4
10
12{
13 /***************************************/
14 /******** DATA MODIFICATION **********/
15 /***************************************/
16 public static function Add($arFields, $bSetSource = false, $bSendEvent = true, $bSetLogUpDate = true)
17 {
19
20 if (is_array($bSetSource))
21 {
22 $params = $bSetSource;
23 $bSetSource = (isset($params['SET_SOURCE']) ? $params['SET_SOURCE'] : false);
24 $bSendEvent = (isset($params['SEND_EVENT']) ? $params['SEND_EVENT'] : true);
25 $bSetLogUpDate = (isset($params['SET_LOG_UPDATE']) ? $params['SET_LOG_UPDATE'] : true);
26 $subscribe = (isset($params['SUBSCRIBE']) ? $params['SUBSCRIBE'] : true);
27 }
28 else
29 {
30 $subscribe = true;
31 }
32
33 $arFields1 = Util::getEqualityFields($arFields);
34
35 if (
36 $bSetSource
37 && $arFields["EVENT_ID"] <> '')
38 {
39 $arCommentEvent = CSocNetLogTools::FindLogCommentEventByID($arFields["EVENT_ID"]);
40 if (
41 !is_array($arCommentEvent)
42 || !array_key_exists("ADD_CALLBACK", $arCommentEvent)
43 || !is_callable($arCommentEvent["ADD_CALLBACK"])
44 )
45 {
46 $bSetSource = false;
47 }
48 }
49
50 $db_events = GetModuleEvents("socialnetwork", "OnBeforeSocNetLogCommentAdd");
51 while ($arEvent = $db_events->Fetch())
52 {
53 if (ExecuteModuleEventEx($arEvent, array(&$arFields)) === false)
54 {
55 return false;
56 }
57 }
58
59 if ($bSetSource)
60 {
62 if (
63 ($arSource["NO_SOURCE"] ?? null) === "Y"
64 || intval($arSource["SOURCE_ID"]) > 0
65 )
66 {
67 if (($arSource["NO_SOURCE"] ?? null) === "Y")
68 {
69 $bSetSource = false;
70 }
71 else
72 {
73 $arFields["SOURCE_ID"] = $arSource["SOURCE_ID"];
74 }
75
76 if (
77 array_key_exists("RATING_ENTITY_ID", $arSource)
78 && array_key_exists("RATING_TYPE_ID", $arSource)
79 && intval($arSource["RATING_ENTITY_ID"]) > 0
80 && $arSource["RATING_TYPE_ID"] <> ''
81 )
82 {
83 $arFields["RATING_TYPE_ID"] = $arSource["RATING_TYPE_ID"];
84 $arFields["RATING_ENTITY_ID"] = $arSource["RATING_ENTITY_ID"];
85 }
86
87 if (isset($arSource["MESSAGE"]) && $arSource["MESSAGE"] <> '')
88 $arFields["MESSAGE"] = $arSource["MESSAGE"];
89
90 if (isset($arSource["TEXT_MESSAGE"]) && $arSource["TEXT_MESSAGE"] <> '')
91 $arFields["TEXT_MESSAGE"] = $arSource["TEXT_MESSAGE"];
92
93 if (isset($arSource["URL"]) && $arSource["URL"] <> '')
94 $arFields["URL"] = $arSource["URL"];
95
96 if (
97 isset($arSource["UF"])
98 && isset($arSource["UF"]["FILE"])
99 )
100 {
101 if (!is_array($arSource["UF"]["FILE"]))
102 $arSource["UF"]["FILE"] = array($arSource["UF"]["FILE"]);
103
104 $arFields["UF_SONET_COM_FILE"] = $arSource["UF"]["FILE"];
105 }
106
107 if (
108 isset($arSource["UF"])
109 && isset($arSource["UF"]["DOC"])
110 )
111 {
112 if (!is_array($arSource["UF"]["DOC"]))
113 $arSource["UF"]["DOC"] = array($arSource["UF"]["DOC"]);
114
115 $arFields["UF_SONET_COM_DOC"] = $arSource["UF"]["DOC"];
116 }
117 }
118 else
119 {
120 $strMessage =
121 (
122 array_key_exists("ERROR", $arSource) && $arSource["ERROR"] <> ''
123 ? $arSource["ERROR"] :
124 (
125 array_key_exists("NOTES", $arSource) && $arSource["NOTES"] <> ''
126 ? $arSource["NOTES"]
127 : ""
128 )
129 );
130 }
131 }
132
134 {
135 if ($e = $APPLICATION->GetException())
136 {
137 $errorMessage = $e->GetString();
138 }
139 if ($errorMessage == '')
140 {
141 $errorMessage = GetMessage("SONET_GLC_ERROR_CHECKFIELDS_FAILED");
142 }
143
144 return array(
145 "ID" => false,
146 "MESSAGE" => $errorMessage
147 );
148
149 return false;
150 }
151
152 if (
153 !$bSetSource
154 || (
155 is_array($arSource)
156 && array_key_exists("SOURCE_ID", $arFields)
157 && intval($arFields["SOURCE_ID"]) > 0
158 )
159 )
160 {
161 $arInsert = $DB->PrepareInsert("b_sonet_log_comment", $arFields);
163
164 $ID = false;
165 if ($arInsert[0] <> '')
166 {
167 $strSql =
168 "INSERT INTO b_sonet_log_comment(".$arInsert[0].") ".
169 "VALUES(".$arInsert[1].")";
170 $DB->Query($strSql);
171
172 $ID = intval($DB->LastID());
173
174 if ($ID > 0)
175 {
176 if (
177 !array_key_exists("RATING_TYPE_ID", $arFields)
178 || empty($arFields["RATING_TYPE_ID"])
179 )
180 {
182 "RATING_TYPE_ID" => "LOG_COMMENT",
183 "RATING_ENTITY_ID" => $ID
184 ));
185 }
186
187 if ($subscribe)
188 {
190 'logId' => $arFields["LOG_ID"],
191 'userId' => $arFields["USER_ID"],
192 'typeList' => [
193 'FOLLOW',
194 'COUNTER_COMMENT_PUSH'
195 ],
196 'followDate' => 'CURRENT'
197 ]);
198 }
199
200 // subscribe log entry owner
201 $rsLog = CSocNetLog::GetList(
202 array(),
203 array("ID" => $arFields["LOG_ID"]),
204 false,
205 false,
206 array("ID", "USER_ID")
207 );
208 if (
209 ($arLog = $rsLog->Fetch())
210 && (intval($arLog["USER_ID"]) > 0)
211 )
212 {
213 $default_follow = CSocNetLogFollow::GetDefaultValue($arLog["USER_ID"]);
214 if ($default_follow != "Y")
215 {
216 $rsLogFollow = CSocNetLogFollow::GetList(
217 array(
218 "USER_ID" => $arLog["USER_ID"],
219 "CODE" => "L".$arFields["LOG_ID"]
220 ),
221 array("TYPE")
222 );
223
224 $arLogFollow = $rsLogFollow->Fetch();
225 if (!$arLogFollow)
226 {
228 'logId' => $arFields["LOG_ID"],
229 'userId' => $arLog["USER_ID"],
230 'typeList' => array(
231 'FOLLOW',
232 )
233 ));
234 }
235 }
236 }
237
238 LogFollow::checkDestinationsFollowStatus(array(
239 'logId' => $arFields["LOG_ID"]
240 ));
241
242 if ($bSendEvent)
243 {
244 CSocNetLogComments::SendEvent($ID, "SONET_NEW_EVENT");
245 }
246
247 CSocNetLogComments::UpdateLogData($arFields["LOG_ID"], $bSetLogUpDate);
248
249 $db_events = GetModuleEvents("socialnetwork", "OnAfterSocNetLogCommentAdd");
250 while ($arEvent = $db_events->Fetch())
251 {
253 }
254
255 $USER_FIELD_MANAGER->Update("SONET_COMMENT", $ID, $arFields);
256
257 LogIndex::setIndex(array(
258 'itemType' => LogIndexTable::ITEM_TYPE_COMMENT,
259 'itemId' => $ID,
260 'fields' => $arFields
261 ));
262
263 if (isset($arFields["TAG"]))
264 {
265 LogTagTable::set(array(
266 'itemType' => LogTagTable::ITEM_TYPE_COMMENT,
267 'itemId' => $ID,
268 'tags' => $arFields["TAG"]
269 ));
270 }
271
272 if(defined("BX_COMP_MANAGED_CACHE"))
273 {
274 $CACHE_MANAGER->ClearByTag("SONET_LOG_".$arFields["LOG_ID"]);
275 }
276
277 $cache = new CPHPCache;
278 $cache->CleanDir("/sonet/log/".intval(intval($arFields["LOG_ID"]) / 1000)."/".$arFields["LOG_ID"]."/comments/");
279
281 }
282 }
283
285
287 \Bitrix\Socialnetwork\Internals\EventService\EventDictionary::EVENT_SPACE_LIVEFEED_COMMENT_ADD,
288 [
289 'SONET_LOG_COMMENT_ID' => $ID,
290 'SONET_LOG_ID' => $arFields['LOG_ID'],
291 'USER_ID' => $arFields['USER_ID'],
292 'EVENT_ID' => $arFields['EVENT_ID'] ?? null,
293 ]
294 );
295
296 return $ID;
297 }
298 elseif ($bSetSource && $strMessage <> '')
299 return array(
300 "ID" => false,
301 "MESSAGE" => $strMessage
302 );
303 else
304 return false;
305 }
306
307 public static function Update($ID, $arFields, $bSetSource = false)
308 {
310
311 $ID = intval($ID);
312 if ($ID <= 0)
313 {
314 $APPLICATION->ThrowException(GetMessage("SONET_LC_WRONG_PARAMETER_ID"), "ERROR_NO_ID");
315 return false;
316 }
317
318 if (
319 (
320 $bSetSource
321 && !isset($arFields["SOURCE_ID"])
322 )
323 || !isset($arFields["LOG_ID"])
324 )
325 {
326 $rsRes = CSocNetLogComments::getList(
327 array(),
328 array("ID" => $ID),
329 false,
330 false,
331 array("LOG_ID", "SOURCE_ID")
332 );
333 if ($arRes = $rsRes->fetch())
334 {
335 $arFields["SOURCE_ID"] = $arRes["SOURCE_ID"];
336 $arFields["LOG_ID"] = $arRes["LOG_ID"];
337 }
338
339 if (!isset($arFields["SOURCE_ID"]))
340 {
341 $bSetSource = false;
342 }
343 }
344
345 if ($bSetSource)
346 {
347 if ($arFields["EVENT_ID"] <> '')
348 {
349 $arCommentEvent = CSocNetLogTools::FindLogCommentEventByID($arFields["EVENT_ID"]);
350 if (
351 !is_array($arCommentEvent)
352 || !array_key_exists("UPDATE_CALLBACK", $arCommentEvent)
353 || !is_callable($arCommentEvent["UPDATE_CALLBACK"])
354 )
355 {
356 $bSetSource = false;
357 }
358 }
359 }
360
362
363 $arSource = false;
364 if ($bSetSource)
365 {
366 $arSource = CSocNetLogComments::SetSource($arFields, "UPDATE");
367
368 if (
369 isset($arSource["NO_SOURCE"])
370 && $arSource["NO_SOURCE"] == "Y"
371 )
372 {
373 $bSetSource = false;
374 }
375 elseif (
376 is_array($arSource)
377 && (
378 isset($arSource["ERROR"])
379 && !empty($arSource["ERROR"])
380 )
381 )
382 {
383 return array(
384 "ID" => false,
385 "MESSAGE" => $arSource["ERROR"]
386 );
387 }
388 else
389 {
390 if (
391 isset($arSource["MESSAGE"])
392 && $arSource["MESSAGE"] <> ''
393 )
394 {
395 $arFields["MESSAGE"] = $arSource["MESSAGE"];
396 }
397
398 if (
399 isset($arSource["TEXT_MESSAGE"])
400 && $arSource["TEXT_MESSAGE"] <> ''
401 )
402 {
403 $arFields["TEXT_MESSAGE"] = $arSource["TEXT_MESSAGE"];
404 }
405
406 if (
407 isset($arSource["UF"])
408 && isset($arSource["UF"]["FILE"])
409 )
410 {
411 if (!is_array($arSource["UF"]["FILE"]))
412 {
413 $arSource["UF"]["FILE"] = array($arSource["UF"]["FILE"]);
414 }
415
416 $arFields["UF_SONET_COM_FILE"] = $arSource["UF"]["FILE"];
417 }
418
419 if (
420 isset($arSource["UF"])
421 && isset($arSource["UF"]["DOC"])
422 )
423 {
424 if (!is_array($arSource["UF"]["DOC"]))
425 {
426 $arSource["UF"]["DOC"] = array($arSource["UF"]["DOC"]);
427 }
428
429 $arFields["UF_SONET_COM_DOC"] = $arSource["UF"]["DOC"];
430 }
431 }
432 }
433
435 {
436 return false;
437 }
438
439 if (
440 !$bSetSource
441 || (
442 is_array($arSource)
443 && (
444 !isset($arSource["ERROR"])
445 || empty($arSource["ERROR"])
446 )
447 )
448 )
449 {
450 $strUpdate = $DB->PrepareUpdate("b_sonet_log_comment", $arFields);
452
453 if ($strUpdate <> '')
454 {
455 $strSql =
456 "UPDATE b_sonet_log_comment SET ".
457 " ".$strUpdate." ".
458 "WHERE ID = ".$ID." ";
459 $DB->Query($strSql);
460
461 $USER_FIELD_MANAGER->Update("SONET_COMMENT", $ID, $arFields);
462
463 $cache = new CPHPCache;
464 $cache->CleanDir("/sonet/log/".intval(intval($arFields["LOG_ID"]) / 1000)."/".$arFields["LOG_ID"]."/comments/");
465 }
466 elseif (!$USER_FIELD_MANAGER->Update("SONET_COMMENT", $ID, $arFields))
467 {
468 $ID = False;
469 }
470
471 if (intval($ID) > 0)
472 {
473 $events = GetModuleEvents("socialnetwork", "OnAfterSocNetLogCommentUpdate");
474 while ($arEvent = $events->Fetch())
475 {
477 }
478
479 if (!empty($arFields['MESSAGE']))
480 {
481 LogIndex::setIndex(array(
482 'itemType' => LogIndexTable::ITEM_TYPE_COMMENT,
483 'itemId' => $ID,
484 'fields' => $arFields
485 ));
486 }
487
488 if (isset($arFields["TAG"]))
489 {
490 LogTagTable::set(array(
491 'itemType' => LogTagTable::ITEM_TYPE_COMMENT,
492 'itemId' => $ID,
493 'tags' => $arFields["TAG"]
494 ));
495 }
496 }
497
499 \Bitrix\Socialnetwork\Internals\EventService\EventDictionary::EVENT_SPACE_LIVEFEED_COMMENT_UPD,
500 [
501 'SONET_LOG_COMMENT_ID' => $ID,
502 'SONET_LOG_ID' => $arFields['LOG_ID'],
503 'USER_ID' => $arFields['USER_ID'] ?? null,
504 ]
505 );
506
507 }
508 else
509 {
510 $ID = False;
511 }
512
513 return $ID;
514 }
515
516 /***************************************/
517 /********** DATA SELECTION ***********/
518 /***************************************/
519 public static function GetList($arOrder = Array("ID" => "DESC"), $arFilter = Array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array(), $arParams = array())
520 {
522
523 $arSocNetAllowedSubscribeEntityTypesDesc = CSocNetAllowed::GetAllowedEntityTypesDesc();
524
525 $obUserFieldsSql = new CUserTypeSQL;
526 $obUserFieldsSql->SetEntity("SONET_COMMENT", "LC.ID");
527 $obUserFieldsSql->SetSelect($arSelectFields);
528 $obUserFieldsSql->SetFilter($arFilter);
529 $obUserFieldsSql->SetOrder($arOrder);
530
531 if (count($arSelectFields) <= 0)
532 $arSelectFields = array(
533 "ID", "LOG_ID", "SOURCE_ID", "ENTITY_TYPE", "ENTITY_ID", "USER_ID", "EVENT_ID", "LOG_DATE", "MESSAGE", "TEXT_MESSAGE", "URL", "MODULE_ID",
534 "GROUP_NAME", "GROUP_OWNER_ID", "GROUP_VISIBLE", "GROUP_OPENED", "GROUP_IMAGE_ID",
535 "USER_NAME", "USER_LAST_NAME", "USER_SECOND_NAME", "USER_LOGIN", "USER_PERSONAL_PHOTO", "USER_PERSONAL_GENDER",
536 "CREATED_BY_NAME", "CREATED_BY_LAST_NAME", "CREATED_BY_SECOND_NAME", "CREATED_BY_LOGIN", "CREATED_BY_PERSONAL_PHOTO", "CREATED_BY_PERSONAL_GENDER",
537 "LOG_SITE_ID", "LOG_SOURCE_ID", "LOG_USER_ID",
538 "RATING_TYPE_ID", "RATING_ENTITY_ID", "RATING_TOTAL_VALUE", "RATING_TOTAL_VOTES", "RATING_TOTAL_POSITIVE_VOTES", "RATING_TOTAL_NEGATIVE_VOTES", "RATING_USER_VOTE_VALUE"
539 );
540
541 static $arFields1 = array(
542 "ID" => Array("FIELD" => "LC.ID", "TYPE" => "int"),
543 "LOG_ID" => Array("FIELD" => "LC.LOG_ID", "TYPE" => "int"),
544 "SOURCE_ID" => Array("FIELD" => "LC.SOURCE_ID", "TYPE" => "int"),
545 "ENTITY_TYPE" => Array("FIELD" => "LC.ENTITY_TYPE", "TYPE" => "string"),
546 "ENTITY_ID" => Array("FIELD" => "LC.ENTITY_ID", "TYPE" => "int"),
547 "USER_ID" => Array("FIELD" => "LC.USER_ID", "TYPE" => "int"),
548 "EVENT_ID" => Array("FIELD" => "LC.EVENT_ID", "TYPE" => "string"),
549 "LOG_DATE" => Array("FIELD" => "LC.LOG_DATE", "TYPE" => "datetime"),
550 "LOG_DATE_TS" => Array("FIELD" => "UNIX_TIMESTAMP(LC.LOG_DATE)", "TYPE" => "int"),
551 "TITLE" => Array("FIELD" => "LC.TITLE", "TYPE" => "string"),
552 "MESSAGE" => Array("FIELD" => "LC.MESSAGE", "TYPE" => "string"),
553 "TEXT_MESSAGE" => Array("FIELD" => "LC.TEXT_MESSAGE", "TYPE" => "string"),
554 "URL" => Array("FIELD" => "LC.URL", "TYPE" => "string"),
555 "MODULE_ID" => Array("FIELD" => "LC.MODULE_ID", "TYPE" => "string"),
556 "LOG_SOURCE_ID" => Array("FIELD" => "L.SOURCE_ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_sonet_log L ON (LC.LOG_ID = L.ID)"),
557 "LOG_USER_ID" => Array("FIELD" => "L.USER_ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_sonet_log L ON (LC.LOG_ID = L.ID)"),
558 "LOG_TITLE" => Array("FIELD" => "L1.TITLE", "TYPE" => "string", "FROM" => "INNER JOIN b_sonet_log L1 ON (LC.LOG_ID = L1.ID)"),
559 "LOG_URL" => Array("FIELD" => "L1.URL", "TYPE" => "string", "FROM" => "INNER JOIN b_sonet_log L1 ON (LC.LOG_ID = L1.ID)"),
560 "LOG_PARAMS" => Array("FIELD" => "L1.PARAMS", "TYPE" => "string", "FROM" => "INNER JOIN b_sonet_log L1 ON (LC.LOG_ID = L1.ID)"),
561 "GROUP_NAME" => Array("FIELD" => "G.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_sonet_group G ON (LC.ENTITY_TYPE = 'G' AND LC.ENTITY_ID = G.ID)"),
562 "GROUP_OWNER_ID" => Array("FIELD" => "G.OWNER_ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_sonet_group G ON (LC.ENTITY_TYPE = 'G' AND LC.ENTITY_ID = G.ID)"),
563 "GROUP_VISIBLE" => Array("FIELD" => "G.VISIBLE", "TYPE" => "string", "FROM" => "LEFT JOIN b_sonet_group G ON (LC.ENTITY_TYPE = 'G' AND LC.ENTITY_ID = G.ID)"),
564 "GROUP_OPENED" => Array("FIELD" => "G.OPENED", "TYPE" => "string", "FROM" => "LEFT JOIN b_sonet_group G ON (LC.ENTITY_TYPE = 'G' AND LC.ENTITY_ID = G.ID)"),
565 "GROUP_IMAGE_ID" => Array("FIELD" => "G.IMAGE_ID", "TYPE" => "int", "FROM" => "LEFT JOIN b_sonet_group G ON (LC.ENTITY_TYPE = 'G' AND LC.ENTITY_ID = G.ID)"),
566 "USER_NAME" => Array("FIELD" => "U.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_user U ON (LC.ENTITY_TYPE = 'U' AND LC.ENTITY_ID = U.ID)"),
567 "USER_LAST_NAME" => Array("FIELD" => "U.LAST_NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_user U ON (LC.ENTITY_TYPE = 'U' AND LC.ENTITY_ID = U.ID)"),
568 "USER_SECOND_NAME" => Array("FIELD" => "U.SECOND_NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_user U ON (LC.ENTITY_TYPE = 'U' AND LC.ENTITY_ID = U.ID)"),
569 "USER_LOGIN" => Array("FIELD" => "U.LOGIN", "TYPE" => "string", "FROM" => "LEFT JOIN b_user U ON (LC.ENTITY_TYPE = 'U' AND LC.ENTITY_ID = U.ID)"),
570 "USER_PERSONAL_PHOTO" => Array("FIELD" => "U.PERSONAL_PHOTO", "TYPE" => "int", "FROM" => "LEFT JOIN b_user U ON (LC.ENTITY_TYPE = 'U' AND LC.ENTITY_ID = U.ID)"),
571 "USER_PERSONAL_GENDER" => Array("FIELD" => "U.PERSONAL_GENDER", "TYPE" => "string", "FROM" => "LEFT JOIN b_user U ON (LC.ENTITY_TYPE = 'U' AND LC.ENTITY_ID = U.ID)"),
572 "CREATED_BY_NAME" => Array("FIELD" => "U1.NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_user U1 ON LC.USER_ID = U1.ID"),
573 "CREATED_BY_LAST_NAME" => Array("FIELD" => "U1.LAST_NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_user U1 ON LC.USER_ID = U1.ID"),
574 "CREATED_BY_SECOND_NAME" => Array("FIELD" => "U1.SECOND_NAME", "TYPE" => "string", "FROM" => "LEFT JOIN b_user U1 ON LC.USER_ID = U1.ID"),
575 "CREATED_BY_LOGIN" => Array("FIELD" => "U1.LOGIN", "TYPE" => "string", "FROM" => "LEFT JOIN b_user U1 ON LC.USER_ID = U1.ID"),
576 "CREATED_BY_PERSONAL_PHOTO" => Array("FIELD" => "U1.PERSONAL_PHOTO", "TYPE" => "int", "FROM" => "LEFT JOIN b_user U1 ON LC.USER_ID = U1.ID"),
577 "CREATED_BY_PERSONAL_GENDER" => Array("FIELD" => "U1.PERSONAL_GENDER", "TYPE" => "string", "FROM" => "LEFT JOIN b_user U1 ON LC.USER_ID = U1.ID"),
578 "CREATED_BY_EXTERNAL_AUTH_ID" => Array("FIELD" => "U1.EXTERNAL_AUTH_ID", "TYPE" => "string", "FROM" => "LEFT JOIN b_user U1 ON LC.USER_ID = U1.ID"),
579 "SHARE_DEST" => Array("FIELD" => "LC.SHARE_DEST", "TYPE" => "string"),
580 );
581
582 if (array_key_exists("LOG_SITE_ID", $arFilter))
583 {
584 $arFields["LOG_SITE_ID"] = Array("FIELD" => "SLS.SITE_ID", "TYPE" => "string", "FROM" => "LEFT JOIN b_sonet_log_site SLS ON LC.LOG_ID = SLS.LOG_ID");
585 $strDistinct = " DISTINCT ";
586 foreach ($arSelectFields as $i => $strFieldTmp)
587 if ($strFieldTmp == "LOG_SITE_ID")
588 unset($arSelectFields[$i]);
589
590 foreach ($arOrder as $by => $order)
591 if (!in_array($by, $arSelectFields))
592 $arSelectFields[] = $by;
593 }
594 else
595 {
596 $arFields["LOG_SITE_ID"] = Array("FIELD" => "L.SITE_ID", "TYPE" => "string", "FROM" => "LEFT JOIN b_sonet_log L ON (LC.LOG_ID = L.ID)");
597 $strDistinct = " ";
598 }
599
600 $arFields["RATING_TYPE_ID"] = Array("FIELD" => "LC.RATING_TYPE_ID", "TYPE" => "string");
601 $arFields["RATING_ENTITY_ID"] = Array("FIELD" => "LC.RATING_ENTITY_ID", "TYPE" => "int");
602 $arFields["RATING_TOTAL_VALUE"] = Array("FIELD" => $DB->IsNull('RG.TOTAL_VALUE', '0'), "TYPE" => "double", "FROM" => "LEFT JOIN b_rating_voting RG ON LC.RATING_TYPE_ID = RG.ENTITY_TYPE_ID AND LC.RATING_ENTITY_ID = RG.ENTITY_ID");
603 $arFields["RATING_TOTAL_VOTES"] = Array("FIELD" => $DB->IsNull('RG.TOTAL_VOTES', '0'), "TYPE" => "double", "FROM" => "LEFT JOIN b_rating_voting RG ON LC.RATING_TYPE_ID = RG.ENTITY_TYPE_ID AND LC.RATING_ENTITY_ID = RG.ENTITY_ID");
604 $arFields["RATING_TOTAL_POSITIVE_VOTES"] = Array("FIELD" => $DB->IsNull('RG.TOTAL_POSITIVE_VOTES', '0'), "TYPE" => "int", "FROM" => "LEFT JOIN b_rating_voting RG ON LC.RATING_TYPE_ID = RG.ENTITY_TYPE_ID AND LC.RATING_ENTITY_ID = RG.ENTITY_ID");
605 $arFields["RATING_TOTAL_NEGATIVE_VOTES"] = Array("FIELD" => $DB->IsNull('RG.TOTAL_NEGATIVE_VOTES', '0'), "TYPE" => "int", "FROM" => "LEFT JOIN b_rating_voting RG ON LC.RATING_TYPE_ID = RG.ENTITY_TYPE_ID AND LC.RATING_ENTITY_ID = RG.ENTITY_ID");
606 if (isset($USER) && is_object($USER))
607 $arFields["RATING_USER_VOTE_VALUE"] = Array("FIELD" => $DB->IsNull('RV.VALUE', '0'), "TYPE" => "double", "FROM" => "LEFT JOIN b_rating_vote RV ON LC.RATING_TYPE_ID = RV.ENTITY_TYPE_ID AND LC.RATING_ENTITY_ID = RV.ENTITY_ID AND RV.USER_ID = ".intval($USER->GetId()));
608
609 if (array_key_exists("LOG_RIGHTS", $arFilter))
610 {
611 $Rights = array();
612 if(is_array($arFilter["LOG_RIGHTS"]))
613 {
614 foreach($arFilter["LOG_RIGHTS"] as $str)
615 if(trim($str))
616 $Rights[] = trim($str);
617 }
618 elseif(trim($arFilter["LOG_RIGHTS"]))
619 $Rights = trim($arFilter["LOG_RIGHTS"]);
620
621 unset($arFilter["LOG_RIGHTS"]);
622 if((is_array($Rights) && !empty($Rights)) || !is_array($Rights))
623 {
624 $arFilter["LOG_RIGHTS"] = $Rights;
625 $arFields["LOG_RIGHTS"] = Array("FIELD" => "SLR0.GROUP_CODE", "TYPE" => "string", "FROM" => "INNER JOIN b_sonet_log_right SLR0 ON LC.LOG_ID = SLR0.LOG_ID");
626 }
627
628 if(is_array($Rights) && count($Rights) > 1)
629 $strDistinct = " DISTINCT ";
630 }
631
632 $arFields = array_merge($arFields1, $arFields);
633
634 $arSqls = CSocNetGroup::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields, $obUserFieldsSql);
635
636 $strSqlUFFilter = '';
637 $r = $obUserFieldsSql->GetFilter();
638 if($r <> '')
639 $strSqlUFFilter = " (".$r.") ";
640
641 $arSqls["RIGHTS"] = "";
642 $arSqls["CRM_RIGHTS"] = "";
643 $arSqls["SUBSCRIBE"] = "";
644
645 if (
646 !empty($arParams)
647 && array_key_exists("CHECK_RIGHTS", $arParams)
648 && $arParams["CHECK_RIGHTS"] == "Y"
649 && !array_key_exists("USER_ID", $arParams)
650 && is_object($USER)
651 )
652 $arParams["USER_ID"] = $USER->GetID();
653
654 if (
655 !empty($arParams)
656 && array_key_exists("USER_ID", $arParams)
657 )
658 $arParams["CHECK_RIGHTS"] = "Y";
659
660 if (
661 !empty($arParams)
662 && array_key_exists("USE_SUBSCRIBE", $arParams)
663 && $arParams["USE_SUBSCRIBE"] == "Y"
664 )
665 {
666 if (!array_key_exists("SUBSCRIBE_USER_ID", $arParams))
667 {
668 if (
669 array_key_exists("USER_ID", $arParams)
670 && intval($arParams["USER_ID"]) > 0
671 )
672 $arParams["SUBSCRIBE_USER_ID"] = $arParams["USER_ID"];
673 else
674 $arParams["SUBSCRIBE_USER_ID"] = $USER->GetID();
675 }
676
677 if (!array_key_exists("MY_ENTITIES", $arParams))
678 {
679 foreach($arSocNetAllowedSubscribeEntityTypesDesc as $entity_type_tmp => $arEntityTypeTmp)
680 if (
681 array_key_exists("HAS_MY", $arEntityTypeTmp)
682 && $arEntityTypeTmp["HAS_MY"] == "Y"
683 && array_key_exists("CLASS_MY", $arEntityTypeTmp)
684 && array_key_exists("METHOD_MY", $arEntityTypeTmp)
685 && $arEntityTypeTmp["CLASS_MY"] <> ''
686 && $arEntityTypeTmp["METHOD_MY"] <> ''
687 && method_exists($arEntityTypeTmp["CLASS_MY"], $arEntityTypeTmp["METHOD_MY"])
688 )
689 $arMyEntities[$entity_type_tmp] = call_user_func(array($arEntityTypeTmp["CLASS_MY"], $arEntityTypeTmp["METHOD_MY"]));
690
691 $arParams["MY_ENTITIES"] = $arMyEntities;
692 }
693 }
694
695 if (
696 !empty($arParams)
697 && array_key_exists("CHECK_RIGHTS", $arParams)
698 && $arParams["CHECK_RIGHTS"] == "Y"
699 && array_key_exists("USER_ID", $arParams)
700 )
701 {
702 $acc = new CAccess;
703 $acc->UpdateCodes();
704
705 $arSqls["RIGHTS"] = "EXISTS ( SELECT SLR.ID FROM b_sonet_log_right SLR
706 LEFT JOIN b_user_access UA ON (UA.ACCESS_CODE = SLR.GROUP_CODE AND UA.USER_ID = ".(is_object($USER)? intval($USER->GetID()): 0).")
707 WHERE LC.LOG_ID = SLR.LOG_ID AND (0=1 ".
708 (is_object($USER) && CSocNetUser::IsCurrentUserModuleAdmin() ? " OR SLR.GROUP_CODE = 'SA'" : "").
709 (is_object($USER) && $USER->IsAuthorized() ? " OR (SLR.GROUP_CODE = 'AU')" : "").
710 " OR (SLR.GROUP_CODE = 'G2')".
711 (is_object($USER) && $USER->IsAuthorized() ? " OR (UA.ACCESS_CODE = SLR.GROUP_CODE AND UA.USER_ID = ".$USER->GetID().")" : "")."))";
712 }
713
714 if (
715 !empty($arParams)
716 && array_key_exists("CHECK_CRM_RIGHTS", $arParams)
717 && $arParams["CHECK_CRM_RIGHTS"] == "Y"
718 && array_key_exists("USER_ID", $arParams)
719 )
720 {
721 $arSqls["CRM_RIGHTS"] = "";
722 }
723
724 if (
725 ($arParams["USE_SUBSCRIBE"] ?? '') == "Y"
726 && intval($arParams["SUBSCRIBE_USER_ID"]) > 0
727 )
728 {
729 $arSqls["SUBSCRIBE"] = CSocNetLogEvents::GetSQL(
730 $arParams["SUBSCRIBE_USER_ID"],
731 (is_array($arParams["MY_ENTITIES"]) ? $arParams["MY_ENTITIES"] : array()),
732 $arParams["TRANSPORT"],
733 $arParams["VISIBLE"],
734 "LC"
735 );
736 }
737
738 $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", $strDistinct, $arSqls["SELECT"]);
739
740 if (is_array($arGroupBy) && count($arGroupBy)==0)
741 {
742 $strSql =
743 "SELECT ".$arSqls["SELECT"]." ".
744 $obUserFieldsSql->GetSelect()." ".
745 "FROM b_sonet_log_comment LC ".
746 " ".$arSqls["FROM"]." ".
747 $obUserFieldsSql->GetJoin("LC.ID")." ";
748
749 $bWhereStarted = false;
750
751 if ($arSqls["WHERE"] <> '')
752 {
753 $strSql .= "WHERE ".$arSqls["WHERE"]." ".($arSqls["SUBSCRIBE"] <> '' ? "AND (".$arSqls["SUBSCRIBE"].") " : "");
754 $bWhereStarted = true;
755 }
756 elseif ($arSqls["SUBSCRIBE"] <> '')
757 {
758 $strSql .= "WHERE (".$arSqls["SUBSCRIBE"].") ";
759 $bWhereStarted = true;
760 }
761
762 if ($strSqlUFFilter <> '')
763 {
764 $strSql .= ($bWhereStarted ? " AND " : " WHERE ").$strSqlUFFilter." ";
765 $bWhereStarted = true;
766 }
767
768 if ($arSqls["RIGHTS"] <> '')
769 {
770 $strSql .= ($bWhereStarted ? " AND " : " WHERE ").$arSqls["RIGHTS"]." ";
771 $bWhereStarted = true;
772 }
773
774 if ($arSqls["CRM_RIGHTS"] <> '')
775 {
776 $strSql .= ($bWhereStarted ? " AND " : " WHERE ").$arSqls["CRM_RIGHTS"]." ";
777 $bWhereStarted = true;
778 }
779
780 if ($arSqls["GROUPBY"] <> '')
781 $strSql .= "GROUP BY ".$arSqls["GROUPBY"]." ";
782
783 //echo "!1!=".htmlspecialcharsbx($strSql)."<br>";
784
785 $dbRes = $DB->Query($strSql);
786 if ($arRes = $dbRes->Fetch())
787 return $arRes["CNT"];
788 else
789 return false;
790 }
791
792 $strSql =
793 "SELECT ".$arSqls["SELECT"]." ".
794 $obUserFieldsSql->GetSelect()." ".
795 "FROM b_sonet_log_comment LC ".
796 " ".$arSqls["FROM"]." ".
797 $obUserFieldsSql->GetJoin("LC.ID")." ";
798
799 $bWhereStarted = false;
800
801 if ($arSqls["WHERE"] <> '')
802 {
803 $strSql .= "WHERE ".$arSqls["WHERE"]." ".($arSqls["SUBSCRIBE"] <> '' ? "AND (".$arSqls["SUBSCRIBE"].") " : "");
804 $bWhereStarted = true;
805 }
806 elseif ($arSqls["SUBSCRIBE"] <> '')
807 {
808 $strSql .= "WHERE (".$arSqls["SUBSCRIBE"].") ";
809 $bWhereStarted = true;
810 }
811
812 if ($strSqlUFFilter <> '')
813 {
814 $strSql .= ($bWhereStarted ? " AND " : " WHERE ").$strSqlUFFilter." ";
815 $bWhereStarted = true;
816 }
817
818 if ($arSqls["RIGHTS"] <> '')
819 {
820 $strSql .= ($bWhereStarted ? " AND " : " WHERE ").$arSqls["RIGHTS"]." ";
821 $bWhereStarted = true;
822 }
823
824 if ($arSqls["CRM_RIGHTS"] <> '')
825 {
826 $strSql .= ($bWhereStarted ? " AND " : " WHERE ").$arSqls["CRM_RIGHTS"]." ";
827 $bWhereStarted = true;
828 }
829
830 if ($arSqls["GROUPBY"] <> '')
831 $strSql .= "GROUP BY ".$arSqls["GROUPBY"]." ";
832 if ($arSqls["ORDERBY"] <> '')
833 $strSql .= "ORDER BY ".$arSqls["ORDERBY"]." ";
834
835 if (
836 is_array($arNavStartParams)
837 && (int) ($arNavStartParams["nTopCount"] ?? 0) <= 0
838 )
839 {
840 $strSql_tmp =
841 "SELECT COUNT('x') as CNT ".
842 "FROM b_sonet_log_comment LC ".
843 " ".$arSqls["FROM"]." ".
844 $obUserFieldsSql->GetJoin("LC.ID")." ";
845
846 $bWhereStarted = false;
847
848 if ($arSqls["WHERE"] <> '')
849 {
850 $strSql_tmp .= "WHERE ".$arSqls["WHERE"]." ".($arSqls["SUBSCRIBE"] <> '' ? "AND (".$arSqls["SUBSCRIBE"].") " : "");
851 $bWhereStarted = true;
852 }
853 elseif ($arSqls["SUBSCRIBE"] <> '')
854 {
855 $strSql_tmp .= "WHERE (".$arSqls["SUBSCRIBE"].") ";
856 $bWhereStarted = true;
857 }
858
859 if ($strSqlUFFilter <> '')
860 {
861 $strSql_tmp .= ($bWhereStarted ? " AND " : " WHERE ").$strSqlUFFilter." ";
862 $bWhereStarted = true;
863 }
864
865 if ($arSqls["RIGHTS"] <> '')
866 {
867 $strSql_tmp .= ($bWhereStarted ? " AND " : " WHERE ").$arSqls["RIGHTS"]." ";
868 $bWhereStarted = true;
869 }
870
871 if ($arSqls["CRM_RIGHTS"] <> '')
872 {
873 $strSql_tmp .= ($bWhereStarted ? " AND " : " WHERE ").$arSqls["CRM_RIGHTS"]." ";
874 $bWhereStarted = true;
875 }
876
877 if ($arSqls["GROUPBY"] <> '')
878 $strSql_tmp .= "GROUP BY ".$arSqls["GROUPBY"]." ";
879
880 //echo "!2.1!=".htmlspecialcharsbx($strSql_tmp)."<br>";
881
882 $dbRes = $DB->Query($strSql_tmp);
883 $cnt = 0;
884 if ($arSqls["GROUPBY"] == '')
885 {
886 if ($arRes = $dbRes->Fetch())
887 $cnt = $arRes["CNT"];
888 }
889 else
890 {
891 // MYSQL only, ORACLE has another code
892 $cnt = $dbRes->SelectedRowsCount();
893 }
894
895 $dbRes = new CDBResult();
896
897 //echo "!2.2!=".htmlspecialcharsbx($strSql)."<br>";
898
899 $dbRes->SetUserFields($USER_FIELD_MANAGER->GetUserFields("SONET_COMMENT"));
900 $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
901 }
902 else
903 {
904 if (is_array($arNavStartParams) && intval($arNavStartParams["nTopCount"]) > 0)
905 $strSql .= "LIMIT ".intval($arNavStartParams["nTopCount"]);
906
907 //echo "!3!=".htmlspecialcharsbx($strSql)."<br>";
908 $dbRes = $DB->Query($strSql);
909 $dbRes->SetUserFields($USER_FIELD_MANAGER->GetUserFields("SONET_COMMENT"));
910 }
911
912 return $dbRes;
913 }
914
915 public static function OnBlogDelete($blog_id)
916 {
917 global $DB;
918
919 return $DB->Query("DELETE SLC FROM b_sonet_log_comment SLC INNER JOIN b_blog_comment BC ON SLC.SOURCE_ID = BC.ID AND BC.BLOG_ID = ".intval($blog_id)." WHERE SLC.EVENT_ID = 'blog_comment_micro' OR SLC.EVENT_ID = 'blog_comment'", true);
920 }
921}
$arParams
Определения access_dialog.php:21
global $APPLICATION
Определения include.php:80
static userLogSubscribe($params=array())
Определения componenthelper.php:4799
static addEvent(string $type, array $data)
Определения service.php:45
static processEqualityFieldsToUpdate($fields1, &$update)
Определения util.php:239
static getEqualityFields(&$fields)
Определения util.php:207
static processEqualityFieldsToInsert($fields1, &$insert)
Определения util.php:222
Определения access.php:15
static UpdateLogData($log_id, $bSetDate=true, $bSetDateByLastComment=false)
Определения log_comments.php:700
static SetSource($arFields, $action=false)
Определения log_comments.php:744
static SendMentionNotification($arCommentFields)
Определения log_comments.php:775
static CheckFields($ACTION, &$arFields, $ID=0)
Определения log_comments.php:18
static SendEvent($ID, $mailTemplate="SONET_NEW_EVENT", $bTransport=false)
Определения log_comments.php:312
static GetSQL($user_id, $arMyEntities, $transport, $visible, $table_alias="L")
Определения log_events.php:282
Определения dbresult.php:88
Определения cache.php:11
CleanDir($initdir=false, $basedir="cache")
Определения cache.php:25
static OnBlogDelete($blog_id)
Определения log_comments.php:915
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 FindLogCommentEventByID($event_id)
Определения log_tools.php:95
static SetCacheLastLogID($type="log", $id=0)
Определения log_tools.php:3102
Определения usertypesql.php:4
SetEntity($entity_id, $ID)
Определения usertypesql.php:16
global $CACHE_MANAGER
Определения clear_component_cache.php:7
$str
Определения commerceml2.php:63
$arFields
Определения dblapprove.php:5
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
global $USER_FIELD_MANAGER
Определения attempt.php:6
if($ajaxMode) $ID
Определения get_user.php:27
while($arParentIBlockProperty=$dbParentIBlockProperty->Fetch()) $errorMessage
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
global $DB
Определения cron_frame.php:29
global $USER
Определения csv_new_run.php:40
ExecuteModuleEventEx($arEvent, $arParams=[])
Определения tools.php:5214
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
Определения tools.php:5177
GetMessage($name, $aReplace=null)
Определения tools.php:3397
$order
Определения payment.php:8
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
$i
Определения factura.php:643
</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($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
Определения template.php:799
if(!CSocNetUser::IsFriendsAllowed()||!CBXFeatures::IsFeatureEnabled("Friends")) $arEntityTypeTmp
Определения include.php:187
global $arSocNetAllowedEntityTypes
Определения include.php:123
$arRes
Определения options.php:104
$arFilter
Определения user_search.php:106
$dbRes
Определения yandex_detail.php:168