1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-05-10 01:25:33 +02:00

[ticket/11103] Add tables to the database updater and installer

PHPBB3-11103
This commit is contained in:
Nathan Guse 2012-09-08 13:09:34 -05:00
parent 32a966b21d
commit b594635526
5 changed files with 140 additions and 19 deletions

View File

@ -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),

View File

@ -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();
}
}

View File

@ -21,4 +21,5 @@ if (!defined('IN_PHPBB'))
*/
interface phpbb_notifications_method_interface
{
public function notify($notification);
}

View File

@ -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));

View File

@ -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(