Example #1
0
 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);
 }