$db_schend) && ($_time['hours']>$db_schend) && ($_time['hours']<$db_schstart) || ($db_schstart < $db_schend) && (($db_schstart>-1 && $_time['hours']<$db_schstart) || ($db_schend>-1 && $_time['hours']>=$db_schend)))) {
Showmsg('search_opensch');
}
}
*/
//InitGP(array('sch_type','keyword','authorid','step','method','f_fid','sch_time','orderway','asc','pwuser','advanced'));
InitGP(array('sch_type','keyword','authorid','step','method','fid','sch_time','orderway','asc','pwuser','advanced','vercode'));
InitGP(array('sch_area','newatc','digest'),'GP',2);
/* 取消用户组权限限制
$sch_area>0 && $_G['allowsearch']!=2 && Showmsg('search_tpost');
取消用户名搜索
if (isset($authorid) && (int)$authorid<1) {
$errorname = $authorid;
Showmsg('user_not_exists');
}
取消时间范围
if ($sch_time=='newatc') {
$newatc = 1;
$sch_time = 86400;
}
*/
if ($vercode!=$vercode2){
echo('[err]invalid vercode[/err]');
exit();
}
$step='2';
$method='AND';
$sch_area='0';
$sch_time='all';
$f_fid=$fid;
unset($fid);
if (!$keyword){
echo('[err]no subject[/err]');
exit;
}
/*
if ($keyword) {
$keyword = str_replace(' ','',$keyword);
$skeyword = $keyword;
$keyword_A = explode(' ',$keyword);
foreach ($keyword_A as $key=>$value) {
$value = trim($value);
if (empty($value)) {
unset($keyword_A[$key]);
} else {
$keyword_A[$key] = $value;
}
}
$keyword = $keyword_A ? implode('|',$keyword_A) : '';
$keyword && strlen($keyword)<3 && Showmsg('search_word_limit');
$metakeyword = strip_tags($keyword);
$subject = "$metakeyword - ";
$db_metakeyword = str_replace('|',',',$metakeyword);
}
*/
/*
require_once(R_P.'require/header.php');
$forumadd = $p_table = $f = $db_searchinfo = '';
$fidout = array('0');
($newatc || is_numeric($authorid) || $digest) && $step = 2;
require_once(D_P.'data/bbscache/forumcache.php');
$query = $db->query('SELECT fid,allowvisit,password '.($step!=2 ? ',name,f_type' : '')." FROM pw_forums WHERE type<>'category'");
while ($rt = $db->fetch_array($query)) {
$allowvisit = (!$rt['allowvisit'] || $rt['allowvisit']!=str_replace(",$groupid,",'',$rt['allowvisit'])) ? true : false;
if ($rt['f_type']=='hidden' && $allowvisit) {
$forumadd .= "";
} elseif ($rt['password'] || !$allowvisit) {
if ($step!=2) {
$forumcache = preg_replace("/\(.+?)\<\/option\>(\\r?\\n)/is","\\1\\2",$forumcache);
$forumadd = preg_replace("/\(.+?)\<\/option\>(\\r?\\n)/is","\\1\\2",$forumadd);
}
$sch_time && ${'time_'.$sch_time} = 'selected';
${'order_'.$orderway} = 'selected';
$asc == 'ASC' ? $asc_ASC = 'checked' : $asc_DESC = 'checked';
*/
if ($step == 2) {
include(D_P.'data/bbscache/forum_cache.php');
@set_time_limit(0);
$keyword_A = array();
$schedid = '';
InitGP(array('sid','seekfid','page','ptable'));
$f_fid = (int)$f_fid;
!$seekfid && $seekfid = (empty($f_fid) || $f_fid=='all') ? 'all' : $f_fid;
if ($seekfid != 'all') {
$seekfid = (int)$seekfid;
}
$admincheck = $total = 0;
/*
$isGM = CkInArray($windid,$manager);
if ($seekfid!='all') {
if ($isGM) {
$admincheck = 1;
} else {
$foruminfo = $db->get_one("SELECT forumadmin,fupadmin FROM pw_forums WHERE fid=".pwEscape($seekfid));
$isBM = admincheck($foruminfo['forumadmin'],$foruminfo['fupadmin'],$windid);
$pwSystem = pwRights($isBM,false,$seekfid);
if ($pwSystem && ($pwSystem['tpccheck'] || $pwSystem['digestadmin'] || $pwSystem['lockadmin'] || $pwSystem['pushadmin'] || $pwSystem['coloradmin'] || $pwSystem['downadmin'] || $pwSystem['delatc'] || $pwSystem['moveatc'] || $pwSystem['copyatc'] || $pwSystem['topped'])) {
$admincheck = 1;
}
}
}
*/
unset($f_fid);
/*
if($db_sphinx['isopen'] == 1){
require_once R_P.'require/sphinxsearch.php';
}else{
require_once R_P.'require/normalsearch.php';
}
*/
// normalsearch.php 开始
$sid = (int)$sid;
/* if ($sid>0) {
@extract($db->get_one("SELECT sorderby,total,schedid FROM pw_schcache WHERE sid='$sid'"));
$total = (int)$total;
list($orderway,$asc) = explode('|',$sorderby);
$orderby = "ORDER BY t.$orderway $asc";
} else {
*/
// $sch_area>2 && $sch_area = 2;
InitGP(array('ttable'));
// $_POST && empty($keyword) && empty($pwuser) && $sch_time=='all' && Showmsg('no_condition');
/* $method!='AND' && $method = 'OR';
$schline = 'search|'.trim($sch_type).'|'.trim($keyword).'|'.trim($method).'|'.trim($sch_area).'|'.trim($seekfid).'|'.trim($pwuser).'|'.trim($authorid).'|'.trim($sch_time).'|'.trim($digest);
$db_plist && $schline .= '|'.$ptable;
$db_tlist && $schline .= '|'.$ttable;
$schline = md5($schline.'|search');
($orderway!='replies' && $orderway!='hits' && $orderway!='favors') && $orderway = 'lastpost';
$asc!='ASC' && $asc = 'DESC';
$sorderby = $orderway.'|'.$asc;
$orderby = "ORDER BY t.$orderway $asc";
if (!$authorid) {
@extract($db->get_one("SELECT sid,schtime,total,schedid FROM pw_schcache WHERE schline=".pwEscape($schline).' LIMIT 1'));
if ($newatc && $timestamp-$schtime>1800) {
$db->update("DELETE FROM pw_schcache WHERE sid=".pwEscape($sid));
$schedid = '';
}
}
*/
if (!$schedid) {
/* $db_schwait = (int)$db_schwait;
if (file_exists(D_P.'data/bbscache/schwait_cache.php')) {
if ($timestamp-pwFilemtime(D_P.'data/bbscache/schwait_cache.php')>$db_schwait) {
P_unlink(D_P.'data/bbscache/schwait_cache.php');
} else {
Showmsg('search_wait');
}
}
$db->update("DELETE FROM pw_schcache WHERE schtime<".pwEscape($timestamp-3600));
if (($keyword || $pwuser || !is_numeric($authorid)) && $_G['searchtime']!=0) {
@extract($db->get_one("SELECT lasttime FROM pw_memberinfo WHERE uid=".pwEscape($winduid)));
if ($timestamp-$lasttime<$_G['searchtime']) {
Showmsg('search_limit');
}
$db->update("UPDATE pw_memberinfo SET lasttime=".pwEscape($timestamp).' WHERE uid='.pwEscape($winduid));
}
*/ $sqlwhere = "t.ifcheck='1' ";
if ($seekfid!='all') {
if ($forum[$seekfid]['type']=='category') {
//Showmsg('search_cate');
echo('[err]fid is error! Can not search category[/err]');
exit;
}
// if (strpos(",$fidout,",",'$seekfid',")===false) {
$sqlwhere .= 'AND t.fid='.pwEscape($seekfid);
// } else {
// Showmsg('search_forum_right');
// }
// } elseif ($fidout) {
// $sqlwhere .= "AND t.fid NOT IN ($fidout)";
}
$distinct = '';
$sqltable = 'pw_threads t';
$tablepre = '';
/* if ($_G['allowsearch']==2 && $sch_area>0) {
if ($sch_area==1) {
$tlistdb = $db_tlist ? unserialize($db_tlist) : array();
$pw_tmsgs = isset($tlistdb[$ttable]) ? "pw_tmsgs$ttable" : 'pw_tmsgs';
$keyword && $sqltable .= " LEFT JOIN $pw_tmsgs tm ON tm.tid=t.tid";
$tablepre = 'tm';
} elseif ($sch_area==2) {
$pw_posts = GetPtable($ptable);
if ($db_plist && is_numeric($authorid)) {
${'selected'.$ptable} = 'SELECTED';
$p_table = "";
}
$distinct = 'DISTINCT';
$sqltable = "$pw_posts t";
$sorderby = 'tid|'.$asc;
$orderby = "ORDER BY tid $asc";
$tablepre = 't';
}
}
*/ if ($keyword || $pwuser) {
if ($keyword) {
/* $keywhere = '';
$keyword = str_replace(array('%','_'),array('\%','\_'),trim($keyword));
$keyword_A = explode('|',$keyword);
foreach ($keyword_A as $value) {
if ($value) {
$value = addslashes($value);
$keywhere .= $method;
if (!$sch_area) {
$keywhere .= " t.subject LIKE ".pwEscape("%$value%");
} elseif ($tablepre) {
$keywhere .= " (t.subject LIKE ".pwEscape("%$value%")." OR $tablepre.content LIKE ".pwEscape("%$value%").")";
}
}
}
$keywhere && $keywhere = substr_replace($keywhere,'',0,3);
!$keywhere && Showmsg('illegal_keyword');
*/
$keywhere=" t.subject=".pwEscape("$keyword");
$sqlwhere .= " AND ($keywhere)";
}
/*
if ($pwuser) {
!str_replace('*','',$pwuser) && Showmsg('illegal_author');
$uids = array();
$pwuser = str_replace(array('%','_'),array('\%','\_'),addslashes(trim($pwuser)));
$pwuser = str_replace('*','_',$pwuser);//noizyfeng
$query = $db->query("SELECT uid FROM pw_members WHERE username LIKE ".pwEscape($pwuser));
while ($rt = $db->fetch_array($query)) {
$uids[] = $rt['uid'];
}
$uids && $uids = pwImplode($uids);
!$uids && Showmsg('user_not_exists');
$sqlwhere .= " AND t.authorid IN ($uids)";
}
}elseif (is_numeric($authorid)) {
$sqlwhere .= " AND t.authorid = ".pwEscape($authorid);
*/
}
/*
$digest && $sch_area<2 && $sqlwhere .= " AND t.digest>0";
if (!is_numeric($authorid) && (!$digest || $sch_time)) {
if ($sch_time!='all') {
!is_numeric($sch_time) && $sch_time = 86400;
$_G['schtime']=='all' && $_G['schtime'] = 31536000;
$sch_time>$_G['schtime'] && $sch_time = $_G['schtime'];
$sqlwhere .= " AND t.postdate > ".pwEscape($timestamp-$sch_time);
} elseif ($_G['schtime']!='all') {
$sqlwhere .= " AND t.postdate > ".pwEscape($timestamp-$_G['schtime']);
}
}
*/
// $limit = 'LIMIT 50';
$limit = 'LIMIT 1';
/* if (!$newatc) {
!$db_maxresult && $db_maxresult = 500;
$limit = pwLimit($db_maxresult);
}
*/ $schsql = " t.tid FROM $sqltable WHERE $sqlwhere $orderby";
if (strpos($sqltable,'tm')===false) {
$schsql = str_replace(array(' t.',' t ','(t.'),array(' ',' ','('),$schsql);
}
$query = $db->query("SELECT $distinct$schsql $limit");
while ($rt = $db->fetch_array($query)) {
$total++;
$schedid .= ",$rt[tid]";
}
$db->free_result($query);
/* if ($schedid) {
$schedid = substr($schedid,1);
if ((int)$authorid<1) {
$pwSQL = pwSqlSingle(array(
'sorderby' => $sorderby,
'schline' => $schline,
'schtime' => $timestamp,
'total' => $total,
'schedid' => $schedid
));
$db->update("INSERT INTO pw_schcache SET $pwSQL");
$sid = $db->insert_id();
$db_schwait && writeover(D_P.'data/bbscache/schwait_cache.php','');
}
}
*/
}
//}
if ($schedid) {
echo('[yes]');
/* $schdb = array();
$pages = $addpage = $rawkeyword = $htmlurl = '';
(int)$page<1 && $page = 1;
$limit = pwLimit(($page-1)*$db_perpage,$db_perpage);
if ($keyword) {
$keyword_A = explode('|',$keyword);
$rawkeyword = rawurlencode($keyword);
$htmlurl = "&keyword=$rawkeyword";
}
$addpage = "&keyword=$rawkeyword";
$schedid = pwImplode(explode(',',$schedid));
$sqlwhere = "tid IN ($schedid)";
$fidout && $sqlwhere .= " AND fid NOT IN ($fidout)";
$orderby = str_replace('t.','',$orderby);
$query = $db->query("SELECT tid,fid,titlefont,author,authorid,subject,postdate,lastpost,lastposter,hits,replies,locked,special,anonymous,topped,digest FROM pw_threads WHERE $sqlwhere $orderby $limit");
while ($rt = $db->fetch_array($query)) {
if ($rt['anonymous'] && $rt['author']!=$windid) {
if ($groupid!='3') continue;
$rt['author'] = $db_anonymousname;
$rt['authorid'] = 0;
}
if ($rt['titlefont']) {
$titledetail = explode('~',$rt['titlefont']);
if ($titledetail[0]) $rt['subject'] = "$rt[subject]";
if ($titledetail[1]) $rt['subject'] = "$rt[subject]";
if ($titledetail[2]) $rt['subject'] = "$rt[subject]";
if ($titledetail[3]) $rt['subject'] = "$rt[subject]";
}
foreach ($keyword_A as $value) {
$value && $rt['subject'] = preg_replace('/(?<=[^\w=]|^)('.preg_quote($value,'/').')(?=[^\w=]|$)/si','\\1',$rt['subject']);
}
if ($rt['special']==1) {
$rt['status'] = !$rt['locked'] ? 'vote' : 'votelock';
} elseif ($rt['locked']>0) {
$rt['status'] = $rt['locked']==1 ? 'topiclock' : 'topicclose';
} else {
$rt['status'] = $rt['replies']>=10 ? 'topichot' : 'topicnew';
}
$rt['forumname'] = $forum[$rt['fid']]['name'];
$rt['postdate'] = get_date($rt['postdate'],"Y-m-d");
$rt['lastpost'] = get_date($rt['lastpost']);
$rt['lastposterraw'] = rawurlencode($rt['lastposter']);
$schdb[] = $rt;
}
$db->free_result($query);
if ($newatc && $total > 50) {
$total = 50;
$db->update("UPDATE pw_schcache SET total='50' WHERE sid=".pwEscape($sid));
}
if ($total > $db_perpage) {
if (!$sid) {
$ptable && $addpage .= "&ptable=$ptable";
$digest && $addpage .= "&digest=$digest";
} else {
$addpage .= "&sid=$sid";
}
$authorid && $addpage .= "&authorid=$authorid";
$seekfid && $addpage .= "&seekfid=$seekfid";
$sch_area && $addpage .= "&sch_area=$sch_area";
$numofpage = ceil($total/$db_perpage);
$pages = numofpage($total,$page,$numofpage,"search.php?step=2$addpagesubmit");
}
*/
} else {
//Showmsg('search_none');
echo('[no]');
}
// normalsearch.php 结束
}
//require_once PrintEot('search');footer();
?>