html.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. <?php
  2. if (!DEFINED('EGP'))
  3. exit(header('Refresh: 0; URL=http://' . $_SERVER['SERVER_NAME'] . '/404'));
  4. class html
  5. {
  6. var $dir = TPL;
  7. var $template = null;
  8. var $data = array();
  9. var $unitblock = array();
  10. public $arr;
  11. public $select_template;
  12. public function set($name, $var, $unset = false)
  13. {
  14. $this->data['[' . $name . ']'] = $var;
  15. if ($unset)
  16. unset($this->arr[$name]);
  17. return NULL;
  18. }
  19. public function unit($name, $var = false, $mirror = false)
  20. {
  21. $block = str_replace($name, "'\\|" . $name . "\\|(.*?)\\|_" . $name . "\\|'si", $name);
  22. $var = $var ? '\\1' : '';
  23. $this->unitblock[$block] = $var;
  24. if ($mirror) {
  25. $block = str_replace($name, "'\\|!" . $name . "\\|(.*?)\\|_!" . $name . "\\|'si", $name);
  26. $var = !$var ? '\\1' : '';
  27. $this->unitblock[$block] = $var;
  28. }
  29. return NULL;
  30. }
  31. public function nav($name, $link = false)
  32. {
  33. $this->get('nav');
  34. if ($link) {
  35. $this->set('link', $link);
  36. $this->unit('link', 1, 1);
  37. } else
  38. $this->unit('link', 0, 1);
  39. $this->set('name', $name);
  40. $this->pack('nav');
  41. return NULL;
  42. }
  43. public function get($name, $path = '')
  44. {
  45. global $cfg;
  46. if ($path != '')
  47. $name = str_replace('//', '/', $path . '/' . $name);
  48. $this->template = file_get_contents($this->dir . '/' . $name . '.html');
  49. $this->select_template = $this->template;
  50. return NULL;
  51. }
  52. private function delete()
  53. {
  54. unset($this->data);
  55. unset($this->unitblock);
  56. $this->select_template = $this->template;
  57. return NULL;
  58. }
  59. public function pack($compile)
  60. {
  61. if (isset($this->unitblock)) {
  62. $find_preg = array();
  63. $replace_preg = array();
  64. foreach ($this->unitblock as $key_find => $key_replace) {
  65. $find_preg[] = $key_find;
  66. $replace_preg[] = $key_replace;
  67. }
  68. $this->select_template = preg_replace($find_preg, $replace_preg, $this->select_template);
  69. }
  70. $find = array();
  71. $replace = array();
  72. if (isset($this->data)) {
  73. foreach ($this->data as $key_find => $key_replace) {
  74. $find[] = $key_find;
  75. $replace[] = $key_replace;
  76. }
  77. }
  78. $this->select_template = str_replace($find, $replace, $this->select_template);
  79. if (isset($this->arr[$compile]))
  80. $this->arr[$compile] .= $this->select_template;
  81. else
  82. $this->arr[$compile] = $this->select_template;
  83. $this->delete();
  84. return NULL;
  85. }
  86. public function upd($name, $old = array(), $new = array())
  87. {
  88. $this->arr[$name] = str_replace($old, $new, $this->arr[$name]);
  89. return NULL;
  90. }
  91. public function unitall($name, $arr = array(), $var = false, $mirror = false)
  92. {
  93. $block = str_replace($name, "'\\|" . $name . "\\|(.*?)\\|_" . $name . "\\|'si", $name);
  94. $var = $var ? '\\1' : '';
  95. $this->unitblock[$block] = $var;
  96. if ($mirror) {
  97. $block = str_replace($name, "'\\|!" . $name . "\\|(.*?)\\|_!" . $name . "\\|'si", $name);
  98. $var = !$var ? '\\1' : '';
  99. $this->unitblock[$block] = $var;
  100. }
  101. if (count($this->unitblock)) {
  102. foreach ($this->unitblock as $key_find => $key_replace) {
  103. $find_preg[] = $key_find;
  104. $replace_preg[] = $key_replace;
  105. }
  106. $this->arr[$arr] = preg_replace($find_preg, $replace_preg, $this->arr[$arr]);
  107. }
  108. return NULL;
  109. }
  110. }
  111. $html = new html;
  112. ?>