/upload/admin/admin_groups.php

http://torrentpier2.googlecode.com/ · PHP · 186 lines · 150 code · 27 blank · 9 comment · 28 complexity · b64af79356f6da36f35b8796758992c2 MD5 · raw file

  1. <?php
  2. // ACP Header - START
  3. if (!empty($setmodules))
  4. {
  5. $module['Groups']['Manage'] = basename(__FILE__);
  6. return;
  7. }
  8. require('./pagestart.php');
  9. // ACP Header - END
  10. require(INC_DIR .'functions_group.php');
  11. $group_id = isset($_REQUEST[POST_GROUPS_URL]) ? intval($_REQUEST[POST_GROUPS_URL]) : 0;
  12. $mode = isset($_REQUEST['mode']) ? strval($_REQUEST['mode']) : '';
  13. attachment_quota_settings('group', isset($_POST['group_update']), $mode);
  14. if (!empty($_POST['edit']) || !empty($_POST['new']))
  15. {
  16. if (!empty($_POST['edit']))
  17. {
  18. if (!$row = get_group_data($group_id))
  19. {
  20. bb_die($lang['GROUP_NOT_EXIST']);
  21. }
  22. $group_info = array(
  23. 'group_name' => $row['group_name'],
  24. 'group_description' => $row['group_description'],
  25. 'group_moderator' => $row['group_moderator'],
  26. 'group_mod_name' => $row['moderator_name'],
  27. 'group_type' => $row['group_type'],
  28. );
  29. $mode = 'editgroup';
  30. $template->assign_block_vars('group_edit', array());
  31. }
  32. else if (!empty($_POST['new']))
  33. {
  34. $group_info = array(
  35. 'group_name' => '',
  36. 'group_description' => '',
  37. 'group_moderator' => '',
  38. 'group_mod_name' => '',
  39. 'group_type' => GROUP_OPEN,
  40. );
  41. $mode = 'newgroup';
  42. }
  43. // Ok, now we know everything about them, let's show the page.
  44. $s_hidden_fields = '
  45. <input type="hidden" name="mode" value="'. $mode .'" />
  46. <input type="hidden" name="'. POST_GROUPS_URL .'" value="'. $group_id .'" />
  47. ';
  48. $template->assign_vars(array(
  49. 'TPL_EDIT_GROUP' => true,
  50. 'GROUP_NAME' => stripslashes(htmlspecialchars($group_info['group_name'])),
  51. 'GROUP_DESCRIPTION' => stripslashes(htmlspecialchars($group_info['group_description'])),
  52. 'GROUP_MODERATOR' => replace_quote($group_info['group_mod_name']),
  53. 'T_GROUP_EDIT_DELETE' => ($mode == 'newgroup') ? $lang['CREATE_NEW_GROUP'] : $lang['EDIT_GROUP'],
  54. 'U_SEARCH_USER' => BB_ROOT ."search.php?mode=searchuser",
  55. 'S_GROUP_OPEN_TYPE' => GROUP_OPEN,
  56. 'S_GROUP_CLOSED_TYPE' => GROUP_CLOSED,
  57. 'S_GROUP_HIDDEN_TYPE' => GROUP_HIDDEN,
  58. 'S_GROUP_OPEN_CHECKED' => ($group_info['group_type'] == GROUP_OPEN) ? HTML_CHECKED : '',
  59. 'S_GROUP_CLOSED_CHECKED' => ($group_info['group_type'] == GROUP_CLOSED) ? HTML_CHECKED : '',
  60. 'S_GROUP_HIDDEN_CHECKED' => ($group_info['group_type'] == GROUP_HIDDEN ) ? HTML_CHECKED : '',
  61. 'S_GROUP_ACTION' => "admin_groups.php",
  62. 'S_HIDDEN_FIELDS' => $s_hidden_fields,
  63. ));
  64. }
  65. else if (!empty($_POST['group_update']))
  66. {
  67. if (!empty($_POST['group_delete']))
  68. {
  69. if (!$group_info = get_group_data($group_id))
  70. {
  71. bb_die($lang['GROUP_NOT_EXIST']);
  72. }
  73. // Delete Group
  74. delete_group($group_id);
  75. $message = $lang['DELETED_GROUP'] .'<br /><br />';
  76. $message .= sprintf($lang['CLICK_RETURN_GROUPSADMIN'], '<a href="admin_groups.php">', '</a>') .'<br /><br />';
  77. $message .= sprintf($lang['CLICK_RETURN_ADMIN_INDEX'], '<a href="index.php?pane=right">', '</a>');
  78. bb_die($message);
  79. }
  80. else
  81. {
  82. $group_type = isset($_POST['group_type']) ? intval($_POST['group_type']) : GROUP_OPEN;
  83. $group_name = isset($_POST['group_name']) ? trim($_POST['group_name']) : '';
  84. $group_desc = isset($_POST['group_description']) ? trim($_POST['group_description']) : '';
  85. $group_moderator = isset($_POST['username']) ? $_POST['username'] : '';
  86. if ($group_name === '')
  87. {
  88. bb_die($lang['NO_GROUP_NAME']);
  89. }
  90. else if ($group_moderator === '')
  91. {
  92. bb_die($lang['NO_GROUP_MODERATOR']);
  93. }
  94. $this_userdata = get_userdata($group_moderator, true);
  95. if (!$group_moderator = $this_userdata['user_id'])
  96. {
  97. bb_die($lang['NO_GROUP_MODERATOR']);
  98. }
  99. $sql_ary = array(
  100. 'group_type' => (int) $group_type,
  101. 'group_name' => (string) $group_name,
  102. 'group_description' => (string) $group_desc,
  103. 'group_moderator' => (int) $group_moderator,
  104. 'group_single_user' => 0,
  105. );
  106. if ($mode == "editgroup")
  107. {
  108. if (!$group_info = get_group_data($group_id))
  109. {
  110. bb_die($lang['GROUP_NOT_EXIST']);
  111. }
  112. if ($group_info['group_moderator'] != $group_moderator)
  113. {
  114. // Create user_group for new group's moderator
  115. add_user_into_group($group_id, $group_moderator);
  116. $sql_ary['group_time'] = TIMENOW;
  117. // Delete old moderator's user_group
  118. if (isset($_POST['delete_old_moderator']))
  119. {
  120. delete_user_group($group_id, $group_info['group_moderator']);
  121. }
  122. }
  123. $sql_args = DB()->build_array('UPDATE', $sql_ary);
  124. // Update group's data
  125. DB()->query("UPDATE ". BB_GROUPS ." SET $sql_args WHERE group_id = $group_id");
  126. $message = $lang['UPDATED_GROUP'] .'<br /><br />';
  127. $message .= sprintf($lang['CLICK_RETURN_GROUPSADMIN'], '<a href="admin_groups.php">', '</a>') .'<br /><br />';
  128. $message .= sprintf($lang['CLICK_RETURN_ADMIN_INDEX'], '<a href="index.php?pane=right">', '</a>');
  129. bb_die($message);
  130. }
  131. else if ($mode == 'newgroup')
  132. {
  133. $sql_ary['group_time'] = TIMENOW;
  134. $sql_args = DB()->build_array('INSERT', $sql_ary);
  135. // Create new group
  136. DB()->query("INSERT INTO ". BB_GROUPS ." $sql_args");
  137. $new_group_id = DB()->sql_nextid();
  138. // Create user_group for group's moderator
  139. add_user_into_group($new_group_id, $group_moderator);
  140. $message = $lang['ADDED_NEW_GROUP'] .'<br /><br />';
  141. $message .= sprintf($lang['CLICK_RETURN_GROUPSADMIN'], '<a href="admin_groups.php">', '</a>') .'<br /><br />';
  142. $message .= sprintf($lang['CLICK_RETURN_ADMIN_INDEX'], '<a href="index.php?pane=right">', '</a>');
  143. bb_die($message);
  144. }
  145. else
  146. {
  147. bb_die($lang['NO_GROUP_ACTION']);
  148. }
  149. }
  150. }
  151. else
  152. {
  153. $template->assign_vars(array(
  154. 'TPL_GROUP_SELECT' => true,
  155. 'S_GROUP_ACTION' => "admin_groups.php",
  156. 'S_GROUP_SELECT' => stripslashes(get_select('groups')),
  157. ));
  158. }
  159. print_page('admin_groups.tpl', 'admin');