www.gusucode.com > 08CMS空白站群系统 3.3 繁体 UTF-8 > upload/include/parse/alarchives.php
<?php !defined('M_COM') && exit('No Permission'); function alarc_sqlstr(&$tag,$temparr=array(),$type='c',$iscount=0){ global $channels,$catalogs,$cotypes,$altypes,$tblprefix,$timestamp,$sid; $sql = $sqlorder = ''; $sqlselect = $iscount ? "SELECT COUNT(*)" : "SELECT b.checked,a.*"; $sqlfrom = " FROM {$tblprefix}albums b LEFT JOIN {$tblprefix}archives a ON a.aid=b.aid"; $sqlwhere = " WHERE a.sid='$sid' AND a.checked=1 AND b.checked=1"; if(empty($temparr['aid']) || empty($temparr['atid']) || empty($altypes[$temparr['atid']])) return false; $sqlwhere .= " AND b.pid='".$temparr['aid']."'"; if(!$iscount && (!empty($tag['rec']) || !empty($tag['orderby1']))){ $sqlselect .= ",r.*"; $sqlfrom .= " LEFT JOIN {$tblprefix}archives_rec r ON r.aid=b.aid"; } if(!empty($tag['casource'])){ $caids = array(); if($tag['casource'] == '1'){//如果指定为空,返回空集 if(empty($tag['caids'])) return false; $tcaids = explode(',',$tag['caids']); foreach($tcaids as $caid) isset($catalogs[$caid]) && $caids[] = $caid; if(empty($caids)) return false; }elseif($tag['casource'] == '2'){ if(!empty($temparr['caid'])){ if(empty($catalogs[$temparr['caid']])) return false; $caids[] = $temparr['caid']; } }elseif($tag['casource'] == '3'){ if(!empty($temparr['caid'])){ if(empty($catalogs[$temparr['caid']])) return false; foreach($catalogs as $catalog){ $catalog['pid'] == $catalogs[$temparr['caid']]['pid'] && $caids[] = $catalog['caid']; } } } if(!empty($caids) && !empty($tag['caidson'])){ $tempsons = array(); foreach($caids as $caid){ $tempsons = son_ids($catalogs,$caid,$tempsons); } $caids = array_unique(array_merge($caids,$tempsons)); } !empty($caids) && $sqlwhere .= " AND a.caid IN (".mimplode($caids).")"; } foreach($cotypes as $k => $cotype){ $ccids = array(); if(!empty($tag['cosource'.$k])){ $coclasses = read_cache('coclasses',$k); if($tag['cosource'.$k] == '1'){ if(empty($tag['ccids'.$k])) return false; $tccids = explode(',',$tag['ccids'.$k]); foreach($tccids as $ccid) $ccids[] = $ccid; if(empty($ccids)) return false; }elseif($tag['cosource'.$k] == '2'){ if(!empty($temparr['ccid'.$k])){ if(empty($coclasses[$temparr['ccid'.$k]])) return false; $ccids[] = $temparr['ccid'.$k]; } }elseif($tag['cosource'.$k] == '3'){ if(!empty($temparr['ccid'.$k])){ if(empty($coclasses[$temparr['ccid'.$k]])) return false; foreach($coclasses as $coclass){ $coclass['pid'] == $coclasses[$temparr['ccid'.$k]]['pid'] && $ccids[] = $coclass['ccid']; } } } if(!empty($ccids) && !empty($tag['ccidson'.$k])){ $tempsons = array(); foreach($ccids as $ccid){ $tempsons = son_ids($coclasses,$ccid,$tempsons); } $ccids = array_unique(array_merge($ccids,$tempsons)); } if(!empty($ccids)){ if(empty($cotype['self_reg'])){ $sqlwhere .= " AND a.cotype$k IN (".mimplode($ccids).")"; }else{ $tempstr = self_sqlstr($k,$ccids,'a.'); $tempstr && $sqlwhere .= ' AND '.$tempstr; unset($tempstr); } } } } if(!empty($tag['chsource'])){ if(empty($tag['chids'])) return false; $tchids = explode(',',$tag['chids']); $sqlwhere .= " AND a.chid IN (".mimplode($tchids).")"; $chid = 0; if(count($tchids) == 1) $chid = $tchids[0]; if(!$iscount && !empty($tag['detail']) && $chid && @$channels[$chid]){ $sqlselect .= ",c.*"; $sqlfrom .= " LEFT JOIN {$tblprefix}archives_$chid c ON c.aid=a.aid"; } } if(empty($tag['atsource'])){ $sqlwhere .= " AND a.atid=0"; }elseif(is_numeric($tag['atsource'])){ if($temparr['atid'] == $tag['atsource'] || empty($altypes[$tag['atsource']])) return false; $sqlwhere .= " AND a.atid='".$tag['atsource']."'"; } isset($tag['clicks']) && $sqlwhere .= " AND a.clicks > $tag[clicks]"; isset($tag['comments']) && $sqlwhere .= " AND a.comments > $tag[comments]"; !empty($tag['indays']) && $sqlwhere .= " AND a.createdate > $timestamp - 86400 * $tag[indays]"; !empty($tag['outdays']) && $sqlwhere .= " AND a.createdate < $timestamp - 86400 * $tag[outdays]"; isset($tag['favorites']) && $sqlwhere .= " AND a.favorites > $tag[favorites]"; isset($tag['praises']) && $sqlwhere .= " AND a.praises > $tag[praises]"; isset($tag['debases']) && $sqlwhere .= " AND a.debases > $tag[debases]"; isset($tag['orders']) && $sqlwhere .= " AND a.orders > $tag[orders]"; isset($tag['answers']) && $sqlwhere .= " AND a.answers > $tag[answers]"; isset($tag['adopts']) && $sqlwhere .= " AND a.adopts > $tag[adopts]"; !empty($tag['inprice']) && $sqlwhere .= " AND a.price < $tag[inprice]"; !empty($tag['outprice']) && $sqlwhere .= " AND a.price >= $tag[outprice]"; !empty($tag['incurrency']) && $sqlwhere .= " AND a.currency < $tag[incurrency]"; !empty($tag['outcurrency']) && $sqlwhere .= " AND a.currency >= $tag[outcurrency]"; if(isset($tag['closed']) && $tag['closed'] != '-1'){ if($tag['closed']){ $sqlwhere .= " AND (a.closed = 1 OR a.finishdate<$timestamp)"; }else $sqlwhere .= " AND a.closed = 0 AND a.finishdate>$timestamp"; } if(isset($tag['abover']) && $tag['abover'] != '-1'){ $sqlwhere .= " AND a.abover = '$tag[abover]'"; } !empty($tag['wherestr']) && $sqlwhere .= " AND ".stripslashes($tag['wherestr']); if(!$iscount){ !empty($tag['orderby']) && $sqlorder .= in_str('albumorder',$tag['orderby']) ? 'b.vieworder ASC' : ('a.'.str_replace('_',' ',$tag['orderby'])); !empty($tag['orderby1']) && $sqlorder .= ($sqlorder ? ',' : '').'r.'.str_replace('_',' ',$tag['orderby1']); !empty($tag['orderstr']) && $sqlorder .= ($sqlorder ? ',' : '').$tag['orderstr']; } $sqlorder = $iscount ? '' : (empty($sqlorder) ? " ORDER BY a.vieworder ASC,a.aid DESC" : " ORDER BY $sqlorder,a.vieworder ASC,a.aid DESC"); $sql = $sqlselect.$sqlfrom.$sqlwhere.$sqlorder; $sql = sqlstr_replace($sql,$temparr); return $sql; } ?>