/**
  * Validate the provided value or list of values against the criterion.
  * 
  * @since 0.4
  * 
  * @param Parameter $parameter
  * @param array $parameters
  * 
  * @return CriterionValidationResult
  */
 public function validate(Parameter $parameter, array $parameters)
 {
     $result = new CriterionValidationResult();
     if (is_array($parameter->getValue())) {
         foreach ($parameter->getValue() as $item) {
             if (!$this->doValidation($item, $parameter, $parameters)) {
                 $result->addInvalidItem($item);
             }
         }
         if ($result->hasInvalidItems()) {
             $allInvalid = count($result->getInvalidItems()) == count($parameter->getValue());
             // If the parameter is required and all items are invalid, it's fatal.
             // Else it's high for required, and normal for non-required parameters.
             if ($parameter->isRequired()) {
                 $severity = $allInvalid ? ValidationError::SEVERITY_FATAL : ValidationError::SEVERITY_HIGH;
             } else {
                 $severity = $allInvalid ? ValidationError::SEVERITY_NORMAL : ValidationError::SEVERITY_LOW;
             }
             $result->addError(new ValidationError($this->getListErrorMessage($parameter, $result->getInvalidItems(), $allInvalid), $severity));
         }
     } else {
         if (!$this->doValidation($parameter->getValue(), $parameter, $parameters)) {
             $result->addError(new ValidationError($this->getItemErrorMessage($parameter), $parameter->isRequired() ? ValidationError::SEVERITY_FATAL : ValidationError::SEVERITY_NORMAL));
         }
     }
     return $result;
 }
 /**
  * Validate a parameter against the criterion.
  * 
  * @param Parameter $parameter
  * @param array $parameters
  * 
  * @since 0.4
  */
 public function manipulate(Parameter &$parameter, array &$parameters)
 {
     if (is_array($parameter->getValue())) {
         $value =& $parameter->getValue();
         foreach ($value as &$item) {
             $this->doManipulation($item, $parameter, $parameters);
         }
     } else {
         $this->doManipulation($parameter->getValue(), $parameter, $parameters);
     }
 }
 /**
  * @see ParameterManipulation::manipulate
  * 
  * @since 1.0.1
  */
 public function manipulate(Parameter &$parameter, array &$parameters)
 {
     if (!in_array($parameters['type']->getValue(), $parameter->getValue())) {
         if ($parameters['type']->wasSetToDefault()) {
             if (count($parameter->getValue()) > 0) {
                 $types = $parameter->getValue();
                 $parameters['type']->setValue($types[0]);
             }
         } else {
             array_unshift($parameter->getValue(), $parameters['type']->getValue());
         }
     }
 }
示例#4
0
 private function setParameter(Parameter $param)
 {
     $set_param_head = 'SET_PARAM ' . $param->getKey();
     try {
         if ($param->isRawValue()) {
             $raw_value = self::BEGIN_RAW . "\n" . base64_encode($param->getValue()) . "\n" . self::END_RAW;
             return $this->socket_client->request($set_param_head . ' ' . self::RAW_VALUE_ANNOUNCMENT . "\n" . $raw_value);
         } else {
             return $this->socket_client->request($set_param_head . ' ' . $param->getValue());
         }
     } catch (\Exception $e) {
         throw $e;
     }
 }
示例#5
0
 function testSetup()
 {
     $param = new Parameter('name', 'value');
     $this->assertEquals('NAME', $param->name);
     $this->assertEquals('value', $param->value);
     $this->assertEquals('value', $param->getValue());
 }
示例#6
0
 function testSetupNameLess()
 {
     $card = new Component\VCard();
     $param = new Parameter($card, null, 'URL');
     $this->assertEquals('VALUE', $param->name);
     $this->assertEquals('URL', $param->getValue());
     $this->assertTrue($param->noName);
 }
