mirror of
https://github.com/phpbb/phpbb.git
synced 2025-02-23 03:19:01 +01:00
Merge pull request #1620 from EXreaction/ticket/11745
Group join approved notification
This commit is contained in:
commit
f22b959257
@ -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!
|
||||
|
@ -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';
|
||||
|
@ -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".',
|
||||
|
@ -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()
|
||||
{
|
||||
// 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);
|
||||
|
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(),
|
||||
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,
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user