www.gusucode.com > 08CMS空白站群系统 3.3 繁体 UTF-8 > upload/admina/mchannels.inc.php
<?php (!defined('M_COM') || !defined('M_ADMIN')) && exit('No Permission'); aheader(); load_cache('mchannels,fieldwords,initmfields,rprojects'); include_once M_ROOT."./include/fields.fun.php"; if($action == 'mchannelsedit'){ if(!submitcheck('bmchannelsedit') && !submitcheck('bmchanneladd')) { a_guide('mchannelsedit'); tabheader(lang('member channel manager'),'mchanneledit','?entry=mchannels&action=mchannelsedit','10'); trcategory(array(lang('id'),lang('available'),lang('channel cname'),lang('admin'),lang('copy'),lang('edit'),lang('delete'))); foreach($mchannels as $k => $mchannel){ echo "<tr align=\"center\">". "<td class=\"item1\" width=\"30\">$k</td>\n". "<td class=\"item2\" align=\"center\" width=\"30\"><input class=\"checkbox\" type=\"checkbox\" name=\"mchannelnew[$k][available]\" value=\"1\"".($mchannel['available'] ? " checked" : "").($mchannel['issystem'] ? ' disabled' : '')."></td>\n". "<td class=\"item1\"><input type=\"text\" size=\"30\" maxlength=\"30\" name=\"mchannelnew[$k][cname]\" value=\"$mchannel[cname]\"></td>\n". "<td class=\"item1\" width=\"30\">".(empty($mchannel['userforbidadd']) ? '-' : 'Y')."</td>\n". "<td class=\"item2\" width=\"30\"><a href=\"?entry=mchannels&action=mchannelcopy&mchid=$mchannel[mchid]\">".lang('copy')."</a></td>\n". "<td class=\"item1\" width=\"30\"><a href=\"?entry=mchannels&action=mchanneldetail&mchid=$mchannel[mchid]\">".lang('detail')."</a></td>\n". "<td class=\"item2\" width=\"30\"><a href=\"?entry=mchannels&action=mchanneldel&mchid=$mchannel[mchid]\">".lang('delete')."</a></td>\n". "</tr>\n"; } tabfooter('bmchannelsedit',lang('modify')); tabheader(lang('add member channel'),'mchanneladd','?entry=mchannels&action=mchannelsedit',2,0,1); trbasic(lang('member channel cname'),'mchanneladd[cname]'); tabfooter('bmchanneladd',lang('add')); $submitstr = ''; $submitstr .= makesubmitstr('mchanneladd[cname]',1,0,3,30); check_submit_func($submitstr); }elseif(submitcheck('bmchannelsedit')){ !checkapermission('mchannelsedit') && amessage(lang('no_apermission')); if(isset($mchannelnew)){ foreach($mchannelnew as $k => $v) { $v['available'] = isset($v['available']) ? $v['available'] : 0; $v['cname'] = trim(strip_tags($v['cname'])); $v['cname'] = $v['cname'] ? $v['cname'] : $mchannels[$k]['cname']; if(($v['cname'] != $mchannels[$k]['cname']) || ($v['available'] != $mchannels[$k]['available'])) { $db->query("UPDATE {$tblprefix}mchannels SET cname='$v[cname]', available='$v[available]' WHERE mchid='$k'"); } } adminlog(lang('edit member channel list')); updatecache('mchannels'); amessage(lang('member channel edit finish'),"?entry=mchannels&action=mchannelsedit"); } } elseif(submitcheck('bmchanneladd')) { !checkapermission('mchannelsedit') && amessage(lang('no_apermission')); $mchanneladd['cname'] = trim(strip_tags($mchanneladd['cname'])); empty($mchanneladd['cname']) && amessage(lang('data missing'), '?entry=mchannels&action=mchanneledit'); $db->query("INSERT INTO {$tblprefix}mchannels SET cname='$mchanneladd[cname]'"); if($mchid = $db->insert_id()){ $customtable = 'members_'.$mchid; $db->query("CREATE TABLE {$tblprefix}$customtable ( mid mediumint(8) unsigned NOT NULL default '0', PRIMARY KEY (mid))".(mysql_get_server_info() > '4.1' ? " ENGINE=MYISAM DEFAULT CHARSET=$dbcharset" : " TYPE=MYISAM")); foreach($initmfields as $field){ $sqlstr = "mchid='$mchid',available='1'"; foreach(array('ename','cname','issystem','iscustom','datatype','tbl','length','notnull','nohtml','mode','guide','isadmin','mlimit','rpid','issearch','innertext','mcommon','min','max','regular','isfunc','func','vdefault') as $var){ isset($field[$var]) && $sqlstr .= (!$sqlstr ? '' : ',')."$var='".$field[$var]."'"; } $db->query("INSERT INTO {$tblprefix}mfields SET $sqlstr"); } updatecache('mchannels'); updatecache('btagnames'); updatecache('mfields',$mchid); } adminlog(lang('add member channel')); amessage(lang('member channel add finish'),"?entry=mchannels&action=mchannelsedit"); } }elseif($action == 'mchannelcopy' && $mchid){ $forward = empty($forward) ? M_REFERER : $forward; $mchannel = $mchannels[$mchid]; if(!submitcheck('bmchannelcopy')){ a_guide('mchannelcopy'); tabheader(lang('member channel copy'),'mchannelcopy',"?entry=mchannels&action=mchannelcopy&mchid=$mchid&forward=".rawurlencode($forward),2,0,1); trbasic(lang('soc channel cname'),'',$mchannel['cname'],''); trbasic(lang('new channel cname'),'mchannelnew[cname]'); tabfooter('bmchannelcopy'); $submitstr = ''; $submitstr .= makesubmitstr('channelnew[cname]',1,0,0,30); check_submit_func($submitstr); }else{ $mchannelnew['cname'] = trim(strip_tags($mchannelnew['cname'])); if(empty($mchannelnew['cname'])){ amessage(lang('data missing'),M_REFERER); } $sqlstr = ''; foreach(array('userforbidadd','autocheck',) as $k){ $sqlstr .= ",$k='".addslashes($mchannel[$k])."'"; } $db->query("INSERT INTO {$tblprefix}mchannels SET cname='$mchannelnew[cname]' $sqlstr "); if($nchid = $db->insert_id()){ $customtable = 'members_'.$nchid; $db->query("CREATE TABLE {$tblprefix}$customtable ( mid mediumint(8) unsigned NOT NULL default '0', PRIMARY KEY (mid))".(mysql_get_server_info() > '4.1' ? " ENGINE=MYISAM DEFAULT CHARSET=$dbcharset" : " TYPE=MYISAM")); $fields = read_cache('mfields',$mchid); foreach($fields as $k => $v){ $fieldnew = read_cache('mfield',$mchid,$k); if($fieldnew['tbl'] == 'custom'){ $fieldnew = maddslashes($fieldnew); $fconfigarr = array( 'errorurl' => M_REFERER, 'enamearr' => array(), 'altertable' => $tblprefix.$customtable, 'fieldtable' => $tblprefix.'mfields', 'sqlstr' => "mchid=$nchid,issystem='0',iscustom='1',available='$fieldnew[available]',vieworder='$fieldnew[vieworder]',tbl='custom'", 'filterstr' => "", ); list($fmode,$fnew,$fsave) = array('m',true,true); include_once M_ROOT."./include/fields/$fieldnew[datatype].php"; }else{ $sqlstr = ''; foreach(array('ename','cname','issystem','iscustom','mcommon','available','tbl','innertext','length', 'datatype','notnull','mlimit','rpid','isadmin','vieworder','mode','guide','min','max','regular','vdefault') as $k){ $sqlstr .= ",$k='".addslashes($fieldnew[$k])."'"; } $db->query("INSERT INTO {$tblprefix}mfields SET mchid='$nchid' $sqlstr"); } } updatecache('mchannels'); updatecache('btagnames'); updatecache('mfields',$nchid); } adminlog(lang('copy archive channel')); amessage(lang('member channel copy finish'),"?entry=mchannels&action=mchannelsedit"); } }elseif($action == 'mchanneldetail' && $mchid) { $mchannel = $mchannels[$mchid]; $fields = read_cache('mfields',$mchid); if(!submitcheck('bmchanneldetail')){ a_guide('mchanneldetail'); $autocheckarr = array(0 => lang('handwork check'),1 => lang('auto check'),2 => lang('Email active')); tabheader("[$mchannel[cname]]".lang('member channel setting'),'mchanneldetail','?entry=mchannels&action=mchanneldetail&mchid='.$mchid,'4'); trbasic(lang('member channel cname'),'',$mchannel['cname'],''); trbasic(lang('admin_self channel'),'mchannelnew[userforbidadd]',$mchannel['userforbidadd'],'radio'); trbasic(lang('reg member check mode1'),'',makeradio('mchannelnew[autocheck]',$autocheckarr,$mchannel['autocheck']),''); tabfooter(); tabheader("[$mchannel[cname]]".lang('field manager')." >><a href=\"?entry=mchannels&action=mfieldadd&mchid=$mchid\">".lang('add field')."</a>",'','','7'); trcategory(array(lang('delete'),lang('available'),lang('field cname'),lang('field ename'),lang('admin_self'),lang('order'),lang('field type'),lang('edit'))); foreach($fields as $k => $field){ fieldlist($k,$field,'member'); } tabfooter('bmchanneldetail'); }else{ if(!empty($delete)){ foreach($delete as $id){ if(!$fields[$id]['mcommon']){ $customtable = 'members_'.$mchid; $db->query("ALTER TABLE {$tblprefix}$customtable DROP $id",'SILENT'); $db->query("DELETE FROM {$tblprefix}mfields WHERE ename='$id' AND mchid='$mchid'"); unset($fields[$id]); unset($fieldsnew[$id]); del_cache('mfield',$mchid,$id); } } } foreach($fields as $id => $field){ $fieldsnew[$id]['cname'] = trim(strip_tags($fieldsnew[$id]['cname'])); $field['cname'] = $fieldsnew[$id]['cname'] ? $fieldsnew[$id]['cname'] : $field['cname']; $field['available'] = $field['issystem'] ? $field['available'] : (empty($fieldsnew[$id]['available']) ? 0 : 1); $field['isadmin'] = $field['issystem'] ? '0' : (empty($fieldsnew[$id]['isadmin']) ? 0 : 1); $field['vieworder'] = max(0,intval($fieldsnew[$id]['vieworder'])); $db->query("UPDATE {$tblprefix}mfields SET cname='$field[cname]',available='$field[available]',vieworder='$field[vieworder]',isadmin='$field[isadmin]' WHERE ename='$id' AND mchid='$mchid'"); } $db->query("UPDATE {$tblprefix}mchannels SET userforbidadd='$mchannelnew[userforbidadd]', autocheck='$mchannelnew[autocheck]' WHERE mchid='$mchid'"); adminlog(lang('detail0 modify member channel')); updatecache('mchannels'); updatecache('mfields',$mchid); updatecache('btagnames'); amessage(lang('channel modify finish'), '?entry=mchannels&action=mchanneldetail&mchid='.$mchid); } } elseif($action == 'mfieldadd' && $mchid){ if(!submitcheck('bmfieldadd')){ a_guide('mfieldadd'); tabheader(lang('add')." [".$mchannels[$mchid]['cname']."] ".lang('field'),'mfieldadd',"?entry=mchannels&action=mfieldadd&mchid=$mchid",2,0,1); $submitstr = ''; if(empty($fieldnew['datatype'])){ trbasic(lang('field type'),'fieldnew[datatype]',makeoption($datatypearr),'select'); trbasic(lang('weather func field'),'fieldnew[isfunc]',0,'radio'); tabfooter('bmfieldaddpre',lang('continue')); }else{ list($fmode,$fnew,$fsave) = array('m',true,false); include_once M_ROOT."./include/fields/$fieldnew[datatype].php"; tabfooter('bmfieldadd',lang('add')); } check_submit_func($submitstr); }else{ $enamearr = $usednames['mfields']; $fields = read_cache('mfields',$mchid); foreach($fields as $ename => $field){ if(!in_array($ename,$enamearr)) $enamearr[] = $ename; } $fconfigarr = array( 'errorurl' => '?entry=mchannels&action=mchanneldetail&mchid='.$mchid, 'enamearr' => $enamearr, 'altertable' => $tblprefix.'members_'.$mchid, 'fieldtable' => $tblprefix.'mfields', 'sqlstr' => "mchid=$mchid,iscustom='1',available='1',tbl='custom'", 'filterstr' => "/[^a-zA-Z_0-9]+|^[0-9_]+|^grouptype(.*?)|^currency(.*?)/", ); list($fmode,$fnew,$fsave) = array('m',true,true); include_once M_ROOT."./include/fields/$fieldnew[datatype].php"; adminlog(lang('add member message field')); updatecache('mfields',$mchid); updatecache('btagnames'); amessage(lang('field add finish'), '?entry=mchannels&action=mchanneldetail&mchid='.$mchid); } } elseif($action == 'mchanneldel' && $mchid) { $mchannel = $mchannels[$mchid]; if($mchannel['issystem']) amessage(lang('system channel cannot delete'), '?entry=mchannels&action=mchannelsedit'); if(empty($confirm)){ $message = lang('del_alert')."<br><br>"; $message .= lang('confirm click')."[<a href=?entry=mchannels&action=mchanneldel&mchid=".$mchid."&confirm=1>".lang('delete')."</a>] "; $message .= lang('giveup click')."[<a href=?entry=mchannels&action=mchannelsedit>".lang('goback')."</a>]"; amessage($message); } if($db->result_one("SELECT COUNT(*) FROM {$tblprefix}members WHERE mchid='$mchid'")){ amessage(lang('channel without member can delete'), '?entry=mchannels&action=mchannelsedit'); } $customtable = 'members_'.$mchid; $db->query("DROP TABLE IF EXISTS {$tblprefix}$customtable",'SILENT'); $db->query("DELETE FROM {$tblprefix}mchannels WHERE mchid='$mchid'",'SILENT'); $db->query("DELETE FROM {$tblprefix}mfields WHERE mchid='$mchid'",'SILENT'); //清除相关缓存 $fields = array_keys(read_cache('mfields',$mchid)); foreach($fields as $k){ del_cache('mfield',$mchid,$k); } del_cache('mfields',$mchid); adminlog(lang('delete member channel')); updatecache('mchannels'); updatecache('btagnames'); amessage(lang('member channel delete finish'),"?entry=mchannels&action=mchannelsedit"); } elseif($action == 'mfielddetail' && $mchid && $fieldename){ !isset($mchannels[$mchid]) && amessage(lang('confirmchoose member channel'), '?entry=mchannels&action=mchannelsedit'); $field = read_cache('mfield',$mchid,$fieldename); empty($field) && amessage(lang('confirmchoose field'), '?entry=mchannels&action=mchanneldetail&mchid='.$mchid); if(!submitcheck('bmfielddetail')){ a_guide('mfielddetail'); $submitstr = ''; tabheader("[".$mchannels[$mchid]['cname']."] ".lang('field edit')." [$field[cname]]",'mfielddetail',"?entry=mchannels&action=mfielddetail&mchid=$mchid&fieldename=$fieldename",2,0,1); list($fmode,$fnew,$fsave) = array('m',false,false); include_once M_ROOT."./include/fields/$field[datatype].php"; tabfooter('bmfielddetail'); check_submit_func($submitstr); }else{ $customtable = $field['tbl'] == 'main' ? 'members' : ($field['tbl'] == 'sub' ? 'members_sub' : ('members_'.$mchid)); $fconfigarr = array( 'altertable' => $tblprefix.$customtable, 'fieldtable' => $tblprefix.'mfields', 'wherestr' => "WHERE ename='$fieldename' AND mchid=$mchid", ); list($fmode,$fnew,$fsave) = array('m',false,true); include_once M_ROOT."./include/fields/$field[datatype].php"; updatecache('mfields',$mchid); adminlog(lang('detail0 modify member channel message field')); amessage(lang('field edit finish'),'?entry=mchannels&action=mchanneldetail&mchid='.$mchid); } } elseif($action == 'initmfieldadd'){ if(!submitcheck('binitmfieldadd')){ a_guide('initmfieldadd'); tabheader(lang('add member common field'),'initmfieldadd',"?entry=mchannels&action=initmfieldadd",2,0,1); $submitstr = ''; if(empty($fieldnew['datatype'])){ trbasic(lang('field type'),'fieldnew[datatype]',makeoption($datatypearr),'select'); trbasic(lang('weather func field'),'fieldnew[isfunc]',0,'radio'); tabfooter('binitmfieldaddpre',lang('continue')); }else{ list($fmode,$fnew,$fsave) = array('im',true,false); include_once M_ROOT."./include/fields/$fieldnew[datatype].php"; tabfooter('binitmfieldadd',lang('add')); } check_submit_func($submitstr); }else{ !checkapermission('initmfields') && amessage(lang('no_apermission')); $enamearr = $usednames['mfields']; foreach($mchannels as $k => $v){ $fields = read_cache('mfields',$k); $enamearr = array_unique(array_merge($enamearr,array_keys($fields))); } $fconfigarr = array( 'errorurl' => '?entry=mchannels&action=initmfieldsedit', 'enamearr' => $enamearr, 'altertable' => $tblprefix.'members_sub', 'fieldtable' => $tblprefix.'mfields', 'sqlstr' => "iscustom='1',mcommon='1',available='1',tbl='sub'", 'filterstr' => "/[^a-zA-Z_0-9]+|^[0-9_]+|^grouptype(.*?)|^currency(.*?)/", ); list($fmode,$fnew,$fsave) = array('im',true,true); include_once M_ROOT."./include/fields/$fieldnew[datatype].php"; updatecache('initmfields'); $mchids = array_keys($mchannels); foreach($mchids as $mchid){ $sqlstr = "ename='$fieldnew[ename]',cname='$fieldnew[cname]',issystem='0',iscustom='1',mcommon='1',mchid='$mchid',tbl='sub'"; foreach(array('datatype','length','notnull','nohtml','mode','guide','isadmin','mlimit','rpid','issearch','innertext','mcommon','min','max','regular','isfunc','func','vdefault') as $var){ isset($fieldnew[$var]) && $sqlstr .= (!$sqlstr ? '' : ',')."$var='".$fieldnew[$var]."'"; } $db->query("INSERT INTO {$tblprefix}mfields SET $sqlstr"); updatecache('mfields',$mchid); } adminlog(lang('add member common message field')); updatecache('btagnames'); updatecache('usednames','mfields'); amessage(lang('field add finish'), '?entry=mchannels&action=initmfieldsedit'); } } elseif($action == 'initmfieldsedit'){ if(!submitcheck('binitmfieldsedit')){ a_guide('initmfieldsedit'); tabheader(lang('member common field manager')." >><a href=\"?entry=mchannels&action=initmfieldadd\">".lang('add field')."</a>",'initmfieldsedit','?entry=mchannels&action=initmfieldsedit','5'); trcategory(array(lang('delete'),lang('field cname'),lang('field ename'),lang('field type'),lang('edit'))); foreach($initmfields as $k => $field) { fieldlist($k,$field,'initm'); } tabfooter('binitmfieldsedit'); }else{ !checkapermission('initfields') && amessage(lang('no_apermission')); if(!empty($delete)){ $mchids = array_keys($mchannels); foreach($delete as $k){ if($initmfields[$k]['iscustom']){ $db->query("ALTER TABLE {$tblprefix}members_sub DROP $k"); $db->query("DELETE FROM {$tblprefix}mfields WHERE ename='$k'"); unset($initmfields[$k]); unset($fieldsnew[$k]); foreach($mchids as $mchid){ del_cache('mfield',$mchid,$k); } } } foreach($mchids as $mchid){ updatecache('mfields',$mchid); } updatecache('usednames','mfields'); updatecache('btagnames'); } foreach($initmfields as $id => $field){ $field['cname'] = trim($fieldsnew[$id]['cname']) ? trim($fieldsnew[$id]['cname']) : $field['cname']; $db->query("UPDATE {$tblprefix}mfields SET cname='$field[cname]' WHERE ename='$id' AND mchid='0'"); } adminlog(lang('edit member common message field manager list')); updatecache('initmfields'); amessage(lang('field edit finish'),'?entry=mchannels&action=initmfieldsedit'); } }elseif($action == 'initmfielddetail' && $fieldename){ !checkapermission('initmfields') && amessage(lang('no_apermission')); if(empty($initmfields[$fieldename])){ amessage(lang('confirmchoose field'), '?entry=mchannels&action=initmfieldsedit'); } $field = $initmfields[$fieldename]; if(!submitcheck('binitfielddetail')){ a_guide('binitmfielddetail'); tabheader(lang('member common field manager'),'initmfielddetail',"?entry=mchannels&action=initmfielddetail&fieldename=$fieldename",2,0,1); $submitstr = ''; list($fmode,$fnew,$fsave) = array('im',false,false); include_once M_ROOT."./include/fields/$field[datatype].php"; tabfooter('binitfielddetail'); check_submit_func($submitstr); }else{ $tblname = $field['tbl'] == 'main' ? 'members' : 'members_sub'; $fconfigarr = array( 'altertable' => $tblprefix.$tblname, 'fieldtable' => $tblprefix.'mfields', 'wherestr' => "WHERE ename='$fieldename' AND mchid=0", ); list($fmode,$fnew,$fsave) = array('im',false,true); include_once M_ROOT."./include/fields/$field[datatype].php"; adminlog(lang('detail0 modify member common message field')); updatecache('initmfields'); amessage(lang('field modify finish'),'?entry=mchannels&action=initmfieldsedit'); } } ?>