- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/Service/Timeline/Item/Activity/Call.php
- Класс: Bitrix\Crm\Service\Timeline\Item\Activity\Call
- Вызов: Call::getContentBlocks
public function getContentBlocks(): array
{
$result = [];
if ($this->isPlanned() && $this->getDeadline())
{
$deadline = $this->getDeadline();
$updateDeadlineAction = null;
if ($this->isScheduled())
{
$updateDeadlineAction = $this->getChangeDeadlineAction();
}
$result['deadline'] = (new ContentBlockWithTitle())
->setTitle(Loc::getMessage('CRM_TIMELINE_ITEM_CALL_COMPLETE_TO'))
->setInline(true)
->setContentBlock(
(new ContentBlock\EditableDate())
->setStyle(ContentBlock\EditableDate::STYLE_PILL)
->setDate($deadline)
->setAction($updateDeadlineAction)
->setBackgroundColor($this->isScheduled() ? ContentBlock\EditableDate::BACKGROUND_COLOR_WARNING : null)
)
;
}
$clientBlockOptions = Client::BLOCK_WITH_FORMATTED_VALUE | Client::BLOCK_WITH_FIXED_TITLE;
$clientBlock = $this->buildClientBlock($clientBlockOptions);
if (isset($clientBlock))
{
$result['client'] = $clientBlock;
}
$responsibleUserBlock = $this->buildResponsibleUserBlock();
if (isset($responsibleUserBlock))
{
$result['responsibleUser'] = $responsibleUserBlock;
}
$subjectBlock = $this->buildSubjectBlock();
if (isset($subjectBlock) && $this->isPlanned())
{
$result['subject'] = $subjectBlock;
}
$callQueueBlock = $this->buildCallQueueBlock();
if (isset($callQueueBlock) && $this->isMissedCall())
{
$result['callQueue'] = $callQueueBlock;
}
$recordUrls = array_unique(array_column($this->fetchAudioRecordList(), 'VIEW_URL'));
if (!empty($recordUrls))
{
// show first audio record
$audio = (new Audio())->setId($this->getAssociatedEntityModel()->get('ID'))->setSource($recordUrls[0]);
if (isset($clientBlock))
{
$communication = $this->getAssociatedEntityModel()->get('COMMUNICATION') ?? [];
$title = (new Client($communication, $clientBlockOptions))->getName();
if (!empty($title))
{
$audio->setTitle($title);
}
if (isset($communication['ENTITY_TYPE_ID']) && $communication['ENTITY_TYPE_ID'] === CCrmOwnerType::Contact)
{
$photo = Container::getInstance()->getContactBroker()->getById($communication['ENTITY_ID'])['PHOTO'];
if ($photo)
{
$photoUrl = \CFile::ResizeImageGet($photo, ["width" => 2000, "height" => 2000], BX_RESIZE_IMAGE_PROPORTIONAL,false, false, true);
$audio->setImageUrl($photoUrl['src']);
}
}
}
$result['audio'] = $audio;
}
$additionalInfoBlock = $this->buildAdditionalInfoBlock();
if (isset($additionalInfoBlock))
{
$result['callInformation'] = $additionalInfoBlock;
}
$clientMarkBlock = $this->buildClientMarkBlock();
if (isset($clientMarkBlock))
{
$result['clientMark'] = $clientMarkBlock;
}
$description = $this->fetchDescription(
(string)$this->getAssociatedEntityModel()->get($this->isScheduled() ? 'DESCRIPTION' : 'DESCRIPTION_RAW')
);
if (!empty($description))
{
$result['description'] = (new ContentBlock\EditableDescription())
->setText($description)
->setEditable(false)
->setHeight(ContentBlock\EditableDescription::HEIGHT_LONG)
;
}
$comment = (string) ($this->fetchInfo()['COMMENT'] ?? null);
if (!empty($comment))
{
$result['comment'] = (new ContentBlock\EditableDescription())
->setText($comment)
->setEditable(false)
->setHeight(ContentBlock\EditableDescription::HEIGHT_LONG)
;
}
return $result;
}