PageRenderTime 47ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/source/include/modcp/modcp_forumaccess.php

https://github.com/kuaileshike/upload
PHP | 168 lines | 134 code | 28 blank | 6 comment | 54 complexity | b51e393bb8ed0bc0a0ddff3530647cc2 MD5 | raw file
  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: modcp_forumaccess.php 26544 2011-12-15 02:19:09Z chenmengshu $
  7. */
  8. if(!defined('IN_DISCUZ') || !defined('IN_MODCP')) {
  9. exit('Access Denied');
  10. }
  11. $list = $logids = array();
  12. include_once(libfile('function/forumlist'));
  13. $forumlistall = forumselect(false, false, $_G['fid']);
  14. $adderror = $successed = 0;
  15. $new_user = isset($_GET['new_user']) ? trim($_GET['new_user']) : '';
  16. if($_G['fid'] && $_G['forum']['ismoderator'] && $new_user != '' && submitcheck('addsubmit')) {
  17. $deleteaccess = isset($_GET['deleteaccess']) ? 1 : 0;
  18. foreach (array('view', 'post', 'reply', 'getattach', 'getimage', 'postattach', 'postimage') as $key) {
  19. ${'new_'.$key} = isset($_GET['new_'.$key]) ? intval($_GET['new_'.$key]) : '';
  20. }
  21. if($new_user != '') {
  22. $user = C::t('common_member')->fetch_by_username($new_user);
  23. $uid = $user['uid'];
  24. if(empty($user)) {
  25. $adderror = 1;
  26. } elseif($user['adminid'] && $_G['adminid'] != 1) {
  27. $adderror = 2;
  28. } else {
  29. $access = C::t('forum_access')->fetch_all_by_fid_uid($_G['fid'], $uid);
  30. $access = $access[0];
  31. if($deleteaccess) {
  32. if($access && $_G['adminid'] != 1 && inwhitelist($access)) {
  33. $adderror = 3;
  34. } else {
  35. $successed = true;
  36. $access && delete_access($uid, $_G['fid']);
  37. }
  38. } elseif($new_view || $new_post || $new_reply || $new_getattach || $new_getimage || $new_postattach || $new_postimage) {
  39. if($new_view == -1) {
  40. $new_view = $new_post = $new_reply = $new_getattach = $new_getimage = $new_postattach = $new_postimage = -1;
  41. } else {
  42. $new_view = 0;
  43. $new_post = $new_post ? -1 : 0;
  44. $new_reply = $new_reply ? -1 : 0;
  45. $new_getattach = $new_getattach ? -1 : 0;
  46. $new_getimage = $new_getimage ? -1 : 0;
  47. $new_postattach = $new_postattach ? -1 : 0;
  48. $new_postimage = $new_postimage ? -1 : 0;
  49. }
  50. if(empty($access)) {
  51. $successed = true;
  52. $data = array('uid' => $uid, 'fid' => $_G['fid'], 'allowview' => $new_view, 'allowpost' => $new_post, 'allowreply' => $new_reply,
  53. 'allowgetattach' => $new_getattach, 'allowgetimage' => $new_getimage,
  54. 'allowpostattach' => $new_postattach, 'allowpostimage' => $new_postimage,
  55. 'adminuser' => $_G['uid'], 'dateline' => $_G['timestamp']);
  56. C::t('forum_access')->insert($data);
  57. C::t('common_member')->update($uid, array('accessmasks' => 1), 'UNBUFFERED');
  58. } elseif($new_view == -1 && $access['allowview'] == 1 && $_G['adminid'] != 1) {
  59. $adderror = 3;
  60. } else {
  61. if($_G['adminid'] > 1) {
  62. $new_view = $access['allowview'] == 1 ? 1 : $new_view;
  63. $new_post = $access['allowpost'] == 1 ? 1 : $new_post;
  64. $new_reply = $access['allowreply'] == 1 ? 1 : $new_reply;
  65. $new_getattach = $access['allowgetattach'] == 1 ? 1 : $new_getattach;
  66. $new_getimage = $access['allowgetimage'] == 1 ? 1 : $new_getimage;
  67. $new_postattach = $access['postattach'] == 1 ? 1 : $new_postattach;
  68. $new_postimage = $access['postimage'] == 1 ? 1 : $new_postimage;
  69. }
  70. $successed = true;
  71. $data = array('allowview' => $new_view, 'allowpost' => $new_post, 'allowreply' => $new_reply,
  72. 'allowgetattach' => $new_getattach, 'allowgetimage' => $new_getimage,
  73. 'allowpostattach' => $new_postattach, 'allowpostimage' => $new_postimage,
  74. 'adminuser' => $_G['uid'], 'dateline' => $_G['timestamp']);
  75. C::t('forum_access')->update_for_uid($uid, $_G['fid'], $data);
  76. C::t('common_member')->update($uid, array('accessmasks' => 1), 'UNBUFFERED');
  77. }
  78. }
  79. }
  80. }
  81. $new_user = $adderror ? $new_user : '';
  82. }
  83. $new_user = dhtmlspecialchars($new_user);
  84. $suser = isset($_GET['suser']) ? trim($_GET['suser']) : '';
  85. if(submitcheck('searchsubmit')) {
  86. if($suser != '') {
  87. $suid = C::t('common_member')->fetch_uid_by_username($suser);
  88. }
  89. }
  90. $suser = dhtmlspecialchars($suser);
  91. $page = max(1, intval($_G['page']));
  92. $ppp = 10;
  93. $list = array('pagelink' => '', 'data' => array());
  94. if($num = C::t('forum_access')->fetch_all_by_fid_uid($_G['fid'], $suid, 1)) {
  95. $page = $page > ceil($num / $ppp) ? ceil($num / $ppp) : $page;
  96. $start_limit = ($page - 1) * $ppp;
  97. $list['pagelink'] = multi($num, $ppp, $page, "forum.php?mod=modcp&fid=$_G[fid]&action=$_GET[action]");
  98. $query = C::t('forum_access')->fetch_all_by_fid_uid($_G['fid'], $suid, 0, $start_limit, $ppp);
  99. $uidarray = array();
  100. foreach($query as $access) {
  101. $uidarray[$access['uid']] = $access['uid'];
  102. $uidarray[$access['adminuser']] = $access['adminuser'];
  103. $access['allowview'] = accessimg($access['allowview']);
  104. $access['allowpost'] = accessimg($access['allowpost']);
  105. $access['allowreply'] = accessimg($access['allowreply']);
  106. $access['allowpostattach'] = accessimg($access['allowpostattach']);
  107. $access['allowgetattach'] = accessimg($access['allowgetattach']);
  108. $access['allowgetimage'] = accessimg($access['allowgetimage']);
  109. $access['allowpostimage'] = accessimg($access['allowpostimage']);
  110. $access['dateline'] = dgmdate($access['dateline'], 'd');
  111. $access['forum'] = '<a href="forum.php?mod=forumdisplay&fid='.$access['fid'].'" target="_blank">'.strip_tags($_G['cache']['forums'][$access['fid']]['name']).'</a>';
  112. $list['data'][] = $access;
  113. }
  114. $users = array();
  115. if($uids = dimplode($uidarray)) {
  116. $users = C::t('common_member')->fetch_all_username_by_uid($uids);
  117. }
  118. }
  119. function delete_access($uid, $fid) {
  120. C::t('forum_access')->delete_by_fid($fid, $uid);
  121. $mask = C::t('forum_access')->count_by_uid($uid);
  122. if(!$mask) {
  123. C::t('common_member')->update($uid, array('accessmasks' => ''), 'UNBUFFERED');
  124. }
  125. }
  126. function accessimg($access) {
  127. return $access == -1 ? '<img src="'.STATICURL.'image/common/access_disallow.gif" />' :
  128. ($access == 1 ? '<img src="'.STATICURL.'image/common/access_allow.gif" />' : '<img src="'.STATICURL.'image/common/access_normal.gif" />');
  129. }
  130. function inwhitelist($access) {
  131. $return = false;
  132. foreach (array('allowview', 'allowpost', 'allowreply', 'allowpostattach', 'allowgetattach', 'allowgetimage') as $key) {
  133. if($access[$key] == 1) {
  134. $return = true;
  135. break;
  136. }
  137. }
  138. return $return;
  139. }
  140. ?>