• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/lib/contactcenter.php
  • Класс: BitrixIntranetContactCenter
  • Вызов: ContactCenter::restGetItems
public function restGetItems($filter = array())
{
	$result = new Result();
	$module = "rest";
	$itemsList = array();

	if (!Loader::includeModule($module))
	{
		$result->addError(new Error(Loc::getMessage("CONTACT_CENTER_ERROR_MODULE_NOT_LOADED", array("#MODULE_ID" => $module)), self::CC_MODULE_NOT_LOADED));
	}
	else
	{
		$itemsList = [];

		$marketplaceApps = $this->getMarketplaceAppsByTag(['contact_center', 'partners', static::getZone()]);
		if (!empty($marketplaceApps['ITEMS']))
		{
			$itemsList = $this->prepareMarketplaceApps($marketplaceApps);
		}

		$itemsList = array_merge($itemsList, array(
			'ccplacement' => array(
				"NAME" => Loc::getMessage("CONTACT_CENTER_REST_CC_PLACEMENT_2"),
				"LOGO_CLASS" => "ui-icon ui-icon-service-rest-contact-center",
				"SELECTED" => false
			),
			'chatbot' => array(
				"NAME" => Loc::getMessage("CONTACT_CENTER_REST_CHATBOT"),
				"LOGO_CLASS" => "ui-icon ui-icon-service-chatbot",
				"SELECTED" => false
			),
			'telephonybot' => array(
				"NAME" => Loc::getMessage("CONTACT_CENTER_REST_TELEPHONYBOT"),
				"LOGO_CLASS" => "ui-icon ui-icon-service-telephonybot",
				"SELECTED" => false
			)
		));

		$dynamicItems = $this->getDynamicItems();

		if (count($dynamicItems) > 0)
		{
			$itemsList = array_merge($itemsList, $dynamicItems);
		}

		$placements = BitrixRestPlacementTable::getHandlersList(CIntranetRestService::CONTACT_CENTER_PLACEMENT);
		$appIdList = array();
		$appList = array();

		foreach ($placements as $placement)
		{
			$appIdList[] = $placement["APP_ID"];
		}
		$appIdList = array_unique($appIdList);
		$parameters = array("filter" => array("ID" => $appIdList));

		if (isset($filter["ACTIVE"]))
		{
			$parameters["filter"]["ACTIVE"] = $filter["ACTIVE"];
		}

		$appsCollection = BitrixRestAppTable::getList($parameters);

		while ($app = $appsCollection->Fetch())
		{
			$appList[$app["ID"]] = $app;
		}

		foreach ($placements as $placement)
		{
			$app = $appList[$placement["APP_ID"]];
			$selected = ($app["ACTIVE"] == BitrixRestAppTable::ACTIVE);
			$itemsList[$app["CODE"]] = array (
				"NAME" => ($placement["TITLE"] <> '') ? $placement["TITLE"] : $placement["APP_NAME"],
				"LINK" =>  CUtil::JSEscape(SITE_DIR . "marketplace/app/" . $app["ID"] . "/"),
				"SELECTED" => $selected,
				"PLACEMENT_ID" => $placement["ID"],
				"APP_ID" => $app["ID"],
				"LOGO_CLASS" => "ui-icon ui-icon-service-common"
			);
		}
	}

	$result->setData($itemsList);

	return $result;
}