国内流行的内容管理系统(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.

136 lines
5.1KB

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