/** * 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; } }