| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- <?php
- //dezend by qq784939922
- function myparseTemplate($tplfile, $templateid, $tpldir)
- {
- global $timestamp;
- global $mytemplates;
- $nest = 6;
- $file = basename($tplfile, '.html');
- $objfile = MYMPS_DATA . ('/templates/' . $templateid . '_' . $file . '.tpl.php');
-
- if (!@$fp = fopen($tplfile, 'r')) {
- exit('Current template file \'./' . $tpldir . '/' . $file . '.html\' not found or have no access!');
- }
-
- $template = @fread($fp, filesize($tplfile));
- fclose($fp);
- $var_regexp = "((\\\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)(\\[[a-zA-Z0-9_\\-\\.\"\\'\\[\\]\$\x7f-\xff]+\\])*)";
- $const_regexp = "([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)";
- $mytemplates = array();
-
- for ($i = 1; $i <= 3; $i++) {
- if (strexists($template, '{mytemplate')) {
- $template = preg_replace('/[
-
]*\\{mytemplate\\s+([a-z0-9_]+)\\}[
-
]*/ies', 'loadmytemplate(\'\\1\')', $template);
- }
- }
-
- $template = preg_replace('/([
-
]+) +/s', '\\1', $template);
- $template = preg_replace('/\\<\\!\\-\\-\\{(.+?)\\}\\-\\-\\>/s', '{\\1}', $template);
- $template = str_replace('{LF}', '<?="\\n"?>', $template);
- $template = preg_replace("/\\{(\\\$[a-zA-Z0-9_\\[\\]\\'\"\$\\.\x7f-\xff]+)\\}/s", '<?=\\1?>', $template);
- $template = preg_replace('/' . $var_regexp . '/es', 'addquote(\'<?=\\1?>\')', $template);
- $template = preg_replace('/\\<\\?\\=\\<\\?\\=' . $var_regexp . '\\?\\>\\?\\>/es', 'addquote(\'<?=\\1?>\')', $template);
- $headeradd = '';
-
- if (!empty($mytemplates)) {
- $headeradd .= '
- 0
- ';
-
- foreach ($mytemplates as $fname) {
- $headeradd .= '|| chktplrefresh(\'' . $tplfile . '\', \'' . $fname . '\', ' . $timestamp . ', \'' . $templateid . '\', \'' . $tpldir . '\')
- ';
- }
-
- $headeradd .= ';';
- }
-
- $template = '<? if(!defined(\'IN_MYMPS\')) exit(\'Access Denied\');
- /*Mymps分类信息系统
- 官方网站:http://www.mymps.com.cn*/?>
- ' . $template;
- $template = preg_replace('/[
-
]*\\{mympstag_([a-z0-9_]+)\\}[
-
]*/is', '
- <?php echo custom(\'\\1\'); ?>
- ', $template);
- $template = preg_replace('/[
-
]*\\{template\\s+([a-z0-9_]+)\\}[
-
]*/is', '
- <?php include mymps_tpl(\'\\1\'); ?>
- ', $template);
- $template = preg_replace('/[
-
]*\\{php\\s+(.+?)\\}[
-
]*/ies', 'stripvtags(\'<?php \\1 ?>\',\'\')', $template);
- $template = preg_replace('/[
-
]*\\{php\\}\\s*(\\<\\!\\-\\-)*(.+?)(\\-\\-\\>)*\\s*\\{\\/php\\}[
-
]*/ies', 'stripvtags(\'<?php \\2 ?>\',\'\')', $template);
- $template = preg_replace('/[
-
]*\\{echo\\s+(.+?)\\}[
-
]*/ies', 'stripvtags(\'<? echo \\1; ?>\',\'\')', $template);
- $template = preg_replace('/([
-
]*)\\{if\\s+(.+?)\\}([
-
]*)/ies', 'stripvtags(\'\\1<? if(\\2) { ?>\\3\')', $template);
- $template = preg_replace('/([
-
]*)\\{elseif\\s+(.+?)\\}([
-
]*)/ies', 'stripvtags(\'\\1<?php } elseif(\\2) { ?>\\3\',\'\')', $template);
- $template = preg_replace('/([
-
]*)\\{else\\}([
-
]*)/is', '\\1<?php } else { ?>\\2', $template);
- $template = preg_replace('/\\{\\/if\\}/i', '<?php } ?>', $template);
- $template = preg_replace('/[
-
]*\\{loop\\s+(\\S+)\\s+(\\S+)\\}[
-
]*/ies', 'stripvtags(\'<?php if(is_array(\\1)){foreach(\\1 as \\2) { ?>\')', $template);
- $template = preg_replace('/[
-
]*\\{loop\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\}[
-
]*/ies', 'stripvtags(\'<?php if(is_array(\\1)){foreach(\\1 as \\2 => \\3) { ?>\')', $template);
- $template = preg_replace('/([
-
]*)\\{loopelse\\}([
-
]*)/is', '\\1<?php }} else {{ ?>\\2', $template);
- $template = preg_replace('/\\{\\/loop\\}/i', '<?php }} ?>', $template);
- $template = preg_replace('/\\{' . $const_regexp . '\\}/s', '<?=\\1?>', $template);
- $template = preg_replace('/ \\?\\>[
-
]*\\<\\? /s', ' ', $template);
- $template = str_replace('$db_mymps', '{$db_mymps}', $template);
-
- if (!@$fp = fopen($objfile, 'w')) {
- exit('Directory \'/data/templates/\' not found or have no access!');
- }
-
- flock($fp, 2);
- fwrite($fp, $template);
- fclose($fp);
- }
-
- function loadmytemplate($file, $templateid = 0, $tpldir = '')
- {
- global $mytemplates;
- $tpldir = $tpldir ? $tpldir : TPLDIR;
- $templateid = $templateid ? $templateid : TEMPLATEID;
- $tplfile = MYMPS_ROOT . '/template/' . $tpldir . '/' . $file . '.html';
- if ($templateid != 1 && !file_exists($tplfile)) {
- $tplfile = MYMPS_ROOT . '/template/default/' . $file . '.html';
- }
-
- $content = @implode('', file($tplfile));
- $mytemplates[] = $tplfile;
- return $content;
- }
-
- function transamp($str)
- {
- $str = str_replace('&', '&', $str);
- $str = str_replace('&amp;', '&', $str);
- $str = str_replace('\\"', '"', $str);
- return $str;
- }
-
- function addquote($var)
- {
- return str_replace('\\"', '"', preg_replace("/\\[([a-zA-Z0-9_\\-\\.\x7f-\xff]+)\\]/s", '[\'\\1\']', $var));
- }
-
- function stripvtags($expr, $statement)
- {
- $expr = str_replace('\\"', '"', preg_replace('/\\<\\?\\=(\\$.+?)\\?\\>/s', '\\1', $expr));
- $statement = str_replace('\\"', '"', $statement);
- return $expr . $statement;
- }
-
- function stripscriptamp($s, $extra)
- {
- $extra = str_replace('\\"', '"', $extra);
- $s = str_replace('&', '&', $s);
- return '<script src="' . $s . '" type="text/javascript"' . $extra . '></script>';
- }
-
- function stripblock($var, $s)
- {
- $s = str_replace('\\"', '"', $s);
- $s = preg_replace('/<\\?=\\$(.+?)\\?>/', '{$\\1}', $s);
- preg_match_all('/<\\?=(.+?)\\?>/e', $s, $constary);
- $constadd = '';
- $constary[1] = array_unique($constary[1]);
-
- foreach ($constary[1] as $const) {
- $constadd .= '$__' . $const . ' = ' . $const . ';';
- }
-
- $s = preg_replace('/<\\?=(.+?)\\?>/', '{$__\\1}', $s);
- $s = str_replace('?>', '
- $' . $var . ' .= <<<EOF
- ', $s);
- $s = str_replace('<?', '
- EOF;
- ', $s);
- return '<?
- ' . $constadd . '$' . $var . ' = <<<EOF
- ' . $s . '
- EOF;
- ?>';
- }
-
- function chktplrefresh($maintpl, $subtpl, $timecompare, $templateid, $tpldir)
- {
- global $mymps_mymps;
- if (empty($timecompare) || $mymps_mymps['tplrefresh'] == 1) {
- if ($timecompare < @filemtime($subtpl)) {
- myparsetemplate($subtpl, $templateid, $tpldir);
- return true;
- }
- }
-
- return false;
- }
-
- if (!defined('IN_MYMPS')) {
- exit('Access Denied');
- }
-
- ?>
|