- Модуль: intranet
- Путь к файлу: ~/bitrix/modules/intranet/lib/contactcenter.php
- Класс: BitrixIntranetContactCenter
- Вызов: ContactCenter::imopenlinesGetItems
public function imopenlinesGetItems($filter = []): Result
{
$result = new Result();
$module = 'imopenlines';
$itemsList = array();
if (!Loader::includeModule($module))
{
$result->addError(new Error(Loc::getMessage('CONTACT_CENTER_ERROR_MODULE_NOT_LOADED', ['#MODULE_ID' => $module]), self::CC_MODULE_NOT_LOADED));
}
elseif (!Loader::includeModule('imconnector'))
{
$result->addError(new Error(Loc::getMessage('CONTACT_CENTER_ERROR_MODULE_NOT_LOADED', ['#MODULE_ID' => 'imconnector']), self::CC_MODULE_NOT_LOADED));
}
else
{
//For whole list of botframework instances use getListConnector()
$connectors = ImConnectorConnector::getListConnectorMenu(true);
$statusList = ImConnectorStatus::getInstanceAll();
$linkTemplate = Common::getContactCenterPublicFolder() . "connector/";
$codeMap = ImConnectorConnector::getIconClassMap();
//TODO: Delete after exiting 92ee8cf838a0
$cisOnlyConnectors = ['vkgroup', 'vkgrouporder', 'yandex'];
$cisCheck = $this->cisCheck() && $filter["CHECK_REGION"] !== "N";
//TODO: End
$configList = $this->getImopenlinesConfigList();
foreach ($connectors as $code => $connector)
{
//TODO: Delete after exiting 92ee8cf838a0
if ($cisCheck && in_array($code, $cisOnlyConnectors))
{
continue;
}
//TODO: End
$selected = false;
$selectedOrder = false;
$connectionInfoHelperLimit = false;
if (!empty($statusList[$code]))
{
foreach ($statusList[$code] as $lineId => $status)
{
if (($status instanceof ImConnectorStatus))
{
if ($status->isStatus())
{
$selected = true;
$connector['link'] = CUtil::JSEscape( $linkTemplate . '?ID=' . $code . '&LINE=' . $lineId);
if ($code !== 'vkgroup')
{
break;
}
}
if (
$code === 'vkgroup'
&& !empty($status->getData())
)
{
$data = $status->getData();
if ($data["get_order_messages"] === 'Y')
{
$selectedOrder = true;
}
}
}
}
}
if(
$selected === false
&& ImConnectorLimit::canUseConnector($code) !== true)
{
$connectionInfoHelperLimit = ImConnectorLimit::getIdInfoHelperConnector($code);
}
$isAddItemToList = $this->isAddItemToList($filter["ACTIVE"] ?? null, $selected);
if ($isAddItemToList)
{
$itemsList[$code] = [
"NAME" => $connector["name"],
"SELECTED" => $selected,
"CONNECTION_INFO_HELPER_LIMIT" => $connectionInfoHelperLimit,
"LOGO_CLASS" => "ui-icon ui-icon-service-" . $codeMap[$code]
];
$link = CUtil::JSEscape( $linkTemplate . "?ID=" . $code);
if (empty($connector["link"]))
{
$itemsList[$code]["LINK"] = $link;
}
else
{
$itemsList[$code]["LIST"] = $this->getConnectorListItem($code, $configList, $statusList);
if (empty($itemsList[$code]["LIST"]))
{
$itemsList[$code]["LINK"] = $link;
}
}
if ($code === "vkgroup")
{
$isAddItemToList = $this->isAddItemToList($filter["ACTIVE"] ?? null, $selectedOrder);
//Hack for vkgroup order
if ($isAddItemToList)
{
$uri = new Uri($link);
$uri->addParams(array("group_orders" => "Y"));
$itemsList["vkgrouporder"] = array(
"NAME" => Loc::getMessage("CONTACT_CENTER_IMOPENLINES_VK_ORDER"),
"LINK" => CUtil::JSEscape($uri->getUri()),
"SELECTED" => $selectedOrder,
"CONNECTION_INFO_HELPER_LIMIT" => false,
"LOGO_CLASS" => "ui-icon ui-icon-service-" . $codeMap["vkgrouporder"]
);
}
}
if ($code === BitrixImConnectorLibrary::ID_NOTIFICATIONS_CONNECTOR
&& Loader::includeModule('notifications')
&& class_exists(Settings::class)
)
{
$crmPaymentStatus = Settings::getScenarioAvailability(Settings::SCENARIO_CRM_PAYMENT);
if ($crmPaymentStatus === FeatureStatus::UNAVAILABLE)
{
unset($itemsList[$code]);
}
else
{
if (!empty($itemsList[$code]["LIST"]))
{
$uri = new Uri($link);
$uri->addParams(["LINE" => BitrixNotificationsIntegrationImConnector::getLineId()]);
$link = $uri->getUri();
unset($itemsList[$code]["LIST"]);
$itemsList[$code]["LINK"] = CUtil::JSEscape($link);
}
$itemsList[$code]["SELECTED"] = Settings::isScenarioEnabled(Settings::SCENARIO_CRM_PAYMENT);
}
$virtualWhatsAppStatus = Settings::getScenarioAvailability(Settings::SCENARIO_VIRTUAL_WHATSAPP);
if ($virtualWhatsAppStatus !== FeatureStatus::UNAVAILABLE)
{
$infoHelperCode = $virtualWhatsAppStatus === FeatureStatus::LIMITED
? Limit::getInfoHelperCodeForScenario(Settings::SCENARIO_VIRTUAL_WHATSAPP)
: false
;
$uri = new Uri($link);
$uri->addParams(["scenario" => Settings::SCENARIO_VIRTUAL_WHATSAPP]);
$itemsList["virtual_whatsapp"] = [
"NAME" => Loc::getMessage("CONTACT_CENTER_IMOPENLINES_NOTIFICATION_VIRTUAL_WA"),
"LINK" => CUtil::JSEscape($uri->getUri()),
"SELECTED" => Settings::isScenarioEnabled(Settings::SCENARIO_VIRTUAL_WHATSAPP),
"CONNECTION_INFO_HELPER_LIMIT" => $infoHelperCode,
"LOGO_CLASS" => "ui-icon ui-icon-service-" . $codeMap["notifications_virtual_wa"]
];
}
if (Settings::getScenarioAvailability(Settings::SCENARIO_REVERSE_WHATSAPP) !== FeatureStatus::UNAVAILABLE)
{
$uri = new Uri($link);
$uri->addParams(["scenario" => Settings::SCENARIO_REVERSE_WHATSAPP]);
$itemsList["reverse_whatsapp"] = [
"NAME" => Loc::getMessage("CONTACT_CENTER_IMOPENLINES_NOTIFICATION_REVERSE_WA"),
"LINK" => CUtil::JSEscape($uri->getUri()),
"SELECTED" => Settings::isScenarioEnabled(Settings::SCENARIO_REVERSE_WHATSAPP),
"CONNECTION_INFO_HELPER_LIMIT" => false,
"LOGO_CLASS" => "ui-icon ui-icon-service-" . $codeMap["notifications_reverse_wa"]
];
}
}
}
}
}
$this->getKufarItem($itemsList);
$result->setData($itemsList);
return $result;
}