diff options
| author | Joas Schilling <nickvergessen@gmx.de> | 2013-03-06 07:35:47 +0100 |
|---|---|---|
| committer | Joas Schilling <nickvergessen@gmx.de> | 2013-03-06 07:35:47 +0100 |
| commit | 0bbde4c12291de7c2effdfbce2f87b212190799e (patch) | |
| tree | 917287070d7cabc4e419939033fa6133e028627b /phpBB/includes/functions_privmsgs.php | |
| parent | 001572f76425a1fdb6621d26dae875438152cc97 (diff) | |
| parent | 597c16a9363858e343480f70b1852bce2bba5ca3 (diff) | |
| download | forums-0bbde4c12291de7c2effdfbce2f87b212190799e.tar forums-0bbde4c12291de7c2effdfbce2f87b212190799e.tar.gz forums-0bbde4c12291de7c2effdfbce2f87b212190799e.tar.bz2 forums-0bbde4c12291de7c2effdfbce2f87b212190799e.tar.xz forums-0bbde4c12291de7c2effdfbce2f87b212190799e.zip | |
Merge branch 'develop' of https://github.com/phpbb/phpbb3 into ticket/11166
* 'develop' of https://github.com/phpbb/phpbb3: (799 commits)
[ticket/11402] Fix undefined index in post/topic_in_queue
[ticket/11400] If email is disabled, disable it for notifications
[ticket/11398] Correctly call permission_set method in permission tool
[ticket/11394] Relax Migration Tools
[ticket/11386] Fix missing ;
[ticket/10714] Get log from container in install, update and download/file
[feature/avatars] Update module_auth of ucp module and fix small issues
[ticket/11396] Rename insert_migration to set_migration_state
[ticket/11395] Prevent acp_modules::get_modules_info from reincluding files
[ticket/11393] Give more information on database updater
[ticket/11386] Send list of migrations instead of using load_migrations
[feature/avatars] Add migrations data file for avatars
[feature/avatars] Reduce module auth of ucp avatar settings
[ticket/10714] Use $phpbb_adm_relative_path instead of hardcoded adm/
[ticket/10714] Logs are disabled for this page call only
[ticket/6723] Show info that message has been deleted before delivery
[ticket/11385] Fix issue with migration module tool not getting extension module info
[ticket/11386] Fix failing tests from constructor changes
[ticket/11386] Fix circular reference error & serialize error
[ticket/11386] Remove tests that check if finder cache is working
...
Conflicts:
phpBB/assets/javascript/core.js
Diffstat (limited to 'phpBB/includes/functions_privmsgs.php')
| -rw-r--r-- | phpBB/includes/functions_privmsgs.php | 116 |
1 files changed, 30 insertions, 86 deletions
diff --git a/phpBB/includes/functions_privmsgs.php b/phpBB/includes/functions_privmsgs.php index ba939d490e..14278a2529 100644 --- a/phpBB/includes/functions_privmsgs.php +++ b/phpBB/includes/functions_privmsgs.php @@ -876,7 +876,11 @@ function update_unread_status($unread, $msg_id, $user_id, $folder_id) return; } - global $db, $user; + global $db, $user, $phpbb_container; + + $phpbb_notifications = $phpbb_container->get('notification_manager'); + + $phpbb_notifications->mark_notifications_read('pm', $msg_id, $user_id); $sql = 'UPDATE ' . PRIVMSGS_TO_TABLE . " SET pm_unread = 0 @@ -981,7 +985,7 @@ function handle_mark_actions($user_id, $mark_action) */ function delete_pm($user_id, $msg_ids, $folder_id) { - global $db, $user, $phpbb_root_path, $phpEx; + global $db, $user, $phpbb_root_path, $phpEx, $phpbb_container; $user_id = (int) $user_id; $folder_id = (int) $folder_id; @@ -1093,6 +1097,10 @@ function delete_pm($user_id, $msg_ids, $folder_id) $user->data['user_unread_privmsg'] -= $num_unread; } + $phpbb_notifications = $phpbb_container->get('notification_manager'); + + $phpbb_notifications->delete_notifications('pm', array_keys($delete_rows)); + // Now we have to check which messages we can delete completely $sql = 'SELECT msg_id FROM ' . PRIVMSGS_TO_TABLE . ' @@ -1157,7 +1165,7 @@ function phpbb_delete_user_pms($user_id) */ function phpbb_delete_users_pms($user_ids) { - global $db, $user, $phpbb_root_path, $phpEx; + global $db, $user, $phpbb_root_path, $phpEx, $phpbb_container; $user_id_sql = $db->sql_in_set('user_id', $user_ids); $author_id_sql = $db->sql_in_set('author_id', $user_ids); @@ -1202,6 +1210,8 @@ function phpbb_delete_users_pms($user_ids) $db->sql_transaction('begin'); + $phpbb_notifications = $phpbb_container->get('notification_manager'); + if (!empty($undelivered_msg)) { // A pm is delivered, if for any recipient the message was moved @@ -1270,6 +1280,8 @@ function phpbb_delete_users_pms($user_ids) WHERE folder_id = ' . PRIVMSGS_NO_BOX . ' AND ' . $db->sql_in_set('msg_id', $delivered_msg); $db->sql_query($sql); + + $phpbb_notifications->delete_notifications('pm', $delivered_msg); } if (!empty($undelivered_msg)) @@ -1281,6 +1293,8 @@ function phpbb_delete_users_pms($user_ids) $sql = 'DELETE FROM ' . PRIVMSGS_TABLE . ' WHERE ' . $db->sql_in_set('msg_id', $undelivered_msg); $db->sql_query($sql); + + $phpbb_notifications->delete_notifications('pm', $undelivered_msg); } } @@ -1323,6 +1337,8 @@ function phpbb_delete_users_pms($user_ids) $sql = 'DELETE FROM ' . PRIVMSGS_TABLE . ' WHERE ' . $db->sql_in_set('msg_id', $delete_ids); $db->sql_query($sql); + + $phpbb_notifications->delete_notifications('pm', $delete_ids); } } @@ -1559,7 +1575,7 @@ function get_folder_status($folder_id, $folder) */ function submit_pm($mode, $subject, &$data, $put_in_outbox = true) { - global $db, $auth, $config, $phpEx, $template, $user, $phpbb_root_path; + global $db, $auth, $config, $phpEx, $template, $user, $phpbb_root_path, $phpbb_container; // We do not handle erasing pms here if ($mode == 'delete') @@ -1859,95 +1875,23 @@ function submit_pm($mode, $subject, &$data, $put_in_outbox = true) $db->sql_transaction('commit'); // Send Notifications - if ($mode != 'edit') - { - pm_notification($mode, $data['from_username'], $recipients, $subject, $data['message'], $data['msg_id']); - } - - return $data['msg_id']; -} - -/** -* PM Notification -*/ -function pm_notification($mode, $author, $recipients, $subject, $message, $msg_id) -{ - global $db, $user, $config, $phpbb_root_path, $phpEx, $auth; - - $subject = censor_text($subject); - - // Exclude guests, current user and banned users from notifications - unset($recipients[ANONYMOUS], $recipients[$user->data['user_id']]); - - if (!sizeof($recipients)) - { - return; - } - - if (!function_exists('phpbb_get_banned_user_ids')) - { - include($phpbb_root_path . 'includes/functions_user.' . $phpEx); - } - $banned_users = phpbb_get_banned_user_ids(array_keys($recipients)); - $recipients = array_diff(array_keys($recipients), $banned_users); - - if (!sizeof($recipients)) - { - return; - } + $pm_data = array_merge($data, array( + 'message_subject' => $subject, + 'recipients' => $recipients, + )); - $sql = 'SELECT user_id, username, user_email, user_lang, user_notify_pm, user_notify_type, user_jabber - FROM ' . USERS_TABLE . ' - WHERE ' . $db->sql_in_set('user_id', $recipients); - $result = $db->sql_query($sql); + $phpbb_notifications = $phpbb_container->get('notification_manager'); - $msg_list_ary = array(); - while ($row = $db->sql_fetchrow($result)) + if ($mode == 'edit') { - if ($row['user_notify_pm'] == 1 && trim($row['user_email'])) - { - $msg_list_ary[] = array( - 'method' => $row['user_notify_type'], - 'email' => $row['user_email'], - 'jabber' => $row['user_jabber'], - 'name' => $row['username'], - 'lang' => $row['user_lang'] - ); - } + $phpbb_notifications->update_notifications('pm', $pm_data); } - $db->sql_freeresult($result); - - if (!sizeof($msg_list_ary)) + else { - return; + $phpbb_notifications->add_notifications('pm', $pm_data); } - include_once($phpbb_root_path . 'includes/functions_messenger.' . $phpEx); - $messenger = new messenger(); - - foreach ($msg_list_ary as $pos => $addr) - { - $messenger->template('privmsg_notify', $addr['lang']); - - $messenger->to($addr['email'], $addr['name']); - $messenger->im($addr['jabber'], $addr['name']); - - $messenger->assign_vars(array( - 'SUBJECT' => htmlspecialchars_decode($subject), - 'AUTHOR_NAME' => htmlspecialchars_decode($author), - 'USERNAME' => htmlspecialchars_decode($addr['name']), - - 'U_INBOX' => generate_board_url() . "/ucp.$phpEx?i=pm&folder=inbox", - 'U_VIEW_MESSAGE' => generate_board_url() . "/ucp.$phpEx?i=pm&mode=view&p=$msg_id", - )); - - $messenger->send($addr['method']); - } - unset($msg_list_ary); - - $messenger->save_queue(); - - unset($messenger); + return $data['msg_id']; } /** |
