www.gusucode.com > 08CMS空白站群系统 3.3 繁体 UTF-8 > upload/admina/subsites.inc.php
<? (!defined('M_COM') || !defined('M_ADMIN')) && exit('No Permission'); aheader(); !checkapermission(42) && amessage(lang('no_apermission')); if($sid && $sid_self) amessage(lang('msite admin item !')); if($action == 'subsiteadd'){ if(!submitcheck('bsubsiteadd')){ a_guide('subsiteadd'); $submitstr = ''; tabheader(lang('add content subsite'),'subsiteadd',"?entry=subsites&action=subsiteadd",2,1,1); trbasic(lang('subsite cname'),'subsitenew[sitename]','','text'); trbasic(lang('subsite static dir'),'subsitenew[dirname]','','text'); trbasic(lang('subsite template dir'),'subsitenew[templatedir]','','text',lang('agtemplatedir')); $submitstr .= makesubmitstr('subsitenew[sitename]',1,0,0,80); $submitstr .= makesubmitstr('subsitenew[dirname]',1,'tagtype',0,15); $submitstr .= makesubmitstr('subsitenew[templatedir]',1,'tagtype',0,15); tabfooter('bsubsiteadd'); check_submit_func($submitstr); }else{ $subsitenew['sitename'] = trim(strip_tags($subsitenew['sitename'])); $subsitenew['dirname'] = trim(strip_tags($subsitenew['dirname'])); $subsitenew['templatedir'] = trim(strip_tags($subsitenew['templatedir'])); if(!$subsitenew['sitename'] || !$subsitenew['dirname'] || !$subsitenew['templatedir']) amessage(lang('subsite data missing'),M_REFERER); if(preg_match("/[^a-zA-Z_0-9]+/",$subsitenew['dirname'])) amessage(lang('subsite static dir illegal'),M_REFERER); if(preg_match("/[^a-zA-Z_0-9]+/",$subsitenew['templatedir'])) amessage(lang('subsite template dir illegal'),M_REFERER); $subsitenew['dirname'] = strtolower($subsitenew['dirname']); $subsitenew['templatedir'] = strtolower($subsitenew['templatedir']); if(!mmkdir(M_ROOT.$subsitenew['dirname'],0)) amessage(lang('noway create subsite static dir'),M_REFERER); if(!mmkdir(M_ROOT.'template/'.$subsitenew['templatedir'],0)) amessage(lang('noway create subsite template dir'),M_REFERER); $db->query("INSERT INTO {$tblprefix}subsites SET sitename='$subsitenew[sitename]', dirname='$subsitenew[dirname]', templatedir='$subsitenew[templatedir]', ineedstatic='$timestamp' "); if($nsid = $db->insert_id()){ adminlog(lang('add subsite')); updatecache('subsites'); $subsites = reload_cache('subsites'); include_once M_ROOT."./include/cparse.fun.php"; cn_blank('','i',$nsid); amessage(lang('subsite add finish'), '?entry=subsites&action=subsitesedit'); }else amessage(lang('subsite add failed'), '?entry=subsites&action=subsitesedit'); } }elseif($action =='subsitesedit'){ if(!submitcheck('bsubsitesedit')){ a_guide('subsitesedit'); tabheader(lang('subsite manager').' >><a href="?entry=subsites&action=subsiteadd">'.lang('add subsite').'</a>'.' >><a href="?entry=subsites&action=tosubsite">'.lang('msite transto0 subsite').'</a>','subsitesedit','?entry=subsites&action=subsitesedit','10'); trcategory(array(lang('id'),lang('close'),lang('subsite cname'),lang('order'),lang('static dir'),lang('look'),lang('admin'),lang('delete'),lang('transto0 msite'))); $query = $db->query("SELECT * FROM {$tblprefix}subsites ORDER BY vieworder,sid"); while($row = $db->fetch_array($query)){ $nsid = $row['sid']; $row['siteurl'] = view_siteurl($nsid); echo "<tr>\n". "<td align=\"center\" class=\"item1\" width=\"30\">$row[sid]</td>\n". "<td align=\"center\" class=\"item2\" width=\"30\"><input class=\"checkbox\" type=\"checkbox\" name=\"subsitesnew[$nsid][closed]\" value=\"1\"".(empty($row['closed']) ? '' : ' checked')."></td>\n". "<td class=\"item1\"><input type=\"text\" name=\"subsitesnew[$nsid][sitename]\" value=\"".mhtmlspecialchars($row['sitename'])."\" size=\"25\"></td>\n". "<td align=\"center\" class=\"item2\" width=\"60\"><input type=\"text\" name=\"subsitesnew[$nsid][vieworder]\" value=\"$row[vieworder]\" size=\"4\"></td>\n". "<td align=\"center\" class=\"item1\">$row[dirname]</td>\n". "<td align=\"center\" class=\"item2\" width=\"30\"><a href=\"$row[siteurl]\" target=\"_blank\">".lang('index')."</a></td>\n". "<td align=\"center\" class=\"item1\" width=\"30\"><a href=\"?sid=$nsid\" target=\"_blank\">".lang('admin')."</a></td>\n". "<td align=\"center\" class=\"item2\" width=\"30\"><a href=\"?entry=subsites&action=subsitedel&nsid=$nsid\">".lang('delete')."</a></td>\n". "<td align=\"center\" class=\"item1\" width=\"60\"><a href=\"?entry=subsites&action=tomsite&nsid=$nsid\">>>".lang('start')."</a></td>\n". "</tr>\n"; } tabfooter('bsubsitesedit'); }else{ if(!empty($subsitesnew)){ foreach($subsitesnew as $k => $v){ $v['closed'] = empty($v['closed']) ? 0 : 1; $v['vieworder'] = max(0,intval($v['vieworder'])); $v['sitename'] = trim($v['sitename']); !$v['sitename'] && $v['sitename'] = $subsites[$k]['sitename']; $db->query("UPDATE {$tblprefix}subsites SET sitename='$v[sitename]',closed='$v[closed]',vieworder='$v[vieworder]' WHERE sid='$k'"); } } updatecache('subsites'); adminlog(lang('subsite admin'),lang('subsite list admin operate')); amessage(lang('subsite operate finish'),"?entry=subsites&action=subsitesedit"); } }elseif($action == 'tosubsite'){ if(!submitcheck('btosubsite')){ a_guide('tosubsite'); $submitstr = ''; tabheader(lang('new subsite setting'),'tosubsite',"?entry=subsites&action=tosubsite",2,1,1); trbasic(lang('subsite cname'),'subsitenew[sitename]','','text'); trbasic(lang('subsite static dir'),'subsitenew[dirname]','','text'); $submitstr .= makesubmitstr('subsitenew[sitename]',1,0,0,80); $submitstr .= makesubmitstr('subsitenew[dirname]',1,'tagtype',0,15); tabfooter('btosubsite'); check_submit_func($submitstr); }else{ $subsitenew['sitename'] = trim(strip_tags($subsitenew['sitename'])); $subsitenew['dirname'] = trim(strip_tags($subsitenew['dirname'])); if(!$subsitenew['sitename'] || !$subsitenew['dirname']) amessage(lang('subsite data missing'),M_REFERER); if(preg_match("/[^a-zA-Z_0-9]+/",$subsitenew['dirname'])) amessage(lang('subsite static dir illegal'),M_REFERER); $subsitenew['dirname'] = strtolower($subsitenew['dirname']); if(!mmkdir(M_ROOT.$subsitenew['dirname'],0)) amessage(lang('noway create subsite static dir'),M_REFERER); $db->query("INSERT INTO {$tblprefix}subsites SET sitename='$subsitenew[sitename]', dirname='$subsitenew[dirname]', templatedir='$templatedir', ineedstatic='$timestamp' "); if($nsid = $db->insert_id()){ updatecache('subsites');//需要先将模板目录放入子站内存之中,才能进行模板的转换 $subsites = reload_cache('subsites'); include_once M_ROOT."./include/cparse.fun.php"; cn_blank('','i',$nsid); foreach(array('catalogs','cnconfigs','cnodes','altypes','archives','freeinfos','gmissions','gmodels','gurls') as $dbtable){ $db->query("UPDATE {$tblprefix}$dbtable SET sid='$nsid' WHERE sid='0'"); } //将在子站记录中要保留的记录存下来 $s_config = array(); load_cache('channels'); foreach($channels as $k => $v){ $v = read_cache('channel',$k,'',$sid); $s_config[$k]['available'] = $v['available']; $s_config[$k]['arctpl'] = $v['arctpl']; $s_config[$k]['pretpl'] = $v['pretpl']; $s_config[$k]['srhtpl'] = $v['srhtpl']; } $s_config = addslashes(serialize($s_config)); $db->query("UPDATE {$tblprefix}subsites SET channels='$s_config' WHERE sid='$nsid'"); $s_config = array(); load_cache('commus'); foreach($commus as $k => $v){ $v = read_cache('commu',$k,'',$sid); $s_config[$k]['available'] = $v['available']; $s_config[$k]['cutpl'] = $v['cutpl']; } $s_config = addslashes(serialize($s_config)); $db->query("UPDATE {$tblprefix}subsites SET commus='$s_config' WHERE sid='$nsid'"); $sqlstr = ''; foreach(array('cmslogo','cmstitle','cmskeyword','cmsdescription','hometpl',) as $var){ $sqlstr .= ($sqlstr ? ',' : '')."$var='".addslashes($$var)."'"; } $db->query("UPDATE {$tblprefix}subsites SET $sqlstr WHERE sid='$nsid'"); //清除已被转走的细分缓存 load_cache('catalogs,cnodes,altypes,gmissions,gmodels',$sid); foreach($catalogs as $k => $v){ del_cache('catalog',$k,'',$sid); } foreach($cnodes as $k => $v){ del_cache('cnode',$k,'',$sid); } foreach($altypes as $k => $v){ del_cache('altype',$k,'',$sid); } foreach($gmissions as $k => $v){ del_cache('gmission',$k,'',$sid); } foreach($gmodels as $k => $v){ del_cache('gmodel',$k,'',$sid); } //模板中的相关内容转换的sid属性转换 load_cache('utags,ctags,ptags,rtags,mtpls,sptpls',$sid); foreach(array('utags','ctags','ptags','rtags','mtpls','sptpls',) as $var){ cache2file($$var,$var,$var,$nsid); } foreach($utags as $k => $v){ $ocache = read_cache('utag',$k,'',$sid); cache2file($ocache,cache_name('utag',$k),'utag',$nsid); } foreach($ctags as $k => $v){ $ocache = read_cache('ctag',$k,'',$sid); cache2file($ocache,cache_name('ctag',$k),'ctag',$nsid); } foreach($ptags as $k => $v){ $ocache = read_cache('ptag',$k,'',$sid); cache2file($ocache,cache_name('ptag',$k),'ptag',$nsid); } foreach($rtags as $k => $v){ $ocache = read_cache('rtag',$k,'',$sid); cache2file($ocache,cache_name('rtag',$k),'rtag',$nsid); } //清除主站的静态目录中的所有内容 clear_dir(M_ROOT.$cnhtmldir,false); @unlink(M_ROOT.$homedefault); rebuild_cache(-1); adminlog(lang('msite transto0 subsite')); amessage(lang('msite transto0 subsite finish'), '?entry=subsites&action=subsitesedit'); }else amessage(lang('msite transto0 subsite failed'), '?entry=subsites&action=subsitesedit'); } }elseif($action == 'tomsite' && $nsid){ if(empty($confirm)){ $message = lang('pointed subsite start transto0 msite !')."<br><br>"; $message .= lang('confirm click')."[<a href=?entry=subsites&action=tomsite&nsid=$nsid&confirm=1>".lang('start')."</a>] "; $message .= lang('giveup click')."[<a href=?entry=subsites&action=subsitesedit>".lang('goback')."</a>]"; amessage($message); } //检查主站是否空站点 if($db->result_one("SELECT COUNT(*) FROM {$tblprefix}archives WHERE sid='0'")){ amessage(lang('please delete msite of archive or album'),'?entry=subsites&action=subsitesedit'); } if($db->result_one("SELECT COUNT(*) FROM {$tblprefix}catalogs WHERE sid='0'")){ amessage(lang('please delete msite of catalog'), '?entry=subsites&action=subsitesedit'); } if($db->result_one("SELECT COUNT(*) FROM {$tblprefix}cnodes WHERE sid='0'")){ amessage(lang('please delete msite of cnode'), '?entry=subsites&action=subsitesedit'); } if($db->result_one("SELECT COUNT(*) FROM {$tblprefix}cnconfigs WHERE sid='0'")){ amessage(lang('please delete msite of cnode config'), '?entry=subsites&action=subsitesedit'); } if($db->result_one("SELECT COUNT(*) FROM {$tblprefix}altypes WHERE sid='0'")){ amessage(lang('please delete msite of altype'), '?entry=subsites&action=subsitesedit'); } if($db->result_one("SELECT COUNT(*) FROM {$tblprefix}freeinfos WHERE sid='0'")){ amessage(lang('please delete msite of isolute page'), '?entry=subsites&action=subsitesedit'); } if($db->result_one("SELECT COUNT(*) FROM {$tblprefix}gurls WHERE sid='0'")){ amessage(lang('please delete msite of gather record'), '?entry=subsites&action=subsitesedit'); } if($db->result_one("SELECT COUNT(*) FROM {$tblprefix}gmissions WHERE sid='0'")){ amessage(lang('please delete msite of gather mission'), '?entry=subsites&action=subsitesedit'); } if($db->result_one("SELECT COUNT(*) FROM {$tblprefix}gmodels WHERE sid='0'")){ amessage(lang('please delete msite of gather channel'), '?entry=subsites&action=subsitesedit'); } //将子站的资料转为主站 foreach(array('catalogs','cnconfigs','cnodes','altypes','archives','freeinfos','gmissions','gmodels','gurls') as $dbtable){ $db->query("UPDATE {$tblprefix}$dbtable SET sid='0' WHERE sid='$nsid'"); } //将子站资料库中的设置转为主站设置 $subsite = $subsites[$nsid]; if(!empty($subsite['channels'])){ foreach($subsite['channels'] as $k => $v){ $sqlstr = ''; foreach($v as $key => $val) $sqlstr .= ($sqlstr ? ',' : '')."$key='".addslashes($val)."'"; $db->query("UPDATE {$tblprefix}channels SET $sqlstr WHERE chid='$k'",'SILENT'); } } if(!empty($subsite['commus'])){ foreach($subsite['commus'] as $k => $v){ $sqlstr = ''; foreach($v as $key => $val) $sqlstr .= ($sqlstr ? ',' : '')."$key='".addslashes($val)."'"; $db->query("UPDATE {$tblprefix}commus SET $sqlstr WHERE cuid='$k'",'SILENT'); } } $sqlstr = ''; foreach(array('cmslogo','cmstitle','cmskeyword','cmsdescription','hometpl','templatedir') as $var){ isset($subsite[$var]) && $db->query("UPDATE {$tblprefix}mconfigs SET value='".addslashes($subsite[$var])."' WHERE varname='$var'"); } $templatedir = $subsite['templatedir']; //模板中的相关内容转换的sid属性转换 load_cache('utags,ctags,ptags,rtags,mtpls,sptpls',$nsid); foreach(array('utags','ctags','ptags','rtags','mtpls','sptpls',) as $var){ cache2file($$var,$var,$var,0); } foreach($utags as $k => $v){ $ocache = read_cache('utag',$k,'',$nsid); cache2file($ocache,cache_name('utag',$k),'utag',0); } foreach($ctags as $k => $v){ $ocache = read_cache('ctag',$k,'',$nsid); cache2file($ocache,cache_name('ctag',$k),'ctag',0); } foreach($ptags as $k => $v){ $ocache = read_cache('ptag',$k,'',$nsid); cache2file($ocache,cache_name('ptag',$k),'ptag',0); } foreach($rtags as $k => $v){ $ocache = read_cache('rtag',$k,'',$nsid); cache2file($ocache,cache_name('rtag',$k),'rtag',0); } clear_dir(M_ROOT.$subsite['dirname'],true);//清除子站目录 clear_dir(M_ROOT."dynamic/cache/$nsid/",true);//清除子站缓存 @unlink(M_ROOT.$homedefault);//清除可能残留的静态首页 $db->query("DELETE FROM {$tblprefix}subsites WHERE sid='$nsid'",'SILENT'); rebuild_cache(-1); adminlog(lang('subsite transto0 msite')); amessage(lang('subsite transto0 msite finish'), '?entry=subsites&action=subsitesedit'); }elseif($action == 'subsitedel' && $nsid){ if(empty($confirm)){ $message = lang('delsubsite').'<br><br>'.lang('del_alert')."<br><br>"; $message .= lang('confirm click')."[<a href=?entry=subsites&action=subsitedel&nsid=".$nsid."&confirm=1>".lang('delete')."</a>] "; $message .= lang('giveup click')."[<a href=?entry=subsites&action=subsitesedit>".lang('goback')."</a>]"; amessage($message); } if($db->result_one("SELECT COUNT(*) FROM {$tblprefix}archives WHERE sid='$nsid'")){ amessage(lang('subsite without archive can delete'), '?entry=subsites&action=subsitesedit'); } if($db->result_one("SELECT COUNT(*) FROM {$tblprefix}catalogs WHERE sid='$nsid'")){ amessage(lang('subsite without catalog can delete'), '?entry=subsites&action=subsitesedit'); } if($db->result_one("SELECT COUNT(*) FROM {$tblprefix}cnodes WHERE sid='$nsid'")){ amessage(lang('subsite without catas cnode can delete'), '?entry=subsites&action=subsitesedit'); } if($db->result_one("SELECT COUNT(*) FROM {$tblprefix}cnconfigs WHERE sid='$nsid'")){ amessage(lang('subsite without cnode config can delete'), '?entry=subsites&action=subsitesedit'); } if($db->result_one("SELECT COUNT(*) FROM {$tblprefix}altypes WHERE sid='$nsid'")){ amessage(lang('subsite without altype can delete'), '?entry=subsites&action=subsitesedit'); } if($db->result_one("SELECT COUNT(*) FROM {$tblprefix}freeinfos WHERE sid='$nsid'")){ amessage(lang('subsite without isolute page can delete'), '?entry=subsites&action=subsitesedit'); } if($db->result_one("SELECT COUNT(*) FROM {$tblprefix}gmissions WHERE sid='$nsid'")){ amessage(lang('subsite without gather mission can delete'), '?entry=subsites&action=subsitesedit'); } if($db->result_one("SELECT COUNT(*) FROM {$tblprefix}gmodels WHERE sid='$nsid'")){ amessage(lang('subsite without gather channel can delete'), '?entry=subsites&action=subsitesedit'); } if($db->result_one("SELECT COUNT(*) FROM {$tblprefix}gurls WHERE sid='$nsid'")){ amessage(lang('subsite without gather record can delete'), '?entry=subsites&action=subsitesedit'); } clear_dir(M_ROOT.'template/'.$subsites[$nsid]['templatedir'],true); clear_dir(M_ROOT.$subsites[$nsid]['dirname'],true); clear_dir(M_ROOT."dynamic/cache/$nsid/",true); $db->query("DELETE FROM {$tblprefix}subsites WHERE sid='$nsid'",'SILENT'); updatecache('subsites'); amessage(lang('subsite delete finish'),"?entry=subsites&action=subsitesedit"); } ?>