From ea5590297d01c62bbc1edbf59cd5d6efe62f5d63 Mon Sep 17 00:00:00 2001 From: James Atkinson Date: Sat, 6 Oct 2001 04:44:47 +0000 Subject: [PATCH] Group CP is done (I hope). The group moderator and admin can add and remove users from groups. There are several things in this I would like to change but its too late for 2.0, someone remind me during 2.2 discussions git-svn-id: file:///svn/phpbb/trunk@1134 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/db/postgres_basic.sql | 4 +- phpBB/groupcp.php | 200 +++++++++++++----- phpBB/language/email/group_added_english.tpl | 9 + phpBB/language/lang_english.php | 5 + phpBB/templates/PSO/groupcp_info_body.tpl | 38 +++- .../templates/subSilver/groupcp_info_body.tpl | 33 ++- 6 files changed, 222 insertions(+), 67 deletions(-) create mode 100755 phpBB/language/email/group_added_english.tpl diff --git a/phpBB/db/postgres_basic.sql b/phpBB/db/postgres_basic.sql index 1333e89004..0631fc8912 100755 --- a/phpBB/db/postgres_basic.sql +++ b/phpBB/db/postgres_basic.sql @@ -61,7 +61,7 @@ INSERT INTO phpbb_forums (forum_id, forum_name, forum_desc, cat_id, forum_order, -- Users -INSERT INTO phpbb_users (user_id, username, user_level, user_regdate, user_password, user_autologin_key, user_email, user_icq, user_website, user_occ, user_from, user_interests, user_sig, user_viewemail, user_style, user_aim, user_yim, user_msnm, user_posts, user_attachsig, user_allowsmile, user_allowhtml, user_allowbbcode, user_allow_pm, user_notify_pm, user_allow_viewonline, user_rank, user_avatar, user_lang, user_timezone, user_dateformat, user_actkey, user_newpasswd, user_notify, user_active) VALUES ( '-1', 'Anonymous', '0', '972086460', '', '', '', '', '', '', '', '', '', '0', '0', '', '', '', '', '', '', '', '0', '0', '1', '', '', '', '', '', '', '', '', '0', '0', ''); +INSERT INTO phpbb_users (user_id, username, user_level, user_regdate, user_password, user_autologin_key, user_email, user_icq, user_website, user_occ, user_from, user_interests, user_sig, user_viewemail, user_style, user_aim, user_yim, user_msnm, user_posts, user_attachsig, user_allowsmile, user_allowhtml, user_allowbbcode, user_allow_pm, user_notify_pm, user_allow_viewonline, user_rank, user_avatar, user_lang, user_timezone, user_dateformat, user_actkey, user_newpasswd, user_notify, user_active) VALUES ( '-1', 'Anonymous', '0', '972086460', '', '', '', '', '', '', '', '', '', '0', '0', '', '', '', '', '', '', '', '0', '0', '1', '', '', '', '', '', '', '', '0', '0', ''); -- username: admin password: admin (change this or remove it once everything is working!) INSERT INTO phpbb_users (user_id, username, user_level, user_regdate, user_password, user_autologin_key, user_email, user_icq, user_website, user_occ, user_from, user_interests, user_sig, user_viewemail, user_style, user_aim, user_yim, user_msnm, user_posts, user_attachsig, user_allowsmile, user_allowhtml, user_allowbbcode, user_allow_pm, user_notify_pm, user_allow_viewonline, user_rank, user_avatar, user_lang, user_timezone, user_dateformat, user_actkey, user_newpasswd, user_notify, user_active) VALUES ( '2', 'Admin', '1', EXTRACT(EPOCH FROM TIMESTAMP 'now'), '21232f297a57a5a743894a0e4a801fc3', '', 'admin@yourdomain.com', '', '', '', '', '', 'A Signature', '1', '2', '', '', '', '0', '0', '1', '0', '1', '1', '1', '1', '1', '', 'english', '-8', 'd M Y h:i a', '', '', '0', '1'); @@ -152,7 +152,7 @@ INSERT INTO phpbb_smilies (smilies_id, code, smile_url, emoticon) VALUES ( '39', INSERT INTO phpbb_smilies (smilies_id, code, smile_url, emoticon) VALUES ( '40', ':mrgreen:', 'icon_mrgreen.gif', 'Mr. Green'); -# -- Words +-- Words INSERT INTO phpbb_words (word_id, word, replacement) VALUES ( '1', 'asshole', '*beep*'); INSERT INTO phpbb_words (word_id, word, replacement) VALUES ( '2', 'assram*', '*beep*'); INSERT INTO phpbb_words (word_id, word, replacement) VALUES ( '3', 'asswipe', '*beep*'); diff --git a/phpBB/groupcp.php b/phpBB/groupcp.php index 808edd24f1..8aa8c5ac16 100644 --- a/phpBB/groupcp.php +++ b/phpBB/groupcp.php @@ -23,6 +23,7 @@ $phpbb_root_path = "./"; include($phpbb_root_path . 'extension.inc'); include($phpbb_root_path . 'common.'.$phpEx); +include($phpbb_root_path . 'includes/emailer.'.$phpEx); // // Start session management @@ -69,9 +70,10 @@ if( isset($HTTP_POST_VARS['joingroup']) ) $email_headers = "From: " . $board_config['board_email'] . "\r\n"; - include($phpbb_root_path . 'includes/emailer.'.$phpEx); + $emailer = new emailer($board_config['smtp_delivery']); + $email_headers = "From: " . $board_config['board_email'] . "\r\n"; $emailer->use_template("group_request"); $emailer->email_address($moderator[0]['user_email']); $emailer->set_subject($lang['Group_request']); @@ -81,7 +83,7 @@ if( isset($HTTP_POST_VARS['joingroup']) ) "SITENAME" => $board_config['sitename'], "GROUP_MODERATOR" => $moderator[0]['username'], "U_GROUPCP" => "http://".$SERVER_NAME.$PHP_SELF."?".POST_GROUPS_URL."=".$HTTP_POST_VARS[POST_GROUPS_URL], - "EMAIL_SIG" => $board_config['email_sig']) + "EMAIL_SIG" => $board_config['board_email_sig']) ); $emailer->send(); $emailer->reset(); @@ -162,48 +164,38 @@ else if( isset($HTTP_GET_VARS[POST_GROUPS_URL]) || isset($HTTP_POST_VARS[POST_GR $group_id = ( isset($HTTP_POST_VARS[POST_GROUPS_URL]) ) ? $HTTP_POST_VARS[POST_GROUPS_URL] : $HTTP_GET_VARS[POST_GROUPS_URL]; // - // Handle approvals and denials + // Handle Additions, removals, approvals and denials // - if(isset($HTTP_POST_VARS['approve']) || isset($HTTP_POST_VARS['deny'])) + if(isset($HTTP_POST_VARS['approve']) || isset($HTTP_POST_VARS['deny']) || $HTTP_POST_VARS['add'] || $HTTP_POST_VARS['remove']) { $members = $HTTP_POST_VARS['member']; - if(isset($HTTP_POST_VARS['approve'])) + if(isset($HTTP_POST_VARS['add'])) { - $sql_select = "SELECT user_email FROM ". USERS_TABLE . " WHERE "; - $sql = "UPDATE ".USER_GROUP_TABLE." SET user_pending = 0 WHERE "; - } - else if(isset($HTTP_POST_VARS['deny'])) - { - $sql = "DELETE FROM ".USER_GROUP_TABLE." WHERE "; - } - - for($x = 0; $x < count($members); $x++) - { - if($x > 0) + $username = $HTTP_POST_VARS['username']; + + $sql = "SELECT user_id, user_email FROM " . USERS_TABLE . " WHERE username = '$username'"; + + if(!$result = $db->sql_query($sql, BEGIN_TRANSACTION)) { - $sql_select .= " OR "; - $sql .= " OR "; + message_die(GENERAL_ERROR, "Could not get user information", $lang['Error'], __LINE__, __FILE__, $sql); } - $sql .= "user_id = ".$members[$x]; - $sql_select .= "user_id = ".$members[$x]; - } - - if(!$result = $db->sql_query($sql, BEGIN_TRANSACTION)) - { - message_die(GENERAL_ERROR, "Could not update user group table.", "Error", __LINE__, __FILE__, $sql); - } - - // Email user when they'er approved - if(isset($HTTP_POST_VARS['approve'])) - { - if(!$result = $db->sql_query($sql_select)) + + $row = $db->sql_fetchrow($result); + if(!$row) { - message_die(GENERAL_ERROR, "Could not get user email information", "Error", __LINE__, __FILE__, $sql); + message_die(GENERAL_ERROR, $lang['Could_not_add_user'], $lang['Error']); } - $email_rowset = $db->sql_fetchrowset($result); - $members_count = $db->sql_numrows($result); + + $sql = "INSERT INTO " . USER_GROUP_TABLE . " (user_id, group_id, user_pending) VALUES (" . $row['user_id'] . ", $group_id, 0)"; + + if(!$result = $db->sql_query($sql, END_TRANSACTION)) + { + message_die(GENERAL_ERROR, "Could not add user to group", "Error", __LINE__, __FILE__, $sql); + } + + // Email the user and tell them they're in the group // // Get the group name @@ -216,30 +208,100 @@ else if( isset($HTTP_GET_VARS[POST_GROUPS_URL]) || isset($HTTP_POST_VARS[POST_GR $group_name_row = $db->sql_fetchrow($result); $group_name = $group_name_row['group_name']; - $email_headers = "From: " . $board_config['board_email'] . "\r\n"; - $emailer->use_template("group_approved"); + $emailer = new emailer($board_config['smtp_delivery']); + + $emailer->use_template("group_added"); + $emailer->email_address($row['user_email']); + $emailer->set_subject($lang['Group_added']); $emailer->extra_headers($email_headers); - $emailer->set_subject($lang['Group_approved']); - - for($x = 0; $x < $members_count; $x++) - { - if($x > 0) - { - $email_address .= ", "; - } - $email_address .= $email_rowset[$x]['user_email']; - } - $emailer->email_address($email_address); + $emailer->assign_vars(array( "SITENAME" => $board_config['sitename'], - "U_GROUPCP" => "http://".$SERVER_NAME.$PHP_SELF."?".POST_GROUPS_URL."=$group_id", "GROUP_NAME" => $group_name, - "EMAIL_SIG" => $board_config['email_sig']) + "U_GROUPCP" => "http://".$SERVER_NAME.$PHP_SELF."?".POST_GROUPS_URL."=".$HTTP_POST_VARS[POST_GROUPS_URL], + "EMAIL_SIG" => $board_config['board_email_sig']) ); $emailer->send(); $emailer->reset(); + + } + else + { + if(isset($HTTP_POST_VARS['approve'])) + { + $sql_select = "SELECT user_email FROM ". USERS_TABLE . " WHERE "; + $sql = "UPDATE ".USER_GROUP_TABLE." SET user_pending = 0 WHERE "; + } + else if(isset($HTTP_POST_VARS['deny']) || isset($HTTP_POST_VARS['remove'])) + { + $sql = "DELETE FROM ".USER_GROUP_TABLE." WHERE "; + } + for($x = 0; $x < count($members); $x++) + { + if($x > 0) + { + $sql_select .= " OR "; + $sql .= " OR "; + } + $sql .= "user_id = ".$members[$x]; + $sql_select .= "user_id = ".$members[$x]; + } + + if(!$result = $db->sql_query($sql, BEGIN_TRANSACTION)) + { + message_die(GENERAL_ERROR, "Could not update user group table.", "Error", __LINE__, __FILE__, $sql); + } + + // Email user when they'er approved + if(isset($HTTP_POST_VARS['approve'])) + { + if(!$result = $db->sql_query($sql_select)) + { + message_die(GENERAL_ERROR, "Could not get user email information", "Error", __LINE__, __FILE__, $sql); + } + $email_rowset = $db->sql_fetchrowset($result); + $members_count = $db->sql_numrows($result); + + // + // Get the group name + // + $group_sql = "SELECT group_name FROM ".GROUPS_TABLE." WHERE group_id = $group_id"; + if(!$result = $db->sql_query($group_sql)) + { + message_die(GENERAL_ERROR, "Could not get group information", "Error", __LINE__, __FILE__, $group_sql); + } + $group_name_row = $db->sql_fetchrow($result); + $group_name = $group_name_row['group_name']; + + + $emailer = new emailer($board_config['smtp_delivery']); + + $email_headers = "From: " . $board_config['board_email'] . "\r\n"; + $emailer->use_template("group_approved"); + $emailer->extra_headers($email_headers); + $emailer->set_subject($lang['Group_approved']); + + for($x = 0; $x < $members_count; $x++) + { + if($x > 0) + { + $email_address .= ", "; + } + $email_address .= $email_rowset[$x]['user_email']; + } + $emailer->email_address($email_address); + $emailer->assign_vars(array( + "SITENAME" => $board_config['sitename'], + "U_GROUPCP" => "http://".$SERVER_NAME.$PHP_SELF."?".POST_GROUPS_URL."=$group_id", + "GROUP_NAME" => $group_name, + "EMAIL_SIG" => $board_config['board_email_sig']) + ); + $emailer->send(); + $emailer->reset(); + } + } } // @@ -249,6 +311,8 @@ else if( isset($HTTP_GET_VARS[POST_GROUPS_URL]) || isset($HTTP_POST_VARS[POST_GR $start = ( isset($HTTP_GET_VARS['start']) ) ? $HTTP_GET_VARS['start'] : 0; + $is_moderator = FALSE; + // // Get group details // @@ -316,13 +380,18 @@ else if( isset($HTTP_GET_VARS[POST_GROUPS_URL]) || isset($HTTP_POST_VARS[POST_GR } } - if( $userdata['user_id'] == $group_info['group_moderator'] ) + if( $userdata['user_id'] == $group_info['group_moderator']) { + $is_moderator = TRUE; $group_details = $lang['Are_group_moderator']; - $s_hidden_fields = ""; + $s_hidden_fields = ""; } else if($is_group_member) { + if($userdata['user_level'] == ADMIN) + { + $is_moderator = TRUE; + } $group_details = $lang['Member_this_group'] . " "; $s_hidden_fields = ""; } @@ -330,14 +399,25 @@ else if( isset($HTTP_GET_VARS[POST_GROUPS_URL]) || isset($HTTP_POST_VARS[POST_GR { if($group_info['group_type']) { + if($userdata['user_level'] == ADMIN) + { + $is_moderator = TRUE; + } + // // I don't like this being here ... // $group_details = $lang['This_open_group'] . " "; $s_hidden_fields = ""; + } else { + if($userdata['user_level'] == ADMIN) + { + $is_moderator = TRUE; + } + $group_details = $lang['This_closed_group']; $s_hidden_fields = ""; } @@ -356,7 +436,8 @@ else if( isset($HTTP_GET_VARS[POST_GROUPS_URL]) || isset($HTTP_POST_VARS[POST_GR "GROUP_DETAILS" => $group_details, "S_GROUP_INFO_ACTION" => append_sid("groupcp.$phpEx"), - "S_HIDDEN_FIELDS" => $s_hidden_fields) + "S_HIDDEN_FIELDS" => $s_hidden_fields, + "S_PENDING_HIDDEN_FIELDS" => $s_hidden_fields) ); // @@ -376,6 +457,10 @@ else if( isset($HTTP_GET_VARS[POST_GROUPS_URL]) || isset($HTTP_POST_VARS[POST_GR "L_YIM" => $lang['YIM'], "L_MSNM" => $lang['MSNM'], "L_ICQ" => $lang['ICQ'], + "L_SELECT" => $lang['Select'], + "L_REMOVESELECTED" => $lang['Remove_selected'], + "L_ADDMEMBER" => $lang['Add_member'], + "L_FIND_USERNAME" => $lang['Find_username'], "S_MODE_SELECT" => $select_sort_mode, "S_ORDER_SELECT" => $select_sort_order, @@ -482,8 +567,19 @@ else if( isset($HTTP_GET_VARS[POST_GROUPS_URL]) || isset($HTTP_POST_VARS[POST_GR "U_VIEWPROFILE" => append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $user_id)) ); + if($is_moderator) + { + $template->assign_block_vars("memberrow.memberselect", array( + "USER_ID" => $group_members[$i]['user_id'])); + } } } + if($is_moderator) + { + $template->assign_block_vars("modoption", array()); + $template->assign_block_vars("addmember", array()); + } + /* $pagination = generate_pagination("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id", $users_list, $board_config['topics_per_page'], $start)." "; diff --git a/phpBB/language/email/group_added_english.tpl b/phpBB/language/email/group_added_english.tpl new file mode 100755 index 0000000000..e6f0e0bba1 --- /dev/null +++ b/phpBB/language/email/group_added_english.tpl @@ -0,0 +1,9 @@ +Congratulations, + +You have been added to the "{GROUP_NAME}" group on {SITENAME}. +This action was done by the group moderator or the site administrator, contact them for more information. + +You can view your groups information here: +{U_GROUPCP} + +{EMAIL_SIG} diff --git a/phpBB/language/lang_english.php b/phpBB/language/lang_english.php index b1e6ec8109..53277c1f76 100755 --- a/phpBB/language/lang_english.php +++ b/phpBB/language/lang_english.php @@ -526,6 +526,9 @@ $lang['No_group_members'] = "This group has no members"; $lang["Group_joined"] = "You have successfully subscribed to this group, you will be notifed when your subscription is approved by the group moderator."; $lang['Group_request'] = "A request to join your group has been made"; $lang['Group_approved'] = "Your request has been approved"; +$lang['Group_added'] = "You have been added!"; + +$lang['Could_not_add_user'] = "Could not add the selected user. Please go back and make sure you typed the correct username."; $lang['Confirm_unsub'] = "Are you sure you want to unsubscribe from this group?"; $lang['Confirm_unsub_pending'] = "Are you sure you want to unsubscribe from this group? You subscription has not yet been approved or denied!"; @@ -535,6 +538,8 @@ $lang['Usub_success'] = "You have been successfully unsubscribed from this group $lang['Approve_selected'] = "Approve Selected"; $lang['Deny_selected'] = "Deny Selected"; $lang['Not_logged_in'] = "You must be logged in to join a group."; +$lang['Remove_selected'] = "Remove Selected"; +$lang['Add_member'] = "Add Member"; $lang['This_open_group'] = "This is an open group, click to request membership"; $lang['This_closed_group'] = "This is a closed group, no more users accepted"; diff --git a/phpBB/templates/PSO/groupcp_info_body.tpl b/phpBB/templates/PSO/groupcp_info_body.tpl index 26b0cef2bc..033f9366e4 100644 --- a/phpBB/templates/PSO/groupcp_info_body.tpl +++ b/phpBB/templates/PSO/groupcp_info_body.tpl @@ -28,12 +28,13 @@
-
+ +{S_PENDING_HIDDEN_FIELDS}
- + @@ -41,7 +42,8 @@ @@ -49,7 +51,7 @@ - + @@ -61,6 +63,7 @@ @@ -70,8 +73,20 @@ + + + + + + @@ -103,14 +118,21 @@ - + -
Group ModeratorGroup Moderator
 {L_EMAIL} {L_FROM} {L_POSTS} - {L_WEBSITE} + {L_WEBSITE} +
{MOD_PM_IMG} {MOD_EMAIL_IMG} {MOD_FROM} {MOD_POSTS} {MOD_WWW_IMG} {MOD_WWW_IMG}
Group Members{L_FROM} {L_POSTS} {L_WEBSITE} + {L_SELECT}
{memberrow.FROM} {memberrow.POSTS} {memberrow.WWW_IMG} + + {L_SELECT} +   +
+ +
Pending Members
{L_NO_MEMBERS}{L_NO_MEMBERS}
+ diff --git a/phpBB/templates/subSilver/groupcp_info_body.tpl b/phpBB/templates/subSilver/groupcp_info_body.tpl index 84647e57cd..11f484f624 100644 --- a/phpBB/templates/subSilver/groupcp_info_body.tpl +++ b/phpBB/templates/subSilver/groupcp_info_body.tpl @@ -24,7 +24,8 @@
- +
   + + +   + + + + +
-
+ +{S_PENDING_HIDDEN_FIELDS} @@ -32,7 +33,8 @@ - + + @@ -56,9 +58,21 @@ - + + + + + + + @@ -94,8 +108,17 @@
Private Message{L_POSTS} {L_FROM} {L_EMAIL}{L_WEBSITE}{L_WEBSITE}{L_SELECT}
Group Moderator {memberrow.FROM} {memberrow.EMAIL_IMG} {memberrow.WWW_IMG} {memberrow.WWW_IMG} + + {L_SELECT} +   +
+ +
Pending Members
- - + + +
{S_TIMEZONE}
+ + +   + + + + +  {S_TIMEZONE}