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