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;
}
Пример #2
0
 /**
  * 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);
 }