123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- <?php
- /**
- * [Discuz!] (C)2001-2099 Comsenz Inc.
- * This is NOT a freeware, use is subject to license terms
- *
- * $Id: table_common_member_status.php 28405 2012-02-29 03:47:50Z zhangguosheng $
- */
- if(!defined('IN_DISCUZ')) {
- exit('Access Denied');
- }
- class table_common_member_status extends discuz_table_archive
- {
- public function __construct() {
- $this->_table = 'common_member_status';
- $this->_pk = 'uid';
- $this->_pre_cache_key = 'common_member_status_';
- parent::__construct();
- }
- public function increase($uids, $setarr) {
- $uids = array_map('intval', (array)$uids);
- $sql = array();
- $allowkey = array('buyercredit', 'sellercredit', 'favtimes', 'sharetimes');
- foreach($setarr as $key => $value) {
- if(($value = intval($value)) && in_array($key, $allowkey)) {
- $sql[] = "`$key`=`$key`+'$value'";
- }
- }
- if(!empty($sql)){
- DB::query("UPDATE ".DB::table($this->_table)." SET ".implode(',', $sql)." WHERE uid IN (".dimplode($uids).")", 'UNBUFFERED');
- $this->increase_cache($uids, $setarr);
- }
- }
- public function count_by_ip($ips) {
- return !empty($ips) ? DB::result_first('SELECT COUNT(*) FROM %t WHERE regip IN(%n) OR lastip IN (%n)', array($this->_table, $ips, $ips)) : 0;
- }
- public function fetch_all_by_ip($ips, $start, $limit) {
- $data = array();
- if(!empty($ips) && $limit) {
- $data = DB::fetch_all('SELECT * FROM %t WHERE regip IN(%n) OR lastip IN (%n) LIMIT %d, %d', array($this->_table, $ips, $ips, $start, $limit), 'uid');
- }
- return $data;
- }
- public function fetch_all_orderby_lastpost($uids, $start, $limit) {
- $uids = dintval($uids, true);
- if($uids) {
- return DB::fetch_all('SELECT * FROM %t WHERE uid IN(%n) ORDER BY lastpost DESC '.DB::limit($start, $limit), array($this->_table, $uids), $this->_pk);
- }
- return array();
- }
- public function count_by_lastactivity_invisible($timestamp, $invisible = 0) {
- $addsql = '';
- if($invisible === 1) {
- $addsql = ' AND invisible = 1';
- } elseif($invisible === 2) {
- $addsql = ' AND invisible = 0';
- }
- return $timestamp ? DB::result_first('SELECT COUNT(*) FROM %t WHERE lastactivity >= %d'.$addsql, array($this->_table, $timestamp)) : 0;
- }
- public function fetch_all_by_lastactivity_invisible($timestamp, $invisible = 0, $start = 0, $limit = 0) {
- $data = array();
- if($timestamp) {
- $addsql = '';
- if($invisible === 1) {
- $addsql = ' AND invisible = 1';
- } elseif($invisible === 2) {
- $addsql = ' AND invisible = 0';
- }
- $data = DB::fetch_all('SELECT * FROM %t WHERE lastactivity >= %d'.$addsql.' ORDER BY lastactivity DESC'.DB::limit($start, $limit), array($this->_table, $timestamp), $this->_pk);
- }
- return $data;
- }
- public function fetch_all_onlines($uids, $lastactivity, $start = 0, $limit = 0) {
- $data = array();
- $uids = dintval($uids, true);
- if(!empty($uids)) {
- $ppp = ($ppp = getglobal('ppp')) ? $ppp + 30 : 100;
- if(count($uids) > $ppp) {
- $uids = array_slice($uids, 0, $ppp);
- }
- $length = $limit ? $limit : $start;
- $i = 0;
- foreach($this->fetch_all($uids) as $uid => $member) {
- if($member['lastactivity'] >= $lastactivity) {
- $data[$uid] = $member;
- if($length && $i >= $length) {
- break;
- }
- $i++;
- }
- }
- }
- return $data;
- }
- }
- ?>
|