www.gusucode.com > 08CMS空白站群系统 3.3 繁体 UTF-8 > upload/include/list.cls.php
<? include_once M_ROOT.'./include/archive.fun.php'; class cls_list{ var $tmode = 'c'; var $tclass = ''; var $tname = ''; var $tag = array(); var $items = array(); var $nowpage = 1; var $temparr = array(); var $midarr = array(); var $item = array(); var $no_ctag = 0;//是否要解析标识内的c标记 var $ret_null = 0;//当标识内容为空时,整个标识返回空 var $cell_fill = 0; function __construct(){ $this->cls_list(); } function cls_list(){ } function parse($tname,&$tag,&$temparr,$tmode='c'){ $this->tmode = $tmode; $this->tname = $tname; $this->temparr = $temparr; $this->nowpage = empty($temparr['nowpage']) ? 1 : intval(max(1,$temparr['nowpage'])); $this->tag = &$tag; $this->tclass = $this->tag['tclass']; $this->pre_deal(); if($this->ret_null) return ''; $result = $this->layout(); return $result; } function layout(){ $template = $this->tag['template']; $icount = min($this->temparr['limits'],count($this->items)); list($rowblock,$colblock) = $this->fetch_block($template); $colcount = empty($colblock) ? 1 : (empty($this->tag['cols']) ? 1 : $this->tag['cols']); $rowcount = ceil($icount / $colcount); $newrows = $newcols = $newrow = ''; for($i = 0;$i < $colcount*$rowcount;$i++){//如果是空集以下的操作跳过 $filled = isset($this->items[$i]); $this->item = $filled ? $this->items[$i] : array(); $this->item['sn_cell'] = $i + 1;//在列表中以原始数据来解析当前的单元序号 $filled ? $this->deal_incell() : $this->fill_blank(); if($colblock){ if($filled || $this->cell_fill){ $newcol = $colblock; !$this->no_ctag && nreplace($newcol,'c',$this->midarr);//单元内的c标识 nreplace($newcol,'u',$this->item); nreplace($newcol,'b',$this->item); }else{ $newcol = ''; } $newcols .= $newcol; if(!(($i+1) % $colcount)){ $this->item['sn_row'] = ceil(($i + 1) / $colcount);//在列表中以原始数据来解析当前的行序号 $newrow = $this->block_replace('col',$newcols,$rowblock); //$newrow = preg_replace("/\[col\](.+?)\[\/col\]/is",$newcols,$rowblock); !$this->no_ctag && nreplace($newrow,'c',$this->temparr);//单元外的c标识 $sitem = array(); nreplace($newrow,'u',$sitem); nreplace($newrow,'b',$sitem); $newrows .= $newrow; $newcols = $newrow = ''; } }else{ $this->item['sn_row'] = $i + 1;//在列表中以原始数据来解析当前的行序号 $newrow = $rowblock; !$this->no_ctag && nreplace($newrow,'c',$this->midarr);//单元内的c标识 nreplace($newrow,'u',$this->item); nreplace($newrow,'b',$this->item); $newrows .= $newrow; $newrow = ''; } } $template = $this->block_replace('row',$newrows,$template); !$this->no_ctag && nreplace($template,'c',$this->temparr); nreplace($template,'u',$this->temparr); nreplace($template,'b',$this->temparr); return $template; } function fetch_block($template){//将内嵌的c,u标识用临时符号取代,得到行列块之后,再替换回去。 if(preg_match_all("/\{(u|c)\\$(.+?)\s+(.*?)\{\/\\1\\$\\2\}/is",$template,$matches)){ foreach($matches[0] as $k => $v) $template = str_replace($v,'{{'.$matches[1][$k].'-'.$matches[2][$k].'}}',$template); } $rets = array(); $rets[0] = preg_match("/\[row\](.+?)\[\/row\]/is",$template,$smatches) ? $smatches[1] : $template; $rets[1] = preg_match("/\[col\](.+?)\[\/col\]/is",$rets[0],$smatches) ? $smatches[1] : ''; if(!empty($matches)){ foreach($matches[0] as $k => $v){ $rets[0] = str_replace('{{'.$matches[1][$k].'-'.$matches[2][$k].'}}',$v,$rets[0]); $rets[1] = str_replace('{{'.$matches[1][$k].'-'.$matches[2][$k].'}}',$v,$rets[1]); } } unset($matches,$smatches,$template); return $rets; } function block_replace($mode='row',&$tostr,$template){//将内嵌的c,u标识去除后替换其中行列内容块 if(preg_match_all("/\{(u|c)\\$(.+?)\s+(.*?)\{\/\\1\\$\\2\}/is",$template,$matches)){ foreach($matches[0] as $k => $v) $template = str_replace($v,'',$template); } if($mode == 'row'){ $ret = preg_match("/\[row\](.+?)\[\/row\]/is",$template) ? preg_replace("/\[row\](.+?)\[\/row\]/is",$tostr,$template) : $tostr; }else $ret = preg_replace("/\[col\](.+?)\[\/col\]/is",$tostr,$template); unset($matches,$template); return $ret; } function pre_deal(){ $this->temparr['limits'] = empty($this->tag['limits']) ? 10 : $this->tag['limits']; switch($this->tclass){ case 'archives': global $db,$tblprefix; if($sqlstr = arc_sqlstr($this->tag,$this->temparr,$this->tmode)){ $sqlstr .= " LIMIT ".($this->tmode == 'p' ? ($this->nowpage - 1) * $this->temparr['limits'] : (empty($this->tag['startno']) ? 0 : $this->tag['startno'])).",".$this->temparr['limits']; $query = $db->query($sqlstr); while($archive = $db->fetch_array($query)){ arc_parse($archive); $this->items[] = $archive; } } break; case 'sarchives'://跨站文档列表,需要切换子站缓存 global $db,$tblprefix,$cotypes,$channels,$ncache; if($sqlstr = sarc_sqlstr($this->tag,$this->temparr,$this->tmode)){ $nsid = $this->tag['nsid']; if($nsid == -1){ if(!isset($this->temparr['nsid'])) return false; $nsid = $this->temparr['nsid']; } $ncache->active($nsid); $sqlstr .= " LIMIT ".($this->tmode == 'p' ? ($this->nowpage - 1) * $this->temparr['limits'] : (empty($this->tag['startno']) ? 0 : $this->tag['startno'])).",".$this->temparr['limits']; $query = $db->query($sqlstr); while($archive = $db->fetch_array($query)){ $ncache->active($archive['sid']); $archive['arcurl'] = view_arcurl($archive); $archive['catalog'] = @!empty($ncache->catalogs[$archive['caid']]['title']) ? $ncache->catalogs[$archive['caid']]['title'] : ''; $archive['channel'] = @$channels[$archive['chid']]['cname']; $archive['altype'] = $archive['atid'] ? $ncache->altypes[$archive['atid']]['cname'] : ''; foreach($cotypes as $k => $cotype){ $archive['cotype'.$k.'title'] = ''; if($archive["cotype$k"]){ $coclasses = read_cache('coclasses',$k); $archive['cotype'.$k.'title'] = $coclasses[$archive["cotype$k"]]['title']; } } fetch_txt($archive); arr_tag2atm($archive); $this->items[] = $archive; } } break; case 'alarchives'://辑内文档列表 global $db,$tblprefix; if($sqlstr = alarc_sqlstr($this->tag,$this->temparr,$this->tmode)){ $sqlstr .= " LIMIT ".(($this->tmode == 'p') ? (($this->nowpage - 1) * $this->temparr['limits']) : (empty($this->tag['startno']) ? 0 : $this->tag['startno'])).",".$this->temparr['limits']; $query = $db->query($sqlstr); while($archive = $db->fetch_array($query)){ arc_parse($archive); $this->items[] = $archive; } } break; case 'functions'://自定函数列表 $this->temparr['nowpage'] = $this->nowpage; $this->items = functions_arr($this->tag,$this->temparr,$this->tmode); break; case 'relates'://相关文档列表 global $db,$tblprefix; if($sqlstr = rel_sqlstr($this->tag,$this->temparr,$this->tmode)){ $sqlstr .= " LIMIT ".(($this->tmode == 'p') ? (($this->nowpage - 1) * $this->temparr['limits']) : 0).",".$this->temparr['limits']; $query = $db->query($sqlstr); while($archive = $db->fetch_array($query)){ arc_parse($archive); $this->items[] = $archive; } } break; case 'farchives'://附属信息列表 global $db,$tblprefix; if($sqlstr = farc_sqlstr($this->tag,$this->temparr,$this->tmode)){ $sqlstr .= " LIMIT ".(($this->tmode == 'p') ? (($this->nowpage - 1) * $this->temparr['limits']) : (empty($this->tag['startno']) ? 0 : $this->tag['startno'])).",".$this->temparr['limits']; $query = $db->query($sqlstr); while($row = $db->fetch_array($query)){ $row['arcurl'] = view_farcurl($row['aid'],$row['arcurl']); arr_tag2atm($row,'f'); $this->items[] = $row; } } break; case 'commus'://交互记录列表 global $db,$tblprefix,$commus,$fields,$curuser; if($sqlstr = cu_sqlstr($this->tag,$this->temparr,$this->tmode)){ $sqlstr .= " LIMIT ".(($this->tmode == 'p') ? (($this->nowpage - 1) * $this->temparr['limits']) : 0).",".$this->temparr['limits']; $query = $db->query($sqlstr); while($row = $db->fetch_array($query)){ $this->items[] = $row; } unset($aedit); } $this->no_ctag = 1; break; case 'members'://会员列表 global $db,$tblprefix; if($sqlstr = mem_sqlstr($this->tag,$this->temparr,$this->tmode)){ $sqlstr .= " LIMIT ".(($this->tmode == 'p') ? (($this->nowpage - 1) * $this->temparr['limits']) : 0).",".$this->temparr['limits']; $query = $db->query($sqlstr); while($row = $db->fetch_array($query)){ $this->items[] = $row; } } $this->no_ctag = 1; break; case 'searchs'://搜索文档列表 global $db,$tblprefix; if($this->tmode == 'c'){//可以引用$timestamp及其它公用参数 $sqlstr = "SELECT a.* "; $this->tag['sqlstr'] = stripslashes(str_replace('{$tblprefix}',$tblprefix,$this->tag['sqlstr'])); $this->tag['sqlstr'] = sqlstr_replace($this->tag['sqlstr'],$this->temparr); }else $sqlstr = empty($this->tag['detail']) || empty($this->temparr['chid']) ? "SELECT a.* " : "SELECT a.*,c.*"; $sqlstr .= ($this->tmode == 'p' ? $this->temparr['sqlstr'] : $this->tag['sqlstr'])." LIMIT ".($this->tmode == 'p' ? ($this->nowpage - 1) * $this->temparr['limits'] : 0).",".$this->temparr['limits']; $query = $db->query($sqlstr); while($archive = $db->fetch_array($query)){ arc_parse($archive); $this->items[] = $archive; } break; case 'outinfos'://自由调用列表 $this->items = outinfos_arr($this->tag,$this->temparr,$this->tmode,$this->nowpage); break; case 'catalogs'://类目列表 global $catalogs,$cotypes,$sid; if($this->tag['listby'] == 'ca'){ $caids = array(); if(empty($this->tag['casource'])){ foreach($catalogs as $k => $v){ !$v['level'] && $caids[] = $k; } }elseif($this->tag['casource'] == 1){ !empty($this->tag['caids']) && $caids = explode(',',$this->tag['caids']); }elseif(($this->tag['casource'] == 2) && !empty($this->temparr['caid'])){ foreach($catalogs as $k => $v) { ($v['pid'] == $this->temparr['caid']) && $caids[] = $k; } }elseif(($this->tag['casource'] == 3) && !empty($this->temparr['caid'])){ foreach($catalogs as $k => $v){ $v['pid'] == $catalogs[$this->temparr['caid']]['pid'] && $caids[] = $k; } } foreach($caids as $caid){ if($catalog = read_cache('catalog',$caid,'',$sid)) $this->items[] = $catalog; } }else{ $coid = str_replace('co','',$this->tag['listby']); if(!$coclasses = read_cache('coclasses',$coid)) return; $ccids = array(); if(empty($this->tag['cosource'.$coid])){ foreach($coclasses as $k => $v){ !$v['level'] && $ccids[] = $k; } }elseif($this->tag['cosource'.$coid] == 1 && !empty($this->tag['ccids'.$coid])){ $ccids = explode(',',$this->tag['ccids'.$coid]); }elseif($this->tag['cosource'.$coid] == 2 && !empty($this->temparr['ccid'.$coid])){ foreach($coclasses as $k => $v){ $v['pid'] == $this->temparr['ccid'.$coid] && $ccids[] = $k; } }elseif(($this->tag['cosource'.$coid] == 3) && !empty($this->temparr['ccid'.$coid])){ foreach($coclasses as $k => $v){ $v['pid'] == $coclasses[$this->temparr['ccid'.$coid]]['pid'] && $ccids[] = $k; } } foreach($ccids as $ccid){ ($coclass = read_cache('coclass',$coid,$ccid)) && $this->items[] = $coclass; } } unset($catalog,$coclasses,$coclass); break; case 'scatalogs'://跨站类目列表 global $cotypes,$sid,$ncache; if($this->tag['listby'] == 'ca'){ $nsid = $this->tag['nsid']; if($nsid == -1){ if(!isset($this->temparr['nsid'])) return false; $nsid = $this->temparr['nsid']; } $ncache->active($nsid); $caids = array(); if(empty($this->tag['casource'])){ foreach($ncache->catalogs as $k => $v){ !$v['level'] && $caids[] = $k; } }elseif($this->tag['casource'] == 1){ !empty($this->tag['caids']) && $caids = explode(',',$this->tag['caids']); }elseif(($this->tag['casource'] == 2) && !empty($this->temparr['caid'])){ foreach($ncache->catalogs as $k => $v){ $v['pid'] == $this->temparr['caid'] && $caids[] = $k; } }elseif(($this->tag['casource'] == 3) && !empty($this->temparr['caid'])){ foreach($ncache->catalogs as $k => $v){ $v['pid'] == $ncache->catalogs[$this->temparr['caid']]['pid'] && $caids[] = $k; } } foreach($caids as $caid){ if($catalog = read_cache('catalog',$caid,'',$ncache->catalogs[$caid]['sid'])) $this->items[] = $catalog; } }else{ $coid = str_replace('co','',$this->tag['listby']); if(!$coclasses = read_cache('coclasses',$coid)) return; $ccids = array(); if(empty($this->tag['cosource'.$coid])){ foreach($coclasses as $k => $v){ !$v['level'] && $ccids[] = $k; } }elseif($this->tag['cosource'.$coid] == 1 && !empty($this->tag['ccids'.$coid])){ $ccids = explode(',',$this->tag['ccids'.$coid]); }elseif($this->tag['cosource'.$coid] == 2 && !empty($this->temparr['ccid'.$coid])){ foreach($coclasses as $k => $v){ $v['pid'] == $this->temparr['ccid'.$coid] && $ccids[] = $k; } }elseif(($this->tag['cosource'.$coid] == 3) && !empty($this->temparr['ccid'.$coid])){ foreach($coclasses as $k => $v){ $v['pid'] == $coclasses[$this->temparr['ccid'.$coid]]['pid'] && $ccids[] = $k; } } foreach($ccids as $ccid){ ($coclass = read_cache('coclass',$coid,$ccid)) && $this->items[] = $coclass; } } unset($catalog,$coclasses,$coclass); break; case 'mcatalogs';//会员空间的类目列表 global $catalogs,$cotypes,$uclasses; if($this->tag['listby'] == 'ca'){ $caids = array(); if(empty($this->tag['casource'])){ foreach($catalogs as $k => $v){ !$v['level'] && $caids[] = $k; } }elseif($this->tag['casource'] == 1){ !empty($this->tag['caids']) && $caids = explode(',',$this->tag['caids']); }elseif(($this->tag['casource'] == 2) && !empty($this->temparr['caid'])){ foreach($catalogs as $k => $v) { ($v['pid'] == $this->temparr['caid']) && $caids[] = $k; } }elseif(($this->tag['casource'] == 3) && !empty($this->temparr['caid'])){ foreach($catalogs as $k => $v){ $v['pid'] == $catalogs[$this->temparr['caid']]['pid'] && $caids[] = $k; } } foreach($caids as $caid){ ($catalog = read_cache('catalog',$caid)) && $this->items[] = $catalog; } }elseif($coid = str_replace('co','',$this->tag['listby'])){ if(!$coclasses = read_cache('coclasses',$coid)) return; $ccids = array(); if(empty($this->tag['cosource'.$coid])){ foreach($coclasses as $k => $v){ !$v['level'] && $ccids[] = $k; } }elseif(($this->tag['cosource'.$coid] == 1) && !empty($this->tag['ccids'.$coid])){ $ccids = explode(',',$this->tag['ccids'.$coid]); }elseif(($this->tag['cosource'.$coid] == 2) && !empty($this->temparr['ccid'.$coid])){ foreach($coclasses as $k => $v){ ($v['pid'] == $this->temparr['ccid'.$coid]) && $ccids[] = $k; } }elseif(($this->tag['cosource'.$coid] == 3) && !empty($this->temparr['ccid'.$coid])){ foreach($coclasses as $k => $v){ $v['pid'] == $coclasses[$this->temparr['ccid'.$coid]]['pid'] && $ccids[] = $k; } } foreach($ccids as $ccid){ ($coclass = read_cache('coclass',$coid,$ccid)) && $this->items[] = $coclass; } }elseif($this->tag['listby'] == 'uc'){ $this->items = $uclasses; } unset($catalog,$coclasses,$coclass); break; case 'vote'://投票模块 global $db,$tblprefix,$timestamp; $this->no_ctag = 1; $vid = empty($this->tag['vid']) ? (empty($this->temparr['vid']) ? 0 : $this->temparr['vid']) : $this->tag['vid']; if(!$vid){ $this->ret_null = 1; return; } if(!($vote = $db->fetch_one("SELECT * FROM {$tblprefix}votes WHERE vid='$vid' AND checked=1 AND (enddate=0 OR enddate>$timestamp)"))){ $this->ret_null = 1; return; } $vote['content'] = mnl2br($vote['content']); foreach(array('vid','subject','content','totalnum','enddate','mid','mname','createdate') as $var){ $this->temparr[$var] = $vote[$var]; } $query = $db->query("SELECT * FROM {$tblprefix}voptions WHERE vid='$vid' ORDER BY vieworder,vopid"); while($item = $db->fetch_array($query)){ $item['input'] = !$vote['ismulti'] ? "<input type=\"radio\" value=\"".$item['vopid']."\" name=\"vopids[]\">" : "<input type=\"checkbox\" value=\"".$item['vopid']."\" name=\"vopids[]\">"; $item['percent'] = $vote['totalnum'] ? @round($item['votenum'] / $vote['totalnum'],3) : 0; $item['percent'] = ($item['percent'] * 100).'%'; $this->items[] = $item; } unset($vote,$item); break; case 'votes'://投票列表 global $db,$tblprefix; if($sqlstr = v_sqlstr($this->tag,$this->tmode)){ $sqlstr .= " LIMIT ".(($this->tmode == 'p') ? (($this->nowpage - 1) * $this->temparr['limits']) : 0).",".$this->temparr['limits']; $query = $db->query($sqlstr); while($item = $db->fetch_array($query)){ $this->items[] = $item; } } break; case 'images'://有分页 $tempfiles = @array_slice(unserialize($this->temparr[$this->tag['tname']]),($this->nowpage - 1) * $this->temparr['limits'],$this->temparr['limits']); if(!empty($tempfiles)){ foreach($tempfiles as $v){ $item = array(); $item['url'] = view_atmurl($v['remote']); $item['url_s'] = view_thumburl($v['remote']); $item['title'] = $v['title']; $item['width'] = empty($v['width']) ? 0 : $v['width']; $item['height'] = empty($v['height']) ? 0 : $v['height']; $this->items[] = $item; } } unset($tempfiles,$v,$item); $this->no_ctag = 1; break; case 'files': $tempfiles = @marray_slice(unserialize($this->temparr[$this->tag['tname']]),0,$this->temparr['limits']); if(!empty($tempfiles)){ foreach($tempfiles as $k => $v){ $item = array(); $item['fid'] = $k; $item['url'] = view_atmurl($v['remote']); $item['title'] = $v['title']; !empty($this->temparr['aid']) && $item['aid'] = $this->temparr['aid']; $item['tname'] = $this->tag['tname']; $this->items[] = $item; } } unset($tempfiles,$v,$item); $this->no_ctag = 1; break; case 'medias': $tempfiles = @marray_slice(unserialize($this->temparr[$this->tag['tname']]),0,$this->temparr['limits']); if(!empty($tempfiles)){ foreach($tempfiles as $k => $v){ $item = array(); $item['fid'] = $k; $item['url'] = view_atmurl($v['remote']); $item['title'] = $v['title']; $item['player'] = empty($v['player']) ? 0 : $v['player']; !empty($this->temparr['aid']) && $item['aid'] = $this->temparr['aid']; $item['tname'] = $this->tag['tname']; $this->items[] = $item; } } unset($tempfiles,$v,$item); $this->no_ctag = 1; break; case 'flashs': $tempfiles = @marray_slice(unserialize($this->temparr[$this->tag['tname']]),0,$this->temparr['limits']); if(!empty($tempfiles)){ foreach($tempfiles as $k => $v){ $item = array(); $item['fid'] = $k; $item['url'] = view_atmurl($v['remote']); $item['title'] = $v['title']; $item['player'] = empty($v['player']) ? 0 : $v['player']; !empty($this->temparr['aid']) && $item['aid'] = $this->temparr['aid']; $item['tname'] = $this->tag['tname']; $this->items[] = $item; } } unset($tempfiles,$v,$item); $this->no_ctag = 1; break; case 'arcfee': $temps = fee_arr($this->tag,$this->temparr); empty($temps) && $this->ret_null = 1; foreach($temps as $k => $v){ $this->items[] = $v; } unset($temps,$v); $this->no_ctag = 1; break; case 'keywords': global $wordlinks; load_cache('wordlinks'); if(empty($wordlinks)) return; $temps = @marray_slice($wordlinks,0,$this->temparr['limits']); foreach($temps['swords'] as $k =>$v){ $this->items[] = array('word' => $v,'wordlink' => $temps['rwords'][$k]); } unset($temps,$k,$v); $this->no_ctag = 1; break; case 'subsites': global $subsites,$cmsname; if(empty($this->tag['source']) || (($this->tag['source'] == 2) && in_array('0',$this->tag['sids']))){ $this->items[] = array('sid' => 0,'siteurl' => view_siteurl(0),'sitename' => $cmsname); } $i = 1; foreach($subsites as $k => $v){ if($i > $this->temparr['limits']) break; if(($this->tag['source'] < 2) || (($this->tag['source'] == 2) && in_array($k,explode(',',$this->tag['sids'])))){ $this->items[] = array('sid' => $k,'siteurl' => view_siteurl($k),'sitename' => $v['sitename']); $i ++; } } break; case 'channels': global $channels; if(empty($channels) || (!empty($this->tag['chsource']) && empty($this->tag['chids']))) return; $i = 1; foreach($channels as $k => $v){ if($i > $this->temparr['limits']) break; if(empty($this->tag['chsource']) || (!empty($this->tag['chsource']) && in_array($k,explode(',',$this->tag['chids'])))){ $this->items[] = array('chid' => $k,'title' => $v['cname']); $i ++; } } break; case 'mchannels': global $mchannels; if(empty($mchannels) || (!empty($this->tag['chsource']) && empty($this->tag['chids']))) return; $i = 1; foreach($mchannels as $k => $v){ if($i > $this->temparr['limits']) break; if(empty($this->tag['chsource']) || (!empty($this->tag['chsource']) && in_array($k,explode(',',$this->tag['chids'])))){ $this->items[] = array('mchid' => $k,'title' => $v['cname']); $i ++; } } break; } } function fill_blank(){ if($this->tclass == 'images'){ $this->item['url'] = $this->item['url_s'] = view_atmurl($this->tag['emptyurl']); $this->item['width'] = $this->tag['maxwidth']; $this->item['height'] = $this->tag['maxheight']; $this->cell_fill = 1; } } function deal_incell(){ if(in_array($this->tclass,array('archives','sarchives','searchs','alarchives','relates'))){ global $catalogs,$cotypes; $this->midarr = $this->temparr; $this->midarr['aid'] = $this->item['aid']; $this->midarr['caid'] = $this->item['caid']; foreach($cotypes as $k => $cotype){ if($cotype['sortable'] && !empty($this->item["cotype$k"])){ $this->midarr['ccid'.$k] = $this->item["cotype$k"]; } } $this->midarr['atid'] = $this->item['atid']; $this->midarr['mid'] = $this->item['mid']; }elseif($this->tclass == 'farchives'){ $this->midarr['aid'] = $this->item['aid']; $this->midarr['mid'] = $this->item['mid']; }elseif($this->tclass == 'outinfos'){ if(!empty($this->tag['relays'])){ $relays = explode(',',$this->tag['relays']); foreach($relays as $v) $this->midarr[$v] = isset($this->item[$v]) ? $this->item[$v] : ''; unset($relays); } }elseif($this->tclass == 'marchives'){ $this->midarr = $this->temparr; $this->midarr['caid'] = $this->item['caid']; $this->midarr['ucid'] = $this->item['ucid']; }elseif($this->tclass == 'catalogs'){ global $cotypes,$sid; parse_str(cnstr($this->temparr),$this->midarr); foreach($this->midarr as $k => $v){//读取继承参数 if($k == 'caid'){ if(@$this->tag['cainherit'] != 'active') unset($this->midarr[$k]); }else{ if(@$this->tag['coinherit'.str_replace('ccid','',$k)] != 'active') unset($this->midarr[$k]); } } if($this->tag['listby'] == 'ca'){//先处理非列表项目,因为列表项id要放在最后 foreach($cotypes as $k => $v){//读取手动指定的参数 ($v['sortable'] && !empty($this->tag['coinherit'.$k]) && is_numeric($this->tag['coinherit'.$k])) && $this->midarr['ccid'.$k] = $this->tag['coinherit'.$k]; } unset($this->midarr['caid']);//将列表项的参数放在最后 $this->midarr['caid'] = $this->item['caid']; }elseif($coid = str_replace('co','',$this->tag['listby'])){ (!empty($this->tag['cainherit']) && is_numeric($this->tag['cainherit'])) && $this->midarr['caid'] = $this->tag['cainherit']; foreach($cotypes as $k => $v){ (($k != $coid) && $v['sortable'] && !empty($this->tag['coinherit'.$k]) && is_numeric($this->tag['coinherit'.$k])) && $this->midarr['ccid'.$k] = $this->tag['coinherit'.$k]; } unset($this->midarr['ccid'.$coid]); $this->midarr['ccid'.$coid] = $this->item['ccid']; } (!empty($this->tag['urlmode']) && !empty($this->midarr[$this->tag['urlmode']])) && $this->midarr = array_merge(array($this->tag['urlmode'] => $this->midarr[$this->tag['urlmode']]),$this->midarr); $cnstr = cnstr($this->midarr); $cnode = cnodearr($cnstr,$sid); re_cnode($this->item,$cnstr,$cnode); unset($cnode); }elseif($this->tclass == 'scatalogs'){ global $cotypes,$sid; parse_str(cnstr($this->temparr),$this->midarr); foreach($this->midarr as $k => $v){//读取继承参数 if($k == 'caid'){ if($this->tag['cainherit'] != 'active') unset($this->midarr[$k]); }else{ if(@$this->tag['coinherit'.str_replace('ccid','',$k)] != 'active') unset($this->midarr[$k]); } } if($this->tag['listby'] == 'ca'){//先处理非列表项目,因为列表项id要放在最后 foreach($cotypes as $k => $v){//读取手动指定的参数 ($v['sortable'] && !empty($this->tag['coinherit'.$k]) && is_numeric($this->tag['coinherit'.$k])) && $this->midarr['ccid'.$k] = $this->tag['coinherit'.$k]; } unset($this->midarr['caid']);//将列表项的参数放在最后 $this->midarr['caid'] = $this->item['caid']; }elseif($coid = str_replace('co','',$this->tag['listby'])){ (!empty($this->tag['cainherit']) && is_numeric($this->tag['cainherit'])) && $this->midarr['caid'] = $this->tag['cainherit']; foreach($cotypes as $k => $v){ (($k != $coid) && $v['sortable'] && !empty($this->tag['coinherit'.$k]) && is_numeric($this->tag['coinherit'.$k])) && $this->midarr['ccid'.$k] = $this->tag['coinherit'.$k]; } unset($this->midarr['ccid'.$coid]); $this->midarr['ccid'.$coid] = $this->item['ccid']; } (!empty($this->tag['urlmode']) && !empty($this->midarr[$this->tag['urlmode']])) && $this->midarr = array_merge(array($this->tag['urlmode'] => $this->midarr[$this->tag['urlmode']]),$this->midarr); //求nsid $nsid = $this->tag['nsid']; if($nsid == -1){ if(!isset($this->temparr['nsid'])) return false; $nsid = $this->temparr['nsid']; } $cnstr = cnstr($this->midarr); $cnode = cnodearr($cnstr,$nsid); re_cnode($this->item,$cnstr,$cnode); $this->itme['nsid'] = $nsid; unset($cnode); }elseif($this->tclass == 'mcatalogs'){ $this->midarr = $this->temparr; if($this->tag['listby'] == 'ca'){ $this->midarr['caid'] = $this->item['caid']; $this->item['indexurl'] = mcn_url('caid',$this->item['caid'],'index'); $this->item['listurl'] = mcn_url('caid',$this->item['caid'],'list'); }elseif(preg_match("/^co(\d+)/is",$this->tag['listby'],$matches)){ $coid = $matches[1]; $this->midarr['ccid'.$coid] = $this->item['ccid']; $this->item['indexurl'] = mcn_url('ccid'.$coid,$this->item['ccid'],'index'); $this->item['listurl'] = mcn_url('ccid'.$coid,$this->item['ccid'],'list'); }elseif($this->tag['listby'] == 'uc'){ $this->midarr['ucid'] = $this->item['ucid']; $this->item['indexurl'] = mcn_url('ucid',$this->item['ucid'],'index'); $this->item['listurl'] = mcn_url('ucid',$this->item['ucid'],'list'); } }elseif($this->tclass == 'images'){ $wh = imagewh($this->item['url'],!empty($this->item['width']) ? $this->item['width'] : 0,!empty($this->item['height']) ? $this->item['height'] : 0,@$this->tag['maxwidth'],@$this->tag['maxheight'],@$this->tag['expand']); $this->item['width'] = $wh['width']; $this->item['height'] = $wh['height']; }elseif($this->tclass == 'channels'){ $this->midarr = array('chid' => $this->item['chid']); }elseif($this->tclass == 'members'){ global $grouptypes; foreach($grouptypes as $k => $v){ $this->item['grouptype'.$k.'name'] = ''; if(!empty($this->item['grouptype'.$k])){ $usergroups = read_cache('usergroups',$k); $this->item['grouptype'.$k.'name'] = $usergroups[$this->item['grouptype'.$k]]['cname']; } } unset($usergroups,$v); }elseif($this->tclass == 'subsites'){ $this->midarr['nsid'] = $this->item['sid']; }elseif($this->tclass == 'channels'){ $this->midarr['chid'] = $this->item['chid']; }elseif($this->tclass == 'mchannels'){ $this->midarr['mchid'] = $this->item['mchid']; } } } ?>