table_common_invite.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <?php
  2. /**
  3. * [Discuz!] (C)2001-2099 Comsenz Inc.
  4. * This is NOT a freeware, use is subject to license terms
  5. *
  6. * $Id: table_common_invite.php 31197 2012-07-25 06:05:16Z chenmengshu $
  7. */
  8. if(!defined('IN_DISCUZ')) {
  9. exit('Access Denied');
  10. }
  11. class table_common_invite extends discuz_table
  12. {
  13. private $_uids = array();
  14. public function __construct() {
  15. $this->_table = 'common_invite';
  16. $this->_pk = 'id';
  17. parent::__construct();
  18. }
  19. public function fetch_by_id_uid($id, $uid) {
  20. return DB::fetch_first('SELECT * FROM %t WHERE id=%d AND uid=%d', array($this->_table, $id, $uid));
  21. }
  22. public function fetch_by_code($code) {
  23. return DB::fetch_first('SELECT * FROM %t WHERE code=%s', array($this->_table, $code));
  24. }
  25. public function fetch_all_by_uid($uid) {
  26. return DB::fetch_all('SELECT * FROM %t WHERE uid=%d ORDER BY dateline DESC', array($this->_table, $uid), $this->_pk);
  27. }
  28. public function fetch_all_invitenum_group_by_uid($dateline = 0, $start = 0, $limit = 0) {
  29. $sql = '';
  30. $parameter = array($this->_table);
  31. if($dateline) {
  32. $sql = ' AND dateline>%d';
  33. $parameter[] = $dateline;
  34. }
  35. return DB::fetch_all("SELECT count(*) AS invitenum ,uid FROM %t WHERE status=2 $sql GROUP BY uid ORDER BY invitenum DESC ".DB::limit($start, $limit), $parameter);
  36. }
  37. public function fetch_all_orderid($orderid) {
  38. return DB::fetch_all('SELECT * FROM %t WHERE orderid=%s', array($this->_table, $orderid));
  39. }
  40. public function fetch_all_by_search($uid = 0, $fuid = 0, $fusername = '', $buydatestart = 0, $buydateend = 0, $inviteip = '', $code = '', $start = 0, $limit = 0) {
  41. $condition = $this->make_query_condition($uid, $fuid, $fusername, $buydatestart, $buydateend, $inviteip, $code);
  42. $data = array();
  43. $query = DB::query("SELECT * FROM %t $condition[0] ORDER BY id DESC ".DB::limit($start, $limit), $condition[1]);
  44. while($value = DB::fetch($query)) {
  45. $this->_uids[$value['uid']] = $value['uid'];
  46. $data[] = $value;
  47. }
  48. return $data;
  49. }
  50. public function count_by_uid_fuid($uid, $fuid) {
  51. return DB::result_first('SELECT COUNT(*) FROM %t WHERE uid=%d AND fuid=%d', array($this->_table, $uid, $fuid));
  52. }
  53. public function count_by_uid_dateline($uid, $dateline) {
  54. return DB::result_first('SELECT COUNT(*) FROM %t WHERE uid=%d AND dateline>%d', array($this->_table, $uid, $dateline));
  55. }
  56. public function count_by_search($uid = 0, $fuid = 0, $fusername = '', $buydatestart = 0, $buydateend = 0, $inviteip = '', $code = '') {
  57. $condition = $this->make_query_condition($uid, $fuid, $fusername, $buydatestart, $buydateend, $inviteip, $code);
  58. return DB::result_first('SELECT COUNT(*) FROM %t '.$condition[0], $condition[1]);
  59. }
  60. public function delete_by_uid_or_fuid($uids) {
  61. $uids = dintval($uids, true);
  62. if(!$uids) {
  63. return null;
  64. }
  65. DB::delete($this->_table, DB::field('uid', $uids).' OR '.DB::field('fuid', $uids));
  66. }
  67. public function get_uids() {
  68. return $this->_uids;
  69. }
  70. private function make_query_condition($uid = 0, $fuid = 0, $fusername = '', $buydatestart = 0, $buydateend = 0, $inviteip = '', $code = '') {
  71. $parameter = array($this->_table);
  72. $wherearr = array();
  73. if(!empty($uid)) {
  74. $parameter[] = $uid;
  75. $wherearr[] = 'uid=%d';
  76. }
  77. if(!empty($fuid)) {
  78. $parameter[] = $fuid;
  79. $wherearr[] = 'fuid=%d';
  80. }
  81. if(!empty($fusername)) {
  82. $parameter[] = $fusername;
  83. $wherearr[] = "fusername=%s";
  84. }
  85. if(!empty($code)) {
  86. $parameter[] = $code;
  87. $wherearr[] = 'code=%s';
  88. }
  89. if($buydatestart) {
  90. $parameter[] = $buydatestart;
  91. $wherearr[] = "dateline>%d";
  92. }
  93. if($buydateend) {
  94. $parameter[] = $buydateend;
  95. $wherearr[] = 'dateline<%d';
  96. }
  97. if(!empty($inviteip)) {
  98. $parameter[] = '%'.$inviteip.'%';
  99. $wherearr[] = "inviteip LIKE %s";
  100. }
  101. $wheresql = !empty($wherearr) && is_array($wherearr) ? ' WHERE '.implode(' AND ', $wherearr) : '';
  102. return array($wheresql, $parameter);
  103. }
  104. }
  105. ?>