table_common_usergroup.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  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_usergroup.php 31679 2012-09-21 02:09:05Z monkey $
  7. */
  8. if(!defined('IN_DISCUZ')) {
  9. exit('Access Denied');
  10. }
  11. class table_common_usergroup extends discuz_table
  12. {
  13. public function __construct() {
  14. $this->_table = 'common_usergroup';
  15. $this->_pk = 'groupid';
  16. parent::__construct();
  17. }
  18. public function fetch_by_credits($credits, $type = 'member') {
  19. if(is_array($credits)) {
  20. $creditsf = intval($credits[0]);
  21. $creditse = intval($credits[1]);
  22. } else {
  23. $creditsf = $creditse = intval($credits);
  24. }
  25. return DB::fetch_first('SELECT grouptitle, groupid FROM %t WHERE '.($type ? DB::field('type', $type).' AND ' : '').'%d>=creditshigher AND %d<creditslower LIMIT 1', array($this->_table, $creditsf, $creditse));
  26. }
  27. public function fetch_all_by_type($type = '', $radminid = null, $allfields = false) {
  28. $parameter = array($this->_table);
  29. $wherearr = array();
  30. if(!empty($type)) {
  31. $parameter[] = $type;
  32. $wherearr[] = is_array($type) ? 'type IN(%n)' : 'type=%s';
  33. }
  34. if($radminid !== null) {
  35. $parameter[] = $radminid;
  36. $wherearr[] = 'radminid=%d';
  37. }
  38. $wheresql = !empty($wherearr) ? ' WHERE '.implode(' AND ', $wherearr) : '';
  39. return DB::fetch_all('SELECT '.($allfields ? '*' : 'groupid, grouptitle').' FROM %t '.$wheresql, $parameter, $this->_pk);
  40. }
  41. public function update($id, $data, $type = '') {
  42. if(!is_array($data) || !$data || !is_array($data) || !$id) {
  43. return null;
  44. }
  45. $condition = DB::field('groupid', $id);
  46. if($type) {
  47. $condition .= ' AND '.DB::field('type', $type);
  48. }
  49. return DB::update($this->_table, $data, $condition);
  50. }
  51. public function delete($id, $type = '') {
  52. if(!$id) {
  53. return null;
  54. }
  55. $condition = DB::field('groupid', $id);
  56. if($type) {
  57. $condition .= ' AND '.DB::field('type', $type);
  58. }
  59. return DB::delete($this->_table, $condition);
  60. }
  61. public function fetch_all_by_groupid($gid) {
  62. if(!$gid) {
  63. return null;
  64. }
  65. return DB::fetch_all('SELECT groupid FROM %t WHERE groupid IN (%n) AND type=\'special\' AND radminid>0', array($this->_table, $gid), $this->_pk);
  66. }
  67. public function fetch_all_by_not_groupid($gid) {
  68. return DB::fetch_all('SELECT groupid, type, grouptitle, creditshigher, radminid FROM %t WHERE type=\'member\' AND creditshigher=\'0\' OR (groupid NOT IN (%n) AND radminid<>\'1\' AND type<>\'member\') ORDER BY (creditshigher<>\'0\' || creditslower<>\'0\'), creditslower, groupid', array($this->_table, $gid), $this->_pk);
  69. }
  70. public function fetch_all_not($gid, $creditnotzero = false) {
  71. return DB::fetch_all('SELECT groupid, radminid, type, grouptitle, creditshigher, creditslower FROM %t WHERE groupid NOT IN (%n) ORDER BY '.($creditnotzero ? "(creditshigher<>'0' || creditslower<>'0'), " : '').'creditshigher, groupid', array($this->_table, $gid), $this->_pk);
  72. }
  73. public function fetch_new_groupid($fetch = false) {
  74. $sql = 'SELECT groupid, grouptitle FROM '.DB::table($this->_table)." WHERE type='member' AND creditslower>'0' ORDER BY creditslower LIMIT 1";
  75. if($fetch) {
  76. return DB::fetch_first($sql);
  77. } else {
  78. return DB::result_first($sql);
  79. }
  80. }
  81. public function fetch_all($ids) {
  82. if(!$ids) {
  83. return null;
  84. }
  85. return DB::fetch_all('SELECT * FROM %t WHERE '.DB::field('groupid', $ids).' ORDER BY type, radminid, creditshigher', array($this->_table), $this->_pk);
  86. }
  87. public function fetch_all_switchable($ids) {
  88. if(!$ids) {
  89. return null;
  90. }
  91. return DB::fetch_all('SELECT * FROM %t WHERE (type=\'special\' AND system<>\'private\' AND radminid=\'0\') OR groupid IN (%n) ORDER BY type, system', array($this->_table, $ids), $this->_pk);
  92. }
  93. public function range_orderby_credit() {
  94. return DB::fetch_all('SELECT * FROM %t ORDER BY (creditshigher<>\'0\' || creditslower<>\'0\'), creditslower, groupid', array($this->_table), $this->_pk);
  95. }
  96. public function range_orderby_creditshigher() {
  97. return DB::fetch_all('SELECT * FROM %t ORDER BY creditshigher', array($this->_table), $this->_pk);
  98. }
  99. public function fetch_all_by_radminid($radminid, $glue = '>', $orderby = 'type'){
  100. $ordersql = '';
  101. if($ordersql = DB::order($orderby, 'DESC')) {
  102. $ordersql = ' ORDER BY '.$ordersql;
  103. }
  104. return DB::fetch_all('SELECT * FROM %t WHERE %i', array($this->_table, DB::field('radminid', intval($radminid), $glue) . $ordersql), 'groupid');
  105. }
  106. public function fetch_table_struct($result = 'FIELD') {
  107. $datas = array();
  108. $query = DB::query('DESCRIBE %t', array($this->_table));
  109. while($data = DB::fetch($query)) {
  110. $datas[$data['Field']] = $result == 'FIELD' ? $data['Field'] : $data;
  111. }
  112. return $datas;
  113. }
  114. public function buyusergroup_exists() {
  115. return DB::result_first("SELECT COUNT(*) FROM %t WHERE type='special' and system>0", array($this->_table));
  116. }
  117. }
  118. ?>