Bitrix-D7 23.9
 
Загрузка...
Поиск...
Не найдено
loglist.php
1<?php
2
4
19
21{
22 protected $extranetSite = false;
23 protected $presetFilterTopId = false;
24 protected $presetFilterId = false;
25 protected $commentsNeeded = false;
26 protected $activity2LogList = [];
27 protected $diskUFEntityList = [
28 'BLOG_POST' => [],
29 'SONET_LOG' => []
30 ];
31
33 protected $paramsInstance;
34 protected $assetsInstance;
35 protected $pathInstance;
40
41 public $useLogin = false;
42
43 public static $canCurrentUserAddComments = [];
44
45 public function setExtranetSiteValue($value = false): void
46 {
47 $this->extranetSite = ($value === true);
48 }
49
50 public function getExtranetSiteValue(): bool
51 {
52 return $this->extranetSite;
53 }
54
55 public function setPresetFilterTopIdValue($value): void
56 {
57 $this->presetFilterTopId = $value;
58 }
59
60 public function getPresetFilterTopIdValue()
61 {
62 return $this->presetFilterTopId;
63 }
64
65 public function setPresetFilterIdValue($value): void
66 {
67 $this->presetFilterId = $value;
68 }
69
70 public function getPresetFilterIdValue()
71 {
72 return $this->presetFilterId;
73 }
74
75 public function setCommentsNeededValue($value = false): void
76 {
77 $this->commentsNeeded = ($value === true);
78 }
79
80 public function getCommentsNeededValue(): bool
81 {
82 return $this->commentsNeeded;
83 }
84
85 public function setActivity2LogListValue($value = []): void
86 {
87 $this->activity2LogList = $value;
88 }
89
90 public function getActivity2LogListValue()
91 {
92 return $this->activity2LogList;
93 }
94
95 public function setDiskUFEntityListValue($value = []): void
96 {
97 $this->diskUFEntityList = $value;
98 }
99
100 public function getDiskUFEntityListValue()
101 {
102 return $this->diskUFEntityList;
103 }
104
105 protected function processParentParams(&$params): void
106 {
107 $parent = $this->getParent();
108 if (is_object($parent) && $parent->__name <> '')
109 {
110 $this->getParamsInstance()->prepareParentParams($params);
111 $this->getParamsPhotogalleryInstance()->prepareParentPhotogalleryParams($params);
112
113 // parent of 2nd level
114 $parent2 = $parent->getParent();
115 if (is_object($parent2) && $parent2->__name <> '')
116 {
117 $this->getParamsInstance()->prepareParent2Params($params);
118 }
119 }
120 }
121
122 protected function getGratitudesInstance(): Gratitude
123 {
124 if($this->gratitudesInstance === null)
125 {
126 $this->gratitudesInstance = new Gratitude([
127 'component' => $this
128 ]);
129 }
130
131 return $this->gratitudesInstance;
132 }
133
134 protected function getParamsInstance(): Param
135 {
136 if($this->paramsInstance === null)
137 {
138 $this->paramsInstance = new Param([
139 'component' => $this,
140 'request' => $this->getRequest()
141 ]);
142 }
143
144 return $this->paramsInstance;
145 }
146
147 public function getAssetsInstance(): Assets
148 {
149 if($this->assetsInstance === null)
150 {
151 $this->assetsInstance = new Assets([
152 'component' => $this
153 ]);
154 }
155
156 return $this->assetsInstance;
157 }
158
159 public function getPathInstance(): Path
160 {
161 if($this->pathInstance === null)
162 {
163 $this->pathInstance = new Path([
164 'component' => $this,
165 'request' => $this->getRequest()
166 ]);
167 }
168
169 return $this->pathInstance;
170 }
171
173 {
174 if($this->paramsPhotogalleryInstance === null)
175 {
176 $this->paramsPhotogalleryInstance = new ParamPhotogallery([
177 'component' => $this
178 ]);
179 }
180
181 return $this->paramsPhotogalleryInstance;
182 }
183
184 protected function getProcessorInstance(): Processor
185 {
186 if($this->processorInstance === null)
187 {
188 $this->processorInstance = new Processor([
189 'component' => $this,
190 'request' => $this->getRequest()
191 ]);
192
193 if ($this->processorInstance->isSpace())
194 {
195 $this->processorInstance
196 ->setUserId($this->arParams['SPACE_USER_ID'])
197 ->setGroupId($this->arParams['GROUP_ID']);
198 }
199 }
200
201 return $this->processorInstance;
202 }
203
205 {
206 if($this->logPageProcessorInstance === null)
207 {
208 $this->logPageProcessorInstance = new Page([
209 'component' => $this,
210 'request' => $this->getRequest(),
211 'processorInstance' => $this->getProcessorInstance()
212 ]);
213 }
214
215 return $this->logPageProcessorInstance;
216 }
217
219 {
220 if ($this->counterProcessorInstance === null)
221 {
222 $this->counterProcessorInstance = new Counter([
223 'component' => $this,
224 'request' => $this->getRequest(),
225 'processorInstance' => $this->getProcessorInstance()
226 ]);
227 }
228
229 return $this->counterProcessorInstance;
230 }
231
232 public function onPrepareComponentParams($params): array
233 {
234 global $USER;
235
236 $this->errorCollection = new ErrorCollection();
237
238 $request = $this->getRequest();
241
242 $this->setExtranetSiteValue((Loader::includeModule('extranet') && \CExtranet::isExtranetSite()));
244 $request->get('log_filter_submit') <> ''
245 && $request->get('flt_comments') === 'Y'
246 );
247
248 Util::checkEmptyParamInteger($params, 'LOG_CNT', 0);
249 Util::checkEmptyParamInteger($params, 'PAGE_SIZE', 20);
250 Util::checkEmptyParamString($params, 'PUBLIC_MODE', 'N');
251 Util::checkEmptyParamString($params, 'SHOW_EVENT_ID_FILTER', 'Y');
252 Util::checkEmptyParamInteger($params, 'LOG_ID', 0);
253
254 $params['HIDE_EDIT_FORM'] = ($params['LOG_ID'] > 0 ? 'Y' : ($params['HIDE_EDIT_FORM'] ?? 'N'));
255 $params['SHOW_EVENT_ID_FILTER'] = ($params['LOG_ID'] > 0 ? 'N' : $params['SHOW_EVENT_ID_FILTER']);
256 $params['AUTH'] = (isset($params['AUTH']) && mb_strtoupper($params['AUTH']) === 'Y' ? 'Y' : 'N');
257 $params['PAGE_NUMBER'] = (
258 isset($params['PAGE_NUMBER'])
259 && (int)$params['PAGE_NUMBER'] > 0
260 ? (int)$params['PAGE_NUMBER']
261 : 1
262 );
263
264 $paramsInstance->prepareModeParams($params);
265 $paramsInstance->prepareFollowParams($params);
266
267 Util::checkEmptyParamString($params, 'CHECK_PERMISSIONS_DEST', 'N');
268
269 $params['IS_CRM'] = (
270 !ModuleManager::isModuleInstalled('crm')
271 ? 'N'
272 : ($params['IS_CRM'] ?? 'N')
273 );
274
275 $params['SHOW_LOGIN'] = ($params['SHOW_LOGIN'] ?? 'Y');
276 $this->useLogin = ($params['SHOW_LOGIN'] !== 'N');
277
278 $params['CONTEXT'] = (is_string($params['CONTEXT'] ?? null) ? $params['CONTEXT'] : '');
279
280 $params['SHOW_UNREAD'] = ($USER->isAuthorized() && $params['LOG_ID'] <= 0 && $params['MODE'] !== 'LANDING' ? 'Y' : 'N');
281
282 $paramsInstance->prepareRatingParams($params);
283 $paramsInstance->prepareRequestVarParams($params);
284 $pathInstance->setPaths($params);
285 $paramsInstance->prepareRequestParams($params);
286 $paramsInstance->prepareNameTemplateParams($params);
287 $paramsInstance->prepareAvatarParams($params);
288 $paramsInstance->prepareCommentsParams($params);
289 $paramsInstance->prepareDestinationParams($params);
290 $paramsInstance->prepareCommentPropertyParams($params);
291 $paramsInstance->prepareDateTimeFormatParams($params);
292 $paramsInstance->prepareCounterParams($params);
293 $paramsInstance->preparePageParams($params);
294 $paramsInstance->processPresetFilterParams($params);
295 $paramsInstance->prepareDateFilterParams($params);
296 $this->processParentParams($params);
297 $this->getParamsPhotogalleryInstance()->preparePhotogalleryParams($params);
298 $paramsInstance->preparePageTitleParams($params);
299 $paramsInstance->prepareBehaviourParams($params);
300 $paramsInstance->prepareCommentFormParams($params);
301
302 Util::checkEmptyParamString($params, 'PAGER_TITLE', '');
303
304 return $params;
305 }
306
307 protected function prepareData()
308 {
309 global $USER;
310
311 $request = $this->getRequest();
315 $pathsProcessorInstance = $this->getPathInstance();
316 $assetsProcessorInstance = $this->getAssetsInstance();
317
318 $result = [];
319
320 if (!$assetsProcessorInstance->checkRefreshNeeded($result))
321 {
322 return $result;
323 }
324
325 $this->getGratitudesInstance()->prepareGratPostFilter($result);
326
327 $result['isExtranetSite'] = $this->getExtranetSiteValue();
328 $result['SHOW_FOLLOW_CONTROL'] = 'Y';
329 $result['CAN_DELETE'] = \CSocNetUser::isCurrentUserModuleAdmin(SITE_ID, false);
330 $result['ENTITIES_CORRESPONDENCE'] = [];
331
332 $result['PATH_TO_LOG_TAG'] = $pathsProcessorInstance->getFolderUsersValue().'log/?TAG=#tag#';
333 if (
334 defined('SITE_TEMPLATE_ID')
335 && SITE_TEMPLATE_ID === 'bitrix24'
336 )
337 {
338 $result['PATH_TO_LOG_TAG'] .= '&apply_filter=Y';
339 }
340
341 $result['AJAX_CALL'] = (
342 !empty($this->arParams['TARGET'])
343 || $request->get('logajax') <> ''
344 );
345 $result['bReload'] = (
346 $result['AJAX_CALL']
347 && (
348 $request->get('RELOAD') === 'Y'
349 || (
350 isset($this->arParams['RELOAD'])
351 && $this->arParams['RELOAD'] === 'Y'
352 )
353 )
354 );
355 $result['SHOW_UNREAD'] = $this->arParams['SHOW_UNREAD'];
356 $result['currentUserId'] = (int)$USER->getId();
357
358 $assetsProcessorInstance->getAssetsCheckSum($result);
359
360 $logPageProcessorInstance->preparePrevPageLogId();
361 $this->setCurrentUserAdmin(\CSocNetUser::isCurrentUserModuleAdmin());
362 $processorInstance->getMicroblogUserId($result);
363
364 $result['TZ_OFFSET'] = \CTimeZone::getOffset();
365 $result['FILTER_ID'] = (
366 !empty($this->arParams['FILTER_ID'])
367 ? $this->arParams['FILTER_ID']
368 : 'LIVEFEED'.(!empty($this->arParams['GROUP_ID']) ? '_SG'.$this->arParams['GROUP_ID'] : '')
369 );
370
371 \CSocNetTools::initGlobalExtranetArrays();
372
373 if (
374 $this->arParams['AUTH'] === 'Y'
376 )
377 {
378 $result['IS_FILTERED'] = false;
379
380 $processorInstance->prepareContextData($result);
381 $this->setTitle([
382 'GROUP' => ($result['Group'] ?? []),
383 ]);
384
385 $result['Events'] = false;
386
387 $processorInstance->processFilterData($result);
388 $processorInstance->processNavData($result);
389 $processorInstance->processOrderData();
390 $counterProcessorInstance->processCounterTypeData($result);
391 $processorInstance->processLastTimestamp($result);
392 $processorInstance->processListParams($result);
393 $logPageProcessorInstance->getLogPageData($result);
394 $processorInstance->setListFilter($result);
395 $processorInstance->processSelectData($result);
396
397 $this->getEntriesData($result);
398
399 $processorInstance->processFavoritesData($result);
400 $processorInstance->processDiskUFEntities();
401 $processorInstance->processCrmActivities($result);
402
403 $logPageProcessorInstance->deleteLogPageData($result);
404
405 $processorInstance->processNextPageSize($result);
406 $processorInstance->processEventsList($result, 'main');
407 $processorInstance->processEventsList($result, 'pinned');
408
409 $processorInstance->warmUpStaticCache($result);
410
411 if (
412 $this->arParams['LOG_ID'] > 0
413 && (
414 !is_array($result['Events'])
415 || count($result['Events']) <= 0
416 )
417 )
418 {
419 $this->errorCollection[] = new Error(Loc::getMessage('SONET_LOG_LIST_ENTRY_NOT_FOUND'));
420 return false;
421 }
422
423 $processorInstance->processContentList($result);
424
425 $result['WORKGROUPS_PAGE'] = $pathsProcessorInstance->getFolderWorkgroupsValue();
426
427 $counterProcessorInstance->setLogCounter($result);
428 $processorInstance->getExpertModeValue($result);
429 $logPageProcessorInstance->setLogPageData($result);
430
431 $processorInstance->getUnreadTaskCommentsIdList($result);
432 $processorInstance->getResultTaskCommentsIdList($result);
433
434 $counterProcessorInstance->clearLogCounter($result);
435 $this->processLogFormComments($result);
436
437 $result['bGetComments'] = $this->getCommentsNeededValue();
438 $result['GET_COMMENTS'] = ($this->getCommentsNeededValue() ? 'Y' : 'N');
439
440 $processorInstance->getSmiles($result);
441 }
442 else
443 {
444 $result['NEED_AUTH'] = 'Y';
445 }
446
447 // compatibility with old component/template
448 $this->arParams['SHOW_UNREAD'] = $result['SHOW_UNREAD'];
449
450 return $result;
451 }
452
453 protected function getEntriesData(&$result): void
454 {
455 $result['arLogTmpID'] = [];
456
459 if (
462 )
463 {
464 return;
465 }
466
467 $params = $this->arParams;
468
469 if (empty($result['RETURN_EMPTY_LIST']))
470 {
471 $queryResultData = $this->getEntryIdList($result);
472
473 if (
474 $queryResultData['countAll'] < (int)$params['PAGE_SIZE']
475 && !empty($processorInstance->getFilterKey('>=LOG_UPDATE'))
476 )
477 {
478 $result['arLogTmpID'] = [];
479 $processorInstance->setEventsList([]);
480
481 $logPageProcessorInstance->setDateLastPageStart(null);
482 $processorInstance->unsetFilterKey('>=LOG_UPDATE');
483 $this->getEntryIdList($result);
484 }
485 }
486
487 $this->getPinnedIdList($result);
488 }
489
490 protected function processEvent(&$result, &$cnt, array $eventFields = [], array $options = []): void
491 {
492 if ($eventFields['MODULE_ID'] === 'crm_shared')
493 {
494 $eventFields['MODULE_ID'] = 'crm';
495 }
496
497 static $timemanInstalled = null;
498 static $tasksInstalled = null;
499 static $listsInstalled = null;
500
501 if ($timemanInstalled === null)
502 {
503 $timemanInstalled = ModuleManager::isModuleInstalled('timeman');
504 }
505 if ($tasksInstalled === null)
506 {
507 $tasksInstalled = ModuleManager::isModuleInstalled('tasks');
508 }
509 if ($listsInstalled === null)
510 {
511 $listsInstalled = ModuleManager::isModuleInstalled('lists');
512 }
513
514 if (
515 !ModuleManager::isModuleInstalled('bitrix24')
516 && (
517 (
518 !empty($eventFields['MODULE_ID'])
519 && !ModuleManager::isModuleInstalled($eventFields['MODULE_ID'])
520 )
521 ||
522 (
523 in_array($eventFields['EVENT_ID'], [ 'timeman_entry', 'report' ])
524 && !$timemanInstalled
525 )
526 || (
527 $eventFields['EVENT_ID'] === 'tasks'
528 && !$tasksInstalled
529 )
530 || (
531 $eventFields['EVENT_ID'] === 'lists_new_element'
532 && !$listsInstalled
533 )
534 )
535 )
536 {
537 return;
538 }
539
542 {
543 return;
544 }
545
546 if ($eventFields['EVENT_ID'] === 'crm_activity_add')
547 {
549 $activity2LogList[$eventFields['ENTITY_ID']] = $eventFields['ID'];
551 unset($activity2LogList);
552 }
553 elseif ($eventFields['EVENT_ID'] === 'tasks')
554 {
556 $task2LogList[(int)$eventFields['SOURCE_ID']] = (int)$eventFields['ID'];
558 unset($task2LogList);
559 }
560
561 $cnt++;
562 if (isset($options['type']))
563 {
564 if ($options['type'] === 'main')
565 {
566 $result['arLogTmpID'][] = $eventFields['ID'];
567 $processorInstance->appendEventsList($eventFields);
568 }
569 elseif ($options['type'] === 'pinned')
570 {
571 $contentId = \Bitrix\Socialnetwork\Livefeed\Provider::getContentId($eventFields);
572
573 if (!empty($contentId['ENTITY_TYPE']))
574 {
575 $postProvider = \Bitrix\Socialnetwork\Livefeed\Provider::init([
576 'ENTITY_TYPE' => $contentId['ENTITY_TYPE'],
577 'ENTITY_ID' => $contentId['ENTITY_ID'],
578 'LOG_ID' => $eventFields['ID']
579 ]);
580
581 if ($postProvider)
582 {
583 $result['pinnedIdList'][] = $eventFields['ID'];
584 $eventFields['PINNED_PANEL_DATA'] = [
585 'TITLE' => $postProvider->getPinnedTitle(),
586 'DESCRIPTION' => $postProvider->getPinnedDescription()
587 ];
588 $processorInstance->appendEventsList($eventFields, 'pinned');
589 }
590 }
591 }
592 }
593
594 $livefeedProvider = new \Bitrix\Socialnetwork\Livefeed\BlogPost();
595
596 if (
597 (int)$eventFields['SOURCE_ID'] > 0
598 && in_array($eventFields['EVENT_ID'], array_merge($livefeedProvider->getEventId(), ['idea']), true)
599 )
600 {
602 $diskUFEntityList['BLOG_POST'][] = $eventFields['SOURCE_ID'];
604 unset($diskUFEntityList);
605 }
606 elseif (!in_array($eventFields['EVENT_ID'], [ 'data', 'photo', 'photo_photo', 'bitrix24_new_user', 'intranet_new_user', 'news' ]))
607 {
609 $diskUFEntityList['SONET_LOG'][] = $eventFields['ID'];
611 unset($diskUFEntityList);
612 }
613 }
614
615 protected function getEntryIdList(&$result): array
616 {
617 global $NavNum;
618
619 $returnResult = [
620 'countAll' => 0
621 ];
622
625 {
626 return $returnResult;
627 }
628
629 if ($processorInstance->getListParamsKey('EMPTY_LIST') === 'Y')
630 {
631 $result['arLogTmpID'] = [];
632 return $returnResult;
633 }
634
635 $processorInstance->setListParamsKey('CHECK_RIGHTS', 'Y');
636
637 $res = \CSocNetLog::getList(
638 $processorInstance->getOrder(),
639 $processorInstance->getFilter(),
640 false,
641 $processorInstance->getNavParams(),
642 $processorInstance->getSelect(),
643 $processorInstance->getListParams()
644 );
645
646 if ($processorInstance->getFirstPage())
647 {
648 $result['NAV_STRING'] = '';
649 $result['PAGE_NAVNUM'] = $NavNum+1;
650 $result['PAGE_NAVCOUNT'] = 1000000;
651 }
652 else
653 {
654 $navComponentObject = false;
655 $result['NAV_STRING'] = $res->getPageNavStringEx($navComponentObject, Loc::getMessage('SONET_LOG_LIST_NAV'), '', false);
656 $result['PAGE_NUMBER'] = $res->NavPageNomer;
657 $result['PAGE_NAVNUM'] = $res->NavNum;
658 $result['PAGE_NAVCOUNT'] = $res->NavPageCount;
659 }
660
661 $cnt = 0;
662 while ($eventFields = $res->getNext())
663 {
664 $this->processEvent($result, $cnt, $eventFields, [
665 'type' => 'main',
666 'pageNumber' => $res->NavPageNomer
667 ]);
668 }
669
670 $returnResult['countAll'] = $res->selectedRowsCount();
671
672 return $returnResult;
673 }
674
675 protected function getPinnedIdList(&$result): void
676 {
677 $result['pinnedEvents'] = [];
678 $result['pinnedIdList'] = [];
679
680 if ($result['USE_PINNED'] !== 'Y')
681 {
682 return;
683 }
684
687 {
688 return;
689 }
690
691 $logUpdateFilterValue = $processorInstance->getFilterKey('>=LOG_UPDATE');
692 $processorInstance->unsetFilterKey('>=LOG_UPDATE');
693
694 /* filter without >=LOG_UPDATE field */
695 $filter = $processorInstance->getFilter();
696 $processorInstance->setFilterKey('>=LOG_UPDATE', $logUpdateFilterValue);
697
698 $filter['PINNED_USER_ID'] = $result['currentUserId'];
699
700 $select = $processorInstance->getSelect();
701 unset($select['TMP_ID'], $select['PINNED_USER_ID']);
702
703 $res = \CSocNetLog::getList(
704 [
705 'PINNED_DATE' => 'DESC'
706 ],
707 $filter,
708 false,
709 [
710 'nTopCount' => 50
711 ],
712 $select,
713 [
714 'CHECK_RIGHTS' => 'Y',
715 'USE_PINNED' => 'Y',
716 'USE_FOLLOW' => 'N'
717 ]
718 );
719 $cnt = 0;
720 while ($eventFields = $res->getNext())
721 {
722 $this->processEvent($result, $cnt, $eventFields, [
723 'type' => 'pinned'
724 ]);
725 }
726 }
727
728 protected function processLogFormComments(&$result): void
729 {
730 global $USER_FIELD_MANAGER;
731
732 $params = $this->arParams;
733
734 if (
735 !$result['AJAX_CALL']
736 && empty($this->getErrors())
738 )
739 {
740 $cache = new \CPHPCache;
741 $cacheId = 'log_form_comments'.serialize($params['COMMENT_PROPERTY']);
742 $cachePath = '/sonet/log_form/comments';
743 $ttl = (defined('BX_COMP_MANAGED_CACHE') ? 2592000 : 600);
744
745 if ($cache->initCache($ttl, $cacheId, $cachePath))
746 {
747 $cacheVars = $cache->getVars();
748 $result['COMMENT_PROPERTIES'] = $cacheVars['comment_props'];
749 $cache->output();
750 }
751 else
752 {
753 $cache->startDataCache($ttl, $cacheId, $cachePath);
754
755 $result['COMMENT_PROPERTIES'] = [ 'SHOW' => 'N' ];
756 if (
757 !empty($params['COMMENT_PROPERTY'])
758 && is_array($params['COMMENT_PROPERTY'])
759 )
760 {
761 $arPostFields = $USER_FIELD_MANAGER->getUserFields('SONET_COMMENT', 0, LANGUAGE_ID);
762 foreach ($arPostFields as $fieldName => $fieldData)
763 {
764 if (!in_array($fieldName, $params['COMMENT_PROPERTY'], true))
765 {
766 continue;
767 }
768
769 $fieldData['EDIT_FORM_LABEL'] = $fieldData['EDIT_FORM_LABEL'] <> '' ? $fieldData['EDIT_FORM_LABEL'] : $fieldData['FIELD_NAME'];
770 $fieldData['~EDIT_FORM_LABEL'] = $fieldData['EDIT_FORM_LABEL'];
771 $fieldData['EDIT_FORM_LABEL'] = htmlspecialcharsEx($fieldData['EDIT_FORM_LABEL']);
772 $result['COMMENT_PROPERTIES']['DATA'][$fieldName] = $fieldData;
773 }
774
775 if (!empty($result['COMMENT_PROPERTIES']['DATA']))
776 {
777 $result['COMMENT_PROPERTIES']['SHOW'] = 'Y';
778 }
779 }
780
781 $cache->endDataCache([ 'comment_props' => $result['COMMENT_PROPERTIES'] ]);
782 }
783 }
784 }
785
786 public static function getGratitudesIblockId()
787 {
789 }
790
791 public static function getGratitudesIblockData(array $params = []): array
792 {
793 return LogList\Gratitude::getGratitudesIblockData($params);
794 }
795
796 public static function getGratitudesBlogData(array $params = []): array
797 {
798 return LogList\Gratitude::getGratitudesBlogData($params);
799 }
800}
static getMessage($code, $replace=null, $language=null)
Definition loc.php:29
static checkEmptyParamString(&$params, $paramName, $defaultValue)
Definition util.php:15
static checkEmptyParamInteger(&$params, $paramName, $defaultValue)
Definition util.php:10
processEvent(&$result, &$cnt, array $eventFields=[], array $options=[])
Definition loglist.php:490
static getGratitudesBlogData(array $params=[])
Definition loglist.php:796
static getGratitudesIblockData(array $params=[])
Definition loglist.php:791