PageRenderTime 52ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/source/libs/Templet.class.php

https://github.com/yfg2014/ddim
PHP | 180 lines | 164 code | 15 blank | 1 comment | 6 complexity | 6fcbe5cf13feb4010c692f4e7666a4ea MD5 | raw file
Possible License(s): LGPL-2.1, AGPL-1.0
  1. <?php
  2. class Templets
  3. {
  4. public $mDb;
  5. public $mType;
  6. protected $mVarBegin = '<!-- ~ ';
  7. protected $mVarEnd = ' ~ -->';
  8. protected $mTpl;
  9. public function __construct()
  10. {
  11. //$this->mDb->debug = true;
  12. $this->getType();
  13. }
  14. public function getList()
  15. {
  16. $sql = " SELECT t1. * , t2.admin AS username FROM templet t1,admins t2 WHERE t1.uid = t2.id ";
  17. if($_GET["ttype"]=="0")
  18. {
  19. $sql .= " AND ttype=0";
  20. }
  21. elseif($_GET["ttype"])
  22. {
  23. $sql .= " AND ttype=".$_GET["ttype"];
  24. }
  25. $pager = new Page;
  26. $get_page = is_numeric($_GET["page"]) ? $get_page : 1;
  27. $pagesize = $_GET["pagesize"] ? $_GET["pagesize"] : _PAGES;
  28. $pager->Page($key='', $pagesize, $groupsize=0, $current=$get_page);
  29. $pager->execute($this->mDb,$sql);
  30. $pages['link'] = $pager->pageLinks();
  31. $pages['fromto'] = $pager->fromto();
  32. $pages['total'] = $pager->getTotalpage();
  33. $pages['current'] = $pager->getCurrent();
  34. $pages['totalnum'] = $pager->getTotalnum();
  35. $pages['jump'] = $pager->jump();
  36. $pages['pagenum'] = $pagesize;
  37. $rs = $pager->getResult();
  38. $r["logs"] = $rs;
  39. $r["pages"] = $pages;
  40. return $r;
  41. }
  42. public function getRow($id)
  43. {
  44. $sql = "SELECT * FROM templet WHERE id=".$id;
  45. $rs = $this->mDb->getrow($sql);
  46. return $rs;
  47. }
  48. private function getOne($title)
  49. {
  50. $sql = "SELECT content FROM templet WHERE title='".$title."'";
  51. $rs = $this->mDb->getone($sql);
  52. return $rs;
  53. }
  54. public function Del($id)
  55. {
  56. $sql = "DELETE FROM templet WHERE id=".$id;
  57. $rs = $this->mDb->execute($sql);
  58. if(!$rs)
  59. {
  60. return false;
  61. }
  62. else
  63. {
  64. return true;
  65. }
  66. }
  67. public function cateList($t,$lang)
  68. {
  69. $sql = "SELECT * FROM templet WHERE ttype = $t ";
  70. if($lang)
  71. {
  72. $sql .= " AND lang='$lang'";
  73. }
  74. $sql .=" ORDER BY id ASC";
  75. $rs = $this->mDb->getall($sql);
  76. $cate = array();
  77. foreach ($rs as $val)
  78. {
  79. $cate[$val["id"]] = $val["title"];
  80. }
  81. return $cate;
  82. }
  83. public function gobList($t)
  84. {
  85. $sql = "SELECT title FROM templet WHERE ttype = $t ";
  86. $rs = $this->mDb->getall($sql);
  87. return $rs;
  88. }
  89. public function adList($t)
  90. {
  91. $sql = "SELECT title,unikey FROM advts";
  92. $rs = $this->mDb->getall($sql);
  93. return $rs;
  94. }
  95. public function Building($id,$str)
  96. {
  97. mkpath(dirname(_TPL_PATH."/".$id.".tpl"));
  98. $this->mTpl = $str;
  99. foreach ($this->Analyse() as $v) {
  100. $tmp1[] = $this->mVarBegin.$v.$this->mVarEnd;
  101. $tmp2[] = $this->getOne($v);
  102. }
  103. $str = str_replace($tmp1,$tmp2,$this->mTpl);
  104. $str = str_replace("‘","'",$str);
  105. $str = str_replace("\'","'",$str);
  106. $fp=fopen(_TPL_PATH."/".$id.".tpl","wb");
  107. fwrite ($fp,$str);
  108. fclose($fp);
  109. }
  110. public function BuildStyle($id,$str)
  111. {
  112. mkpath(dirname(_CSS_PATH.$id.".css"));
  113. $fp=fopen(_CSS_PATH.$id.".css","wb");
  114. $str = str_replace("‘","'",$str);
  115. $str = str_replace("\'","'",$str);
  116. fwrite ($fp,$str);
  117. fclose($fp);
  118. }
  119. private function Analyse()
  120. {
  121. $VarReg = "|$this->mVarBegin([^}\n]+)$this->mVarEnd|U";
  122. if (!preg_match_all($VarReg, $this->mTpl, $vars , PREG_SET_ORDER)) {
  123. return null;
  124. }
  125. $tmp = array();
  126. foreach ($vars as $v) {
  127. $tmp[$v[1]] = '';//防止有重复的标签
  128. }
  129. return array_keys($tmp);
  130. }
  131. public function BuildAll()
  132. {
  133. $sql = "SELECT id,content,filename,ttype,lang FROM templet WHERE ttype>0";
  134. $rs = $this->mDb->getall($sql);
  135. foreach($rs as $v)
  136. {
  137. if($v["ttype"]=="1")
  138. {
  139. $this->Building("global/".$v["filename"],$v["content"]);
  140. }
  141. elseif($v["ttype"]=="2")
  142. {
  143. $this->Building("general/".$v["lang"]."/".$v["filename"],$v["content"]);
  144. }
  145. elseif($v["ttype"]=="3" || $v["ttype"]=="4")
  146. {
  147. $this->Building("customs/".$v["id"],$v["content"]);
  148. }
  149. elseif($v["ttype"]=="5")
  150. {
  151. $this->Building("ads/".$id,$v["content"]);
  152. }
  153. }
  154. }
  155. private function getType()
  156. {
  157. $this->mType = array(0=>"标签",
  158. 1=>"全局",
  159. 2=>"系统",
  160. 3=>"列表",
  161. 4=>"内容",
  162. 5=>"css");
  163. }
  164. }
  165. ?>