• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/timeline/timelinemanager.php
  • Класс: Bitrix\Crm\Timeline\TimelineManager
  • Вызов: TimelineManager::resolveController
static function resolveController(array $item)
{
	$typeID = isset($item['TYPE_ID']) ? (int)$item['TYPE_ID'] : 0;
	$assocEntityTypeID = isset($item['ASSOCIATED_ENTITY_TYPE_ID'])
		? (int)$item['ASSOCIATED_ENTITY_TYPE_ID'] : 0;

	if($typeID === TimelineType::WAIT)
	{
		return WaitController::getInstance();
	}

	if($typeID === TimelineType::BIZPROC)
	{
		return BizprocController::getInstance();
	}

	if($typeID === TimelineType::SENDER)
	{
		$senderRecipientControllerClass = '\Bitrix\Sender\Integration\Crm\Timeline\RecipientController';
		if (Loader::includeModule('sender') && class_exists($senderRecipientControllerClass))
		{
			/** @var \Bitrix\Sender\Integration\Crm\Timeline\RecipientController $senderRecipientControllerClass */
			return $senderRecipientControllerClass::getInstance();
		}
		else
		{
			return null;
		}
	}

	if($typeID === TimelineType::COMMENT)
	{
		return CommentController::getInstance();
	}

	if($typeID === TimelineType::EXTERNAL_NOTICE)
	{
		return ExternalNoticeController::getInstance();
	}

	if($typeID === TimelineType::DOCUMENT)
	{
		return DocumentController::getInstance();
	}

	if ($typeID === TimelineType::DELIVERY)
	{
		return DeliveryController::getInstance();
	}

	if($typeID === TimelineType::LOG_MESSAGE)
	{
		return LogMessageController::getInstance();
	}

	if ($typeID === TimelineType::CALENDAR_SHARING)
	{
		return CalendarSharing\Controller::getInstance();
	}

	if ($typeID === TimelineType::TASK)
	{
		return Tasks\Controller::getInstance();
	}

	if($assocEntityTypeID === \CCrmOwnerType::Activity)
	{
		if($typeID === TimelineType::MODIFICATION)
		{
			$settings = isset($item['SETTINGS']) && is_array($item['SETTINGS']) ? $item['SETTINGS'] : array();
			$entity = isset($settings['ENTITY']) && is_array($settings['ENTITY']) ? $settings['ENTITY'] : array();
			$activityTypeID = isset($entity['TYPE_ID']) ? (int)$entity['TYPE_ID'] : 0;

			if($activityTypeID === \CCrmActivityType::Task)
			{
				return TaskController::getInstance();
			}
		}

		return ActivityController::getInstance();
	}
	elseif($assocEntityTypeID === \CCrmOwnerType::Lead || $assocEntityTypeID === \CCrmOwnerType::SuspendedLead)
	{
		return LeadController::getInstance();
	}
	elseif($assocEntityTypeID === \CCrmOwnerType::Contact || $assocEntityTypeID === \CCrmOwnerType::SuspendedContact)
	{
		return ContactController::getInstance();
	}
	elseif($assocEntityTypeID === \CCrmOwnerType::Company || $assocEntityTypeID === \CCrmOwnerType::SuspendedCompany)
	{
		return CompanyController::getInstance();
	}
	elseif($assocEntityTypeID === \CCrmOwnerType::Deal || $assocEntityTypeID === \CCrmOwnerType::SuspendedDeal)
	{
		return DealController::getInstance();
	}
	elseif($assocEntityTypeID === \CCrmOwnerType::DealRecurring)
	{
		return DealRecurringController::getInstance();
	}
	elseif($assocEntityTypeID === \CCrmOwnerType::Order)
	{
		return OrderController::getInstance();
	}
	elseif($assocEntityTypeID === \CCrmOwnerType::OrderPayment)
	{
		return OrderPaymentController::getInstance();
	}
	elseif($assocEntityTypeID === \CCrmOwnerType::OrderShipment)
	{
		return OrderShipmentController::getInstance();
	}
	elseif($assocEntityTypeID === \CCrmOwnerType::OrderCheck)
	{
		return OrderCheckController::getInstance();
	}
	elseif($assocEntityTypeID === \CCrmOwnerType::Scoring)
	{
		return ScoringController::getInstance();
	}
	elseif($assocEntityTypeID === \CCrmOwnerType::StoreDocument)
	{
		return StoreDocumentController::getInstance();
	}
	elseif($assocEntityTypeID === \CCrmOwnerType::ShipmentDocument)
	{
		return ShipmentDocumentController::getInstance();
	}
	elseif ($assocEntityTypeID === \CCrmOwnerType::Quote)
	{
		return QuoteController::getInstance();
	}
	elseif(\CCrmOwnerType::isUseDynamicTypeBasedApproach($assocEntityTypeID))
	{
		return DynamicController::getInstance($assocEntityTypeID);
	}

	return null;
}