3namespace Bitrix\Socialnetwork\Component\LogList;
5use Bitrix\Crm\Activity\Provider\Tasks\Task;
6use Bitrix\Main\Config\Option;
8use Bitrix\Main\ModuleManager;
9use Bitrix\Main\UserTable;
10use Bitrix\Socialnetwork\Item\LogIndex;
11use Bitrix\Socialnetwork\Livefeed;
12use Bitrix\Socialnetwork\LogViewTable;
13use Bitrix\Socialnetwork\Space;
29 ($this->logPageProcessorInstance ===
null)
33 $this->logPageProcessorInstance = $this->
getComponent()->getLogPageProcessorInstance();
40 $this->filterData = $value;
54 return ($this->filterData[
$key] ??
false);
59 $this->filterContent = $value;
79 $this->eventsList[
$type] = $value;
89 if (!isset($this->eventsList[
$type]))
91 $this->eventsList[
$type] = [];
99 if (!isset($this->eventsList[
$type]))
101 $this->eventsList[
$type] = [];
104 $this->eventsList[
$type][] = $value;
114 if (!isset($this->eventsList[
$type]))
124 return $this->eventsList[
$type] ?? [];
139 static $siteDateFormatShort =
null;
140 static $siteDateFormatFull =
null;
142 if ($siteDateFormatShort ===
null)
144 $siteDateFormatShort = \CSite::getDateFormat(
'SHORT');
146 if ($siteDateFormatFull ===
null)
148 $siteDateFormatFull = \CSite::getDateFormat();
151 return makeTimeStamp($value, (
$type ===
'SHORT' ? $siteDateFormatShort : $siteDateFormatFull));
160 ||
$params[
'SET_NAV_CHAIN'] !==
'N'
174 $result[
'Group'][
'OPENED'] ===
'Y'
178 \CSocNetUserToGroup::getUserRole(
$result[
'currentUserId'],
$result[
'Group'][
'ID']),
184 $result[
'Group'][
'READ_ONLY'] =
'Y';
199 $this->showPinnedPanel =
false;
202 $turnFollowModeOff =
false;
208 if (in_array(
$params[
'DISPLAY'], [
'forme',
'my']))
210 $accessCodesList =
$USER->getAccessCodes();
211 foreach ($accessCodesList as
$i =>
$code)
213 if (!preg_match(
'/^(U|D|DR)/',
$code))
215 unset($accessCodesList[
$i]);
224 $accessCodesList =
$USER->getAccessCodes();
225 foreach ($accessCodesList as
$i =>
$code)
227 if (!preg_match(
'/^(U|AU|D|DR|G2)/',
$code))
229 unset($accessCodesList[
$i]);
236 if (
$params[
'DISPLAY'] ===
'forme')
251 || in_array(
$params[
'DISPLAY'], [
'forme',
'mine'])
256 $this->showPinnedPanel =
false;
261 && is_array(
$params[
'DESTINATION'])
276 && !empty(
$params[
'DESTINATION_AUTHOR_ID'])
277 && (
int)
$params[
'DESTINATION_AUTHOR_ID'] > 0
289 &&
$result[
'Group'][
'OPENED'] ===
'Y'
295 $result[
'SHOW_FOLLOW_CONTROL'] =
'N';
296 $this->showPinnedPanel =
false;
303 $result[
'SHOW_FOLLOW_CONTROL'] =
'N';
305 $res = UserTable::getList([
309 'select' => [
'ID',
'NAME',
'LAST_NAME',
'SECOND_NAME',
'LOGIN' ]
311 if ($userFields =
$res->fetch())
314 'ID' => $userFields[
'ID'],
315 'NAME' => \CUser::formatName(
$params[
'NAME_TEMPLATE'], $userFields, $this->
getComponent()->useLogin)
332 $turnFollowModeOff =
true;
337 $this->showPinnedPanel =
false;
341 isset(
$params[
'!EXACT_EVENT_ID'])
342 &&
$params[
'!EXACT_EVENT_ID'] <>
''
346 $turnFollowModeOff =
true;
350 isset(
$params[
'EXACT_EVENT_ID'])
351 &&
$params[
'EXACT_EVENT_ID'] <>
''
355 $turnFollowModeOff =
true;
359 && is_array(
$params[
'EVENT_ID'])
362 if (!in_array(
'all',
$params[
'EVENT_ID'],
true))
365 foreach (
$params[
'EVENT_ID'] as $eventId)
367 $eventIdList = array_merge($eventIdList, \CSocNetLogTools::findFullSetByEventID($eventId));
370 if (!empty($eventIdList))
372 $this->
setFilterKey(
'EVENT_ID', array_unique($eventIdList));
374 $turnFollowModeOff =
true;
382 $this->
setFilterKey(
'EVENT_ID', \CSocNetLogTools::findFullSetByEventID(
$params[
'EVENT_ID']));
383 $turnFollowModeOff =
true;
387 $turnFollowModeOff =
true;
390 if (
$params[
'CREATED_BY_ID'] > 0)
401 $turnFollowModeOff =
true;
417 if (isset(
$params[
'FILTER_SITE_ID']))
431 isset(
$params[
'LOG_DATE_FROM'])
432 &&
$params[
'LOG_DATE_FROM'] <>
''
437 $turnFollowModeOff =
true;
446 &&
$params[
'LOG_DATE_TO'] <>
''
451 $turnFollowModeOff =
true;
463 if (Loader::includeModule(
'crm'))
465 $result[
'CRM_ENTITY_TYPE_NAME'] = \CCrmOwnerType::resolveName(\CCrmLiveFeedEntity::resolveEntityTypeID(
$params[
'CRM_ENTITY_TYPE']));
470 $params[
'CRM_ENTITY_TYPE'] <>
''
476 $this->showPinnedPanel =
false;
484 !isset(
$params[
'USE_FAVORITES'])
485 ||
$params[
'USE_FAVORITES'] !==
'N'
488 &&
$params[
'FAVORITES'] ===
'Y'
495 if ($turnFollowModeOff)
498 $result[
'SHOW_FOLLOW_CONTROL'] =
'N';
510 if (empty($notEventIdFilter))
512 $notEventIdFilter = [];
514 elseif (!is_array($notEventIdFilter))
516 $notEventIdFilter = [ $notEventIdFilter ];
519 if (empty($eventIdFilter))
523 elseif (!is_array($eventIdFilter))
525 $eventIdFilter = [ $eventIdFilter ];
528 if (ModuleManager::isModuleInstalled(
'tasks'))
530 $notEventIdFilter = array_merge($notEventIdFilter, [
'tasks' ]);
531 $eventIdFilter = array_filter($eventIdFilter,
static function($eventId) {
return ($eventId !==
'tasks'); });
534 ModuleManager::isModuleInstalled(
'crm')
535 && Option::get(
'crm',
'enable_livefeed_merge',
'N') ===
'Y'
538 $notEventIdFilter = array_merge($notEventIdFilter, [
'crm_activity_add' ]);
539 $eventIdFilter = array_filter($eventIdFilter,
static function($eventId) {
return ($eventId !==
'crm_activity_add'); });
542 if (!empty($notEventIdFilter))
550 $result[
'SHOW_PINNED_PANEL'] =
'N';
554 &&
$params[
'MODE'] !==
'LANDING'
560 if ($this->showPinnedPanel)
563 $result[
'SHOW_PINNED_PANEL'] =
'Y';
576 defined(
'SITE_TEMPLATE_ID')
577 && (SITE_TEMPLATE_ID ===
'bitrix24' || SITE_TEMPLATE_ID ===
'air')
580 isset(
$params[
'siteTemplateId'])
581 && in_array(
$params[
'siteTemplateId'], [
'bitrix24',
'landing24',
'air' ])
586 $request->get(
'useBXMainFilter') ===
'Y'
587 || ((
$params[
'useBXMainFilter'] ??
'') ===
'Y')
592 $filterOption = new \Bitrix\Main\UI\Filter\Options(
$result[
'FILTER_ID']);
668 foreach (
$filterData[
'EVENT_ID'] as $filterEventId)
671 if (in_array($filterEventId, [
'blog_post_important',
'blog_post_grat',
'blog_post_vote' ]))
673 $eventIdFilterValue[] = $filterEventId;
677 $eventIdFilterValue = array_merge($eventIdFilterValue, \CSocNetLogTools::findFullSetByEventID($filterEventId));
680 $this->
setFilterKey(
'EVENT_ID', array_unique($eventIdFilterValue));
703 if ($findValue !==
'')
712 && Loader::includeModule(
'extranet')
716 $this->
setFilterKey(
'SITE_ID', \CExtranet::getExtranetSiteID());
717 $this->
setFilterKey(
'!EVENT_ID', [
'lists_new_element',
'tasks',
'timeman_entry',
'report',
'crm_activity_add' ]);
740 $this->
setFilterKey(
'<=CONTENT_DATE_CREATE', $dateCreateToValue);
751 $params[
'SET_LOG_COUNTER'] =
'N';
752 $params[
'SET_LOG_PAGE_CACHE'] =
'N';
760 $this->showPinnedPanel =
false;
765 defined(
'SITE_TEMPLATE_ID')
766 && (SITE_TEMPLATE_ID ===
'bitrix24' || SITE_TEMPLATE_ID ===
'air')
768 ||
$params[
'MODE'] ===
'LANDING'
771 $filterOption = new \Bitrix\Main\UI\Filter\Options(
$result[
'FILTER_ID']);
772 $filterOption->reset();
775 $this->setComposition();
782 && $this->
getRequest()->
get(
'apply_filter') ===
'Y'
785 $this->
getComponent()->arParams[
'useBXMainFilter'] =
'Y';
797 'nPageSize' =>
$params[
'PAGE_SIZE'],
799 'iNavAddRecords' => 1,
800 'bSkipPageReset' =>
true,
801 'nRecordCount' => 1000000
806 'nTopCount' =>
$params[
'LOG_CNT']
817 'nTopCount' =>
$params[
'PAGE_SIZE']
851 : [
'LOG_UPDATE' =>
'DESC' ]
856 $this->
setOrder([
'DATE_FOLLOW' =>
'DESC' ]);
862 ? [
'CONTENT_LOG_UPDATE' =>
'DESC' ]
863 : [
'LOG_UPDATE' =>
'DESC' ]
870 $res = getModuleEvents(
'socialnetwork',
'OnBuildSocNetLogOrder');
871 while ($eventFields =
$res->fetch())
893 $result[
'LAST_LOG_TS'] = \CUserCounter::getLastDate(
$result[
'currentUserId'],
$result[
'COUNTER_TYPE']);
895 if (
$result[
'LAST_LOG_TS'] == 0)
916 'CHECK_CRM_RIGHTS' =>
'Y'
920 'ENTITY_TYPE' =>
$params[
'CRM_ENTITY_TYPE'],
921 'ENTITY_ID' =>
$params[
'CRM_ENTITY_ID'],
922 'AFFECTED_TYPES' => [],
926 && is_array(
$params[
'CUSTOM_DATA'])
933 $res = getModuleEvents(
'socialnetwork',
'OnBuildSocNetLogFilter');
934 while ($eventFields =
$res->fetch())
937 executeModuleEventEx($eventFields, [ &
$filter, &$filterParams, &
$params ]);
948 && ModuleManager::isModuleInstalled(
'crm')
952 Option::get(
'crm',
'enable_livefeed_merge',
'N') ===
'Y'
959 : [
'crm',
'crm_shared' ]
977 && !ModuleManager::isModuleInstalled(
'intranet')
981 $result[
'USE_SMART_FILTER'] =
'Y';
983 \CSocNetLogSmartFilter::getDefaultValue(
$result[
'currentUserId']) ===
'Y'
992 || $this->
getComponent()->getPresetFilterIdValue() ===
'extranet'
1005 if (
$params[
'USE_FOLLOW'] ===
'Y')
1016 isset(
$params[
'USE_FAVORITES'])
1017 &&
$params[
'USE_FAVORITES'] ===
'N'
1024 empty(
$result[
'RETURN_EMPTY_LIST'])
1025 && !empty(
$params[
'EMPTY_EXPLICIT'])
1026 &&
$params[
'EMPTY_EXPLICIT'] ===
'Y'
1032 if (
$result[
'USE_PINNED'] ===
'Y')
1040 if (!empty($componentResult[
'GRAT_POST_FILTER']))
1043 $this->
setFilterKey(
'SOURCE_ID', $componentResult[
'GRAT_POST_FILTER']);
1052 'ID',
'TMP_ID',
'MODULE_ID',
1053 'LOG_DATE',
'LOG_UPDATE',
'DATE_FOLLOW',
1054 'ENTITY_TYPE',
'ENTITY_ID',
'EVENT_ID',
'SOURCE_ID',
'USER_ID',
'FOLLOW',
1055 'RATING_TYPE_ID',
'RATING_ENTITY_ID',
1060 !isset(
$params[
'USE_FAVORITES'])
1061 ||
$params[
'USE_FAVORITES'] !==
'N'
1064 $select[] =
'FAVORITES_USER_ID';
1067 if (
$result[
'currentUserId'] > 0)
1077 $diskUFEntityList = $this->
getComponent()->getDiskUFEntityListValue();
1079 !empty($diskUFEntityList[
'SONET_LOG'])
1080 || !empty($diskUFEntityList[
'BLOG_POST'])
1083 $res = getModuleEvents(
'socialnetwork',
'OnAfterFetchDiskUfEntity');
1084 while ($eventFields =
$res->fetch())
1086 executeModuleEventEx($eventFields, [ $diskUFEntityList ]);
1093 $activity2LogList = $this->
getComponent()->getActivity2LogListValue();
1096 !empty($activity2LogList)
1097 && Loader::includeModule(
'crm')
1098 && Loader::includeModule(
'tasks')
1101 $res = \CCrmActivity::getList(
1104 '@ID' => array_keys($activity2LogList),
1105 'CHECK_PERMISSIONS' =>
'N'
1109 [
'ID',
'ASSOCIATED_ENTITY_ID',
'TYPE_ID',
'PROVIDER_ID']
1112 ($activityFields =
$res->fetch())
1113 && ((
int)$activityFields[
'ASSOCIATED_ENTITY_ID'] > 0)
1117 (
int)$activityFields[
'TYPE_ID'] === \CCrmActivityType::Task
1119 (
int)$activityFields[
'TYPE_ID'] === \CCrmActivityType::Provider
1120 && $activityFields[
'PROVIDER_ID'] === Task::getId()
1126 $taskItem = new \CTaskItem((
int)$activityFields[
'ASSOCIATED_ENTITY_ID'],
$result[
'currentUserId']);
1127 if (!$taskItem->checkCanRead())
1129 $activity2LogList = $this->
getComponent()->getActivity2LogListValue();
1130 unset($activity2LogList[$activityFields[
'ID']]);
1131 $this->
getComponent()->setActivity2LogListValue($activity2LogList);
1132 unset($activity2LogList);
1136 $task2LogList = $this->
getComponent()->getTask2LogListValue();
1137 $task2LogList[(int)$activityFields[
'ASSOCIATED_ENTITY_ID']] = (
int)$activity2LogList[$activityFields[
'ID']];
1138 $this->
getComponent()->setTask2LogListValue($task2LogList);
1139 unset($task2LogList);
1142 catch (\CTaskAssertException $e)
1156 $result[
'NEXT_PAGE_SIZE'] = 0;
1159 isset(
$filter[
'>=LOG_UPDATE'])
1173 $contentIdList = [];
1174 if (is_array(
$result[
'Events']))
1176 foreach (
$result[
'Events'] as
$key => $eventFields)
1185 $result[
'ContentViewData'] = (
1186 !empty($contentIdList)
1188 'contentId' => $contentIdList
1197 $activity2LogList = $this->
getComponent()->getActivity2LogListValue();
1201 $prevPageLogIdList = [];
1202 if (
$type ===
'main')
1216 $eventFields[
'EVENT_ID'] ===
'crm_activity_add'
1217 && !empty($activity2LogList)
1218 && !in_array($eventFields[
'ID'], $activity2LogList)
1224 empty($prevPageLogIdList)
1225 || !in_array((
int)$eventFields[
'ID'], $prevPageLogIdList,
true)
1228 $eventFields[
'EVENT_ID_FULLSET'] = \CSocNetLogTools::findFullSetEventIDByEventID($eventFields[
'EVENT_ID']);
1233 && $eventFields[
'EVENT_ID'] ===
'tasks'
1244 if (isset($eventFields[
'DATE_FOLLOW']))
1250 && $eventFields[
'LOG_UPDATE']
1263 if (
$type ===
'main')
1277 $idList = array_merge(
$result[
'arLogTmpID'],
$result[
'pinnedIdList']);
1281 &&
$result[
'currentUserId'] > 0
1283 !isset(
$params[
'USE_FAVORITES'])
1284 ||
$params[
'USE_FAVORITES'] !==
'N'
1289 $res = \Bitrix\Socialnetwork\LogFavoritesTable::getList([
1291 '@LOG_ID' => $idList,
1292 'USER_ID' =>
$result[
'currentUserId']
1294 'select' => [
'LOG_ID' ]
1296 while ($favEntry =
$res->fetch())
1298 $favLogIdList[] = (int)$favEntry[
'LOG_ID'];
1304 $entry[
'FAVORITES_USER_ID'] = $entry[
'!FAVORITES_USER_ID'] = (
1305 in_array((
int)$entry[
'ID'], $favLogIdList,
true)
1323 if (Loader::includeModule(
'forum'))
1325 $result[
'Smiles'] = Option::get(
'forum',
'smile_gallery_id', 0);
1329 $cacheId =
'b_sonet_smile_'.LANGUAGE_ID;
1339 $res = \CSocNetSmile::getList(
1340 [
'SORT' =>
'ASC' ],
1342 'SMILE_TYPE' =>
'S',
1343 'LANG_LID' => LANGUAGE_ID
1347 [
'ID',
'IMAGE',
'DESCRIPTION',
'TYPING',
'SMILE_TYPE',
'SORT',
'LANG_NAME' ]
1349 while ($smileFields =
$res->fetch())
1351 [
$type] = explode(
' ', $smileFields[
'TYPING']);
1352 $smileFields[
'TYPE'] = str_replace(
"'",
"\'",
$type);
1353 $smileFields[
'TYPE'] = str_replace(
"\\",
"\\\\", $smileFields[
'TYPE']);
1354 $smileFields[
'NAME'] = $smileFields[
'LANG_NAME'];
1355 $smileFields[
'IMAGE'] =
'/bitrix/images/socialnetwork/smile/'.$smileFields[
'IMAGE'];
1357 $result[
'Smiles'][] = $smileFields;
1376 $res = LogViewTable::getList([
1379 'USER_ID' =>
$result[
'currentUserId'],
1380 '=EVENT_ID' =>
'tasks'
1382 'select' => [
'TYPE' ]
1384 if ($logViewFields =
$res->fetch())
1386 $result[
'EXPERT_MODE'] = ($logViewFields[
'TYPE'] ===
'N' ?
'Y' :
'N');
1393 $logEventsData = [];
1395 if (is_array(
$result[
'Events']))
1397 foreach (
$result[
'Events'] as $eventFields)
1399 $logEventsData[(int)$eventFields[
'ID']] = $eventFields[
'EVENT_ID'];
1402 if (is_array(
$result[
'pinnedEvents']))
1404 foreach (
$result[
'pinnedEvents'] as $eventFields)
1406 $logEventsData[(int)$eventFields[
'ID']] = $eventFields[
'EVENT_ID'];
1410 $forumPostLivefeedProvider = new \Bitrix\Socialnetwork\Livefeed\ForumPost();
1411 $forumPostLivefeedProvider->warmUpAuxCommentsStaticCache([
1412 'logEventsData' => $logEventsData,
1416 private function setComposition(): void
1423 $deselectedItems = $composition->getDeselectedSettings();
1424 $this->
addFilter(
'!' .
Space\Toolbar\Composition::FILTER, $deselectedItems);
unsetEventsListKey($key='', $type='main')
getLogPageProcessorInstance()
warmUpStaticCache($result)
processMainUIFilterData(&$result)
processEventsList(&$result, $type='main')
processCrmActivities($result)
processSelectData(&$result)
getExpertModeValue(&$result)
setFilterData(array $value=[])
setFilterContent($value=false)
processNextPageSize(&$result)
setEventsList(array $value=[], $type='main')
processFavoritesData($result)
processLastTimestamp(&$result)
$logPageProcessorInstance
appendEventsList(array $value=[], $type='main')
getFilterDataKey($key='')
processListParams(&$result)
processFilterData(&$result)
setEventsListKey($key='', array $value=[], $type='main')
setListFilter(array $componentResult=[])
makeTimeStampFromDateTime($value, $type='FULL')
getEventsList($type='main')
prepareContextData(&$result)
processContentList(&$result)
static checkUserAuthorized()
setListParams(array $value=[])
setOrder(array $value=[])
setOrderKey($key='', $value=false)
getListParamsKey($key='')
setNavParams($value=false)
setFilter(array $value=[])
addFilter($key='', $value=false)
setListParamsKey($key='', $value=false)
setFirstPage($value=false)
setFilterKey($key='', $value=false)
static checkLivefeedTasksAllowed()
static prepareToken($str)
static getViewData($params=[])
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
if(!is_null($config))($config as $configItem)(! $configItem->isVisible()) $code
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
if(empty($signedUserToken)) $key
</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."%"
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
const SONET_ROLES_AUTHORIZED