request[$name] = $this->escapeXML($value); } ///////////////////////////////////////////////////////////////////////////////////////////// // Function getValue(name) // // Retrieve a specific value for the give name within the Centinel response collection. ///////////////////////////////////////////////////////////////////////////////////////////// function getValue($name) { if (isset($this->response[$name])) { return $this->response[$name]; }else{ return ""; } } ///////////////////////////////////////////////////////////////////////////////////////////// // Function getRequestXml(name) // // Serialize all elements of the request collection into a XML message, and format the required // form payload according to the Centinel XML Message APIs. The form payload is returned from // the function. ///////////////////////////////////////////////////////////////////////////////////////////// function getRequestXml(){ $queryString = ""; foreach ($this->request as $name => $value) { $queryString = $queryString."<".($name).">".($value)."" ; } $queryString = $queryString.""; return "cmpi_msg=".urlencode($queryString); } ///////////////////////////////////////////////////////////////////////////////////////////// // Function sendHttp(url, "", $timeout) // // HTTP POST the form payload to the url using cURL. // form payload according to the Centinel XML Message APIs. The form payload is returned from // the function. ///////////////////////////////////////////////////////////////////////////////////////////// function sendHttp($url, $connectTimeout="", $timeout) { // verify that the URL uses a supported protocol. if( (strpos($url, "http://")=== 0) || (strpos($url, "https://")=== 0) ) { //Construct the payload to POST to the url. $data = $this->getRequestXml(); // create a new cURL resource $ch = curl_init($url); // set URL and other appropriate options curl_setopt($ch, CURLOPT_POST,1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); // Execute the request. $result = curl_exec($ch); $succeeded = curl_errno($ch) == 0 ? true : false; // close cURL resource, and free up system resources curl_close($ch); // If Communication was not successful set error result, otherwise if(!$succeeded) { $result = $this->setErrorResponse(CENTINEL_ERROR_CODE_8030, CENTINEL_ERROR_CODE_8030_DESC); } // Assert that we received an expected Centinel Message in reponse. if (strpos($result, "") === false) { $result = $this->setErrorResponse(CENTINEL_ERROR_CODE_8010, CENTINEL_ERROR_CODE_8010_DESC); } } else { $result = $this->setErrorResponse(CENTINEL_ERROR_CODE_8000, CENTINEL_ERROR_CODE_8000_DESC); } $parser = new XMLParser; $parser->deserializeXml($result); $this->response = $parser->deserializedResponse; } ///////////////////////////////////////////////////////////////////////////////////////////// // Function setErrorResponse(errorNo, errorDesc) // // Initialize an Error response to ensure that parsing will be handled properly. ///////////////////////////////////////////////////////////////////////////////////////////// function setErrorResponse($errorNo, $errorDesc) { $resultText = ""; $resultText = $resultText."".($errorNo)."" ; $resultText = $resultText."".($errorDesc)."" ; $resultText = $resultText.""; return $resultText; } ///////////////////////////////////////////////////////////////////////////////////////////// // Function escapeXML(value) // // Escaped string converting all '&' to '&' and all '<' to '<'. Return the escaped value. ///////////////////////////////////////////////////////////////////////////////////////////// function escapeXML($elementValue){ $escapedValue = str_replace("&", "&", $elementValue); $escapedValue = str_replace("<", "<", $escapedValue); return $escapedValue; } }