国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

152 lines
5.5KB

  1. <?php
  2. /**
  3. * 生成所有页面
  4. *
  5. * @version $id:makehtml_all.php 8:48 2010年7月13日 tianya $
  6. * @package DedeBIZ.Administrator
  7. * @copyright Copyright (c) 2022 DedeBIZ.COM
  8. * @license https://www.dedebiz.com/license
  9. * @link https://www.dedebiz.com
  10. */
  11. require_once(dirname(__FILE__)."/config.php");
  12. require_once(DEDEINC."/channelunit.func.php");
  13. $action = (empty($action) ? '' : $action);
  14. if ($action == '') {
  15. require_once(DEDEADMIN."/templets/makehtml_all.htm");
  16. exit();
  17. } else if ($action == 'make') {
  18. //step = 1 更新主页、step = 2 更新文档、step = 3 更新栏目
  19. if (empty($step)) $step = 1;
  20. //更新文档前优化数据
  21. /*-------------------
  22. function _1_OptimizeData1()
  23. ---------------------*/
  24. if ($step == 1) {
  25. $starttime = GetMkTime($starttime);
  26. $mkvalue = ($uptype == 'time' ? $starttime : $startid);
  27. OptimizeData($dsql);
  28. ShowMsg("完成数据优化,现在开始更新文档", "makehtml_all.php?action=make&step=2&uptype=$uptype&mkvalue=$mkvalue");
  29. exit();
  30. }
  31. //更新文档
  32. /*-------------------
  33. function _2_MakeArchives()
  34. ---------------------*/
  35. else if ($step == 2) {
  36. include_once(DEDEADMIN."/makehtml_archives_action.php");
  37. exit();
  38. }
  39. //更新主页
  40. /*-------------------------
  41. function _3_MakeHomePage()
  42. -------------------*/
  43. if ($step == 3) {
  44. include_once(DEDEINC."/archive/partview.class.php");
  45. $pv = new PartView();
  46. $row = $pv->dsql->GetOne("SELECT * FROM `#@__homepageset` ");
  47. $templet = str_replace("{style}", $cfg_df_style, $row['templet']);
  48. $homeFile = DEDEADMIN.'/'.$row['position'];
  49. $homeFile = str_replace("\\", '/', $homeFile);
  50. $homeFile = preg_replace("#\/{1,}#", '/', $homeFile);
  51. if ($row['showmod'] == 1) {
  52. $pv->SetTemplet($cfg_basedir.$cfg_templets_dir.'/'.$templet);
  53. $pv->SaveToHtml($homeFile);
  54. $pv->Close();
  55. } else {
  56. if (file_exists($homeFile)) echo "启用静态生成,建议删除"+$homeFile;
  57. }
  58. ShowMsg("完成更新所有文档,现在开始更新栏目页", "makehtml_all.php?action=make&step=4&uptype=$uptype&mkvalue=$mkvalue");
  59. exit();
  60. }
  61. //更新栏目
  62. /*-------------------
  63. function _4_MakeCatalog()
  64. --------------------*/
  65. else if ($step == 4) {
  66. $mkvalue = intval($mkvalue);
  67. $typeidsok = $typeids = array();
  68. $adminID = $cuserLogin->getUserID();
  69. $mkcachefile = DEDEDATA."/mkall_cache_{$adminID}.php";
  70. if ($uptype == 'all' || empty($mkvalue)) {
  71. ShowMsg("不需要进行初处理,现更新所有栏目", "makehtml_list_action.php?gotype=mkallct");
  72. exit();
  73. } else {
  74. if ($uptype == 'time') {
  75. $query = "SELECT DISTINCT typeid FROM `#@__arctiny` WHERE senddate >=".GetMkTime($mkvalue)." AND arcrank>-1";
  76. } else {
  77. $query = "SELECT DISTINCT typeid FROM `#@__arctiny` WHERE id>=$mkvalue AND arcrank>-1";
  78. }
  79. $dsql->SetQuery($query);
  80. $dsql->Execute();
  81. while ($row = $dsql->GetArray()) {
  82. $typeids[$row['typeid']] = 1;
  83. }
  84. foreach ($typeids as $k => $v) {
  85. $vs = array();
  86. $vs = GetParentIds($k);
  87. if (!isset($typeidsok[$k])) {
  88. $typeidsok[$k] = 1;
  89. }
  90. foreach ($vs as $k => $v) {
  91. if (!isset($typeidsok[$v])) {
  92. $typeidsok[$v] = 1;
  93. }
  94. }
  95. }
  96. }
  97. $fp = fopen($mkcachefile, 'w') or die("无法写入缓存文件:{$mkcachefile} 所以无法更新栏目");
  98. if (count($typeidsok) > 0) {
  99. fwrite($fp, "<"."?php\r\n");
  100. $i = -1;
  101. foreach ($typeidsok as $k => $t) {
  102. if ($k != '') {
  103. $i++;
  104. fwrite($fp, "\$idArray[$i]={$k};\r\n");
  105. }
  106. }
  107. fwrite($fp, "?".">");
  108. fclose($fp);
  109. ShowMsg("完成栏目缓存处理,现转向更新栏目", "makehtml_list_action.php?gotype=mkall");
  110. exit();
  111. } else {
  112. fclose($fp);
  113. ShowMsg("没有可更新的栏目,现在作最后数据优化", "makehtml_all.php?action=make&step=10");
  114. exit();
  115. }
  116. }
  117. //成功状态
  118. /*-------------------
  119. function _10_MakeAllOK()
  120. --------------------*/
  121. else if ($step == 10) {
  122. $adminID = $cuserLogin->getUserID();
  123. $mkcachefile = DEDEDATA."/mkall_cache_{$adminID}.php";
  124. @unlink($mkcachefile);
  125. OptimizeData($dsql);
  126. ShowMsg("完成所有文件的更新", "javascript:;");
  127. exit();
  128. }//make step
  129. }//action=='make'
  130. /**
  131. * 优化数据
  132. *
  133. * @access public
  134. * @param object $dsql 数据库对象
  135. * @return void
  136. */
  137. function OptimizeData($dsql)
  138. {
  139. global $cfg_dbprefix;
  140. $tptables = array("{$cfg_dbprefix}archives", "{$cfg_dbprefix}arctiny");
  141. $dsql->SetQuery("SELECT maintable,addtable FROM `#@__channeltype` ");
  142. $dsql->Execute();
  143. while ($row = $dsql->GetObject()) {
  144. $addtable = str_replace('#@__', $cfg_dbprefix, $row->addtable);
  145. if ($addtable != '' && !in_array($addtable, $tptables)) $tptables[] = $addtable;
  146. }
  147. $tptable = '';
  148. foreach ($tptables as $t) $tptable .= ($tptable == '' ? "`{$t}`" : ",`{$t}`");
  149. $dsql->ExecuteNoneQuery(" OPTIMIZE TABLE $tptable; ");
  150. }
  151. ?>