table_home_friend.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  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_home_friend.php 36284 2016-12-12 00:47:50Z nemohou $
  7. */
  8. if(!defined('IN_DISCUZ')) {
  9. exit('Access Denied');
  10. }
  11. class table_home_friend extends discuz_table
  12. {
  13. public function __construct() {
  14. $this->_table = 'home_friend';
  15. $this->_pk = 'uid';
  16. parent::__construct();
  17. }
  18. public function fetch_all_by_uid_username($uid, $username, $start = 0, $limit = 0) {
  19. return DB::fetch_all('SELECT * FROM %t WHERE uid=%d AND fusername IN (%n) %i', array($this->_table, $uid, $username, DB::limit($start, $limit)));
  20. }
  21. public function fetch_all_by_uid_fuid($uid, $fuid) {
  22. if(!$uid || !$fuid) {
  23. return null;
  24. }
  25. return DB::fetch_all('SELECT * FROM %t WHERE uid=%d AND fuid IN (%n)', array($this->_table, $uid, $fuid));
  26. }
  27. public function fetch_all_by_uid_gid($uid, $gid, $start = 0, $limit = 100, $order = true) {
  28. $parameter = array($this->_table, $uid, $gid);
  29. if($order) {
  30. $limitsql = ' ORDER BY num DESC, dateline DESC';
  31. }
  32. if($limit) {
  33. $parameter[] = DB::limit($start, $limit);
  34. $limitsql .= ' %i';
  35. }
  36. return DB::fetch_all('SELECT * FROM %t WHERE uid=%d AND gid=%d'.$limitsql, $parameter);
  37. }
  38. public function fetch_all_by_uid_common($uid, $fuid) {
  39. return DB::fetch_all('SELECT * FROM %t WHERE uid=%d OR uid=%d', array($this->_table, $uid, $fuid));
  40. }
  41. public function fetch_all_by_uid($uid, $start = 0, $limit = 0, $order = false) {
  42. return $this->fetch_all_search($uid, '', '', false, $start, $limit, $order);
  43. }
  44. public function fetch_all_search($uid, $gid, $searchkey, $count = false, $start = 0, $limit = 0, $order = false) {
  45. $parameter = array($this->_table);
  46. $wherearr = array();
  47. $parameter[] = $uid;
  48. $wherearr[] = is_array($uid) ? 'uid IN(%n)' : 'uid=%d';
  49. if(is_numeric($gid) && $gid > -1) {
  50. $parameter[] = $gid;
  51. $wherearr[] = 'gid=%d';
  52. }
  53. if($searchkey) {
  54. $field = "fusername LIKE '{text}%'";
  55. $keyword = $searchkey;
  56. if(preg_match("(AND|\+|&|\s)", $keyword) && !preg_match("(OR|\|)", $keyword)) {
  57. $andor = ' AND ';
  58. $keywordsrch = '1';
  59. $keyword = preg_replace("/( AND |&| )/is", "+", $keyword);
  60. } else {
  61. $andor = ' OR ';
  62. $keywordsrch = '0';
  63. $keyword = preg_replace("/( OR |\|)/is", "+", $keyword);
  64. }
  65. $keyword = str_replace('*', '%', addcslashes(daddslashes($keyword), '%_'));
  66. foreach(explode('+', $keyword) as $text) {
  67. $text = trim($text);
  68. if($text) {
  69. $keywordsrch .= $andor;
  70. $keywordsrch .= str_replace('{text}', $text, $field);
  71. }
  72. }
  73. $parameter[] = " ($keywordsrch)";
  74. $wherearr[] = '%i';
  75. }
  76. if(!$count) {
  77. if($order) {
  78. $limitsql = ' ORDER BY num DESC, dateline DESC';
  79. }
  80. if($limit) {
  81. $parameter[] = DB::limit($start, $limit);
  82. $limitsql .= ' %i';
  83. }
  84. }
  85. $wheresql = !empty($wherearr) && is_array($wherearr) ? ' WHERE '.implode(' AND ', $wherearr) : '';
  86. if($count) {
  87. return DB::result_first('SELECT COUNT(*) FROM %t '.$wheresql, $parameter);
  88. } else {
  89. return DB::fetch_all('SELECT * FROM %t '.$wheresql.$limitsql, $parameter);
  90. }
  91. }
  92. public function count_by_uid($uid) {
  93. return DB::result_first('SELECT COUNT(*) FROM %t WHERE uid=%d', array($this->_table, $uid));
  94. }
  95. public function delete_by_uid_fuid($uids) {
  96. if(!$uids) {
  97. return null;
  98. }
  99. return DB::delete($this->_table, DB::field('uid', $uids).' OR '.DB::field('fuid', $uids));
  100. }
  101. public function delete_by_uid_fuid_dual($uids, $touid) {
  102. if(!$uids || !$touid) {
  103. return null;
  104. }
  105. return DB::delete($this->_table, '('.DB::field('uid', $uids).' AND '.DB::field('fuid', $touid).') OR ('.DB::field('fuid', $uids).' AND '.DB::field('uid', $touid).')');
  106. }
  107. public function update_num_by_uid_fuid($incnum, $uid, $fuid) {
  108. return DB::query('UPDATE %t SET num=num+\'%d\' WHERE uid=%d AND fuid=%d', array($this->_table, $incnum, $uid, $fuid));
  109. }
  110. public function update_by_uid_fuid($uid, $fuid, $data) {
  111. if(!$uid || !$fuid || empty($data) || !is_array($data)) {
  112. return null;
  113. }
  114. return DB::update($this->_table, $data, DB::field('uid', $uid).' AND '.DB::field('fuid', $fuid));
  115. }
  116. }
  117. ?>