Ejemplo n.º 1
0
 protected static function _attributesTo($dimension, $modelData, $attributes = NULL)
 {
     $attributes = self::_parseMoneyAttributes($modelData, $attributes);
     foreach ($attributes as $key => $attribute) {
         $name = is_string($key) ? $key : $attribute;
         if (empty($modelData[$name]) and !is_object($modelData) || empty($modelData->{$name})) {
             continue;
         }
         $value = $modelData[$name];
         if (is_array($attribute)) {
             if (!ArrayHelper::isAssoc($attribute, true)) {
                 $modelData[$name] = self::_arrayTo($dimension, $value, $attribute);
             } elseif (is_array($value) or is_object($value)) {
                 $modelData[$name] = self::_attributesTo($dimension, $value, $attribute);
             } else {
                 $modelData[$name] = self::_to($dimension, $value);
             }
         } else {
             if (is_array($value)) {
                 $modelData[$name] = self::_arrayTo($dimension, $value);
             } else {
                 $modelData[$name] = self::_to($dimension, $value);
             }
         }
     }
     return $modelData;
 }
Ejemplo n.º 2
0
 public function beforeAction($event)
 {
     $result = parent::beforeAction($event);
     //decode extjs filters format
     if (is_string($this->restFilter) && isset($_GET['extjs'])) {
         $this->restFilter = CJSON::decode($this->restFilter);
         //convert operators to accepted format by ERestHelperScopes
         foreach ($this->restFilter as $index => $filter) {
             if (isset($filter['operator'])) {
                 $this->restFilter[$index]['operator'] = $this->convertFilterOperator($filter['operator']);
             }
         }
     }
     if (ArrayHelper::isAssoc($this->restFilter)) {
         //Conversion needed
         if (!empty($this->acceptFilters['plain'])) {
             $plainKeys = AESHelper::explode($this->acceptFilters['plain']);
             foreach ($plainKeys as $key) {
                 if (isset($this->restFilter[$key])) {
                     $this->plainFilter[$key] = $this->restFilter[$key];
                 }
             }
         } else {
             //copy all to plainFilter
             foreach ($this->restFilter as $key => $value) {
                 $this->plainFilter[$key] = $value;
             }
         }
         if (!empty($this->acceptFilters['model'])) {
             $acceptableKeys = AESHelper::explode($this->acceptFilters['model']);
             foreach ($this->restFilter as $key => $value) {
                 if (!in_array($key, $acceptableKeys)) {
                     unset($this->restFilter[$key]);
                 } elseif ($value == '') {
                     $this->restFilter[$key] = null;
                 }
             }
         }
         if ($this->convertRestFilters) {
             //Convert filters to acceptable format
             $convertedFilter = array();
             foreach ($this->restFilter as $filterName => $value) {
                 if (!is_array($value) || !key_exists('property', $value) && !key_exists('value', $value)) {
                     $convertedFilter[] = array('property' => $filterName, 'value' => $value);
                 } else {
                     $convertedFilter[] = $value;
                 }
             }
             $this->restFilter = $convertedFilter;
         }
     } else {
         //Filters are in acceptable format
         $plainKeys = array();
         $filterableModelKeys = array();
         if (!empty($this->acceptFilters['plain'])) {
             $plainKeys = AESHelper::explode($this->acceptFilters['plain']);
         }
         if (!empty($this->acceptFilters['model'])) {
             $filterableModelKeys = AESHelper::explode($this->acceptFilters['model']);
         }
         $checkPlain = (bool) count($plainKeys);
         $checkModel = (bool) count($filterableModelKeys);
         if ($checkModel || $checkPlain) {
             foreach ($this->restFilter as $index => $filter) {
                 $filterKey = $filter['property'];
                 if ($checkPlain && in_array($filterKey, $plainKeys)) {
                     $this->plainFilter[$filterKey] = $filter['value'];
                 }
                 if ($checkModel && !in_array($filterKey, $filterableModelKeys)) {
                     unset($this->restFilter[$index]);
                 }
             }
         }
     }
     return $result;
 }