/**
  * (non-PHPdoc)
  * @see Application\Model\Mapper.FilterMapperAbstract::_mapMessageValue()
  */
 protected function _mapMessageValue(\DrSlump\Protobuf\Field $descriptor, \App_ListFilter_Interface $filter, \App_ListFilter $filterList)
 {
     if ($descriptor->getReference() == '\\Application\\Proto\\Report\\Target') {
         return $this->_mapTarget($descriptor, $filter, $filterList);
     }
     $result = parent::_mapMessageValue($descriptor, $filter, $filterList);
     if (!is_null($result)) {
         return $result;
     }
     return;
 }
Example #2
0
 protected function filterValue($value, Protobuf\Field $field)
 {
     switch ($field->getType()) {
         case Protobuf\Protobuf::TYPE_MESSAGE:
             // Tell apart encoding and decoding
             if ($value instanceof Protobuf\MessageInterface) {
                 return $this->encodeMessage($value);
             } else {
                 // Check if we are decoding in lazy mode
                 if ($this->getOption('lazy')) {
                     $lazy = new Protobuf\LazyValue();
                     $lazy->codec = $this;
                     $lazy->descriptor = $field;
                     $lazy->value = $value;
                     return $lazy;
                 } else {
                     $nested = $field->getReference();
                     return $this->decodeMessage(new $nested(), $value);
                 }
             }
         case Protobuf\Protobuf::TYPE_BOOL:
             if ($value === true || $value === false) {
                 return $value;
             }
             return filter_var($value, FILTER_VALIDATE_BOOLEAN);
         case Protobuf\Protobuf::TYPE_STRING:
         case Protobuf\Protobuf::TYPE_BYTES:
             return (string) $value;
         case Protobuf\Protobuf::TYPE_FLOAT:
         case Protobuf\Protobuf::TYPE_DOUBLE:
             return filter_var($value, FILTER_VALIDATE_FLOAT, FILTER_NULL_ON_FAILURE);
         case Protobuf\Protobuf::TYPE_ENUM:
             $nested = $field->getReference();
             $reference = new $nested();
             if (!is_null($ref_value = $reference->__get($value))) {
                 $value = $ref_value;
             }
             return filter_var($value, FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE);
             // Assume the rest are ints
         // Assume the rest are ints
         default:
             return filter_var($value, FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE);
     }
 }
Example #3
0
 protected function filterValue($value, Protobuf\Field $field)
 {
     switch ($field->getType()) {
         case Protobuf::TYPE_MESSAGE:
             // Tell apart encoding and decoding
             if ($value instanceof Protobuf\Message) {
                 return $this->encodeMessage($value);
             } else {
                 $nested = $field->getReference();
                 return $this->decodeMessage(new $nested(), $value);
             }
         case Protobuf::TYPE_BOOL:
             if ($value === true || $value === false) {
                 return $value;
             }
             return filter_var($value, FILTER_VALIDATE_BOOLEAN);
         case Protobuf::TYPE_STRING:
         case Protobuf::TYPE_BYTES:
             return (string) $value;
         case Protobuf::TYPE_FLOAT:
         case Protobuf::TYPE_DOUBLE:
             return filter_var($value, FILTER_VALIDATE_FLOAT, FILTER_NULL_ON_FAILURE);
             // Assume the rest are ints
         // Assume the rest are ints
         default:
             return filter_var($value, FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE);
     }
 }
 protected function _mapReverse(\DrSlump\Protobuf\Field $descriptor, \App_ListFilter_Interface $filter, \App_ListFilter $filterList)
 {
     switch ($descriptor->getReference()) {
         case '\\Application\\Proto\\Inventory\\ExpenseCriteria':
         case '\\Application\\Proto\\Inventory\\ConsumptionCriteria':
             switch (true) {
                 case $filter instanceof \App_ListFilter_GreaterThanFilter:
                     return false;
                 default:
                     return true;
             }
         default:
             return parent::_mapReverse($descriptor, $filter, $filterList);
     }
 }
 /**
  * Maps a message value.
  * @param  \DrSlump\Protobuf\Field   $descriptor
  * @param  \App_ListFilter_Interface $filter
  * @return array
  */
 protected function _mapMessageValue(\DrSlump\Protobuf\Field $descriptor, \App_ListFilter_Interface $filter, \App_ListFilter $filterList)
 {
     switch ($descriptor->getReference()) {
         case '\\Application\\Proto\\DateInterval':
             return $this->_mapDateIntervalValue($filter, $filterList);
         case '\\Application\\Proto\\Range':
             return $this->_mapRangeValue($filter, $filterList);
         case '\\Application\\Proto\\IpRange':
             return $this->_mapIpRangeValue($filter, $filterList);
         case '\\Application\\Proto\\Organization':
             return $this->_mapOrganizationValue($filter, $filterList);
     }
     return;
 }