Exemple #1
0
 /**
  * Parse given tags against current template
  * 
  * @param array $tags
  */
 protected function _parseTags($tags)
 {
     foreach ($tags as $tag) {
         $value = null;
         switch ($tag[1]) {
             case 'var':
                 $keys = explode('.', $tag[2]);
                 $value = $this->_obj->getVariable($keys[0]);
                 if (count($keys) > 1) {
                     $value = $value[$keys[1]];
                 }
                 break;
             case 'env':
                 $value = View::getEnvData($tag[2]);
                 break;
             case 'container':
                 if (($templates = $this->_obj->getSubtemplates($tag[2])) !== false) {
                     $value = '';
                     foreach ($templates as $template) {
                         $deco = Decorator::factory($template);
                         $value .= $deco->render();
                     }
                 }
                 break;
             default:
                 // obj:
                 $tmp = explode('.', $tag[2]);
                 $obj = $this->_obj->getVariable($tmp[0]);
                 if ($obj instanceof MediaObject && isset($tmp[1])) {
                     // meta properties handling
                     switch ($tmp[1]) {
                         case '_base64':
                             $value = sprintf('data:%s;base64,%s', $obj->getMime(), base64_encode($obj->loadBlob('media')));
                             break;
                         case '_icon':
                             $value = 'file-' . $obj->getExtension();
                             break;
                         case '_size':
                             $value = MediaElement::getDisplaySize($obj->getSize());
                             break;
                         case '_url':
                             $value = MediaElement::getDownloadUrl($obj->getUri());
                         default:
                             break;
                     }
                 }
                 if (!$value) {
                     if ($obj instanceof BaseObject) {
                         $value = isset($tmp[1]) && $tmp[1] == ObjectUri::IDENTIFIER ? $obj->getIdentifier() : $obj->getProperty($tmp[1]);
                         $value = $value instanceof AbstractProperty ? $value->getDisplayValue() : $value;
                     } else {
                         $value = Core::$env == Core::ENV_DEV ? sprintf("Can't substitute any value to '%s'", $tag[0]) : null;
                     }
                 }
                 break;
         }
         if ($value instanceof ViewObject) {
             $deco = Decorator::factory($value);
             $value = $deco->render();
         } else {
             //$value = $this->_escape($value);
         }
         $this->_template = str_replace($tag[0], $value, $this->_template);
     }
 }