module_upload.php
4.57 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
<?php
/**
* 模块上传
*
* @version $Id: module_upload.php 1 14:43 2010年7月20日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");
CheckPurview('sys_module');
require_once(dirname(__FILE__)."/../include/dedemodule.class.php");
require_once(dirname(__FILE__)."/../include/oxwindow.class.php");
if(empty($action)) $action = '';
$mdir = DEDEDATA.'/module';
if($action=='upload')
{
if( !is_uploaded_file($upfile) )
{
ShowMsg("貌似你什么都没有上传哦!", "javascript:;");
exit();
}
else
{
include_once(dirname(__FILE__)."/../include/zip.class.php");
$tmpfilename = $mdir.'/'.ExecTime().mt_rand(10000,50000).'.tmp';
move_uploaded_file($upfile, $tmpfilename) or die("把上传的文件移动到{$tmpfilename}时失败,请检查{$mdir}目录是否有写入权限!");
//ZIP格式的文件
if($filetype==1)
{
$z = new zip();
$files = $z->get_List($tmpfilename);
$dedefileindex = -1;
//为了节省资源,系统仅以.xml作为扩展名识别ZIP包里了dede模块格式文件
if(is_array($files))
{
for($i=0; $i<count($files); $i++)
{
if( preg_match( "#\.xml#i", $files[$i]['filename']) )
{
$dedefile = $files[$i]['filename'];
$dedefileindex = $i;
break;
}
}
}
if($dedefileindex==-1)
{
unlink($tmpfilename);
ShowMsg("对不起,你上传的压缩包中不存在dede模块文件!<br /><br /><a href='javascript:history.go(-1);'>>>返回重新上传>></a>","javascript:;");
exit();
}
$ziptmp = $mdir.'/ziptmp';
$z->Extract($tmpfilename, $ziptmp, $dedefileindex);
unlink($tmpfilename);
$tmpfilename = $mdir."/ziptmp/".$dedefile;
}
$dm = new DedeModule($mdir);
$infos = $dm->GetModuleInfo($tmpfilename,'file');
if(empty($infos['hash']))
{
unlink($tmpfilename);
$dm->Clear();
ShowMsg("对不起,你上传的文件可能不是织梦模块的标准格式文件!<br /><br /><a href='javascript:history.go(-1);'>>>返回重新上传>></a>","javascript:;");
exit();
}
$okfile = $mdir.'/'.$infos['hash'].'.xml';
if($dm->HasModule($infos['hash']) && empty($delhas))
{
unlink($tmpfilename);
$dm->Clear();
ShowMsg("对不起,你上传的模块已经存在,<br />如果要覆盖请先删除原来版本或选择强制删除的选项!<br /><br /><a href='javascript:history.go(-1);'>>>返回重新上传>></a>","javascript:;");
exit();
}
@unlink($okfile);
copy($tmpfilename,$okfile);
@unlink($tmpfilename);
$dm->Clear();
ShowMsg("成功上传一个新的模块!","module_main.php?action=view&hash={$infos['hash']}");
exit();
}
}
else
{
$win = new OxWindow();
$win->Init("module_upload.php", "js/blank.js", "POST' enctype='multipart/form-data");
$win->mainTitle = "模块管理";
$wecome_info = "<a href='module_main.php'>模块管理</a> >> 上传模块";
$win->AddTitle('请选择要上传的文件:');
$win->AddHidden("action", 'upload');
$msg = "
<table width='600' border='0' cellspacing='0' cellpadding='0'>
<tr>
<td height='30'>文件格式:</td>
<td>
<input name='filetype' type='radio' value='0' checked='checked' />
正常的模块包
<input type='radio' name='filetype' value='1' />
经过 zip 压缩的模块包 </td>
</tr>
<tr>
<td height='30'>已有模块:</td>
<td>
<input name='delhas' type='checkbox' id='delhas' value='1' /> 强制删除同名模块(这可能导致已经安装的模块无法卸载)
</td>
</tr>
<tr>
<td width='96' height='60'>请选择文件:</td>
<td width='504'>
<input name='upfile' type='file' id='upfile' style='width:380px' /> </td>
</tr>
</table>
";
$win->AddMsgItem("<div style='padding-left:20px;line-height:150%;'>$msg</div>");
$winform = $win->GetWindow('ok', '');
$win->Display();
exit();
}
//ClearAllLink();