예제 #1
0
 /**
  * Analyses a template file content (string) and extracts the blocks
  *
  * @param string $tpl the template in which to look for blocks
  * @return void
  * @see self::$blocks
  */
 protected function searchBlocks($tpl)
 {
     $r = array();
     $blockStarts = array();
     $blockEnds = array();
     preg_match_all('#{block([[:blank:]]*)name=(' . tpltools::$varreg . '+)(.*)}#U', $tpl, $r, PREG_OFFSET_CAPTURE);
     foreach ($r[0] as $k => $match) {
         $p = tpltools::readParams($match[0]);
         $blockStarts[] = array($match[1], strlen($match[0]), $p['params']);
     }
     preg_match_all('#{/block}#', $tpl, $r, PREG_OFFSET_CAPTURE);
     foreach ($r[0] as $match) {
         $blockEnds[] = $match[1];
     }
     $s = sizeof($blockStarts);
     for ($i = 0; $i < $s; $i++) {
         for ($j = $i + 1; $j < $s; $j++) {
             if ($blockStarts[$j][0] < $blockEnds[$i]) {
                 $tmp = $blockEnds[$j];
                 $blockEnds[$j] = $blockEnds[$i];
                 $blockEnds[$i] = $tmp;
             }
         }
     }
     foreach ($blockStarts as $k => $b) {
         $this->blocks[$b[2]['name']][] = array('content' => substr($tpl, $b[0] + $b[1], $blockEnds[$k] - $b[0] - $b[1]), 'command' => substr($tpl, $b[0], $b[1]), 'params' => $b[2]);
     }
 }
예제 #2
0
 /**
  * Prepares the exportation of the assigned variables
  *
  * @return array
  */
 protected function exportVars()
 {
     $vars = [];
     foreach ($this->vars as $name => $var) {
         if (empty($var['_parse_'])) {
             $vars[$name] = $var['_value_'];
         } else {
             $vars[$name] = tpltools::getVar($var);
         }
     }
     return $vars;
 }
예제 #3
0
 /**
  * Gets a variable, parses it if necessary, and returns it
  *
  * @param string $var the variable to process
  * @param string $modifiers the modifiers to apply to the variable
  * @param string $returnMethod the return method to use (echo|return)
  * @return mixed a string if returnMethod=='echo', void else
  * @see self::modifier()
  */
 public static function getVar($var, $modifiers = '', $returnMethod = 'return')
 {
     $parse = isset($var['_parse_']) && $var['_parse_'];
     $var = is_array($var) && array_key_exists('_value_', $var) ? $var['_value_'] : $var;
     $modifiers = explode('|', $modifiers);
     foreach ($modifiers as $modifier) {
         $t = explode(':', $modifier);
         $var = tpltools::modifier($var, $t[0], isset($t[1]) ? $t[1] : '');
     }
     if (is_string($var) && $parse) {
         $var = eval('?>' . tpltools::analyseAndTransform($var));
     }
     if ($returnMethod == 'echo') {
         echo $var;
     } elseif ($returnMethod == 'return') {
         return $var;
     }
 }