Требуется разработчик! Поддержка серверов

CWSSOAPResponser::ProcessRequestBody: метод Битрикс

Постоянная ссылка: http://bxapi.ru/src/?id=170544

<?php 
//    CWSSOAPResponser::ProcessRequestBody()
//    /bitrix/modules/webservice/classes/general/soap/soapserver.php:67

    
function ProcessRequestBody(&$cserver$body)
    {
        
$functionName $body->name();
        
$namespaceURI $body->namespaceURI();
        
$requestNode $body;

        
// If this is request name in functionName, get functionName.
        
if (!in_array($functionName$this->FunctionList)
            and isset(
$this->MessageTags[$functionName])
        )
        {
            
$functionName $this->MessageTags[$functionName];
        }

        if (!
in_array($functionName$this->FunctionList))
        {
            
CSOAPServer::ShowSOAPFault("Trying to access unregistered function: ".$functionName);
            return 
true;
        }

        
$objectName "";
        
$params = array();

        
$paramsDecoder = new CSOAPResponse($functionName$namespaceURI);
        
$paramsDecoder->setTypensVars($this->TypensVars);

        if (!isset(
$this->TypensVars[$functionName]) or
            !isset(
$this->TypensVars[$functionName]["myclassname"]) or
            !isset(
$this->TypensVars[$functionName]["input"])
        )
        {
            
CSOAPServer::ShowSOAPFault("Requested function has no type specified: ".$functionName);
            return 
true;
        }

        
$objectName $this->TypensVars[$functionName]["myclassname"];
        
$inputParams $this->TypensVars[$functionName]["input"];

        
$httpAuth "N";
        if (isset(
$this->TypensVars[$functionName]["httpauth"]))
        {
            
$httpAuth $this->TypensVars[$functionName]["httpauth"];
        }

        if (
$httpAuth == "Y" and !CWebService::MethodRequireHTTPAuth($objectName$functionName))
        {
            
CSOAPServer::ShowSOAPFault("Requested function requires HTTP Basic Auth to be done before.");
            return 
true;
        }

        
$requestParams = array(); // reorganize params
        
foreach ($requestNode->children() as $parameterNode)
        {
            if (!
$parameterNode->name())
                continue;
            
$requestParams[$parameterNode->name()] = $parameterNode;
        }

        
// check parameters/decode // check strict params
        
foreach ($inputParams as $pname => $param)
        {
            
$decoded null;

            if (isset(
$requestParams[$pname]))
            {
                
$decoded $paramsDecoder->decodeDataTypes($requestParams[$pname]);
            }

            if (
is_object($decoded) and (get_class($decoded) == "CSOAPFault" or get_class($decoded) == "csoapfault"))
            {
                
CSOAPServer::ShowSOAPFault($decoded);
                return 
true;
            }

            if (
                !isset(
$decoded) and (!isset($param["strict"])
                or (isset(
$param["strict"]) and $param["strict"] == "strict"))
            )
            {
                
CSOAPServer::ShowSOAPFault("Request has not enough params of strict type to be decoded. ");
                return 
true;
            }
            
$params[] = $decoded;
        }

        unset(
$paramsDecoder);

        
$object null;

        if (
class_exists($objectName))
            
$object = new $objectName;

        if (
is_object($object) && method_exists($object$functionName))
        {
            
$this->ShowResponse(
                
$cserver,
                
$functionName,
                
$namespaceURI,
                
call_user_func_array(
                    array(
$object$functionName),
                    
$params
                
)
            );
        }
        else if (!
class_exists($objectName))
        {
            
$this->ShowResponse(
                
$cserver,
                
$functionName,
                
$namespaceURI,
                new 
CSOAPFault('Server Error''Object not found')
            );
        }
        else
        {
            
$this->ShowResponse(
                
$cserver,
                
$functionName,
                
$namespaceURI,
                new 
CSOAPFault('Server Error''Method not found')
            );
        }

        return 
true;
    }

Блог разработчика

9 августа 2016 ResizeImageGet и простой водяной знак налету

Сегодня поговорим о том как проще всего воткнуть водяной знак на картинки в Битрикс. Например, на все изображения каталога.

21 июля 2016 Добавление вкладки в CRM коробки Битрикс24

В этом посте я покажу, как легко и просто добавить вкладку в сущность CRM. И не просто добавить, а вывести там свой контент.

21 июля 2016 Как просто обращаться из коробки Битрикс24 на сайт на базе Битрикс

К примеру вам хочется внутренним скриптом дернуть с сайта-магазина информацию, которая там, в свою очередь, закрыта некоторыми правами. Например, админскими. Можно конечно мутить свой REST, или иной формат общения, но проще всего воспользоваться штатным инструментом:

Текст сообщения*
Загрузить изображение