CCrmRestService::onRestServiceMethod

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. CCrmRestService
  4. onRestServiceMethod
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/restservice.php
  • Класс: \CCrmRestService
  • Вызов: CCrmRestService::onRestServiceMethod
static function onRestServiceMethod($arParams, $nav, CRestServer $server)
{
	if(!CCrmPerms::IsAccessEnabled())
	{
		throw new RestException('Access denied.');
	}

	$methodName = $server->getMethod();

	$parts = explode('.', $methodName);
	$partCount = count($parts);
	if($partCount < 3 || $parts[0] !== 'crm')
	{
		throw new RestException("Method '{$methodName}' is not supported in current context.");
	}

	$typeName = mb_strtoupper($parts[1]);
	$proxy = null;

	$subType = isset($parts[2])? mb_strtoupper($parts[2]) : '';

	if (isset(self::$PROXIES[$typeName.'.'.$subType]))
	{
		$proxy = self::$PROXIES[$typeName.'.'.$subType];
	}
	else if(isset(self::$PROXIES[$typeName]))
	{
		$proxy = self::$PROXIES[$typeName];
	}

	if(!$proxy)
	{
		if($typeName === 'SETTINGS')
		{
			$proxy = self::$PROXIES[$typeName] = new CCrmSettingsRestProxy();
		}
		elseif($typeName === 'ENUM')
		{
			$proxy = self::$PROXIES[$typeName] = new CCrmEnumerationRestProxy();
		}
		elseif($typeName === 'MULTIFIELD')
		{
			$proxy = self::$PROXIES[$typeName] = new CCrmMultiFieldRestProxy();
		}
		elseif($typeName === 'CURRENCY')
		{
			$proxy = self::$PROXIES[$typeName] = new CCrmCurrencyRestProxy();
		}
		elseif($typeName === 'CATALOG')
		{
			$proxy = self::$PROXIES[$typeName] = new CCrmCatalogRestProxy();
		}
		elseif($typeName === 'PRODUCT' && $subType === 'PROPERTY')
		{
			$proxy = self::$PROXIES[$typeName.'.'.$subType] = new CCrmProductPropertyRestProxy();
		}
		elseif($typeName === 'PRODUCT')
		{
			$proxy = self::$PROXIES[$typeName] = new CCrmProductRestProxy();
		}
		elseif($typeName === 'PRODUCTSECTION')
		{
			$proxy = self::$PROXIES[$typeName] = new CCrmProductSectionRestProxy();
		}
		elseif($typeName === 'PRODUCTROW')
		{
			$proxy = self::$PROXIES[$typeName] = new CCrmProductRowRestProxy();
		}
		elseif($typeName === 'STATUS')
		{
			$proxy = self::$PROXIES[$typeName] = new CCrmStatusRestProxy();
		}
		elseif($typeName === 'LEAD')
		{
			$proxy = self::$PROXIES[$typeName] = new CCrmLeadRestProxy();
		}
		elseif($typeName === 'DEAL')
		{
			if($subType === 'RECURRING')
			{
				$proxy = self::$PROXIES[$typeName.'.'.$subType] = new CCrmDealRecurringRestProxy();
			}
			else
			{
				$proxy = self::$PROXIES[$typeName] = new CCrmDealRestProxy();
			}
		}
		elseif($typeName === 'DEALCATEGORY')
		{
			$proxy = self::$PROXIES[$typeName] = new CCrmDealCategoryProxy();
		}
		elseif($typeName === 'COMPANY')
		{
			$proxy = self::$PROXIES[$typeName] = new CCrmCompanyRestProxy();
		}
		elseif($typeName === 'CONTACT')
		{
			$proxy = self::$PROXIES[$typeName] = new CCrmContactRestProxy();
		}
		elseif($typeName === 'QUOTE')
		{
			$proxy = self::$PROXIES[$typeName] = new CCrmQuoteRestProxy();
		}
		elseif($typeName === 'ITEM')
		{
			$proxy = self::$PROXIES[$typeName] = new CCrmItemRestProxy();
		}
		elseif($typeName === 'INVOICE' && $subType === 'STATUS')
		{
			$proxy = self::$PROXIES[$typeName.'.'.$subType] = new CCrmStatusInvoiceRestProxy();
		}
		elseif($typeName === 'INVOICE')
		{
			if($subType === 'RECURRING')
			{
				$proxy = self::$PROXIES[$typeName.'.'.$subType] = new CCrmInvoiceRecurringRestProxy();
			}
			else
			{
				$proxy = self::$PROXIES[$typeName] = new CCrmInvoiceRestProxy();
			}
		}
		elseif($typeName === 'REQUISITE')
		{
			if($subType === 'LINK')
			{
				$proxy = self::$PROXIES[$typeName.'.'.$subType] = new CCrmRequisiteLinkRestProxy();
			}
			else
			{
				$proxy = self::$PROXIES[$typeName] = new CCrmRequisiteRestProxy();
			}
		}
		elseif($typeName === 'ADDRESS')
		{
			$proxy = self::$PROXIES[$typeName] = new CCrmAddressRestProxy();
		}
		elseif($typeName === 'ADDRESSTYPE')
		{
			$proxy = self::$PROXIES[$typeName] = new CCrmAddressTypeRestProxy();
		}
		elseif($typeName === 'ACTIVITY')
		{
			if($subType === 'TYPE')
			{
				$proxy = self::$PROXIES[$typeName.'.'.$subType] = new \Bitrix\Crm\Activity\Rest\TypeProxy();
			}
			else
			{
				$proxy = self::$PROXIES[$typeName] = new CCrmActivityRestProxy();
			}
		}
		elseif($typeName === 'DUPLICATE')
		{
			$proxy = self::$PROXIES[$typeName] = new CCrmDuplicateRestProxy();
		}
		elseif($typeName === 'LIVEFEEDMESSAGE')
		{
			$proxy = self::$PROXIES[$typeName] = new CCrmLiveFeedMessageRestProxy();
		}
		elseif($typeName === 'USERFIELD')
		{
			$proxy = self::$PROXIES[$typeName] = new CCrmUserFieldRestProxy(CCrmOwnerType::Undefined);
		}
		elseif($typeName === 'EXTERNALCHANNEL')
		{
			if($subType === 'CONNECTOR')
			{
				$proxy = self::$PROXIES[$typeName.'.'.$subType] = new CCrmExternalChannelConnectorRestProxy();
			}
			else
			{
				$proxy = self::$PROXIES[$typeName] = new CCrmExternalChannelRestProxy();
			}
		}
		elseif($typeName === 'WEBFORM')
		{
			$proxy = self::$PROXIES[$typeName] = new CCrmWebformRestProxy();
		}
		elseif($typeName === 'SITEBUTTON')
		{
			$proxy = self::$PROXIES[$typeName] = new CCrmSiteButtonRestProxy();
		}
		elseif($typeName === 'PERSONTYPE')
		{
			$proxy = self::$PROXIES[$typeName] = new CCrmPersonTypeRestProxy();
		}
		elseif($typeName === 'PAYSYSTEM')
		{
			$proxy = self::$PROXIES[$typeName] = new CCrmPaySystemRestProxy();
		}
		elseif($typeName === 'MEASURE')
		{
			$proxy = self::$PROXIES[$typeName] = new CCrmMeasureRestProxy();
		}
		elseif($typeName === 'AUTOMATION')
		{
			$proxy = self::$PROXIES[$typeName] = new \Bitrix\Crm\Automation\Rest\Proxy();
		}
		elseif($typeName === 'TIMELINE')
		{
			if ($subType === 'COMMENT')
			{
				$proxy = self::$PROXIES[$typeName.'.'.$subType] = new CCrmTimelineCommentRestProxy();
			}
			elseif ($subType === 'BINDINGS')
			{
				$proxy = self::$PROXIES[$typeName.'.'.$subType] = new CCrmTimelineBindingRestProxy();
			}
		}
		else
		{
			throw new RestException("Could not find proxy for method '{$methodName}'.");
		}
		$proxy->setServer($server);
	}
	return $proxy->processMethodRequest(
		$parts[2],
		$partCount > 3 ? array_slice($parts, 3) : array(),
		$arParams,
		$nav,
		$server
	);
}

Добавить комментарий