function smwf_wsu_processStep1($name) { global $smwgDIIP; require_once $smwgDIIP . '/specials/WebServices/SMW_WebService.php'; require_once $smwgDIIP . '/specials/WebServices/SMW_WSStorage.php'; $webService = WebService::newFromName($name); $parameters = new SimpleXMLElement("<p>" . $webService->getParameters() . "</p>"); $response = ""; $response .= $webService->getProtocol() . ";"; foreach ($parameters->children() as $param) { if ($param->attributes()->name != DI_PROPERTIES_ALIAS || $param->attributes()->path != DI_PROPERTIES) { $response .= $param->attributes()->name; $response .= ";"; $response .= $param->attributes()->optional; $response .= ";"; $response .= $param->attributes()->defaultValue; $response .= ";"; $subParameterProcessor = new SMWSubParameterProcessor($param->asXML(), array()); $nonOptionalSubParameters = $subParameterProcessor->getMissingSubParameters(); foreach ($nonOptionalSubParameters as $name => $value) { $response .= $param->attributes()->name . "." . $name . ";"; $response .= "false;"; if ($value == null) { $response .= ";"; } else { $response .= $value . ";"; } } $optionalSubParameters = $subParameterProcessor->getOptionalSubParameters(); foreach ($optionalSubParameters as $name => $value) { $response .= $param->attributes()->name . "." . $name . ";"; $response .= "true;"; if ($value == null) { $response .= ";"; } else { $response .= $value . ";"; } } $defaultSubParameters = $subParameterProcessor->getDefaultSubParameters(); foreach ($defaultSubParameters as $name => $value) { $response .= $param->attributes()->name . "." . $name . ";"; $response .= "false;"; $response .= $value . ";"; } } } return $response; }
/** * Validate subparameters and fill default values * * @param $subParameterBundle : <parameterName : <subParameterName : value>> * @return : an array which contains an array of error messages and an * array which contains the subparameters together with their values */ public function validateSpecifiedSubParameters($subParameterBundle) { $messages = array(); $response = array(); // search for parameters that were not passed and add // them to the subParametersBundle, so that also their // missing subparameters will be recognized if ($this->mParsedParameters != null) { foreach ($this->mParsedParameters->children() as $child) { $found = false; foreach ($subParameterBundle as $parameterName => $subParameters) { if (strtolower("" . $child["name"]) == strtolower($parameterName)) { $found = true; } } if (!$found) { $subParameterBundle["" . $child["name"]] = array(); } } } foreach ($subParameterBundle as $parameterName => $subParameters) { $parameterDefinition = ""; if ($this->mParsedParameters != null) { foreach ($this->mParsedParameters->children() as $child) { if (strtolower("" . $child["name"]) == strtolower($parameterName)) { $parameterDefinition = $child->asXML(); } } } if ($parameterDefinition == "") { $messages[] = wfMsg('smw_wsuse_wrong_parameter', $parameterName); //handle this!!! //return array($messages, null); } $subParameterProcessor = new SMWSubParameterProcessor($parameterDefinition, $subParameters); $subParameterProcessor->getMissingSubParameters(); $missingSP = $subParameterProcessor->getMissingSubParameters(); foreach ($missingSP as $key => $dontCare) { $messages[] = wfMsg('smw_wsuse_parameter_missing', $parameterName . "." . $key); } $unavailableSP = $subParameterProcessor->getUnavailableSubParameters(); foreach ($unavailableSP as $key => $dontCare) { $messages[] = wfMsg('smw_wsuse_wrong_parameter', $parameterName . "." . $key); } $computedParameterValue = $subParameterProcessor->createParameterValue(); if (count($subParameterProcessor->getDefaultSubParameters()) > 0 || count($subParameterProcessor->getPassedSubParameters()) > 0) { $response = array_merge($response, array($parameterName => $subParameterProcessor->createParameterValue())); } } if (count($messages) > 0) { return array($messages, array()); } return array(null, $response); }