示例#7
0
 public function testIsImmutable()
 {
     $parameter = new Parameter('foo', [$std = new \stdClass()]);
     // Mutate injected object
     $std->foo = 'bar';
     // Mutate retrieved object
     $parameter->getValue()[0]->foo = 'baz';
     $this->assertEquals(new Parameter('foo', [new \stdClass()]), $parameter);
 }
 /**
  * @see ParameterManipulation::manipulate
  * 
  * @since 0.7
  */
 public function manipulate(Parameter &$parameter, array &$parameters)
 {
     global $egMapsOLLayerGroups, $egMapsOLAvailableLayers;
     $layerDefs = array();
     $layerNames = array();
     foreach ($parameter->getValue() as $layerOrGroup) {
         $lcLayerOrGroup = strtolower($layerOrGroup);
         // Layer groups. Loop over all items and add them when not present yet.
         if (array_key_exists($lcLayerOrGroup, $egMapsOLLayerGroups)) {
             foreach ($egMapsOLLayerGroups[$lcLayerOrGroup] as $layerName) {
                 if (!in_array($layerName, $layerNames)) {
                     if (is_array($egMapsOLAvailableLayers[$layerName])) {
                         $layerDefs[] = 'new ' . $egMapsOLAvailableLayers[$layerName][0];
                     } else {
                         $layerDefs[] = 'new ' . $egMapsOLAvailableLayers[$layerName];
                     }
                     $layerNames[] = $layerName;
                 }
             }
         } elseif (array_key_exists($lcLayerOrGroup, $egMapsOLAvailableLayers)) {
             if (!in_array($lcLayerOrGroup, $layerNames)) {
                 if (is_array($egMapsOLAvailableLayers[$lcLayerOrGroup])) {
                     $layerDefs[] = 'new ' . $egMapsOLAvailableLayers[$lcLayerOrGroup][0];
                 } else {
                     $layerDefs[] = 'new ' . $egMapsOLAvailableLayers[$lcLayerOrGroup];
                 }
                 $layerNames[] = $lcLayerOrGroup;
             }
         } else {
             $title = Title::newFromText($layerOrGroup, Maps_NS_LAYER);
             if ($title->getNamespace() == Maps_NS_LAYER && $title->exists()) {
                 $layerPage = new MapsLayerPage($title);
                 if ($layerPage->hasValidDefinition('openlayers')) {
                     $layer = $layerPage->getLayer();
                     if (!in_array($layerOrGroup, $layerNames)) {
                         $layerDefs[] = $layer->getJavaScriptDefinition();
                         $layerNames[] = $layerOrGroup;
                     }
                 } else {
                     wfWarn("Invalid layer ({$layerOrGroup}) encountered after validation.");
                 }
             } else {
                 wfWarn("Invalid layer ({$layerOrGroup}) encountered after validation.");
             }
         }
     }
     $parameter->setValue($layerDefs);
     MapsMappingServices::getServiceInstance('openlayers')->addLayerDependencies($this->getDependencies($layerNames));
 }
 public function testParameter()
 {
     $parameter = new Parameter('foo');
     $this->assertSame('foo', $parameter->getValue());
     $this->assertSame('foo', $parameter());
 }
示例#10
0
 /**
  * @see ParameterManipulation::manipulate
  * 
  * @since 0.4
  */
 public function manipulate(Parameter &$parameter, array &$parameters)
 {
     $parameter->setValue($this->wrapper . implode($this->wrapper . $this->delimiter . $this->wrapper, $parameter->getValue()) . $this->wrapper);
 }
示例#11
0
 /**
  * @see ParameterCriterion::validate
  */
 public function validate(Parameter $parameter, array $parameters)
 {
     return count($parameter->getValue()) == count(array_unique($this->careAboutCapitalization ? $parameter->getValue() : array_map('strtolower', $parameter->getValue())));
 }
示例#12
0
 /**
  * @see ParameterManipulation::manipulate
  *
  * @since 0.7
  */
 public function manipulate(Parameter &$parameter, array &$parameters)
 {
     global $egMapsOLLayerGroups, $egMapsOLAvailableLayers;
     $layerDefs = array();
     $usedLayers = array();
     foreach ($parameter->getValue() as $layerOrGroup) {
         $lcLayerOrGroup = strtolower($layerOrGroup);
         // Layer groups. Loop over all items and add them if not present yet.
         if (array_key_exists($lcLayerOrGroup, $egMapsOLLayerGroups)) {
             foreach ($egMapsOLLayerGroups[$lcLayerOrGroup] as $layerName) {
                 if (!in_array($layerName, $usedLayers)) {
                     if (is_array($egMapsOLAvailableLayers[$layerName])) {
                         $layerDefs[] = 'new ' . $egMapsOLAvailableLayers[$layerName][0];
                     } else {
                         $layerDefs[] = 'new ' . $egMapsOLAvailableLayers[$layerName];
                     }
                     $usedLayers[] = $layerName;
                 }
             }
         } elseif (array_key_exists($lcLayerOrGroup, $egMapsOLAvailableLayers)) {
             if (!in_array($lcLayerOrGroup, $usedLayers)) {
                 if (is_array($egMapsOLAvailableLayers[$lcLayerOrGroup])) {
                     $layerDefs[] = 'new ' . $egMapsOLAvailableLayers[$lcLayerOrGroup][0];
                 } else {
                     $layerDefs[] = 'new ' . $egMapsOLAvailableLayers[$lcLayerOrGroup];
                 }
                 $usedLayers[] = $lcLayerOrGroup;
             }
         } else {
             $layerParts = explode($this->groupNameSep, $layerOrGroup, 2);
             $layerGroup = $layerParts[0];
             $layerName = count($layerParts) > 1 ? $layerParts[1] : null;
             $title = Title::newFromText($layerGroup, Maps_NS_LAYER);
             if ($title !== null && $title->getNamespace() == Maps_NS_LAYER) {
                 /**
                  * TODO/FIXME: This shouldn't be here and using $wgParser, instead it should
                  * be somewhere around MapsBaseMap::renderMap. But since we do a lot more than
                  * 'parameter manipulation' in here, we already diminish the information needed
                  * for this which will never arrive there. Perhaps the whole
                  * MapsLayer::getJavaScriptDefinition() shouldn't be done here.
                  */
                 global $wgParser;
                 // add dependency to the layer page so if the layer definition gets updated,
                 // the page where it is used will be updated as well:
                 $rev = Revision::newFromTitle($title);
                 $wgParser->getOutput()->addTemplate($title, $title->getArticleID(), $rev->getId());
                 // if the whole layer group is not yet loaded into the map and the group exists:
                 if (!in_array($layerGroup, $usedLayers) && $title->exists()) {
                     $layerPage = new MapsLayerPage($title);
                     if ($layerName !== null) {
                         // load specific layer with name:
                         $layer = MapsLayers::loadLayer($title, $layerName);
                         $layers = new MapsLayerGroup($layer);
                         $usedLayer = $layerOrGroup;
                     } else {
                         // load all layers from group:
                         $layers = MapsLayers::loadLayerGroup($title);
                         $usedLayer = $layerGroup;
                     }
                     foreach ($layers->getLayers() as $layer) {
                         if (($layer->getName() === null || !in_array($layerGroup . $this->groupNameSep . $layer->getName(), $usedLayers)) && $layer->isOk()) {
                             $layerDefs[] = $layer->getJavaScriptDefinition();
                         }
                     }
                     $usedLayers[] = $usedLayer;
                     // have to add this after loop of course!
                 }
             } else {
                 wfWarn("Invalid layer ({$layerOrGroup}) encountered after validation.");
             }
         }
     }
     $parameter->setValue($layerDefs);
     MapsMappingServices::getServiceInstance('openlayers')->addLayerDependencies($this->getDependencies($usedLayers));
 }
