aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB
diff options
context:
space:
mode:
authorDavid King <imkingdavid@gmail.com>2013-09-12 21:25:00 -0700
committerDavid King <imkingdavid@gmail.com>2013-09-12 21:25:00 -0700
commitf22b959257deba0f00a4330df9103c47673032b8 (patch)
tree36ca640a1a9744c0a17260e85a25e159b9421de3 /phpBB
parentd62973867511d4f2b337a4c1cf3654ee20a2a107 (diff)
parent32b92547400c14a402f64463661ce7c1b44e81b3 (diff)
downloadforums-f22b959257deba0f00a4330df9103c47673032b8.tar
forums-f22b959257deba0f00a4330df9103c47673032b8.tar.gz
forums-f22b959257deba0f00a4330df9103c47673032b8.tar.bz2
forums-f22b959257deba0f00a4330df9103c47673032b8.tar.xz
forums-f22b959257deba0f00a4330df9103c47673032b8.zip
Merge pull request #1620 from EXreaction/ticket/11745
Group join approved notification
Diffstat (limited to 'phpBB')
-rw-r--r--phpBB/config/notifications.yml18
-rw-r--r--phpBB/includes/functions_user.php29
-rw-r--r--phpBB/language/en/common.php1
-rw-r--r--phpBB/language/en/email/group_approved.txt10
-rw-r--r--phpBB/phpbb/notification/type/group_request.php6
-rw-r--r--phpBB/phpbb/notification/type/group_request_approved.php118
6 files changed, 147 insertions, 35 deletions
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 d94896decc..e5c0478d98 100644
--- a/phpBB/language/en/common.php
+++ b/phpBB/language/en/common.php
@@ -424,6 +424,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 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/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.php b/phpBB/phpbb/notification/type/group_request.php
index 490b9e16a3..1a3b5b6992 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);
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 @@
+<?php
+/**
+*
+* @package notifications
+* @copyright (c) 2013 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+/**
+* @ignore
+*/
+if (!defined('IN_PHPBB'))
+{
+ exit;
+}
+
+class phpbb_notification_type_group_request_approved extends phpbb_notification_type_base
+{
+ /**
+ * {@inheritdoc}
+ */
+ public function get_type()
+ {
+ return 'group_request_approved';
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function is_available()
+ {
+ return false;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public static function get_item_id($group)
+ {
+ return (int) $group['group_id'];
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public static function get_item_parent_id($group)
+ {
+ return 0;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function find_users_for_notification($group, $options = array())
+ {
+ $users = array();
+
+ $group['user_ids'] = (!is_array($group['user_ids'])) ? array($group['user_ids']) : $group['user_ids'];
+
+ foreach ($group['user_ids'] as $user_id)
+ {
+ $users[$user_id] = array('');
+ }
+
+ return $users;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function get_title()
+ {
+ return $this->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();
+ }
+}