diff options
| author | Nathan Guse <nathaniel.guse@gmail.com> | 2013-09-05 13:56:57 -0500 |
|---|---|---|
| committer | Nathan Guse <nathaniel.guse@gmail.com> | 2013-09-05 13:56:57 -0500 |
| commit | e8ab8fe0bc7d087fe3c9b5d2a3e545f228bb3096 (patch) | |
| tree | 6a053afa0a156204112b480707608cac60770ac5 /phpBB/phpbb/notification/method/messenger_base.php | |
| parent | abaa53b0b295358efcf591587485c01a027cd5cb (diff) | |
| parent | dd86e8d0ae0179cf50076cdb1a8020266b6432a5 (diff) | |
| download | forums-e8ab8fe0bc7d087fe3c9b5d2a3e545f228bb3096.tar forums-e8ab8fe0bc7d087fe3c9b5d2a3e545f228bb3096.tar.gz forums-e8ab8fe0bc7d087fe3c9b5d2a3e545f228bb3096.tar.bz2 forums-e8ab8fe0bc7d087fe3c9b5d2a3e545f228bb3096.tar.xz forums-e8ab8fe0bc7d087fe3c9b5d2a3e545f228bb3096.zip | |
Merge branch 'develop' of github.com:phpbb/phpbb3 into ticket/8323
# By Joas Schilling (613) and others
# Via Andreas Fischer (214) and others
* 'develop' of github.com:phpbb/phpbb3: (2494 commits)
[ticket/11825] Move schema_data.php into includes/ instead of phpbb/
[ticket/11215] Remove unnecessary comment
[ticket/11755] MySQL upgrader out of date
[prep-release-3.0.12] Update Changelog for 3.0.12-RC3 release.
[prep-release-3.0.12] Bumping version number for 3.0.12-RC3.
[ticket/11823] Set up nginx server to match PHP files with characters after .php
[ticket/11812] Fix empty define
[ticket/11818] Update Symfony dependencies to 2.3.*
[ticket/11791] Load adm/ events from styles/adm/event/
[ticket/11215] Fix helper_url_test.php tests
[ticket/11215] Add newline back to .htaccess, fix wording
[ticket/11215] Update comment in .htaccess
[ticket/11215] Uncomment rewrite rules in .htaccess
[ticket/11215] Make controller helper url() method use correct format
[ticket/11215] Add commented-out URL rewrite capability to .htaccess
[ticket/11821] Fix comma usage next to "You are receiving this notification".
[ticket/11769] Allow using 0 as poster name
[ticket/11769] Allow '0' as username
[ticket/11215] Use new URL structure for controllers
[ticket/11215] Everything appears to be working...
...
Conflicts:
phpBB/includes/functions_privmsgs.php
Diffstat (limited to 'phpBB/phpbb/notification/method/messenger_base.php')
| -rw-r--r-- | phpBB/phpbb/notification/method/messenger_base.php | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/phpBB/phpbb/notification/method/messenger_base.php b/phpBB/phpbb/notification/method/messenger_base.php new file mode 100644 index 0000000000..4966aa94bc --- /dev/null +++ b/phpBB/phpbb/notification/method/messenger_base.php @@ -0,0 +1,100 @@ +<?php +/** +* +* @package notifications +* @copyright (c) 2012 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ + +/** +* @ignore +*/ +if (!defined('IN_PHPBB')) +{ + exit; +} + +/** +* Abstract notification method handling email and jabber notifications +* using the phpBB messenger. +* +* @package notifications +*/ +abstract class phpbb_notification_method_messenger_base extends phpbb_notification_method_base +{ + /** + * Notify using phpBB messenger + * + * @param int $notify_method Notify method for messenger (e.g. NOTIFY_IM) + * @param string $template_dir_prefix Base directory to prepend to the email template name + * + * @return null + */ + protected function notify_using_messenger($notify_method, $template_dir_prefix = '') + { + if (empty($this->queue)) + { + return; + } + + // Load all users we want to notify (we need their email address) + $user_ids = $users = array(); + foreach ($this->queue as $notification) + { + $user_ids[] = $notification->user_id; + } + + // We do not send emails to banned users + if (!function_exists('phpbb_get_banned_user_ids')) + { + include($this->phpbb_root_path . 'includes/functions_user.' . $this->php_ext); + } + $banned_users = phpbb_get_banned_user_ids($user_ids); + + // Load all the users we need + $this->user_loader->load_users($user_ids); + + // Load the messenger + if (!class_exists('messenger')) + { + include($this->phpbb_root_path . 'includes/functions_messenger.' . $this->php_ext); + } + $messenger = new messenger(); + $board_url = generate_board_url(); + + // Time to go through the queue and send emails + foreach ($this->queue as $notification) + { + if ($notification->get_email_template() === false) + { + continue; + } + + $user = $this->user_loader->get_user($notification->user_id); + + if ($user['user_type'] == USER_IGNORE || in_array($notification->user_id, $banned_users)) + { + continue; + } + + $messenger->template($template_dir_prefix . $notification->get_email_template(), $user['user_lang']); + + $messenger->set_addresses($user); + + $messenger->assign_vars(array_merge(array( + 'USERNAME' => $user['username'], + + 'U_NOTIFICATION_SETTINGS' => generate_board_url() . '/ucp.' . $this->php_ext . '?i=ucp_notifications', + ), $notification->get_email_template_variables())); + + $messenger->send($notify_method); + } + + // Save the queue in the messenger class (has to be called or these emails could be lost?) + $messenger->save_queue(); + + // We're done, empty the queue + $this->empty_queue(); + } +} |
