group_manage.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. <?php
  2. requirePHPLib('form');
  3. requirePHPLib('judger');
  4. if ($myUser == null) {
  5. become403Page();
  6. }
  7. $cur_tab = isset($_GET['tab']) ? $_GET['tab'] : 'info';
  8. if (!isset($_GET['group']))
  9. become404Page();
  10. $groupname = $_GET['group'];
  11. $group = queryUser($_GET['group']);
  12. if (!hasGroupCtrlPermission($myUser, $group))
  13. become403Page();
  14. $tabs_info = array(
  15. 'info' => array(
  16. 'name' => '信息管理',
  17. 'url' => "/group-manage/$groupname/info"
  18. ),
  19. 'members' => array(
  20. 'name' => "成员管理",
  21. 'url' => "/group-manage/$groupname/members"
  22. ),
  23. 'problems' => array(
  24. 'name' => '题目管理',
  25. 'url' => "/group-manage/$groupname/problems"
  26. ),
  27. 'disk' => array(
  28. 'name' => '空间管理',
  29. 'url' => "/group-manage/$groupname/disk"
  30. )
  31. );
  32. $member_form = new UOJForm('member');
  33. $member_form->addInput('username', 'text', '用户名', '',
  34. function ($username) {
  35. global $groupname;
  36. if (!validateUsername($username)) {
  37. return '用户名不合法';
  38. }
  39. $user = queryUser($username);
  40. if (!$user) {
  41. return '用户不存在';
  42. }
  43. if (!in_array($groupname, queryUserExtgroups($user)))
  44. return '用户不属于该组';
  45. return '';
  46. },
  47. null
  48. );
  49. $options = array(
  50. 'banneduser' => '踢出用户',
  51. 'normaluser' => '设为普通用户',
  52. 'superuser' => '设为超级用户'
  53. );
  54. $member_form->addSelect('op-type', $options, '操作类型', '');
  55. $member_form->handle = function() {
  56. global $member_form;
  57. global $group;
  58. $username = $_POST['username'];
  59. switch ($_POST['op-type']) {
  60. case 'banneduser':
  61. deattachUserFromGroup(queryUser($username), $group);
  62. break;
  63. case 'normaluser':
  64. removeGroupPermission(queryUser($username), $group);
  65. break;
  66. case 'superuser':
  67. giveGroupPermission(queryUser($username), $group);
  68. break;
  69. }
  70. };
  71. $member_form->runAtServer();
  72. $user_form = new UOJForm('user');
  73. $user_form->addInput('usernamep', 'text', '用户名', '',
  74. function ($username) {
  75. global $groupname;
  76. if (!validateUsername($username)) {
  77. return '用户名不合法';
  78. }
  79. $user = queryUser($username);
  80. if (!$user) {
  81. return '用户不存在';
  82. }
  83. if (in_array($groupname, queryUserExtgroups($user)))
  84. return '用户已经属于该组';
  85. return '';
  86. },
  87. null
  88. );
  89. $user_form->handle = function() {
  90. global $member_form;
  91. global $group;
  92. $username = $_POST['usernamep'];
  93. attachUserToGroup(queryUser($username), $group);
  94. };
  95. $user_form->runAtServer();
  96. $nick_form = new UOJForm('nick');
  97. $nick_form->addInput('nick', 'text', '新昵称', '',
  98. function ($username) {
  99. return '';
  100. },
  101. null
  102. );
  103. $nick_form->handle = function() {
  104. global $groupname;
  105. $esc_nick = DB::escape($_POST['nick']);
  106. DB::update("update user_info set email = '$esc_nick' where username = '$groupname'");
  107. };
  108. $nick_form->runAtServer();
  109. if (!isset($tabs_info[$cur_tab])) {
  110. become404Page();
  111. }
  112. ?>
  113. <?php
  114. requireLib('hljs');
  115. requireLib('morris');
  116. ?>
  117. <?php echoUOJPageHeader('组管理') ?>
  118. <div class="row">
  119. <div class="col-sm-3">
  120. <?= HTML::tablist($tabs_info, $cur_tab, 'nav-pills flex-column') ?>
  121. </div>
  122. <div class="col-sm-9">
  123. <?php if ($cur_tab == 'info'): ?>
  124. <div>
  125. <h4>更改信息</h4>
  126. <?php $nick_form->printHTML() ?>
  127. </div>
  128. <?php elseif ($cur_tab === 'members'): ?>
  129. <div>
  130. <h4>成员操作</h4>
  131. <?php $member_form->printHTML() ?>
  132. <h4>添加用户进组</h4>
  133. <?php $user_form->printHTML() ?>
  134. <h4><?php echo $groupname ?> 成员列表</h4>
  135. <?php echoGroupMemberList($group) ?>
  136. </div>
  137. <?php elseif ($cur_tab == 'problems'): ?>
  138. <div>
  139. <h4><?php echo $groupname ?> 题目列表</h4>
  140. <?php echoGroupProblemList($group) ?>
  141. </div>
  142. <?php elseif ($cur_tab == 'disk'): ?>
  143. <div>
  144. <h4>空间管理</h4>
  145. <p>实际占用空间:<b class="text-danger">
  146. <?php echo printSize(queryGroupTotalSize($group)) ?></b><br>
  147. 可用空间配额:<b class="text-danger"><?php echo printSize(queryGroupQuota($group)) ?></b></p>
  148. <?php echoGroupProblemSizeList($group) ?>
  149. </div>
  150. <?php endif ?>
  151. </div>
  152. </div>
  153. <?php echoUOJPageFooter() ?>