• Модуль: 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;
}