Пример #1
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);
 }