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