mirror of
https://github.com/phpbb/phpbb.git
synced 2025-05-10 17:45:18 +02:00
[ticket/11103] Add tables to the database updater and installer
PHPBB3-11103
This commit is contained in:
parent
32a966b21d
commit
b594635526
@ -1295,6 +1295,28 @@ function get_schema_struct()
|
||||
),
|
||||
);
|
||||
|
||||
$schema_data['phpbb_notifications'] = array(
|
||||
'COLUMNS' => array(
|
||||
'item_type' => array('UINT', 0),
|
||||
'item_id' => array('UINT', 0),
|
||||
'user_id' => array('UINT', 0),
|
||||
'unread' => array('BOOL', 1),
|
||||
'time' => array('TIMESTAMP', 1),
|
||||
'data' => array('TEXT_UNI', ''),
|
||||
),
|
||||
'PRIMARY_KEY' => array(
|
||||
'item_type',
|
||||
'item_id',
|
||||
'user_id',
|
||||
),
|
||||
'KEYS' => array(
|
||||
'item_type' => array('INDEX', 'item_type'),
|
||||
'item_id' => array('INDEX', 'item_id'),
|
||||
'user_id' => array('INDEX', 'user_id'),
|
||||
'time' => array('INDEX', 'time'),
|
||||
),
|
||||
);
|
||||
|
||||
$schema_data['phpbb_poll_options'] = array(
|
||||
'COLUMNS' => array(
|
||||
'poll_option_id' => array('TINT:4', 0),
|
||||
@ -1751,6 +1773,25 @@ function get_schema_struct()
|
||||
),
|
||||
);
|
||||
|
||||
$schema_data['phpbb_user_notifications'] = array(
|
||||
'COLUMNS' => array(
|
||||
'item_type' => array('UINT', 0),
|
||||
'item_id' => array('UINT', 0),
|
||||
'user_id' => array('UINT', 0),
|
||||
'method' => array('VCHAR:25', ''),
|
||||
),
|
||||
'PRIMARY_KEY' => array(
|
||||
'item_type',
|
||||
'item_id',
|
||||
'user_id',
|
||||
'method',
|
||||
),
|
||||
'KEYS' => array(
|
||||
'it' => array('INDEX', 'item_type'),
|
||||
'uid' => array('INDEX', 'user_id'),
|
||||
),
|
||||
);
|
||||
|
||||
$schema_data['phpbb_user_group'] = array(
|
||||
'COLUMNS' => array(
|
||||
'group_id' => array('UINT', 0),
|
||||
|
@ -27,6 +27,13 @@ abstract class phpbb_notifications_method_base implements phpbb_notifications_me
|
||||
protected $db;
|
||||
protected $user;
|
||||
|
||||
/**
|
||||
* Queue of messages to be sent
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $queue = array();
|
||||
|
||||
public function __construct(ContainerBuilder $phpbb_container, $data = array())
|
||||
{
|
||||
// phpBB Container
|
||||
@ -36,4 +43,29 @@ abstract class phpbb_notifications_method_base implements phpbb_notifications_me
|
||||
$this->db = $phpbb_container->get('dbal.conn');
|
||||
$this->user = $phpbb_container->get('user');
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a notification to the queue
|
||||
*
|
||||
* @param phpbb_notifications_type_interface $notification
|
||||
*/
|
||||
public function add_to_queue(phpbb_notifications_type_interface $notification)
|
||||
{
|
||||
$this->queue[] = $notification;
|
||||
}
|
||||
|
||||
/**
|
||||
* Basic run queue function.
|
||||
* Child methods should override this function if there are more efficient methods to mass-notification
|
||||
*/
|
||||
public function run_queue()
|
||||
{
|
||||
foreach ($this->queue as $notification)
|
||||
{
|
||||
$this->notify($notification);
|
||||
}
|
||||
|
||||
// Empty queue
|
||||
$this->queue = array();
|
||||
}
|
||||
}
|
||||
|
@ -21,4 +21,5 @@ if (!defined('IN_PHPBB'))
|
||||
*/
|
||||
interface phpbb_notifications_method_interface
|
||||
{
|
||||
public function notify($notification);
|
||||
}
|
||||
|
@ -33,25 +33,6 @@ class phpbb_notifications_service
|
||||
*/
|
||||
protected $users;
|
||||
|
||||
/**
|
||||
* Desired notifications
|
||||
* unique by (type, type_id, user_id, method)
|
||||
* if multiple methods are desired, multiple rows will exist.
|
||||
*
|
||||
* method of "none" will over-ride any other options
|
||||
*
|
||||
* type
|
||||
* type_id
|
||||
* user_id
|
||||
* method
|
||||
* none (will never receive notifications)
|
||||
* standard (listed in notifications window
|
||||
* popup?
|
||||
* email
|
||||
* jabber
|
||||
* sms?
|
||||
*/
|
||||
|
||||
public function __construct(ContainerBuilder $phpbb_container)
|
||||
{
|
||||
$this->phpbb_container = $phpbb_container;
|
||||
@ -140,6 +121,25 @@ class phpbb_notifications_service
|
||||
$notification_objects = $notification_methods = array();
|
||||
$new_rows = array();
|
||||
|
||||
/**
|
||||
* Desired notifications
|
||||
* unique by (type, type_id, user_id, method)
|
||||
* if multiple methods are desired, multiple rows will exist.
|
||||
*
|
||||
* method of "none" will over-ride any other options
|
||||
*
|
||||
* item_type
|
||||
* item_id
|
||||
* user_id
|
||||
* method
|
||||
* none (will never receive notifications)
|
||||
* standard (listed in notifications window
|
||||
* popup?
|
||||
* email
|
||||
* jabber
|
||||
* sms?
|
||||
*/
|
||||
|
||||
// find out which users want to receive this type of notification
|
||||
$sql = 'SELECT user_id FROM ' . USERS_TABLE . '
|
||||
WHERE ' . $this->db->sql_in_set('user_id', array(2));
|
||||
|
@ -106,6 +106,14 @@ if (!defined('EXT_TABLE'))
|
||||
{
|
||||
define('EXT_TABLE', $table_prefix . 'ext');
|
||||
}
|
||||
if (!defined('NOTIFICATIONS_TABLE'))
|
||||
{
|
||||
define('NOTIFICATIONS_TABLE', $table_prefix . 'notifications');
|
||||
}
|
||||
if (!defined('USER_NOTIFICATIONS_TABLE'))
|
||||
{
|
||||
define('USER_NOTIFICATIONS_TABLE', $table_prefix . 'user_notifications');
|
||||
}
|
||||
|
||||
$phpbb_class_loader_ext = new phpbb_class_loader('phpbb_ext_', $phpbb_root_path . 'ext/', ".$phpEx");
|
||||
$phpbb_class_loader_ext->register();
|
||||
@ -1097,6 +1105,45 @@ function database_update_info()
|
||||
'ext_name' => array('UNIQUE', 'ext_name'),
|
||||
),
|
||||
),
|
||||
NOTIFICATIONS_TABLE => array(
|
||||
'COLUMNS' => array(
|
||||
'item_type' => array('UINT', 0),
|
||||
'item_id' => array('UINT', 0),
|
||||
'user_id' => array('UINT', 0),
|
||||
'unread' => array('BOOL', 1),
|
||||
'time' => array('TIMESTAMP', 1),
|
||||
'data' => array('TEXT_UNI', ''),
|
||||
),
|
||||
'PRIMARY_KEY' => array(
|
||||
'item_type',
|
||||
'item_id',
|
||||
'user_id',
|
||||
),
|
||||
'KEYS' => array(
|
||||
'item_type' => array('INDEX', 'item_type'),
|
||||
'item_id' => array('INDEX', 'item_id'),
|
||||
'user_id' => array('INDEX', 'user_id'),
|
||||
'time' => array('INDEX', 'time'),
|
||||
),
|
||||
),
|
||||
USER_NOTIFICATIONS_TABLE => array(
|
||||
'COLUMNS' => array(
|
||||
'item_type' => array('UINT', 0),
|
||||
'item_id' => array('UINT', 0),
|
||||
'user_id' => array('UINT', 0),
|
||||
'method' => array('VCHAR:25', ''),
|
||||
),
|
||||
'PRIMARY_KEY' => array(
|
||||
'item_type',
|
||||
'item_id',
|
||||
'user_id',
|
||||
'method',
|
||||
),
|
||||
'KEYS' => array(
|
||||
'it' => array('INDEX', 'item_type'),
|
||||
'uid' => array('INDEX', 'user_id'),
|
||||
),
|
||||
),
|
||||
),
|
||||
'add_columns' => array(
|
||||
GROUPS_TABLE => array(
|
||||
|
Loading…
x
Reference in New Issue
Block a user