Exemplo n.º 1
0
 /**
  * ExecuteAction Request
  *
  * @param string $requestName name of Action to request
  * @param $parameters
  * @param $requestType
  *
  * @return stdClass returns std class object of responded data
  * @throws Exception
  * @internal param $Array (optional)
  */
 public function executeAction($requestName, $parameters = null, $requestType = null)
 {
     try {
         /* Send the security request and get a security token */
         $securityToken = $this->authentication->getOrganizationSecurityToken();
         /* Generate the XML for the Body of a Execute Action request */
         $executeActionNode = SoapRequestsGenerator::generateExecuteActionRequest($requestName, $parameters, $requestType);
         $this->logger->debug('Executing Execute request', ['request' => $executeActionNode->C14N()]);
         /* Turn this into a SOAP request, and send it */
         $executeActionRequest = $this->generateSoapRequest($this->settings->organizationUrl, $this->soapActions->getSoapAction('organization', 'Execute'), $securityToken, $executeActionNode);
         $soapResponse = self::getSoapResponse($this->settings->organizationUrl, $executeActionRequest);
         $this->logger->debug('Finished executing Execute request', ['response' => $soapResponse]);
         /* Load the XML into a DOMDocument */
         $soapResponseDOM = new DOMDocument();
         $soapResponseDOM->loadXML($soapResponse);
         /* Find the UpdateResponse */
         $executeResultNode = null;
         foreach ($soapResponseDOM->getElementsByTagName('ExecuteResult') as $node) {
             $executeResultNode = $node;
             break;
         }
         unset($node);
         if ($executeResultNode == null) {
             throw new Exception('Could not find ExecuteResult node in XML returned from Server');
         }
         $keyValuesArray = array();
         foreach ($executeResultNode->getElementsByTagName('KeyValuePairOfstringanyType') as $keyValueNode) {
             $keyValuesArray[$keyValueNode->getElementsByTagName('key')->item(0)->textContent] = $keyValueNode->getElementsByTagName('value')->item(0)->textContent;
         }
         /* Add the Entity to the KeyValues Array as a stdClass Object */
         $responseDataArray = (object) $keyValuesArray;
         /* Return structured Key/Value object */
         return $responseDataArray;
     } catch (Exception $ex) {
         $this->logger->error('Caught exception during Execute request', ['exception' => $ex]);
         throw $ex;
     }
 }