📄 mychannel_edit.php
字号:
<?php
require_once(dirname(__FILE__)."/config.php");
CheckPurview('c_Edit');
require_once(DEDEINC."/dedetag.class.php");
require_once(DEDEINC."/oxwindow.class.php");
if(empty($dopost))
{
$dopost="";
}
$id = isset($id) && is_numeric($id) ? $id : 0;
/*----------------
function __ShowHide()
-----------------*/
if($dopost=="show")
{
$dsql->ExecuteNoneQuery("update `#@__channeltype` set isshow=1 where id='$id' ");
ShowMsg("操作成功!","mychannel_main.php");
exit();
}
else if($dopost=="hide")
{
$dsql->ExecuteNoneQuery("update `#@__channeltype` set isshow=0 where id='$id'");
ShowMsg("操作成功!","mychannel_main.php");
exit();
}
/*----------------
function __CopyStart()
-----------------*/
else if($dopost=="copystart")
{
if($id==-1)
{
ShowMsg("专题模型不支持复制!","-1");
exit();
}
$row = $dsql->GetOne("Select * From `#@__channeltype` where id='$id'");
if($row['id']>-1)
{
$nrow = $dsql->GetOne("Select max(id) as id From `#@__channeltype` limit 0,1 ");
$newid = $nrow['id']+1;
if($newid<10)
{
$newid = $newid+10;
}
$idname = $newid;
}
else
{
$nrow = $dsql->GetOne("Select min(id) as id From `#@__channeltype` limit 0,1 ");
$newid = $nrow['id']-1;
if($newid<-10)
{
$newid = $newid-10;
}
$idname = 'w'.($newid * -1);
}
$row = $dsql->GetOne("Select * From `#@__channeltype` where id='$id'");
$wintitle = "频道管理-模型复制";
$wecome_info = "<a href='mychannel_main.php'>频道管理</a> - 模型复制";
$win = new OxWindow();
$win->Init("mychannel_edit.php","js/blank.js","post");
$win->AddTitle("被复制频道: [<font color='red'>".$row['typename']."</font>]");
$win->AddHidden("cid",$id);
$win->AddHidden("id",$id);
$win->AddHidden("dopost",'copysave');
$msg = "
<table width='460' border='0' cellspacing='0' cellpadding='0'>
<tr>
<td width='170' height='24' align='center'>新频道id:</td>
<td width='230'><input name='newid' type='text' id='newid' size='6' value='{$newid}' /></td>
</tr>
<tr>
<td height='24' align='center'>新频道名称:</td>
<td><input name='newtypename' type='text' id='newtypename' value='{$row['typename']}{$idname}' style='width:250px' /></td>
</tr>
<tr>
<td height='24' align='center'>新频道标识:</td>
<td><input name='newnid' type='text' id='newnid' value='{$row['nid']}{$idname}' style='width:250px' /></td>
</tr>
<tr>
<td height='24' align='center'>新附加表:</td>
<td><input name='newaddtable' type='text' id='newaddtable' value='{$row['addtable']}{$idname}' style='width:250px' /></td>
</tr>
<tr>
<td height='24' align='center'>复制模板:</td>
<td>
<input name='copytemplet' type='radio' id='copytemplet' value='1' class='np' checked='checked' /> 复制
<input name='copytemplet' type='radio' id='copytemplet' class='np' value='0' /> 不复制
</td>
</tr>
</table>
";
$win->AddMsgItem("<div style='padding:20px;line-height:300%'>$msg</div>");
$winform = $win->GetWindow("ok","");
$win->Display();
exit();
}
/*----------------
function __Export()
-----------------*/
else if($dopost=="export")
{
if($id==-1)
{
ShowMsg("专题模型不支持导出!","-1");
exit();
}
$row = $dsql->GetOne("Select * From `#@__channeltype` where id='$id' ");
$channelconfig = '';
$row['maintable'] = ereg_replace('dede_','#@__',$row['maintable']);
$row['addtable'] = ereg_replace('dede_','#@__',$row['addtable']);
foreach($row as $k=>$v)
{
if($k=='fieldset') $v = "\r\n$v\r\n";
$channelconfig .= "<channel:{$k}>$v</channel:{$k}>\r\n";
}
$wintitle = "导出内容模型规则";
$wecome_info = "<a href='mychannel_main.php'><u>内容模型管理</u></a>::导出内容模型规则";
$win = new OxWindow();
$win->Init();
$win->AddTitle("以下为规则 [{$row['typename']}] 的模型规则,你可以共享给你的朋友:");
$winform = $win->GetWindow("hand","<textarea name='config' style='width:100%;height:450px;word-wrap: break-word;word-break:break-all;'>".$channelconfig."</textarea>");
$win->Display();
exit();
}
/*----------------
function __ExportIn()
-----------------*/
else if($dopost=="exportin")
{
$wintitle = "导入内容模型规则";
$wecome_info = "<a href='mychannel_main.php'>内容模型管理</a>::导入内容模型规则";
$win = new OxWindow();
$win->Init("mychannel_edit.php","js/blank.js","post");
$win->AddHidden("dopost","exportinok");
$win->AddTitle("输入规则内容:(导入模型会和原有模型冲突,不过可以在导入后修改)");
$win->AddMsgItem("<textarea name='exconfig' style='width:100%;height:450px;word-wrap: break-word;word-break:break-all;'></textarea>");
$winform = $win->GetWindow("ok");
$win->Display();
exit();
}
/*----------------
function __ExportInOk()
-----------------*/
else if($dopost=="exportinok")
{
require_once(DEDEADMIN."/inc/inc_admin_channel.php");
function GotoStaMsg($msg)
{
global $wintitle,$wecome_info,$winform;
$wintitle = "导入内容模型规则";
$wecome_info = "<a href='mychannel_main.php'>内容模型管理</a>::导入内容模型规则";
$win = new OxWindow();
$win->Init();
$win->AddTitle("操作状态提示:");
$win->AddMsgItem($msg);
$winform = $win->GetWindow("hand");
$win->Display();
exit();
}
$msg = "无信息";
$exconfig = stripslashes($exconfig);
$dtp = new DedeTagParse();
$dtp->SetNameSpace('channel','<','>');
$dtp->LoadSource($exconfig);
if(!is_array($dtp->CTags))
{
GotoStaMsg("模型规则不是合法的Dede模型规则!");
}
$fields = array();
foreach($dtp->CTags as $ctag)
{
$fname = $ctag->GetName('name');
$fields[$fname] = trim($ctag->GetInnerText());
}
if(!isset($fields['nid']) || !isset($fields['fieldset']))
{
GotoStaMsg("模型规则不是合法的Dede模型规则!");
}
//正常的导入过程
$mysql_version = $dsql->GetVersion(true);
$row = $dsql->GetOne("Select * From `#@__channeltype` where nid='{$fields['nid']}' ");
if(is_array($row))
{
GotoStaMsg("系统中已经存在相同标识 {$fields['nid']} 的规则!");
}
//创建表
if($fields['issystem'] != -1)
{
$tabsql = "CREATE TABLE IF NOT EXISTS `{$fields['addtable']}`(
`aid` int(11) NOT NULL default '0',
`typeid` int(11) NOT NULL default '0',
`redirecturl` varchar(255) NOT NULL default '',
`templet` varchar(30) NOT NULL default '',
`userip` char(15) NOT NULL default '',
";
}
else
{
$tabsql = "CREATE TABLE IF NOT EXISTS `{$fields['addtable']}`(
`aid` int(11) NOT NULL default '0',
`typeid` int(11) NOT NULL default '0',
`channel` SMALLINT NOT NULL DEFAULT '0',
`arcrank` SMALLINT NOT NULL DEFAULT '0',
`mid` MEDIUMINT( 8 ) UNSIGNED NOT NULL DEFAULT '0',
`click` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0',
`title` varchar(60) NOT NULL default '',
`senddate` int(11) NOT NULL default '0',
`flag` set('c','h','p','f','s','j','a','b') default NULL,
";
}
if($mysql_version < 4.1)
{
$tabsql .= " PRIMARY KEY (`aid`), KEY `typeid` (`typeid`)\r\n) TYPE=MyISAM; ";
}
else
{
$tabsql .= " PRIMARY KEY (`aid`), KEY `typeid` (`typeid`)\r\n) ENGINE=MyISAM DEFAULT CHARSET=".$cfg_db_language."; ";
}
$rs = $dsql->ExecuteNoneQuery($tabsql);
if(!$rs)
{
GotoStaMsg("创建表失败!".$dsql->GetError());
exit();
}
if($fields['issystem']==1)
{
$fields['issystem'] = 0;
}
if($fields['issystem'] == 0)
{
$row = $dsql->GetOne("Select id From `#@__channeltype` order by id desc ");
$fields['newid'] = $row['id'] + 1;
}
else
{
$row = $dsql->GetOne("Select id From `#@__channeltype` order by id asc ");
$fields['newid'] = $row['id'] - 1;
}
$fieldset = $fields['fieldset'];
$fields['fieldset'] = addslashes($fields['fieldset']);
$inquery = " INSERT INTO `#@__channeltype`(`id` , `nid` , `typename` , `addtable` , `addcon` ,
`mancon` , `editcon` , `useraddcon` , `usermancon` , `usereditcon` ,
`fieldset` , `listfields` , `issystem` , `isshow` , `issend` ,
`arcsta`,`usertype` , `sendrank` )
VALUES('{$fields['newid']}' , '{$fields['nid']}' , '{$fields['typename']}' , '{$fields['addtable']}' , '{$fields['addcon']}' ,
'{$fields['mancon']}' , '{$fields['editcon']}' , '{$fields['useraddcon']}' , '{$fields['usermancon']}' , '{$fields['usereditcon']}' ,
'{$fields['fieldset']}' , '{$fields['listfields']}' , '{$fields['issystem']}' , '{$fields['isshow']}' , '{$fields['issend']}' ,
'{$fields['arcsta']}' , '{$fields['usertype']}' , '{$fields['sendrank']}' ); ";
$rs = $dsql->ExecuteNoneQuery($inquery);
if(!$rs)
{
GotoStaMsg("导入模型时发生错误!".$dsql->GetError());
}
$dtp = new DedeTagParse();
$dtp->SetNameSpace("field","<",">");
$dtp->LoadSource($fieldset);
$allfields = '';
if(is_array($dtp->CTags))
{
foreach($dtp->CTags as $ctag)
{
//检测被修改的字段类型
$dtype = $ctag->GetAtt('type');
$fieldname = $ctag->GetName();
$dfvalue = $ctag->GetAtt('default');
$islist = $ctag->GetAtt('islist');
$mxlen = $ctag->GetAtt('maxlength');
$fieldinfos = GetFieldMake($dtype,$fieldname,$dfvalue,$mxlen);
$ntabsql = $fieldinfos[0];
$buideType = $fieldinfos[1];
if($islist!='')
{
$allfields .= ($allfields=='' ? $fieldname : ','.$fieldname);
}
$dsql->ExecuteNoneQuery(" ALTER TABLE `{$fields['addtable']}` ADD $ntabsql ");
}
}
if($allfields!='')
{
$dsql->ExecuteNoneQuery("Update `#@__channeltype` set listfields='$allfields' where id='{$fields['newid']}' ");
}
GotoStaMsg("成功导入一个模型!");
}
/*----------------
function __SaveCopy()
-----------------*/
else if($dopost=="copysave")
{
$cid = intval($cid);
$row = $dsql->GetOne("Select * From `#@__channeltype` where id='$cid' ", MYSQL_ASSOC);
foreach($row as $k=>$v)
{
${strtolower($k)} = addslashes($v);
}
$inquery = " INSERT INTO `#@__channeltype`(`id` , `nid` , `typename` , `addtable` , `addcon` ,
`mancon` , `editcon` , `useraddcon` , `usermancon` , `usereditcon` , `fieldset` , `listfields` ,
`issystem` , `isshow` , `issend` , `arcsta`,`usertype` , `sendrank` )
VALUES('$newid' , '$newnid' , '$newtypename' , '$newaddtable' , '$addcon' ,
'$mancon' , '$editcon' , '$useraddcon' , '$usermancon' , '$usereditcon' , '$fieldset' , '$listfields' ,
'$issystem' , '$isshow' , '$issend' , '$arcsta','$usertype' , '$sendrank' );
";
$mysql_version = $dsql->GetVersion(true);
if(!$dsql->IsTable($newaddtable))
{
$dsql->Execute('me',"SHOW CREATE TABLE {$dsql->dbName}.{$addtable}");
$row = $dsql->GetArray('me', MYSQL_BOTH);
$tableStruct = $row[1];
$tb = str_replace('#@__',$cfg_dbprefix,$addtable);
$tableStruct = preg_replace("/CREATE TABLE `$addtable`/iU","CREATE TABLE `$newaddtable`",$tableStruct);
$dsql->ExecuteNoneQuery($tableStruct);
}
if($copytemplet==1)
{
$tmpletdir = $cfg_basedir.$cfg_templets_dir.'/'.$cfg_df_style;
copy("{$tmpletdir}/{$nid}_article.htm","{$tmpletdir}/{$newnid}_article.htm");
copy("{$tmpletdir}/list_{$nid}.htm","{$tmpletdir}/{$newnid}_list.htm");
copy("{$tmpletdir}/index_{$nid}.htm","{$tmpletdir}/{$newnid}_index.htm");
}
$rs = $dsql->ExecuteNoneQuery($inquery);
if($rs)
{
ShowMsg("成功复制模型,现转到详细参数页... ","mychannel_edit.php?id={$newid}&dopost=edit");
exit();
}
else
{
$errv = $dsql->GetError();
ShowMsg("系统出错,请把错误代码发送到官方论坛,以检查原因!<br /> 错误代码:mychannel_edit.php?dopost=savecopy $errv","javascript:;");
exit();
}
}
/*------------
function __SaveEdit()
------------*/
else if($dopost=="save")
{
$fieldset = ereg_replace("[\r\n]{1,}","\r\n",$fieldset);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -