All pastes #420465 Raw Edit

Miscellany

public php v1 · immutable
·published 2007-04-02 04:24 UTC
rendered paste body
<?phpclass Template {    var $variables;    var $tempname;    var $template;        function Template($tempname) {        $this->tempname = $tempname;        $this->variables = array();    }        function addvar($varname, $varvalue) {        $this->variables[$varname] = $varvalue;    }        function parseloops() {        $loopcount = 0;        $loopcount = preg_match_all("/\{loop=(.*)\}/", $this->template, $loops, PREG_SET_ORDER|PREG_OFFSET_CAPTURE);        for ($i = 0; $i < count($loops); $i++) {            $loopstart = ($loops[$i][0][1] + strlen($loops[$i][0][0]));            $looprepstart = $loops[$i][0][1];            $loopend = (strpos($this->template, "{/loop}", $loopstart));            $looprepend = $loopend + strlen("{/loop}");            $looprep = substr($this->template, $loopstart, ($loopend - $loopstart));            $looprep = $this->parsevars($looprep, $loops[$i][1][0]);            $this->template = str_replace(substr($this->template, $looprepstart, ($looprepend - $looprepstart)), implode("", $looprep), $this->template);        }    }        function parsevars($section, $sub = "") {        if ($sub == "") {            $return = $section;            foreach ($this->variables as $find => $rep) {                if (!is_array($this->variables[$find]))                    $return = str_ireplace("{".$find."}", $rep, $return);            }        } else {            if (is_array($this->variables[$sub])) {                $return = array();                for ($i = 0; $i < count($this->variables[$sub]); $i++) {                    $tmp = $section;                    foreach ($this->variables[$sub][$i] as $find => $rep) {                        if (!is_array($this->variables[$sub][$i][$find]))                            $tmp = str_ireplace("{".$sub.".".$find."}", $rep, $tmp);                    }                    $return[] = $tmp;                }            } else {                $section = "Error, unknown loop variable, please contact the system administrator.";            }        }        return $return;    }        function delvars() {        unset($this->variables);        $this->variables = array();    }        function display($tempname) {        $file = "./template/".$this->tempname."/".$tempname;        if (file_exists($file)) {            $this->template = file_get_contents($file);            $this->parseloops();            $this->template = $this->parsevars($this->template);            echo $this->template;        } else {            echo "The template that was requested could not be found, please contact the system administrator.";        }    }}?>