예제 #1
0
 /**
  * Processes a value from a content row
  * @param string $value The value to process
  * @param string $definition The definition of the template
  * @param string $field The name of the value
  * @return mixed The processed value
  */
 private function _processValue($value, $definition, $field)
 {
     switch ($definition->{$field}->type) {
         case 'array':
             $raw = $value;
             $return = json_decode($value);
             if ($return == null && ($raw != null && $raw != '')) {
                 // Value is not a json string
                 $return = $raw;
             }
             $return = array($return);
             break;
         case 'json':
             try {
                 $return = json_decode($value);
             } catch (\Exception $ex) {
                 $return = $value;
             }
             break;
         case 'gmaps':
             try {
                 $return = json_decode($value);
                 $layers = array();
                 $markers = array();
                 $polys = array();
                 $gm_layers = new Layers();
                 $gm_maps = new Maps();
                 foreach ($return->layers as $layer) {
                     $l = $gm_layers->getLayer($layer->layerId);
                     if ($l) {
                         $l->visible = $layer->visible;
                         $layers[] = $l;
                         $m = $gm_maps->getMarkers($layer->layerId);
                         $p = $gm_maps->getPolys($layer->layerId);
                         $markers = array_merge($m, $markers);
                         $polys = array_merge($p, $polys);
                     }
                 }
                 $return->layers = $layers;
                 $return->markers = $markers;
                 $return->polys = $polys;
             } catch (\Exception $ex) {
                 $return = $value;
             }
             break;
         case 'elements':
             $ids = explode(',', $value);
             $elements = array();
             foreach ($ids as $id) {
                 $page = new Page();
                 $el = $page->getPageById($id);
                 if ($el) {
                     $elements[] = (object) $el;
                 }
             }
             $return = $elements;
             break;
         default:
             $return = $value;
     }
     return $return;
 }