table_home_notification.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  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_notification.php 36284 2016-12-12 00:47:50Z nemohou $
  7. */
  8. if(!defined('IN_DISCUZ')) {
  9. exit('Access Denied');
  10. }
  11. class table_home_notification extends discuz_table
  12. {
  13. public function __construct() {
  14. $this->_table = 'home_notification';
  15. $this->_pk = 'id';
  16. parent::__construct();
  17. }
  18. public function delete_clear($new, $days) {
  19. $days = TIMESTAMP - intval($days) * 86400;
  20. DB::query("DELETE FROM %t WHERE new=%d AND dateline<%d", array($this->_table, $new, $days));
  21. }
  22. public function delete_by_type($type, $uid = 0) {
  23. if(!$type) {
  24. return;
  25. }
  26. $uid = $uid ? ' AND '.DB::field('uid', $uid) : '';
  27. return DB::query("DELETE FROM %t WHERE type=%s %i", array($this->_table, $type, $uid));
  28. }
  29. public function optimize() {
  30. DB::query("OPTIMIZE TABLE %t", array($this->_table), true);
  31. }
  32. public function fetch_by_fromid_uid($id, $idtype, $uid) {
  33. return DB::fetch_first("SELECT * FROM %t WHERE from_id=%d AND from_idtype=%s AND uid=%d", array($this->_table, $id, $idtype, $uid));
  34. }
  35. public function delete_by_id_uid($id, $uid) {
  36. DB::query("DELETE FROM %t WHERE id=%d AND uid=%d", array($this->_table, $id, $uid));
  37. }
  38. public function delete_by_uid($uid) {
  39. DB::query("DELETE FROM %t WHERE uid IN (%n) OR authorid IN (%n)", array($this->_table, $uid, $uid));
  40. }
  41. public function delete_by_uid_type_authorid($uid, $type, $authorid) {
  42. return DB::query('DELETE FROM %t WHERE uid=%d AND type=%s AND authorid=%d', array($this->_table, $uid, $type, $authorid));
  43. }
  44. public function fetch_all_by_authorid_fromid($authorid, $fromid, $type) {
  45. return DB::fetch_all("SELECT * FROM %t WHERE authorid=%d AND from_id=%d AND type=%s", array($this->_table, $authorid, $fromid, $type));
  46. }
  47. public function ignore($uid, $type = '', $category = '', $new = true, $from_num = true) {
  48. $uid = intval($uid);
  49. $update = array();
  50. if($new) {
  51. $update['new'] = 0;
  52. }
  53. if($from_num) {
  54. $update['from_num'] = 0;
  55. }
  56. $where = array('uid' => $uid, 'new' => 1);
  57. if($type) {
  58. $where['type'] = $type;
  59. }
  60. if($category !== '') {
  61. switch ($category) {
  62. case 'mypost' : $category = 1; break;
  63. case 'interactive' : $category = 2; break;
  64. case 'system' : $category = 3; break;
  65. case 'manage' : $category = 4; break;
  66. default : $category = 0;
  67. }
  68. $where['category'] = $category;
  69. }
  70. if($update) {
  71. DB::update($this->_table, $update, $where);
  72. }
  73. }
  74. public function count_by_uid($uid, $new, $type = '', $category = '') {
  75. $new = intval($new);
  76. $type = $type ? ' AND '.DB::field('type', $type) : '';
  77. if($category !== '') {
  78. switch ($category) {
  79. case 'mypost' : $category = 1; break;
  80. case 'interactive' : $category = 2; break;
  81. case 'system' : $category = 3; break;
  82. case 'manage' : $category = 4; break;
  83. default : $category = 0;
  84. }
  85. $category = ' AND '.DB::field('category', $category);
  86. }
  87. $new = $new != '-1' ? ' AND '.DB::field('new', $new) : '';
  88. return DB::result_first("SELECT COUNT(*) FROM %t WHERE uid=%d %i %i %i", array($this->_table, $uid, $new, $category, $type));
  89. }
  90. public function fetch_all_by_uid($uid, $new, $type = 0, $start = 0, $perpage = 0, $category = '') {
  91. $new = intval($new);
  92. $type = $type ? ' AND '.DB::field('type', $type) : '';
  93. if($category !== '') {
  94. switch ($category) {
  95. case 'mypost' : $category = 1; break;
  96. case 'interactive' : $category = 2; break;
  97. case 'system' : $category = 3; break;
  98. case 'manage' : $category = 4; break;
  99. case 'follow' : $category = 5; break;
  100. case 'follower' : $category = 6; break;
  101. default : $category = 0;
  102. }
  103. $category = ' AND '.DB::field('category', $category);
  104. }
  105. $new = $new != '-1' ? ' AND '.DB::field('new', $new) : '';
  106. return DB::fetch_all("SELECT * FROM %t WHERE uid=%d %i %i %i ORDER BY dateline DESC %i", array($this->_table, $uid, $new, $category, $type, DB::limit($start, $perpage)));
  107. }
  108. }
  109. ?>