mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-28 14:18:52 +00:00
Merge pull request #1620 from EXreaction/ticket/11745
Group join approved notification
This commit is contained in:
commit
f22b959257
7 changed files with 176 additions and 35 deletions
|
@ -121,6 +121,24 @@ services:
|
||||||
tags:
|
tags:
|
||||||
- { name: notification.type }
|
- { 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:
|
notification.type.pm:
|
||||||
class: phpbb_notification_type_pm
|
class: phpbb_notification_type_pm
|
||||||
scope: prototype # scope MUST be prototype for this to work!
|
scope: prototype # scope MUST be prototype for this to work!
|
||||||
|
|
|
@ -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);
|
AND ' . $db->sql_in_set('ug.user_id', $user_id_ary);
|
||||||
$result = $db->sql_query($sql);
|
$result = $db->sql_query($sql);
|
||||||
|
|
||||||
$user_id_ary = $email_users = array();
|
$user_id_ary = array();
|
||||||
while ($row = $db->sql_fetchrow($result))
|
while ($row = $db->sql_fetchrow($result))
|
||||||
{
|
{
|
||||||
$user_id_ary[] = $row['user_id'];
|
$user_id_ary[] = $row['user_id'];
|
||||||
$email_users[] = $row;
|
|
||||||
}
|
}
|
||||||
$db->sql_freeresult($result);
|
$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);
|
AND " . $db->sql_in_set('user_id', $user_id_ary);
|
||||||
$db->sql_query($sql);
|
$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 = $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);
|
$phpbb_notifications->delete_notifications('group_request', $user_id_ary, $group_id);
|
||||||
|
|
||||||
$log = 'LOG_USERS_APPROVED';
|
$log = 'LOG_USERS_APPROVED';
|
||||||
|
|
|
@ -424,6 +424,7 @@ $lang = array_merge($lang, array(
|
||||||
),
|
),
|
||||||
'NOTIFICATION_BOOKMARK' => '%1$s replied to the topic "%2$s" you have bookmarked.',
|
'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' => '%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_PM' => '%1$s sent you a Private Message "%2$s".',
|
||||||
'NOTIFICATION_POST' => '%1$s replied to the topic "%2$s".',
|
'NOTIFICATION_POST' => '%1$s replied to the topic "%2$s".',
|
||||||
'NOTIFICATION_POST_APPROVED' => 'Your post was approved "%2$s".',
|
'NOTIFICATION_POST_APPROVED' => 'Your post was approved "%2$s".',
|
||||||
|
|
|
@ -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}
|
|
|
@ -38,7 +38,8 @@ class phpbb_notification_type_group_request extends phpbb_notification_type_base
|
||||||
public function is_available()
|
public function is_available()
|
||||||
{
|
{
|
||||||
// Leader of any groups?
|
// 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'] . '
|
WHERE user_id = ' . (int) $this->user->data['user_id'] . '
|
||||||
AND group_leader = 1';
|
AND group_leader = 1';
|
||||||
$result = $this->db->sql_query_limit($sql, 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(),
|
'ignore_users' => array(),
|
||||||
), $options);
|
), $options);
|
||||||
|
|
||||||
$sql = 'SELECT user_id FROM ' . USER_GROUP_TABLE . '
|
$sql = 'SELECT user_id
|
||||||
|
FROM ' . USER_GROUP_TABLE . '
|
||||||
WHERE group_leader = 1
|
WHERE group_leader = 1
|
||||||
AND group_id = ' . (int) $group['group_id'];
|
AND group_id = ' . (int) $group['group_id'];
|
||||||
$result = $this->db->sql_query($sql);
|
$result = $this->db->sql_query($sql);
|
||||||
|
|
118
phpBB/phpbb/notification/type/group_request_approved.php
Normal file
118
phpBB/phpbb/notification/type/group_request_approved.php
Normal file
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
|
@ -22,6 +22,7 @@ class phpbb_notification_group_request_test extends phpbb_tests_notification_bas
|
||||||
parent::get_notification_types(),
|
parent::get_notification_types(),
|
||||||
array(
|
array(
|
||||||
'group_request',
|
'group_request',
|
||||||
|
'group_request_approved',
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -76,5 +77,33 @@ class phpbb_notification_group_request_test extends phpbb_tests_notification_bas
|
||||||
'user_id' => 2,
|
'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,
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue