www.gusucode.com > ShopEx481 & PHPWind 整合版码程序 > bbs/require/sort.php
<?php !function_exists('readover') && exit('Forbidden'); /** * 会员排行 * * @param array $winddb 会员信息 */ function sort_member($winddb=array(),$num=null){//$db_ifsort&1 global $tdtime,$montime,$db,$db_sortnum; $num = $num ? intval($num) : ($db_sortnum ? $db_sortnum : 20); $flag = false; $__MEMBERDB = $__THRESHOLD = array(); $__CREDITDB = array('postnum','todaypost','monthpost','onlinetime','rvrc','money','credit','currency'); $winddb['lastpost']<$tdtime && $winddb['todaypost'] = 0; $winddb['lastpost']<$montime && $winddb['monthpost'] = 0; @include(D_P.'data/bbscache/sort_member.php'); $cachetime = @filemtime(D_P.'data/bbscache/sort_member.php'); if ($cachetime && $cachetime < $tdtime) { $__THRESHOLD['todaypost'] = 0; $__MEMBERDB['todaypost'] = array(); if ($cachetime < $montime) { $__THRESHOLD['monthpost'] = 0; $__MEMBERDB['monthpost'] = array(); } $flag = true; } foreach ($__CREDITDB as $k) { if($winddb[$k] && (($__MEMBERDB[$k][$winddb['uid']] && $__MEMBERDB[$k][$winddb['uid']] != $winddb[$k]) || (!$__MEMBERDB[$k][$winddb['uid']] && $winddb[$k] > $__THRESHOLD[$k]))){ $__THRESHOLD[$k] = sort_array($winddb['uid'],$winddb[$k],$__MEMBERDB[$k],$num); $flag || $flag = true; } } $query = $db->query("SELECT cid,value FROM pw_membercredit WHERE uid='$winddb[uid]'"); while ($rt = $db->fetch_array($query)) { if(($__MEMBERDB[$rt['cid']][$winddb['uid']] && $__MEMBERDB[$rt['cid']][$winddb['uid']] != $rt['value']) || (!$__MEMBERDB[$rt['cid']][$winddb['uid']] && $rt['value'] > $__THRESHOLD[$rt['cid']])){ $__THRESHOLD[$rt['cid']] = sort_array($winddb['uid'],$rt['value'],$__MEMBERDB[$rt['cid']],$num); $flag || $flag = true; } } $flag && writeover(D_P.'data/bbscache/sort_member.php',"<?php\r\n\$__THRESHOLD = ".pw_var_export($__THRESHOLD).";\r\n\$__MEMBERDB = ".pw_var_export($__MEMBERDB).";\r\n?>"); } /** * 帖子排行 * * @param array $postdb 帖子信息 */ function sort_post($postdb=array(),$num=null){//$db_ifsort&2 global $db_sortnum; $num = $num ? intval($num) : ($db_sortnum ? $db_sortnum : 20); $flag = false; $__ARTICLEDB = $__THRESHOLD = array(); @include(D_P.'data/bbscache/sort_article.php'); foreach($postdb as $key=>$post){ if($post['ifcheck']!=1 || $post['locked']>=2){ continue; } if($post['replies'] && $__ARTICLEDB['replies'][$post['tid']] != $post['replies'] && $post['replies'] > $__THRESHOLD['replies']){ $__THRESHOLD['replies'] = sort_array($post['tid'],$post['replies'],$__ARTICLEDB['replies'],$num); $flag || $flag = true; } if($post['hits'] && $__ARTICLEDB['hits'][$post['tid']] != $post['hits'] && $post['hits'] > $__THRESHOLD['hits']){ $__THRESHOLD['hits'] = sort_array($post['tid'],$post['hits'],$__ARTICLEDB['hits'],$num); $flag || $flag = true; } if($post['digest'] && $__ARTICLEDB['digest'][$post['tid']] != $post['lastpost'] && $post['lastpost'] > $__THRESHOLD['digest']){ $__THRESHOLD['digest'] = sort_array($post['tid'],$post['lastpost'],$__ARTICLEDB['digest'],$num); $flag || $flag = true; } } $flag && writeover(D_P.'data/bbscache/sort_article.php',"<?php\r\n\$__THRESHOLD = ".pw_var_export($__THRESHOLD).";\r\n\$__ARTICLEDB = ".pw_var_export($__ARTICLEDB).";\r\n?>"); } /** * 新帖子附件图片 * * @param integer $tid * @param string $subject * @param string $pic * @param integer $num */ function sort_newpic($tid,$subject,$pic,$num=null){//$db_ifsort&4 global $db_sortnum; $num = $num ? intval($num) : ($db_sortnum ? $db_sortnum : 20); @include(D_P.'data/bbscache/sort_newpic.php'); if(!$_NEWPIC){ $_NEWPIC[$tid]=array( 'id' => $tid, 'name' => $subject, 'value' => $pic ); }else{ if(count($_NEWPIC)>=$num){ array_pop($_NEWPIC); } $_NEWPIC = array_merge(array($tid=>array('value'=>$pic,'id'=>$tid,'name'=>$subject)),$_NEWPIC); } writeover(D_P.'data/bbscache/sort_newpic.php',"<?php\r\n\$_NEWPIC = ".pw_var_export($_NEWPIC).";\r\n?>"); } /** * 最新主题帖子 * * @param integer $tid * @param string $subject * @param integer $num */ function sort_newpost($tid,$subject,$num=null){//$db_ifsort&8 global $timestamp,$db_sortnum; $num = $num ? intval($num) : ($db_sortnum ? $db_sortnum : 20); @include(D_P.'data/bbscache/sort_newpost.php'); if(!$_NEWPOST){ $_NEWPOST[$tid]=array( 'id' => $tid, 'name' => $subject, 'value' => $timestamp ); }else{ if(count($_NEWPOST)>=$num){ array_pop($_NEWPOST); } $_NEWPOST = array_merge(array($tid=>array('id' => $tid,'name' => $subject,'value' => $timestamp)),$_NEWPOST); } writeover(D_P.'data/bbscache/sort_newpost.php',"<?php\r\n\$_NEWPOST = ".pw_var_export($_NEWPOST).";\r\n?>"); } /** * 最新回复帖子 * * @param integer $tid * @param string $subject * @param integer $num */ function sort_newreply($tid,$subject,$num=null){//$db_ifsort&16 global $timestamp,$db_sortnum; $num = $num ? intval($num) : ($db_sortnum ? $db_sortnum : 20); @include(D_P.'data/bbscache/sort_newreply.php'); if(!$_NEWREPLY){ $_NEWREPLY[$tid]=array( 'id' => $tid, 'name' => $subject, 'value' => $timestamp ); }else{ if($_NEWREPLY[$tid]){ unset($_NEWREPLY[$tid]); }elseif(count($_NEWREPLY)>=$num){ array_pop($_NEWREPLY); } $_NEWREPLY = array_merge(array($tid=>array('id' => $tid,'name' => $subject,'value' => $timestamp)),$_NEWREPLY); } writeover(D_P.'data/bbscache/sort_newreply.php',"<?php\r\n\$_NEWREPLY = ".pw_var_export($_NEWREPLY).";\r\n?>"); } function sort_delete($ids){ global $db_ifsort; if ($db_ifsort&2) { include (D_P.'data/bbscache/sort_article.php'); $update = false; foreach($__ARTICLEDB as $key=>$value){ foreach($value as $k=>$v){ if(strpos(",$ids,",",$k,")!==false){ unset($__ARTICLEDB[$key][$k]); $update || $update=true; } } $__THRESHOLD[$key] = end($__ARTICLEDB[$key]); } $update && writeover(D_P.'data/bbscache/sort_article.php',"<?php\r\n\$__THRESHOLD = ".pw_var_export($__THRESHOLD).";\r\n\$__ARTICLEDB = ".pw_var_export($__ARTICLEDB).";\r\n?>"); } if ($db_ifsort&4) { include (D_P.'data/bbscache/sort_newpic.php'); $update = false; foreach($_NEWPIC as $key=>$value){ if(strpos(",$ids,",",$key,")!==false){ unset($_NEWPIC[$key]); $update || $update=true; } } $update && writeover(D_P.'data/bbscache/sort_newpic.php',"<?php\r\n\$_NEWPIC = ".pw_var_export($_NEWPIC).";\r\n?>"); } if ($db_ifsort&8) { include (D_P.'data/bbscache/sort_newpost.php'); $update = false; foreach($_NEWPOST as $key=>$value){ if(strpos(",$ids,",",$key,")!==false){ unset($_NEWPOST[$key]); $update || $update=true; } } $update && writeover(D_P.'data/bbscache/sort_newpost.php',"<?php\r\n\$_NEWPOST = ".pw_var_export($_NEWPOST).";\r\n?>"); } if ($db_ifsort&16) { include (D_P.'data/bbscache/sort_newpost.php'); $update = false; foreach($_NEWPOST as $key=>$value){ if(strpos(",$ids,",",$key,")!==false){ unset($_NEWPOST[$key]); $update || $update=true; } } $update && writeover(D_P.'data/bbscache/sort_newpost.php',"<?php\r\n\$_NEWPOST = ".pw_var_export($_NEWPOST).";\r\n?>"); } } /** * 排行算法 * * @param mixed $key * @param mixed $val * @param array $array * @param integer $num * @param string $order * @return mixed */ function sort_array($key,$val,&$array,$num,$order=''){//$order='DESC' $array[$key] = $val; $order=='ASC' ? asort($array) : arsort($array); $count = count($array); if($count > $num){ array_pop($array); } if($count >= $num){ return end($array); }else{ return 0; } } ?>