Exemple #1
0
 public 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 = strtoupper($parts[1]);
     $proxy = null;
     if (isset(self::$PROXIES[$typeName])) {
         $proxy = self::$PROXIES[$typeName];
     }
     if (!$proxy) {
         if ($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' && strtoupper($parts[2]) === 'PROPERTY') {
             $proxy = self::$PROXIES[$typeName] = 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') {
             $proxy = self::$PROXIES[$typeName] = new CCrmDealRestProxy();
         } elseif ($typeName === 'COMPANY') {
             $proxy = self::$PROXIES[$typeName] = new CCrmCompanyRestProxy();
         } elseif ($typeName === 'CONTACT') {
             $proxy = self::$PROXIES[$typeName] = new CCrmContactRestProxy();
         } elseif ($typeName === 'ACTIVITY') {
             $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 === 'INVOICE' && strtoupper($parts[2]) === 'STATUS') {
             $proxy = self::$PROXIES[$typeName] = new CCrmStatusInvoiceRestProxy();
         } 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);
 }
Exemple #2
0
 /**
  * @param array        $params
  * @param              $start
  * @param \CRestServer $restServer
  * @return Service\Base
  * @throws RestException
  */
 private function buildService(array $params, $start, \CRestServer $restServer)
 {
     list(, $entityName, $method) = explode('.', $restServer->getMethod());
     $serviceClass = $this->getServiceClassByEntity($entityName);
     $reflection = new \ReflectionClass($serviceClass);
     return $reflection->newInstanceArgs(array($method, $params, $start, $restServer));
 }
Exemple #3
0
 /**
  * @param array        $params
  * @param              $start
  * @param \CRestServer $restServer
  * @return Service\Base
  * @throws RestException
  */
 private function buildService(array $params, $start, \CRestServer $restServer)
 {
     list($prefix, $entityName, $method) = explode('.', $restServer->getMethod());
     if ($prefix === \CRestUtil::METHOD_DOWNLOAD) {
         $entityName = 'file';
         $method = \CRestUtil::METHOD_DOWNLOAD;
     }
     $serviceClass = $this->getServiceClassByEntity($entityName);
     $reflection = new \ReflectionClass($serviceClass);
     return $reflection->newInstanceArgs(array($method, $params, $start, $restServer));
 }