SetQuery("SELECT `varname`,`type`,`value`,`groupid` FROM `#@__sysconfig` ORDER BY aid ASC ");
$dsql->Execute();
while($row = $dsql->GetArray())
{
if($row['type']=='number') fwrite($fp,"\${$row['varname']} = ".$row['value'].";\r\n");
else fwrite($fp,"\${$row['varname']} = '".str_replace("'",'',$row['value'])."';\r\n");
}
fwrite($fp,"?".">");
fclose($fp);
}
function SendData($hash = '',$type = 1)
{
if(!empty($hash)){
global $cfg_basehost;
$str = "basehost=".$cfg_basehost."&hash=".$hash."&type=".$type;
$fp = fsockopen('www.dedecms.com',80,$errno,$errstr,30);
if(!$fp)
{
return FALSE;
}else{
fputs($fp, "POST http://www.dedecms.com/plugin.php HTTP/1.1\r\n");
fputs($fp, "Host: www.dedecms.com\r\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-length: ".strlen($str)."\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $str."\r\n\r\n");
fclose($fp);
}
}else{
return FALSE;
}
}
/*--------------
function ShowAll();
--------------*/
if($action=='')
{
$types = array('soft'=>'模块','templets'=>'模板','plus'=>'小插件','patch'=>'补丁');
$dm = new DedeModule($mdir);
if(empty($moduletype)) $moduletype = '';
$modules_remote = $dm->GetModuleUrlList($moduletype,$mdurl);
$modules = array();
$modules = $dm->GetModuleList($moduletype);
is_array($modules) || $modules = array();
$modules = array_merge($modules,$modules_remote);
require_once(dirname(__FILE__)."/templets/module_main.htm");
$dm->Clear();
exit();
}
/*--------------
function Setup();
--------------*/
else if($action=='setup')
{
$dm = new DedeModule($mdir);
$infos = $dm->GetModuleInfo($hash);
if($infos['url']=='') $infos['url'] = ' ';
$alertMsg = ($infos['lang'] == $cfg_soft_lang ? '' : '
(这个模块的语言编码与你系统的编码不一致,请向开发者确认它的兼容性)');
$filelists = $dm->GetFileLists($hash);
$filelist = '';
$prvdirs = array();
$incdir = array();
foreach($filelists as $v)
{
if(empty($v['name'])) continue;
if($v['type']=='dir')
{
$v['type'] = '目录';
$incdir[] = $v['name'];
}
else
{
$v['type'] = '文件';
}
$filelist .= "{$v['type']}|{$v['name']}\r\n";
}
//检测需要的目录权限
foreach($filelists as $v)
{
$prvdir = preg_replace("#\/([^\/]*)$#", '/', $v['name']);
if(!preg_match("#^\.#", $prvdir)) $prvdir = './';
$n = TRUE;
foreach($incdir as $k=>$v)
{
if(preg_match("#^".$v."#i", $prvdir))
{
$n = FALSE;
BREAK;
}
}
if(!isset($prvdirs[$prvdir]) && $n && is_dir($prvdir))
{
$prvdirs[$prvdir][0] = 1;
$prvdirs[$prvdir][1] = TestWriteAble($prvdir);
}
}
$prvdir = "
\r\n";
$prvdir .= "目录 | 可写 |
\r\n";
foreach($prvdirs as $k=>$v)
{
if($v) $cw = '√';
else $cw = '×';
$prvdir .= "$k | ";
$prvdir .= "$cw |
\r\n";
}
$prvdir .= "
";
$win = new OxWindow();
$win->Init("module_main.php","js/blank.js","post");
$wecome_info = "模块管理";
$win->AddTitle(" 模块管理 >> 安装模块: {$infos['name']}");
$win->AddHidden("hash",$hash);
$win->AddHidden("action",'setupstart');
if(trim($infos['url'])=='') $infos['url'] = '无';
$msg = "
";
$win->AddMsgItem("$msg
");
$winform = $win->GetWindow("ok","");
$win->Display();
$dm->Clear();
exit();
}
/*---------------
function SetupRun()
--------------*/
else if($action=='setupstart')
{
if(!is_writeable($mdir))
{
ShowMsg("目录 {$mdir} 不支持写入,这将导致安装程序没法正常创建!","-1");
exit();
}
$dm = new DedeModule($mdir);
$minfos = $dm->GetModuleInfo($hash);
extract($minfos, EXTR_SKIP);
$menustring = addslashes($dm->GetSystemFile($hash,'menustring'));
$indexurl = str_replace('**', '=', $indexurl);
$query = "INSERT INTO `#@__sys_module`(`hashcode` , `modname` , `indexname` , `indexurl` , `ismember` , `menustring` )
VALUES ('$hash' , '$name' , '$indexname' , '$indexurl' , '$ismember' , '$menustring' ) ";
$rs = $dsql->ExecuteNoneQuery("DELETE FROM `#@__sys_module` WHERE hashcode LIKE '$hash' ");
$rs = $dsql->ExecuteNoneQuery($query);
if(!$rs)
{
ShowMsg('保存数据库信息失败,无法完成安装!'.$dsql->GetError(),'javascript:;');
exit();
}
$dm->WriteFiles($hash,$isreplace);
$filename = '';
if(!isset($autosetup) || $autosetup==0) $filename = $dm->WriteSystemFile($hash, 'setup');
if(!isset($autodel) || $autodel==0) $dm->WriteSystemFile($hash, 'uninstall');
$dm->WriteSystemFile($hash,'readme');
$dm->Clear();
//用模块的安装程序安装
if(!isset($autosetup) || $autosetup==0)
{
include(DEDEDATA.'/module/'.$filename);
exit();
}
//系统自动安装
else
{
$mysql_version = $dsql->GetVersion(TRUE);
//默认使用MySQL 4.1 以下版本的SQL语句,对大于4.1版本采用替换处理 TYPE=MyISAM ==> ENGINE=MyISAM DEFAULT CHARSET=#~lang~#
$setupsql = $dm->GetSystemFile($hash, 'setupsql40');
$setupsql = preg_replace("#ENGINE=MyISAM#i", 'TYPE=MyISAM', $setupsql);
$sql41tmp = 'ENGINE=MyISAM DEFAULT CHARSET='.$cfg_db_language;
if($mysql_version >= 4.1)
{
$setupsql = preg_replace("#TYPE=MyISAM#i", $sql41tmp, $setupsql);
}
//_ROOTURL_
if($cfg_cmspath=='/') $cfg_cmspath = '';
$rooturl = $cfg_basehost.$cfg_cmspath;
$setupsql = preg_replace("#_ROOTURL_#i", $rooturl, $setupsql);
$setupsql = preg_replace("#[\r\n]{1,}#", "\n", $setupsql);
$sqls = @split(";[ \t]{0,}\n", $setupsql);
foreach($sqls as $sql)
{
if(trim($sql)!='') $dsql->ExecuteNoneQuery($sql);
}
ReWriteConfigAuto();
$rflwft = "";
echo $rflwft;
UpDateCatCache();
SendData($hash);
ShowMsg('模块安装完成...', 'module_main.php');
exit();
}
}
/*--------------
function DelModule();
--------------*/
else if($action=='del')
{
$dm = new DedeModule($mdir);
$infos = $dm->GetModuleInfo($hash);
if($infos['url']=='') $infos['url'] = ' ';
$alertMsg = ($infos['lang']==$cfg_soft_lang ? '' : '
(这个模块的语言编码与你系统的编码不一致,请向开发者确认它的兼容性)');
$win = new OxWindow();
$win->Init("module_main.php", "js/blank.js", "post");
$wecome_info = "模块管理";
$win->AddTitle("模块管理 >> 删除模块: {$infos['name']}");
$win->AddHidden('hash', $hash);
$win->AddHidden('action', 'delok');
$msg = "
模块名称: |
{$infos['name']} |
语言: |
{$infos['lang']} {$alertMsg} |
文件大小: |
{$infos['filesize']} |
团队名称: |
{$infos['team']} |
发布时间: |
{$infos['time']} |
电子邮箱: |
{$infos['email']} |
官方网址: |
{$infos['url']} |
使用协议: |
点击浏览... |
删除模块仅删除这个模块的安装包文件,如果你已经安装,请执行卸载程序来删除!
|
";
$win->AddMsgItem("$msg
");
$winform = $win->GetWindow("ok","");
$win->Display();
$dm->Clear();
exit();
}
else if($action=='delok')
{
$dm = new DedeModule($mdir);
$modfile = $mdir."/".$dm->GetHashFile($hash);
unlink($modfile) or die("删除文件 {$modfile} 失败!");
ShowMsg("成功删除一个模块文件!","module_main.php");
exit();
}
/*--------------
function UnInstall();
--------------*/
else if($action=='uninstall')
{
$dm = new DedeModule($mdir);
$infos = $dm->GetModuleInfo($hash);
if($infos['url']=='') $infos['url'] = ' ';
$alertMsg = ($infos['lang']==$cfg_soft_lang ? '' : '
(这个模块的语言编码与你系统的编码不一致,请向开发者确认它的兼容性)');
$filelists = $dm->GetFileLists($hash);
$filelist = '';
foreach($filelists as $v)
{
if(empty($v['name'])) continue;
if($v['type']=='dir') $v['type'] = '目录';
else $v['type'] = '文件';
$filelist .= "{$v['type']}|{$v['name']}\r\n";
}
$win = new OxWindow();
$win->Init("module_main.php", "js/blank.js", "post");
$wecome_info = "模块管理";
$win->AddTitle("模块管理 >> 卸载模块: {$infos['name']}");
$win->AddHidden("hash",$hash);
$win->AddHidden("action",'uninstallok');
$msg = "
";
$win->AddMsgItem("$msg
");
$winform = $win->GetWindow("ok","");
$win->Display();
$dm->Clear();
exit();
}
/*--------------
function UnInstallRun();
--------------*/
else if($action=='uninstallok')
{
$dsql->ExecuteNoneQuery("DELETE FROM `#@__sys_module` WHERE hashcode LIKE '$hash' ");
$dm = new DedeModule($mdir);
$minfos = $dm->GetModuleInfo($hash);
extract($minfos, EXTR_SKIP);
if(!isset($moduletype) || $moduletype != 'patch' )
{
$dm->DeleteFiles($hash, $isreplace);
}
@$dm->DelSystemFile($hash, 'readme');
@$dm->DelSystemFile($hash, 'setup');
$dm->Clear();
if(!isset($autodel) || $autodel==0)
{
include(DEDEDATA."/module/{$hash}-uninstall.php");
@unlink(DEDEDATA."/module/{$hash}-uninstall.php");
exit();
}
else
{
@$dm->DelSystemFile($hash, 'uninstall');
$delsql = $dm->GetSystemFile($hash, 'delsql');
if(trim($delsql)!='')
{
$sqls = explode(';', $delsql);
foreach($sqls as $sql)
{
if(trim($sql)!='') $dsql->ExecuteNoneQuery($sql);
}
}
ReWriteConfigAuto();
$rflwft = "";
echo $rflwft;
SendData($hash,2);
ShowMsg('模块卸载完成...','module_main.php');
exit();
}
}
/*--------------
function ShowReadme();
--------------*/
else if($action=='showreadme')
{
$dm = new DedeModule($mdir);
$msg = $dm->GetSystemFile($hash,'readme');
$msg = preg_replace("/(.*)(.*)/isU","",$msg);
$dm->Clear();
$win = new OxWindow();
$win->Init("module_main.php","js/blank.js","post");
$wecome_info = "模块管理";
$win->AddTitle("模块管理 >> 使用说明:");
$win->AddMsgItem("$msg
");
$winform = $win->GetWindow("hand");
$win->Display();
exit();
}
/*--------------
function ViewOne();
--------------*/
else if($action=='view')
{
$dm = new DedeModule($mdir);
$infos = $dm->GetModuleInfo($hash);
if($infos['url']=='') $infos['url'] = ' ';
$alertMsg = ($infos['lang'] == $cfg_soft_lang ? '' : '
(这个模块的语言编码与你系统的编码不一致,请向开发者确认它的兼容性)');
$filelists = $dm->GetFileLists($hash);
$filelist = '';
$setupinfo = '';
foreach($filelists as $v)
{
if(empty($v['name'])) continue;
if($v['type']=='dir') $v['type'] = '目录';
else $v['type'] = '文件';
$filelist .= "{$v['type']}|{$v['name']}\r\n";
}
if(file_exists(DEDEDATA."/module/{$hash}-readme.php"))
{
$setupinfo = "已安装 卸载";
} else {
$setupinfo = "未安装 安装";
}
$win = new OxWindow();
$win->Init("", "js/blank.js","");
$wecome_info = "模块管理";
$win->AddTitle("模块管理 >> 模块详情: {$infos['name']}");
$msg = "
模块名称: |
{$infos['name']} |
语言: |
{$infos['lang']} {$alertMsg} |
文件大小: |
{$infos['filesize']} |
是否已安装: |
{$setupinfo} |
团队名称: |
{$infos['team']} |
发布时间: |
{$infos['time']} |
电子邮箱: |
{$infos['email']} |
官方网址: |
{$infos['url']} |
使用协议: |
点击浏览... |
模块包含的文件: (文件路径相对于当前目录) | |
|
";
$win->AddMsgItem("$msg
");
$winform = $win->GetWindow('hand', '');
$win->Display();
$dm->Clear();
exit();
}
/*--------------
function Edit();
--------------*/
else if($action=='edit')
{
$dm = new DedeModule($mdir);
$minfos = $dm->GetModuleInfo($hash);
extract($minfos, EXTR_SKIP);
if(!isset($lang)) $lang = 'gb2312';
if(!isset($moduletype)) $moduletype = 'soft';
$menustring = $dm->GetSystemFile($hash, 'menustring');
$setupsql40 = dede_htmlspecialchars($dm->GetSystemFile($hash, 'setupsql40'));
$readmetxt = $dm->GetSystemFile($hash, 'readme');
$delsql = $dm->GetSystemFile($hash, 'delsql');
$filelist = $dm->GetSystemFile($hash,'oldfilelist',false);
$indexurl = str_replace('**', '=', $indexurl);
$dm->Clear();
require_once(dirname(__FILE__).'/templets/module_edit.htm');
exit();
}
/*--------------
function Download();
--------------*/
else if($action=='download')
{
$model_remote_url = UPDATEHOST.'dedecms/module_'.$cfg_soft_lang.'/'.$hash.'.xml';
$model_remote = file_get_contents($model_remote_url);
file_put_contents($mdir.'/'.$hash.'.xml',$model_remote);
echo "未安装 安装";
}