file = $tfn; } else { throw new Exception($tfn . ' does not exist'); } } function add($name, $value) { $this->tags[$name] = $value; } function adds($tagarr) { foreach ($tagarr as $name => $value) { $this->add($name,$value); } } function adds_block($block, $tagarr) { if (!isset($this->blocks[$block])) { $this->blocks[$block] = array('count' => 1); } foreach ($tagarr as $name => $value) { $this->blocks[$block][$this->blocks[$block]['count']][$name] = $value; } $this->blocks[$block]['count']++; } function add_ref($id, $block, $tagarr) { $this->adds_block($block,$tagarr); $this->refs[$id] = &$this->blocks[$block][$this->blocks[$block]['count']-1];//'$this->blocks[\'' . $block . '\'][' . ($this->blocks[$block]['count']-1) . ']'; } function adds_ref($id, $tagarr) { foreach ($tagarr as $name => $value) { $this->refs[$id][$name] = $value; } } function adds_ref_sub($id, $block, $tagarr) { if (!isset($this->refs[$id][$block])) { $this->refs[$id][$block] = array('count' => 1); } foreach ($tagarr as $name => $value) { $this->refs[$id][$block][$this->refs[$id][$block]['count']][$name] = $value; } $this->refs[$id][$block]['count']++; } function display() { $template = file_get_contents($this->file); while (preg_match('//',$template) == 1) { preg_match('//',$template,$mat); $fname = $mat[1]; $itmp = new FITemplate($fname); $template = str_replace('',file_get_contents($itmp->file),$template); } if (isset($this->tags)) { foreach ($this->tags as $name => $value) { $template = str_replace('',$value,$template); } } if (isset($this->blocks)) { foreach ($this->blocks as $bname => $block) { $this->parseBlock($template, $bname, $block); } } while (preg_match('//',$template) == 1) { preg_match('//',$template,$mat); $bname = $mat[1]; $start = strpos($template,''); $end = strpos($template,''); $template = str_replace(substr($template,$start,$end-$start+strlen($bname)+11),'',$template); } $template = preg_replace('//','',$template); echo($template); } function parseBlock(&$template, $bname, $block) { while (strpos($template,'') !== FALSE) { $start = strpos($template,''); $end = strpos($template,''); $gencont = substr($template,$start+strlen($bname)+13,$end-$start-strlen($bname)-13); $blockcont = ''; foreach ($block as $lname => $blocktags) { if ($lname != 'count') { $scrcont = $gencont; foreach ($blocktags as $name => $value) { if (!is_array($value)) { $scrcont = str_replace('',$value,$scrcont); } else { $this->parseBlock($scrcont, $bname . '.' . $name, $value); } } $blockcont .= $scrcont; } } $template = str_replace(substr($template,$start,$end-$start+strlen($bname)+11),$blockcont,$template); } } } ?>