示例#13
0
 /**
  * @see ParameterCriterion::validate
  */
 public function validate(Parameter $parameter, array $parameters)
 {
     $count = count($parameter->getValue());
     return ($this->upperBound === false || $count <= $this->upperBound) && ($this->lowerBound === false || $count >= $this->lowerBound);
 }
 /**
  * @covers phpDocumentor\Transformer\Template\Parameter::getValue
  * @covers phpDocumentor\Transformer\Template\Parameter::setValue
  */
 public function testSetAndGetValue()
 {
     $this->assertSame(null, $this->fixture->getValue());
     $this->fixture->setValue('value');
     $this->assertSame('value', $this->fixture->getValue());
 }
	/**
	 * @see ItemParameterCriterion::getFullListErrorMessage
	 */	
	protected function getFullListErrorMessage( Parameter $parameter ) {
		global $wgLang;

		$originalCount = count( $this->allowedValues );

		if ( $originalCount > 15 ) {
			$allowedValues = array_slice( $this->allowedValues, 0, 13 );
			$omitCount = $originalCount - count( $allowedValues );

			return wfMsgExt(
				'validator-list-error-accepts-only-omitted',
				'parsemag',
				$parameter->getOriginalName(),
				$wgLang->listToText( $allowedValues ),
				count( $allowedValues ),
				$wgLang->formatNum( $omitCount )
			);			
		}
		else {
			return wfMsgExt(
				'validator-list-error-accepts-only',
				'parsemag',
				$parameter->getOriginalName(),
				$wgLang->listToText( $this->allowedValues ),
				count( $this->allowedValues ),
				$parameter->getValue()
			);			
		}
	}
示例#16
0
 /**
  * Configures wrapped formatter class with any attributes on this element.
  */
 public function prepare()
 {
     if (!$this->formatter) {
         throw new BuildException("No formatter specified (use type or classname attribute)", $this->getLocation());
     }
     $out = $this->getOutputWriter();
     print "Setting output writer to: " . get_class($out) . "\n";
     $this->formatter->setOutput($out);
     if ($this->formatter instanceof PlainPDOResultFormatter) {
         // set any options that apply to the plain formatter
         $this->formatter->setShowheaders($this->showheaders);
         $this->formatter->setRowdelim($this->rowdelimiter);
         $this->formatter->setColdelim($this->coldelimiter);
     } elseif ($this->formatter instanceof XMLPDOResultFormatter) {
         // set any options that apply to the xml formatter
         $this->formatter->setEncoding($this->encoding);
         $this->formatter->setFormatOutput($this->formatoutput);
     }
     foreach ($this->formatterParams as $param) {
         $param = new Parameter();
         $method = 'set' . $param->getName();
         if (!method_exists($this->formatter, $param->getName())) {
             throw new BuildException("Formatter " . get_class($this->formatter) . " does not have a {$method} method.", $this->getLocation());
         }
         call_user_func(array($this->formatter, $method), $param->getValue());
     }
 }
示例#17
0
 /**
  * @see ParameterCriterion::validate
  */
 public function validate(Parameter $parameter, array $parameters)
 {
     $count = count($parameter->getValue());
     return $count <= $this->upperBound && $count >= $this->lowerBound;
 }