function parse_includes() { $template = $this->get_template(); if (strpos($template, '{INCLUDE ') === false) { return; } $offset = 0; $y = 0; while (($begin = strpos($template, '{INCLUDE ', $offset)) !== false) { $y++; $start = $begin + 9; $offset = $start; $long = 0; if ($template[$start] == '"') { $long = 1; $start++; } $file = ''; $skip = 0; for ($x = $start; $x < strlen($template); $x++) { if ($template[$x] == "\n" || $template[$x] == "\r") { $skip = 1; break; } elseif ($long == 0 && $template[$x] == ' ') { $skip = 1; break; } elseif ($long == 1 && $template[$x] == '"') { if ($template[$x + 1] != '}') { $skip = 1; } break; } elseif ($long == 0 && $template[$x] == '}') { break; } else { $file .= $template[$x]; } } if ($skip == 1) { continue; } if ($file != '') { $filepath = $file; $is_absolute = strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' ? preg_match('!^([a-z]:)?/!i', $file) : preg_match('!^/!', $file); if (!$is_absolute) { if (!empty($this->file)) { $dir = dirname($this->file); } else { $dir = '.'; } $dir = str_replace('\\', '/', $dir); if (!preg_match('!/+$!', $dir)) { $dir .= '/'; } $filepath = $dir . $file; } if (is_file($filepath)) { $inc = new Template(); $inc->read_file($filepath); $end = $long == 1 ? $start + strlen($file) + 2 : $start + strlen($file) + 1; $pre = substr($template, 0, $begin); $post = substr($template, $end); $template = $pre . $inc->get_template() . $post; $offset = strlen($pre) + strlen($inc->get_template()); unset($inc); } } } $this->set_template($template); }