- Модуль: intranet
- Путь к файлу: ~/bitrix/modules/intranet/lib/controller/controlbutton.php
- Класс: BitrixIntranetControllerControlButton
- Вызов: ControlButton::getTaskLinkAction
public function getTaskLinkAction($entityType, $entityId, $postEntityType = '', $entityData = []): array
{
global $USER;
$result = [
'link' => '',
'TITLE' => '',
'DESCRIPTION' => '',
'AUDITORS' => '',
];
if (!$entityType || !$entityId)
{
return $result;
}
switch (strtolower($entityType))
{
case 'calendar_event':
$data = $this->getCalendarData($entityId, $entityData);
break;
default:
if (
!Loader::includeModule('socialnetwork')
|| !Loader::includeModule('tasks')
)
{
return $result;
}
$data = [];
if ($provider = BitrixSocialnetworkLivefeedProvider::init([
'ENTITY_TYPE' => $entityType,
'ENTITY_ID' => $entityId,
'CLONE_DISK_OBJECTS' => true,
]))
{
$data = [
'TITLE' => $provider->getSourceTitle(),
'DESCRIPTION' => $provider->getSourceDescription(),
'SUFFIX' => $provider->getSuffix(),
'URL' => $provider->getLiveFeedUrl(),
'DISK_FILES' => array_values($provider->getAttachedDiskObjectsCloned()),
'SONET_GROUP_ID' => $provider->getSonetGroupsAvailable(),
];
}
}
if (!empty($data))
{
$result['link'] = str_replace(
[ '#USER_ID#', '#ID#' ],
$USER->getId(),
Option::get('intranet', 'search_user_url', SITE_DIR . 'company/personal/user/#USER_ID#/')
) . 'tasks/task/edit/0/';
$result['TITLE'] = $data['TITLE'];
$result['DESCRIPTION'] = $data['DESCRIPTION'];
$result['URL'] = $data['URL'];
if (isset($data['USER_IDS']) && !empty($data['USER_IDS']))
{
$result['AUDITORS'] = implode(',', $data['USER_IDS']);
}
if ($entityType === 'calendar_event')
{
$result['CALENDAR_EVENT_ID'] = $data['ID'];
$result['CALENDAR_EVENT_DATA'] = $entityData;
}
else
{
$result['SOURCE_POST_ENTITY_TYPE'] = $postEntityType;
$result['SOURCE_ENTITY_TYPE'] = $entityType;
$result['SOURCE_ENTITY_ID'] = (int)$entityId;
$result['SUFFIX'] = $data['SUFFIX'];
if (!empty($data['DISK_FILES']))
{
$diskFileUFCode = BitrixTasksIntegrationDiskUserField::getMainSysUFCode();
$result[$diskFileUFCode] = $data['DISK_FILES'];
$signer = new Signer;
$result[$diskFileUFCode . '_SIGN'] = $signer->sign(Json::encode($data['DISK_FILES']), static::SIGNATURE_SALT);
}
if (
!empty($data['SONET_GROUP_ID'])
&& count($data['SONET_GROUP_ID']) === 1
)
{
$result['GROUP_ID'] = (int)array_pop($data['SONET_GROUP_ID']);
}
}
}
return $result;
}