Tokiwa Battle Royale  GE777
A PHP Battle Royale inspired game
 All Data Structures Namespaces Files Functions Variables Pages
template.func.php
Go to the documentation of this file.
1 <?php
2 
3 
4 if(!defined('IN_GAME')) {
5  exit('Access Denied');
6 }
7 
8 function parse_template($file, $templateid, $tpldir) {
9  global $language;
10 
11  $nest = 5;
12  $tplfile = GAME_ROOT."./$tpldir/$file.htm";
13  $objfile = GAME_ROOT."./gamedata/templates/{$templateid}_$file.tpl.php";
14 
15  if(!$fp = fopen($tplfile, 'r')) {
16  gexit("Current template file './$tpldir/$file.htm' not found or have no access!");
17  } elseif(!include_once language('templates', $templateid, $tpldir)) {
18  gexit("<br>Current template pack do not have a necessary language file 'templates.lang.php' or have syntax error!");
19  }
20 
21  $template = fread($fp, filesize($tplfile));
22  fclose($fp);
23 
24  $var_regexp = "((\\\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)(\[[a-zA-Z0-9_\-\.\"\'\[\]\$\x7f-\xff]+\])*)";
25  $const_regexp = "([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)";
26 
27  $template = preg_replace("/([\n\r]+)\t+/s", "\\1", $template);
28  $template = preg_replace("/<\!\-\-\{(.+?)\}\-\->/s", "{\\1}", $template);
29  $template = preg_replace("/\{lang\s+(.+?)\}/ies", "languagevar('\\1')", $template);
30  $template = str_replace("{LF}", "<?=\"\\n\"?>", $template);
31 
32  $template = preg_replace("/\{(\\\$[a-zA-Z0-9_\[\]\'\"\$\.\x7f-\xff]+)\}/s", "<?=\\1?>", $template);
33  $template = preg_replace("/$var_regexp/es", "addquote('<?=\\1?>')", $template);
34  $template = preg_replace("/<\?\=<\?\=$var_regexp\?>\?>/es", "addquote('<?=\\1?>')", $template);
35 
36  $template = "<? if(!defined('IN_GAME')) exit('Access Denied'); ?>\n$template";
37  $template = preg_replace("/[\n\r\t]*\{template\s+([a-z0-9_]+)\}[\n\r\t]*/is", "\n<? include template('\\1'); ?>\n", $template);
38  $template = preg_replace("/[\n\r\t]*\{template\s+(.+?)\}[\n\r\t]*/is", "\n<? include template(\\1); ?>\n", $template);
39  $template = preg_replace("/[\n\r\t]*\{eval\s+(.+?)\}[\n\r\t]*/ies", "stripvtags('\n<? \\1 ?>\n','')", $template);
40  $template = preg_replace("/[\n\r\t]*\{echo\s+(.+?)\}[\n\r\t]*/ies", "stripvtags('\n<? echo \\1; ?>\n','')", $template);
41  $template = preg_replace("/[\n\r\t]*\{elseif\s+(.+?)\}[\n\r\t]*/ies", "stripvtags('\n<? } elseif(\\1) { ?>\n','')", $template);
42  $template = preg_replace("/[\n\r\t]*\{else\}[\n\r\t]*/is", "\n<? } else { ?>\n", $template);
43 
44  for($i = 0; $i < $nest; $i++) {
45  $template = preg_replace("/[\n\r\t]*\{loop\s+(\S+)\s+(\S+)\}[\n\r]*(.+?)[\n\r]*\{\/loop\}[\n\r\t]*/ies", "stripvtags('\n<? if(is_array(\\1)) { foreach(\\1 as \\2) { ?>','\n\\3\n<? } } ?>\n')", $template);
46  $template = preg_replace("/[\n\r\t]*\{loop\s+(\S+)\s+(\S+)\s+(\S+)\}[\n\r\t]*(.+?)[\n\r\t]*\{\/loop\}[\n\r\t]*/ies", "stripvtags('\n<? if(is_array(\\1)) { foreach(\\1 as \\2 => \\3) { ?>','\n\\4\n<? } } ?>\n')", $template);
47  $template = preg_replace("/[\n\r\t]*\{if\s+(.+?)\}[\n\r]*(.+?)[\n\r]*\{\/if\}[\n\r\t]*/ies", "stripvtags('\n<? if(\\1) { ?>','\n\\2\n<? } ?>\n')", $template);
48  }
49 
50  $template = preg_replace("/\{$const_regexp\}/s", "<?=\\1?>", $template);
51  $template = preg_replace("/ \?>[\n\r]*<\? /s", " ", $template);
52 
53  $template = preg_replace("/<\?/s", "<?php", $template);
54  $template = preg_replace("/<\?php\=/s", "<?php echo ", $template);
55 
56  if(!$fp = fopen($objfile, 'w')) {
57  gexit("Directory './gamedata/templates/' not found or have no access!");
58  }
59 
60  $template = preg_replace("/\"(http)?[\w\.\/:]+\?[^\"]+?&[^\"]+?\"/e", "transamp('\\0')", $template);
61  flock($fp, 2);
62  fwrite($fp, $template);
63  fclose($fp);
64 }
65 
66 function transamp($str) {
67  $str = str_replace('&', '&amp;', $str);
68  $str = str_replace('&amp;amp;', '&amp;', $str);
69  $str = str_replace('\"', '"', $str);
70  return $str;
71 }
72 
73 function addquote($var) {
74  return str_replace("\\\"", "\"", preg_replace("/\[([a-zA-Z0-9_\-\.\x7f-\xff]+)\]/s", "['\\1']", $var));
75 }
76 
77 function languagevar($var) {
78  if(isset($GLOBALS['language'][$var])) {
79  return $GLOBALS['language'][$var];
80  } else {
81  return "!$var!";
82  }
83 }
84 
85 function stripvtags($expr, $statement) {
86  $expr = str_replace("\\\"", "\"", preg_replace("/<\?\=(\\\$.+?)\?>/s", "\\1", $expr));
87  $statement = str_replace("\\\"", "\"", $statement);
88  return $expr.$statement;
89 }
90 
91 ?>
if(!defined('IN_GAME')) parse_template($file, $templateid, $tpldir)
$i
Definition: botservice.php:267
【生存者数:<?php echo $alivenum?> 人】< input type="button"value="显示全部幸存者"onClick="$('alivemode').value='all';$('gbmode').value='none';postCmd('alive','alive.php');"></p > if($gamblingon &&$gamestate >=20) elseif($gamblingon &&$gamestate<=10)
Definition: 1_alive.tpl.php:18
const GAME_ROOT
Definition: clear.php:6
addquote($var)
languagevar($var)
$language
Definition: install.php:15
language($file, $templateid=0, $tpldir= '')
Definition: global.func.php:64
gexit($message= '', $file= '', $line=0)
Definition: global.func.php:30
stripvtags($expr, $statement)
transamp($str)