- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/lib/livefeed/forumpost.php
- Класс: BitrixSocialnetworkLivefeedForumPost
- Вызов: ForumPost::getLiveFeedUrl
public function getLiveFeedUrl()
{
static $urlCache = [];
$result = '';
$entityUrl = false;
$logId = $this->getLogId();
if ($logId)
{
if (isset($urlCache[$logId]))
{
$entityUrl = $urlCache[$logId];
}
else
{
$res = self::$logTable::getList([
'filter' => [
'ID' => $logId,
],
'select' => [ 'ENTITY_ID', 'EVENT_ID', 'SOURCE_ID', 'RATING_TYPE_ID', 'RATING_ENTITY_ID', 'PARAMS' ],
]);
if ($logEntryFields = $res->fetch())
{
$provider = false;
$providerTasksTask = new TasksTask();
if (in_array((string)$logEntryFields['EVENT_ID'], $providerTasksTask->getEventId(), true))
{
$entityId = (int)$logEntryFields['SOURCE_ID'];
if ($logEntryFields['EVENT_ID'] === 'crm_activity_add')
{
if ($logEntryFields['RATING_TYPE_ID'] === 'TASK')
{
$entityId = (int)$logEntryFields['RATING_ENTITY_ID'];
}
elseif (
$logEntryFields['RATING_TYPE_ID'] === 'LOG_ENTRY'
&& Loader::includeModule('crm')
&& ($activity = CCrmActivity::getById($logEntryFields['ENTITY_ID'], false))
&& (int)$activity['TYPE_ID'] === CCrmActivityType::Task
)
{
$entityId = (int)$activity['ASSOCIATED_ENTITY_ID'];
}
else
{
$entityId = 0;
}
}
if ($entityId > 0)
{
$provider = $providerTasksTask;
$provider->setOption('checkAccess', false);
$provider->setEntityId($entityId);
$provider->setLogId($logId);
$provider->initSourceFields();
$postUrl = $provider->getLiveFeedUrl();
$entityUrl = $postUrl.(mb_strpos($postUrl, '?') === false ? '?' : '&').'commentId='.$this->getEntityId().'#com'.$this->getEntityId();
}
}
if (!$provider)
{
$providerCalendarEvent = new CalendarEvent();
if (in_array($logEntryFields['EVENT_ID'], $providerCalendarEvent->getEventId(), true))
{
$provider = $providerCalendarEvent;
$provider->setEntityId((int)$logEntryFields['SOURCE_ID']);
$provider->setLogId($logId);
$provider->initSourceFields();
$postUrl = $provider->getLiveFeedUrl();
$entityUrl = $postUrl.(mb_strpos($postUrl, '?') === false ? '?' : '&').'commentId='.$this->getEntityId().'#com'.$this->getEntityId();
}
}
if (!$provider)
{
$providerTimemanEntry = new TimemanEntry();
if (in_array($logEntryFields['EVENT_ID'], $providerTimemanEntry->getEventId(), true))
{
$provider = $providerTimemanEntry;
$provider->setEntityId((int)$logEntryFields['SOURCE_ID']);
$provider->setLogId($logId);
$provider->initSourceFields();
$entityUrl = $provider->getLiveFeedUrl();
}
}
if (!$provider)
{
$providerTimemanReport = new TimemanReport();
if (in_array($logEntryFields['EVENT_ID'], $providerTimemanReport->getEventId(), true))
{
$provider = $providerTimemanReport;
$provider->setEntityId((int)$logEntryFields['SOURCE_ID']);
$provider->setLogId($logId);
$provider->initSourceFields();
$entityUrl = $provider->getLiveFeedUrl();
}
}
if (!$provider)
{
$providerPhotogalleryPhoto = new PhotogalleryPhoto();
if (in_array($logEntryFields['EVENT_ID'], $providerPhotogalleryPhoto->getEventId(), true))
{
$provider = $providerPhotogalleryPhoto;
$provider->setEntityId((int)$logEntryFields['SOURCE_ID']);
$provider->setLogId($logId);
$provider->initSourceFields();
$entityUrl = $provider->getLiveFeedUrl();
}
}
if (!$provider)
{
$providerWiki = new Wiki();
if (in_array($logEntryFields['EVENT_ID'], $providerWiki->getEventId(), true))
{
$provider = $providerWiki;
$provider->setEntityId((int)($logEntryFields['SOURCE_ID']));
$provider->setLogId($logId);
$provider->initSourceFields();
$entityUrl = $provider->getLiveFeedUrl();
}
}
if (!$provider)
{
$providerListsItem = new ListsItem();
if (in_array($logEntryFields['EVENT_ID'], $providerListsItem->getEventId(), true))
{
$provider = $providerListsItem;
$provider->setEntityId((int)($logEntryFields['SOURCE_ID']));
$provider->setLogId($logId);
$provider->initSourceFields();
$entityUrl = $provider->getLiveFeedUrl().'?commentId='.$this->getEntityId().'#com'.$this->getEntityId();
}
}
if (!$provider)
{
$providerForumTopic = new ForumTopic();
if (
!empty($logEntryFields['PARAMS'])
&& unserialize($logEntryFields['PARAMS'], ['allowed_classes' => false])
&& in_array($logEntryFields['EVENT_ID'], $providerForumTopic->getEventId(), true)
)
{
$paramsList = unserialize($logEntryFields["PARAMS"], ['allowed_classes' => false]);
if (!empty($paramsList["PATH_TO_MESSAGE"]))
{
$entityUrl = CComponentEngine::makePathFromTemplate($paramsList["PATH_TO_MESSAGE"], [ "MID" => $this->getEntityId() ]);
}
}
}
}
}
}
if (!empty($entityUrl))
{
$result = $entityUrl;
}
return $result;
}