示例#1
0
 /**
  * @param FieldConfigInterface $config
  * @param                      $comparisonFunc
  * @param ValuesBag            $valuesBag
  */
 private function optimizeValuesInValuesBag(FieldConfigInterface $config, $comparisonFunc, ValuesBag $valuesBag)
 {
     if ($valuesBag->hasSimpleValues()) {
         $values = $valuesBag->getSimpleValues();
         uasort($values, $comparisonFunc);
         $this->listToRanges($values, $valuesBag, $config);
     }
     if ($valuesBag->hasExcludedSimpleValues()) {
         $excludes = $valuesBag->getExcludedSimpleValues();
         uasort($excludes, $comparisonFunc);
         $this->listToRanges($excludes, $valuesBag, $config, true);
     }
 }
示例#2
0
 /**
  * @param ValuesBag $valuesBag
  * @param \DOMNode  $parent
  *
  * @return \DOMNode
  */
 private function exportValuesToNode(ValuesBag $valuesBag, \DOMNode $parent, FieldConfigInterface $field)
 {
     if ($valuesBag->hasSimpleValues()) {
         $valuesNode = $this->document->createElement('single-values');
         foreach ($valuesBag->getSimpleValues() as $value) {
             $element = $this->document->createElement('value');
             $element->appendChild($this->document->createTextNode($this->normToView($value, $field)));
             $valuesNode->appendChild($element);
         }
         $parent->appendChild($valuesNode);
     }
     if ($valuesBag->hasExcludedSimpleValues()) {
         $valuesNode = $this->document->createElement('excluded-values');
         foreach ($valuesBag->getExcludedSimpleValues() as $value) {
             $element = $this->document->createElement('value');
             $element->appendChild($this->document->createTextNode($this->normToView($value, $field)));
             $valuesNode->appendChild($element);
         }
         $parent->appendChild($valuesNode);
     }
     if ($valuesBag->has(Range::class)) {
         $valuesNode = $this->document->createElement('ranges');
         foreach ($valuesBag->get(Range::class) as $value) {
             $this->exportRangeValueToNode($valuesNode, $value, $field);
         }
         $parent->appendChild($valuesNode);
     }
     if ($valuesBag->has(ExcludedRange::class)) {
         $valuesNode = $this->document->createElement('excluded-ranges');
         foreach ($valuesBag->get(ExcludedRange::class) as $value) {
             $this->exportRangeValueToNode($valuesNode, $value, $field);
         }
         $parent->appendChild($valuesNode);
     }
     if ($valuesBag->has(Compare::class)) {
         $valuesNode = $this->document->createElement('comparisons');
         foreach ($valuesBag->get(Compare::class) as $value) {
             $element = $this->document->createElement('compare');
             $element->setAttribute('operator', $value->getOperator());
             $element->appendChild($this->document->createTextNode($this->normToView($value->getValue(), $field)));
             $valuesNode->appendChild($element);
         }
         $parent->appendChild($valuesNode);
     }
     if ($valuesBag->has(PatternMatch::class)) {
         $valuesNode = $this->document->createElement('pattern-matchers');
         foreach ($valuesBag->get(PatternMatch::class) as $value) {
             $element = $this->document->createElement('pattern-matcher');
             $element->setAttribute('type', strtolower($this->getPatternMatchType($value)));
             $element->setAttribute('case-insensitive', $value->isCaseInsensitive() ? 'true' : 'false');
             $element->appendChild($this->document->createTextNode($value->getValue()));
             $valuesNode->appendChild($element);
         }
         $parent->appendChild($valuesNode);
     }
 }