From 46b4a405b1563c2fe15dad34c9ff2843271cd8f8 Mon Sep 17 00:00:00 2001 From: Nathan Guse Date: Sat, 27 Jul 2013 17:02:45 -0500 Subject: [PATCH 1/3] [ticket/11745] Group request approved notification PHPBB3-11745 --- phpBB/config/notifications.yml | 18 +++ phpBB/includes/functions_user.php | 29 +---- phpBB/language/en/common.php | 1 + phpBB/language/en/email/group_approved.txt | 10 -- .../type/group_request_approved.php | 118 ++++++++++++++++++ 5 files changed, 143 insertions(+), 33 deletions(-) delete mode 100644 phpBB/language/en/email/group_approved.txt create mode 100644 phpBB/phpbb/notification/type/group_request_approved.php diff --git a/phpBB/config/notifications.yml b/phpBB/config/notifications.yml index 04c5e46a9c..fc687cbd19 100644 --- a/phpBB/config/notifications.yml +++ b/phpBB/config/notifications.yml @@ -121,6 +121,24 @@ services: tags: - { name: notification.type } + notification.type.group_request_approved: + class: phpbb_notification_type_group_request_approved + scope: prototype # scope MUST be prototype for this to work! + arguments: + - @user_loader + - @dbal.conn + - @cache.driver + - @user + - @auth + - @config + - %core.root_path% + - %core.php_ext% + - %tables.notification_types% + - %tables.notifications% + - %tables.user_notifications% + tags: + - { name: notification.type } + notification.type.pm: class: phpbb_notification_type_pm scope: prototype # scope MUST be prototype for this to work! diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index 102fbaae78..4fcce67801 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -2929,11 +2929,10 @@ function group_user_attributes($action, $group_id, $user_id_ary = false, $userna AND ' . $db->sql_in_set('ug.user_id', $user_id_ary); $result = $db->sql_query($sql); - $user_id_ary = $email_users = array(); + $user_id_ary = array(); while ($row = $db->sql_fetchrow($result)) { $user_id_ary[] = $row['user_id']; - $email_users[] = $row; } $db->sql_freeresult($result); @@ -2948,29 +2947,13 @@ function group_user_attributes($action, $group_id, $user_id_ary = false, $userna AND " . $db->sql_in_set('user_id', $user_id_ary); $db->sql_query($sql); - // Send approved email to users... - include_once($phpbb_root_path . 'includes/functions_messenger.' . $phpEx); - $messenger = new messenger(); - - foreach ($email_users as $row) - { - $messenger->template('group_approved', $row['user_lang']); - - $messenger->set_addresses($row); - - $messenger->assign_vars(array( - 'USERNAME' => htmlspecialchars_decode($row['username']), - 'GROUP_NAME' => htmlspecialchars_decode($group_name), - 'U_GROUP' => generate_board_url() . "/ucp.$phpEx?i=groups&mode=membership") - ); - - $messenger->send($row['user_notify_type']); - } - - $messenger->save_queue(); - $phpbb_notifications = $phpbb_container->get('notification_manager'); + $phpbb_notifications->add_notifications('group_request_approved', array( + 'user_ids' => $user_id_ary, + 'group_id' => $group_id, + 'group_name' => $group_name, + )); $phpbb_notifications->delete_notifications('group_request', $user_id_ary, $group_id); $log = 'LOG_USERS_APPROVED'; diff --git a/phpBB/language/en/common.php b/phpBB/language/en/common.php index cdaf8269ed..91b1f6d9d9 100644 --- a/phpBB/language/en/common.php +++ b/phpBB/language/en/common.php @@ -415,6 +415,7 @@ $lang = array_merge($lang, array( ), 'NOTIFICATION_BOOKMARK' => '%1$s replied to the topic "%2$s" you have bookmarked.', 'NOTIFICATION_GROUP_REQUEST' => '%1$s is requesting to join the group %2$s.', + 'NOTIFICATION_GROUP_REQUEST_APPROVED' => 'Your request to join the "%1$s" group on has been approved.', 'NOTIFICATION_PM' => '%1$s sent you a Private Message "%2$s".', 'NOTIFICATION_POST' => '%1$s replied to the topic "%2$s".', 'NOTIFICATION_POST_APPROVED' => 'Your post was approved "%2$s".', diff --git a/phpBB/language/en/email/group_approved.txt b/phpBB/language/en/email/group_approved.txt deleted file mode 100644 index 24afefcd07..0000000000 --- a/phpBB/language/en/email/group_approved.txt +++ /dev/null @@ -1,10 +0,0 @@ -Subject: Your request has been approved - -Congratulations, - -Your request to join the "{GROUP_NAME}" group on "{SITENAME}" has been approved. -Click on the following link to see your group membership. - -{U_GROUP} - -{EMAIL_SIG} diff --git a/phpBB/phpbb/notification/type/group_request_approved.php b/phpBB/phpbb/notification/type/group_request_approved.php new file mode 100644 index 0000000000..ce83329ff3 --- /dev/null +++ b/phpBB/phpbb/notification/type/group_request_approved.php @@ -0,0 +1,118 @@ +user->lang('NOTIFICATION_GROUP_REQUEST_APPROVED', $this->get_data('group_name')); + } + + /** + * {@inheritdoc} + */ + public function get_url() + { + return append_sid($this->phpbb_root_path . 'memberlist.' . $this->php_ext, "mode=group&g={$this->item_id}"); + } + + /** + * {@inheritdoc} + */ + public function create_insert_array($group, $pre_create_data = array()) + { + $this->set_data('group_name', $group['group_name']); + + return parent::create_insert_array($group, $pre_create_data); + } + + /** + * {@inheritdoc} + */ + public function users_to_query() + { + return array(); + } + + /** + * {@inheritdoc} + */ + public function get_email_template() + { + return false; + } + + /** + * {@inheritdoc} + */ + public function get_email_template_variables() + { + return array(); + } +} From 97204e432b8ff1c91294169d6fc0d822ef180bf1 Mon Sep 17 00:00:00 2001 From: Nathan Guse Date: Sat, 27 Jul 2013 19:32:51 -0500 Subject: [PATCH 2/3] [ticket/11745] Add test for group request approved PHPBB3-11745 --- tests/notification/group_request_test.php | 29 +++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/tests/notification/group_request_test.php b/tests/notification/group_request_test.php index 3606a6455c..368e4ae973 100644 --- a/tests/notification/group_request_test.php +++ b/tests/notification/group_request_test.php @@ -22,6 +22,7 @@ class phpbb_notification_group_request_test extends phpbb_tests_notification_bas parent::get_notification_types(), array( 'group_request', + 'group_request_approved', ) ); } @@ -76,5 +77,33 @@ class phpbb_notification_group_request_test extends phpbb_tests_notification_bas 'user_id' => 2, ) ); + + // Approve user 3 joining the group + group_user_attributes('approve', $group_id, array(3)); + + // user 3 pending notification should have been deleted + $this->assert_notifications( + array(), + array( + 'user_id' => 2, + ) + ); + + $this->assert_notifications( + array( + // user 3 approved notification + array( + 'item_id' => $group_id, // user_id of requesting join + 'user_id' => 3, + 'notification_read' => 0, + 'notification_data' => array( + 'group_name' => 'test', + ), + ), + ), + array( + 'user_id' => 3, + ) + ); } } From 32b92547400c14a402f64463661ce7c1b44e81b3 Mon Sep 17 00:00:00 2001 From: Nathan Guse Date: Thu, 12 Sep 2013 22:59:42 -0500 Subject: [PATCH 3/3] [ticket/11745] Correct language, coding guidelines PHPBB3-11745 --- phpBB/language/en/common.php | 2 +- phpBB/phpbb/notification/type/group_request.php | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/phpBB/language/en/common.php b/phpBB/language/en/common.php index 91b1f6d9d9..bd34c51bef 100644 --- a/phpBB/language/en/common.php +++ b/phpBB/language/en/common.php @@ -415,7 +415,7 @@ $lang = array_merge($lang, array( ), 'NOTIFICATION_BOOKMARK' => '%1$s replied to the topic "%2$s" you have bookmarked.', 'NOTIFICATION_GROUP_REQUEST' => '%1$s is requesting to join the group %2$s.', - 'NOTIFICATION_GROUP_REQUEST_APPROVED' => 'Your request to join the "%1$s" group on has been approved.', + 'NOTIFICATION_GROUP_REQUEST_APPROVED' => 'Your request to join the group %1$s has been approved.', 'NOTIFICATION_PM' => '%1$s sent you a Private Message "%2$s".', 'NOTIFICATION_POST' => '%1$s replied to the topic "%2$s".', 'NOTIFICATION_POST_APPROVED' => 'Your post was approved "%2$s".', diff --git a/phpBB/phpbb/notification/type/group_request.php b/phpBB/phpbb/notification/type/group_request.php index 96015783fb..f3918f381d 100644 --- a/phpBB/phpbb/notification/type/group_request.php +++ b/phpBB/phpbb/notification/type/group_request.php @@ -38,7 +38,8 @@ class phpbb_notification_type_group_request extends phpbb_notification_type_base public function is_available() { // Leader of any groups? - $sql = 'SELECT group_id FROM ' . USER_GROUP_TABLE . ' + $sql = 'SELECT group_id + FROM ' . USER_GROUP_TABLE . ' WHERE user_id = ' . (int) $this->user->data['user_id'] . ' AND group_leader = 1'; $result = $this->db->sql_query_limit($sql, 1); @@ -74,7 +75,8 @@ class phpbb_notification_type_group_request extends phpbb_notification_type_base 'ignore_users' => array(), ), $options); - $sql = 'SELECT user_id FROM ' . USER_GROUP_TABLE . ' + $sql = 'SELECT user_id + FROM ' . USER_GROUP_TABLE . ' WHERE group_leader = 1 AND group_id = ' . (int) $group['group_id']; $result = $this->db->sql_query($sql);