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 = " 频道管理 - 模型复制"; $win = new OxWindow(); $win->Init("mychannel_edit.php", "js/blank.js", "post"); $win->AddTitle(" 被复制频道: [".$row['typename']."]"); $win->AddHidden("cid", $id); $win->AddHidden("id", $id); $win->AddHidden("dopost", 'copysave'); $msg = "
新频道id:
新频道名称:
新频道标识:
新附加表:
复制模板:  
"; $win->AddMsgItem("
$msg
"); $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'] = preg_replace('#dede_#', '#@__', $row['maintable']); $row['addtable'] = preg_replace('#dede_#', '#@__', $row['addtable']); foreach($row as $k=>$v) { if($k=='fieldset') $v = "\r\n$v\r\n"; $channelconfig .= "$v\r\n"; } $wintitle = "导出内容模型规则"; $wecome_info = "内容模型管理::导出内容模型规则"; $win = new OxWindow(); $win->Init(); $win->AddTitle("以下为规则 [{$row['typename']}] 的模型规则,你可以共享给你的朋友:"); $winform = $win->GetWindow("hand", ""); $win->Display(); exit(); } /*---------------- function __ExportIn() -----------------*/ else if($dopost=="exportin") { $wintitle = "导入内容模型规则"; $wecome_info = "内容模型管理::导入内容模型规则"; $win = new OxWindow(); $win->Init("mychannel_edit.php", "js/blank.js", "post"); $win->AddHidden("dopost", "exportinok"); $win->AddTitle("输入规则内容:(导入模型会和原有模型冲突,不过可以在导入后修改)"); $win->AddMsgItem(""); $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 = "内容模型管理::导入内容模型规则"; $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}/article_{$nid}.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("系统出错,请把错误代码发送到官方论坛,以检查原因!
错误代码:mychannel_edit.php?dopost=savecopy $errv","javascript:;"); exit(); } } /*------------ function __SaveEdit() ------------*/ else if($dopost=="save") { $fieldset = preg_replace("#[\r\n]{1,}#", "\r\n", $fieldset); $usertype = empty($usertype)? '' : $usertype; $query = "Update `#@__channeltype` set typename = '$typename', addtable = '$addtable', addcon = '$addcon', mancon = '$mancon', editcon = '$editcon', useraddcon = '$useraddcon', usermancon = '$usermancon', usereditcon = '$usereditcon', fieldset = '$fieldset', listfields = '$listfields', issend = '$issend', arcsta = '$arcsta', usertype = '$usertype', sendrank = '$sendrank', needdes = '$needdes', needpic = '$needpic', titlename = '$titlename', onlyone = '$onlyone', dfcid = '$dfcid' where id='$id' "; if(trim($fieldset)!='') { $dtp = new DedeTagParse(); $dtp->SetNameSpace("field", "<", ">"); $dtp->LoadSource(stripslashes($fieldset)); if(!is_array($dtp->CTags)) { ShowMsg("文本配置参数无效,无法进行解析!","-1"); exit(); } } $trueTable = str_replace("#@__", $cfg_dbprefix, $addtable); if(!$dsql->IsTable($trueTable)) { ShowMsg("系统找不到你所指定的表 $trueTable ,请手工创建这个表!","-1"); exit(); } $dsql->ExecuteNoneQuery($query); ShowMsg("成功更改一个模型!","mychannel_main.php"); exit(); } /*-------------------- function __GetTemplate() --------------------*/ else if($dopost=="gettemplets") { require_once(DEDEINC."/oxwindow.class.php"); $row = $dsql->GetOne("SELECT * FROM `#@__channeltype` WHERE id='$id'"); $wintitle = " 频道管理-查看模板"; $wecome_info = "频道管理::查看模板"; $win = new OxWindow(); $win->Init("", "js/blank.js", ""); $win->AddTitle(" 频道:(".$row['typename'].")默认模板文件说明:"); $defaulttemplate = $cfg_templets_dir.'/'.$cfg_df_style; $msg = " 文档模板:{$defaulttemplate}/article_{$row['nid']}.htm [修改]
列表模板:{$defaulttemplate}/list_{$row['nid']}.htm [修改]
频道封面模板:{$defaulttemplate}/index_{$row['nid']}.htm [修改] "; $win->AddMsgItem("
$msg
"); $winform = $win->GetWindow("hand",""); $win->Display(); exit(); } /*-------------------- function __Delete() --------------------*/ else if($dopost=="delete") { CheckPurview('c_Del'); $row = $dsql->GetOne("SELECT * FROM `#@__channeltype` WHERE id='$id'"); if($row['issystem'] == 1) { ShowMsg("系统模型不允许删除!","mychannel_main.php"); exit(); } if(empty($job)) $job=""; if($job == "") //确认提示 { require_once(DEDEINC."/oxwindow.class.php"); $wintitle = "频道管理-删除模型"; $wecome_info = "频道管理::删除模型"; $win = new OxWindow(); $win->Init("mychannel_edit.php","js/blank.js","POST"); $win->AddHidden("job","yes"); $win->AddHidden("dopost",$dopost); $win->AddHidden("id",$id); $win->AddTitle("你确实要删除 (".$row['typename'].") 这个频道?"); $winform = $win->GetWindow("ok"); $win->Display(); exit(); } else if($job=="yes") //操作 { require_once(DEDEINC."/typeunit.class.admin.php"); $myrow = $dsql->GetOne("SELECT addtable FROM `#@__channeltype` WHERE id='$id'",MYSQL_ASSOC); if(!is_array($myrow)) { ShowMsg('你所指定的频道信息不存在!','-1'); exit(); } //检查频道的表是否独占数据表 $addtable = str_replace($cfg_dbprefix,'',str_replace('#@__',$cfg_dbprefix,$myrow['addtable'])); $row = $dsql->GetOne("SELECT COUNT(id) AS dd FROM `#@__channeltype` WHERE addtable like '{$cfg_dbprefix}{$addtable}' OR addtable LIKE CONCAT('#','@','__','$addtable') ; "); $isExclusive2 = ($row['dd']>1 ? 0 : 1 ); //获取与频道关连的所有栏目id $tids = ''; $dsql->Execute('qm',"SELECT id FROM `#@__arctype` WHERE channeltype='$id'"); while($row = $dsql->GetArray('qm')) { $tids .= ($tids=='' ? $row['id'] : ','.$row['id']); } //删除相关信息 if($tids!='') { $dsql->ExecuteNoneQuery("DELETE FROM `#@__arctiny` WHERE typeid IN($tids); "); $dsql->ExecuteNoneQuery("DELETE FROM `{$myrow['maintable']}` WHERE typeid IN($tids); "); $dsql->ExecuteNoneQuery("DELETE FROM `#@__spec` WHERE typeid IN ($tids); "); $dsql->ExecuteNoneQuery("DELETE FROM `#@__feedback` WHERE typeid IN ($tids); "); $dsql->ExecuteNoneQuery("DELETE FROM `#@__arctype` WHERE id IN ($tids); "); } //删除附加表或附加表内的信息 if($isExclusive2==1) { $dsql->ExecuteNoneQuery("DROP TABLE IF EXISTS `{$cfg_dbprefix}{$addtable}`;"); } else { if($tids!='' && $myrow['addtable']!='') { $dsql->ExecuteNoneQuery("DELETE FROM `{$myrow['addtable']}` WHERE typeid IN ($tids); "); } } //删除频道配置信息 $dsql->ExecuteNoneQuery("DELETE FROM `#@__channeltype` WHERE id='$id' "); //更新栏目缓存 UpDateCatCache($dsql); ShowMsg("成功删除一个模型!","mychannel_main.php"); exit(); } }//del /*---------------- function __modifysearch() -----------------*/ else if($dopost == 'modifysearch') { if(!isset($step)) $step=0; if(empty($step)) { $step = 1; $mid = intval($mid); $query = "SELECT mainfields, addonfields, template FROM `#@__advancedsearch` WHERE mid='$mid'"; $searchinfo = $dsql->GetOne($query); if(!is_array($searchinfo)) { $searchinfo = array(); $searchinfo['mainfields'] = $searchinfo['addonfields'] = $searchinfo['template'] = ''; } $searchinfo['mainfields'] = explode(',', $searchinfo['mainfields']); $searchinfo['addonfields'] = explode(',', $searchinfo['addonfields']); $addonfieldsarr = array(); foreach($searchinfo['addonfields'] as $k) { $karr = explode(':', $k); $addonfieldsarr[] = $karr[0]; } $template = $searchinfo['template'] == '' ? 'advancedsearch.htm' : $searchinfo['template']; $c1 = in_array('iscommend', $searchinfo['mainfields']) ? 'checked' : ''; $c2 = in_array('typeid', $searchinfo['mainfields']) ? 'checked' : ''; $c3 = in_array('writer', $searchinfo['mainfields']) ? 'checked' : ''; $c4 = in_array('source', $searchinfo['mainfields']) ? 'checked' : ''; $c5 = in_array('senddate', $searchinfo['mainfields']) ? 'checked' : ''; $mainfields = ' '; $mainfields .= ' '; $mainfields .= ' '; $mainfields .= ' '; $mainfields .= ' '; /* $mainfields .= ''; $mainfields .= ''; $mainfields .= ''; $mainfields .= ''; $mainfields .= ''; */ $query = "SELECT * FROM `#@__channeltype` WHERE id='$mid'"; $channel = $dsql->GetOne($query); $searchtype = array('int', 'datetime', 'float', 'textdata', 'textchar', 'text', 'htmltext', 'multitext', 'select', 'radio', 'checkbox'); $addonfields = ''; $dtp = new DedeTagParse(); $dtp->SetNameSpace("field", "<", ">"); $dtp->LoadSource($channel['fieldset']); if($channel['issystem'] < 0) { $checked = in_array('typeid', $addonfieldsarr) ? 'checked' : ''; $addonfields .= ' '; $checked = in_array('senddate', $addonfieldsarr) ? 'checked' : ''; $addonfields .= ' '; } if(is_array($dtp->CTags) && !empty($dtp->CTags)) { foreach($dtp->CTags as $ctag) { $datatype = $ctag->GetAtt('type'); $value = $ctag->GetName(); if($channel['issystem'] < 0) { $_oo = array('channel','arcrank', 'title', 'senddate', 'mid', 'click', 'flag', 'litpic', 'userip', 'lastpost', 'scores', 'goodpost', 'badpost', 'endtime'); if(in_array($value, $_oo)) continue; } $label = $ctag->GetAtt('itemname'); if(in_array($datatype, $searchtype)){ $checked = in_array($value, $addonfieldsarr) ? 'checked' : ''; $addonfields .= " "; } } } require_once(dirname(__FILE__)."/templets/mychannel_modifysearch.htm"); } else if ($step == 1) { $query = "SELECT * FROM `#@__channeltype` WHERE id='$mid'"; $channel = $dsql->GetOne($query); if(empty($addonfields)) { $addonfields = ''; } $template = trim($template); $forms = '
'; $forms .= ""; $forms .= ""; $forms .= "关键词:
"; $mainstring = ''; if(!empty($mainfields) && is_array($mainfields)) { $mainstring = implode(',', $mainfields); foreach($mainfields as $mainfield) { if($mainfield == 'typeid') { require_once(dirname(__FILE__)."/../include/typelink.class.php"); $tl = new TypeLink(0); $typeOptions = $tl->GetOptionArray(0,0,$mid); $forms .= "
栏目:"; $forms .= "
"; }else if ($mainfield == 'iscommend') { $forms .= "
"; }else if ($mainfield == 'writer') { $forms .= "作者:
"; }else if ($mainfield == 'source') { $forms .= "来源:
"; }else if ($mainfield == 'senddate') { $forms .= "开始时间:
"; $forms .= "结束时间:
"; } } } $addonstring = ''; $intarr = array('int','float'); $textarr = array('textdata','textchar','text','htmltext','multitext'); if($channel['issystem'] < 0) { foreach($addonfields as $addonfield) { if($addonfield == 'typeid'){ require_once(dirname(__FILE__)."/../include/typelink.class.php"); $tl = new TypeLink(0); $typeOptions = $tl->GetOptionArray(0,0,$mid); $forms .= "
栏目:"; $forms .= "
"; $addonstring .= 'typeid:int,'; } elseif($addonfield == 'senddate') { $forms .= "开始时间:
"; $forms .= "结束时间:
"; $addonstring .= 'senddate:datetime,'; } } } if(is_array($addonfields) && !empty($addonfields)) { $query = "SELECT * FROM #@__channeltype WHERE id='$mid'"; $channel = $dsql->GetOne($query); $dtp = new DedeTagParse(); $dtp->SetNameSpace("field", "<", ">"); $dtp->LoadSource($channel['fieldset']); $fieldarr = $itemarr = $typearr = array(); foreach($dtp->CTags as $ctag) { foreach($addonfields as $addonfield) { if($ctag->GetName() == $addonfield) { if($addonfield == 'typeid' || $addonfield == 'senddate') continue; $fieldarr[] = $addonfield; $itemarr[] = $ctag->GetAtt('itemname'); $typearr[] = $ctag->GetAtt('type'); $valuearr[] = $ctag->GetAtt('default'); } } } foreach($fieldarr as $k=>$field) { $itemname = $itemarr[$k]; $name = $field; $type = $typearr[$k]; $tmp = $name.':'.$type; if(in_array($type, $intarr)) { $forms .= "
$itemname :
"; } else if (in_array($type, $textarr)) { $forms .= "$itemname :
"; } else if ($type == 'select') { $values = explode(',', $valuearr[$k]); if(is_array($values) && !empty($values)) { $forms .= "
$itemname : "; } } else if ($type == 'radio') { $values = explode(',', $valuearr[$k]); if(is_array($values) && !empty($values)){ $forms .= "
$itemname : "; foreach($values as $value){ $forms .= ""; } } } else if ($type == 'checkbox') { $values = explode(',', $valuearr[$k]); if(is_array($values) && !empty($values)) { $forms .= "
$itemname : "; foreach($values as $value) { $forms .= ""; } } }elseif($type == 'datetime'){ $forms .= "
开始时间:
"; $forms .= "结束时间:
"; }else{ $tmp = ''; } $addonstring .= $tmp.','; } } $forms .= '
'; $formssql = addslashes($forms); $query = "REPLACE INTO #@__advancedsearch(mid, maintable, mainfields, addontable, addonfields, forms, template) VALUES('$mid','$maintable','$mainstring','$addontable','$addonstring','$formssql', '$template')"; $dsql->ExecuteNoneQuery($query); $formshtml = dede_htmlspecialchars($forms); echo ''; echo "下面为生成的html表单,请自行复制,根据自己需求修改样式后粘贴到对应的模板中

"; echo '
预览:

'; echo $forms; } exit; } //删除自定义搜索; else if($dopost == 'del') { $mid = intval($mid); $dsql->ExecuteNoneQuery("DELETE FROM `#@__advancedsearch` WHERE mid = '$mid'; "); ShowMsg("成功删除一个自定义搜索!","mychannel_main.php"); exit(); } $row = $dsql->GetOne("SELECT * FROM `#@__channeltype` WHERE id='$id' "); require_once(DEDEADMIN."/templets/mychannel_edit.htm");