diff options
| author | David King <imkingdavid@gmail.com> | 2013-02-28 18:53:23 -0500 |
|---|---|---|
| committer | David King <imkingdavid@gmail.com> | 2013-02-28 18:53:23 -0500 |
| commit | 8200509c7940166d560c309c35b2ade2e4952f75 (patch) | |
| tree | 5f4e89b1fe677520a4310754860a9c85511bb2b0 /phpBB/includes/db/migration/data/310 | |
| parent | 1eead4da97635df35bfcdd6b1ce7ed71d9851d41 (diff) | |
| parent | ecb9f44bf11756e1072354bfd658edfd4c01f74a (diff) | |
| download | forums-8200509c7940166d560c309c35b2ade2e4952f75.tar forums-8200509c7940166d560c309c35b2ade2e4952f75.tar.gz forums-8200509c7940166d560c309c35b2ade2e4952f75.tar.bz2 forums-8200509c7940166d560c309c35b2ade2e4952f75.tar.xz forums-8200509c7940166d560c309c35b2ade2e4952f75.zip | |
Merge remote-tracking branch 'EXreaction/ticket/11103' into develop
# By Nathan Guse (169) and others
# Via Nathan Guse (29) and Nathaniel Guse (7)
* EXreaction/ticket/11103: (217 commits)
[ticket/11103] Revert whitespace changes
[ticket/11103] Few more minor language things
[ticket/11103] Don't call generate_board_url many times
[ticket/11103] Case time in queries as an int
[ticket/11103] Fix effectively installed check
[ticket/11103] Remove padding from notifications for now.
[ticket/11103] Notifications Migration file
[ticket/11103] Restore new/unread messages info/link in header (properly)
[ticket/11103] Add newlines to bottom of css file
[ticket/11103] HTML encode double arrow character
[ticket/11103] Add Notification Settings link in flyout menu
[ticket/11103] Restore new/unread messages info/link in header
[ticket/11103] Update styling of UCP Notifications in subsilver2
[ticket/11103] Update styling of UCP Notifications in prosilver
[ticket/11103] Update styling of subsilver2 notification modal
[ticket/11103] Update styling of prosilver notification modal
[ticket/11103] Remove title attribute from notification link
[ticket/11103] Mark/Unmark All buttons
[ticket/11103] Make the number of notifications strong if > 0
[ticket/11103] Rounded Corners and antialiased pointer
...
Diffstat (limited to 'phpBB/includes/db/migration/data/310')
| -rw-r--r-- | phpBB/includes/db/migration/data/310/notifications.php | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/phpBB/includes/db/migration/data/310/notifications.php b/phpBB/includes/db/migration/data/310/notifications.php new file mode 100644 index 0000000000..82bfd4cb2d --- /dev/null +++ b/phpBB/includes/db/migration/data/310/notifications.php @@ -0,0 +1,160 @@ +<?php +/** +* +* @package migration +* @copyright (c) 2012 phpBB Group +* @license http://opensource.org/licenses/gpl-license.php GNU Public License v2 +* +*/ + +class phpbb_db_migration_data_310_notifications extends phpbb_db_migration +{ + public function effectively_installed() + { + return $this->db_tools->sql_table_exists($this->table_prefix . 'notifications'); + } + + static public function depends_on() + { + return array('phpbb_db_migration_data_310_dev'); + } + + public function update_schema() + { + return array( + 'add_tables' => array( + $this->table_prefix . 'notification_types' => array( + 'COLUMNS' => array( + 'notification_type' => array('VCHAR:255', ''), + 'notification_type_enabled' => array('BOOL', 1), + ), + 'PRIMARY_KEY' => array('notification_type', 'notification_type_enabled'), + ), + $this->table_prefix . 'notifications' => array( + 'COLUMNS' => array( + 'notification_id' => array('UINT', NULL, 'auto_increment'), + 'item_type' => array('VCHAR:255', ''), + 'item_id' => array('UINT', 0), + 'item_parent_id' => array('UINT', 0), + 'user_id' => array('UINT', 0), + 'notification_read' => array('BOOL', 0), + 'notification_time' => array('TIMESTAMP', 1), + 'notification_data' => array('TEXT_UNI', ''), + ), + 'PRIMARY_KEY' => 'notification_id', + 'KEYS' => array( + 'item_ident' => array('INDEX', array('item_type', 'item_id')), + 'user' => array('INDEX', array('user_id', 'notification_read')), + ), + ), + $this->table_prefix . 'user_notifications' => array( + 'COLUMNS' => array( + 'item_type' => array('VCHAR:255', ''), + 'item_id' => array('UINT', 0), + 'user_id' => array('UINT', 0), + 'method' => array('VCHAR:255', ''), + 'notify' => array('BOOL', 1), + ), + ), + ), + ); + } + + public function revert_schema() + { + return array( + 'drop_tables' => array( + $this->table_prefix . 'notification_types', + $this->table_prefix . 'notifications', + $this->table_prefix . 'user_notifications', + ), + ); + } + + public function update_data() + { + return array( + array('module.add', array( + 'ucp', + 'UCP_MAIN', + array( + 'module_basename' => 'ucp_notifications', + 'modes' => array('notification_list'), + ), + )), + array('module.add', array( + 'ucp', + 'UCP_PREFS', + array( + 'module_basename' => 'ucp_notifications', + 'modes' => array('notification_options'), + ), + )), + array('config.add', array('load_notifications', 1)), + array('custom', array(array($this, 'convert_notifications'))), + ); + } + + public function convert_notifications() + { + $convert_notifications = array( + array( + 'check' => ($this->config['allow_topic_notify']), + 'item_type' => 'post', + ), + array( + 'check' => ($this->config['allow_forum_notify']), + 'item_type' => 'topic', + ), + array( + 'check' => ($this->config['allow_bookmarks']), + 'item_type' => 'bookmark', + ), + array( + 'check' => ($this->config['allow_privmsg']), + 'item_type' => 'pm', + ), + ); + + foreach ($convert_notifications as $convert_data) + { + if ($convert_data['check']) + { + $sql = 'SELECT user_id, user_notify_type + FROM ' . USERS_TABLE . ' + WHERE user_notify = 1'; + $result = $this->db->sql_query($sql); + while ($row = $this->db->sql_fetchrow($result)) + { + $this->sql_query('INSERT INTO ' . $this->table_prefix . 'user_notifications ' . $this->db->sql_build_array('INSERT', array( + 'item_type' => $convert_data['item_type'], + 'item_id' => 0, + 'user_id' => $row['user_id'], + 'method' => '', + ))); + + if ($row['user_notify_type'] == NOTIFY_EMAIL || $row['user_notify_type'] == NOTIFY_BOTH) + { + $this->sql_query('INSERT INTO ' . $this->table_prefix . 'user_notifications ' . $this->db->sql_build_array('INSERT', array( + 'item_type' => $convert_data['item_type'], + 'item_id' => 0, + 'user_id' => $row['user_id'], + 'method' => 'email', + ))); + } + + if ($row['user_notify_type'] == NOTIFY_IM || $row['user_notify_type'] == NOTIFY_BOTH) + { + $this->sql_query('INSERT INTO ' . $this->table_prefix . 'user_notifications ' . $this->db->sql_build_array('INSERT', array( + 'item_type' => $convert_data['item_type'], + 'item_id' => 0, + 'user_id' => $row['user_id'], + 'method' => 'jabber', + ))); + } + } + $this->db->sql_freeresult($result); + } + } + } +} |
