"); if ($start) { $start += strlen("

"); $end = strpos($result, "

"); $cleanResult = substr($result, $start, $end-$start); } return $cleanResult; } public static function GetExtension($mimeType) { $extension="xml"; if ($mimeType == "application/agf") { $extension="agf"; } elseif ($mimeType == "application/octet-stream") { //TODO: what extension should we put for binary data $extension="bin"; } elseif ($mimeType == "model/vnd.dwf") { $extension = "dwf"; } elseif (strstr($mimeType, "ePlot") != FALSE) { $extension = "dwf"; } elseif ($mimeType == "image/jpeg") { $extension = "jpg"; } elseif ($mimeType == "image/png") { $extension = "png"; } elseif (strstr($mimeType,"text/plain") != FALSE) { $extension = "txt"; } elseif ($mimeType == "image/tiff") { $extension = "tiff"; } elseif (strstr($mimeType,"text/html") != FALSE) { $extension = "html"; } elseif ($mimeType == "application/x-w2d") { $extension = "dwf"; } return $extension; } public static function RemoveTimeStamp($result) { $newResult=$result; while (substr_count($result,"")>0) { $newResult=substr($result, 0, strpos($result, "")); $newResult.=substr($result, strpos($result, "")+strlen("")); $result=$newResult; } return $newResult; } public static function RemoveLogEntryTimeStamp($result) { $newResult = $result; while (substr_count($result, "<") > 0) { $newResult = substr($result, 0, strpos($result, "<")); $newResult.= substr($result, strpos($result, ">")+1); $result = $newResult; } return $newResult; } public static function RemoveDwfSectionName($actualResult) { $newResult = substr($actualResult, strpos($actualResult, ".w2d")); if (0!=strpos($newResult, "EndOfDWF")) { $newResult = substr($newResult, 0, strpos($newResult, "EndOfDWF")); } return $newResult; } public static function SpecialDataHandling($operation, $resultData, $contentType) { if ( $operation == "ENUMERATERESOURCES") { $resultData = self::RemoveTimeStamp($resultData); } elseif ($operation == "GETDRAWINGLAYER") { $resultData = self::RemoveDwfSectionName($resultData); } elseif ($operation == "GETDRAWINGSECTION") { $resultData = self::RemoveDwfSectionName($resultData); } elseif ($operation == "GETLOG") { $resultData = self::RemoveLogEntryTimeStamp($resultData); } elseif ($operation == "GETMAP") { $resultData = self::GetMapHeader($resultData); } elseif ($operation == "GETLONGTRANSACTIONS") { $resultData = self::RemoveCreationDate($resultData); } if (strstr($contentType,"text/xml") != FALSE) { $doc = new DOMDocument(); $doc->preserveWhiteSpace = true; if ($doc->loadXML($resultData)) { $resultData = self::SortElement($doc, ''); } } return $resultData; } //Does validation for operation that do not allow straight string comparison between expected and actual data public static function SpecialValidation($operation, &$actualData, $expectedData) { $success = false; if ($operation == "GETFEATUREPROVIDERS") { $success = self::GetFeatureProvidersValidation($actualData, $expectedData); } return $success; } //Hack...returns the part of the exception from the beginning up to and including "exception occurred" public static function ProcessExceptionMessage($resultData) { if (stripos($resultData, "exception occurred")) { $length = stripos($resultData, "exception occurred")+strlen("exception occurred"); $resultData = substr($resultData, 0, $length); } return $resultData; } //Check if we have DWF 6.01 in the header. For now this is the only way to validate maps public static function GetMapHeader($resultData) { if (substr_count($resultData, "(DWF V06.01)")>0) { $resultData = "(DWF V06.01)"; } return $resultData; } //The expectedData is comma separated list of all providers. //The function checks if all the providers in the list are in the $actualData document //Overwrites the $actualData with an error message to provide some feedback to the user in case of failure public static function GetFeatureProvidersValidation(&$actualData, $expectedData) { $pass = true; $errMsg = ""; $providers = explode(",", $expectedData); foreach ($providers as $providerName) { if (substr_count($actualData, $providerName)==0) { $pass = false; $errMsg .= sprintf("Provider not found: %s \n",$providerName); } } $actualData = $errMsg; return $pass; } public static function RemoveCreationDate($resultData) { $newResult=$resultData; while (substr_count($resultData,"")>0) { $newResult=substr($resultData, 0, strpos($resultData, "")); $newResult.=substr($resultData, strpos($resultData, "")+strlen("")); $resultData=$newResult; } return $newResult; } public static function SortElement($elem, $preText) { $elemArray = array(); $elemString = ''; if ($elem->hasChildNodes()) { $children = $elem->childNodes; for($i = 0; $i < $children->length; $i++) { $child = $children->item($i); if ($child->nodeType == XML_ELEMENT_NODE) { $elemValue =self::SortElement($child, $preText.' '); if (strlen($elemValue) > 0) { array_push($elemArray, $elemValue); } } else if ($child->nodeType == XML_TEXT_NODE) { $content = trim($child->textContent); if (strlen($content) > 0) { array_push($elemArray,$content); } } } sort($elemArray); foreach ($elemArray as $str) { $elemString .= $str; } } $endTag = ''; if (sizeof($elemArray) > 1 && strlen($elemString) > 0) { $endTag = "\n".$preText; } $tagName = ''; if (is_a($elem,'DOMDocument') == false) { $tagName = $elem->tagName; } $endTag .= ""; if ("" != $tagName) { $elemString = "\n".$preText."<".$tagName.">".$elemString.$endTag; } return $elemString; } } ?>