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;
}
?>