mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-28 14:18:52 +00:00
[ticket/11103] Add tables to the database updater and installer
PHPBB3-11103
This commit is contained in:
parent
32a966b21d
commit
b594635526
5 changed files with 140 additions and 19 deletions
|
@ -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(
|
$schema_data['phpbb_poll_options'] = array(
|
||||||
'COLUMNS' => array(
|
'COLUMNS' => array(
|
||||||
'poll_option_id' => array('TINT:4', 0),
|
'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(
|
$schema_data['phpbb_user_group'] = array(
|
||||||
'COLUMNS' => array(
|
'COLUMNS' => array(
|
||||||
'group_id' => array('UINT', 0),
|
'group_id' => array('UINT', 0),
|
||||||
|
|
|
@ -27,6 +27,13 @@ abstract class phpbb_notifications_method_base implements phpbb_notifications_me
|
||||||
protected $db;
|
protected $db;
|
||||||
protected $user;
|
protected $user;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Queue of messages to be sent
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $queue = array();
|
||||||
|
|
||||||
public function __construct(ContainerBuilder $phpbb_container, $data = array())
|
public function __construct(ContainerBuilder $phpbb_container, $data = array())
|
||||||
{
|
{
|
||||||
// phpBB Container
|
// phpBB Container
|
||||||
|
@ -36,4 +43,29 @@ abstract class phpbb_notifications_method_base implements phpbb_notifications_me
|
||||||
$this->db = $phpbb_container->get('dbal.conn');
|
$this->db = $phpbb_container->get('dbal.conn');
|
||||||
$this->user = $phpbb_container->get('user');
|
$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
|
interface phpbb_notifications_method_interface
|
||||||
{
|
{
|
||||||
|
public function notify($notification);
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,25 +33,6 @@ class phpbb_notifications_service
|
||||||
*/
|
*/
|
||||||
protected $users;
|
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)
|
public function __construct(ContainerBuilder $phpbb_container)
|
||||||
{
|
{
|
||||||
$this->phpbb_container = $phpbb_container;
|
$this->phpbb_container = $phpbb_container;
|
||||||
|
@ -140,6 +121,25 @@ class phpbb_notifications_service
|
||||||
$notification_objects = $notification_methods = array();
|
$notification_objects = $notification_methods = array();
|
||||||
$new_rows = 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
|
// find out which users want to receive this type of notification
|
||||||
$sql = 'SELECT user_id FROM ' . USERS_TABLE . '
|
$sql = 'SELECT user_id FROM ' . USERS_TABLE . '
|
||||||
WHERE ' . $this->db->sql_in_set('user_id', array(2));
|
WHERE ' . $this->db->sql_in_set('user_id', array(2));
|
||||||
|
|
|
@ -106,6 +106,14 @@ if (!defined('EXT_TABLE'))
|
||||||
{
|
{
|
||||||
define('EXT_TABLE', $table_prefix . 'ext');
|
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 = new phpbb_class_loader('phpbb_ext_', $phpbb_root_path . 'ext/', ".$phpEx");
|
||||||
$phpbb_class_loader_ext->register();
|
$phpbb_class_loader_ext->register();
|
||||||
|
@ -1097,6 +1105,45 @@ function database_update_info()
|
||||||
'ext_name' => array('UNIQUE', 'ext_name'),
|
'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(
|
'add_columns' => array(
|
||||||
GROUPS_TABLE => array(
|
GROUPS_TABLE => array(
|
||||||
|
|
Loading…
Add table
Reference in a new issue