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

181 lines
5.8KB

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