/** * 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; }