aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Fischer <bantu@phpbb.com>2013-03-29 16:44:29 +0100
committerAndreas Fischer <bantu@phpbb.com>2013-03-29 16:53:50 +0100
commitb156b22f35eab64a9780167bfe8d515f2e2a8480 (patch)
treebfe516428772853033370a739aa151a5becee649
parent6910d441546f5213eab11b2329b49e5a6626ad67 (diff)
downloadforums-b156b22f35eab64a9780167bfe8d515f2e2a8480.tar
forums-b156b22f35eab64a9780167bfe8d515f2e2a8480.tar.gz
forums-b156b22f35eab64a9780167bfe8d515f2e2a8480.tar.bz2
forums-b156b22f35eab64a9780167bfe8d515f2e2a8480.tar.xz
forums-b156b22f35eab64a9780167bfe8d515f2e2a8480.zip
[ticket/11403] Use an instance of phpbb_db_sql_insert_buffer instead.
PHPBB3-11403
-rw-r--r--phpBB/includes/notification/manager.php19
1 files changed, 5 insertions, 14 deletions
diff --git a/phpBB/includes/notification/manager.php b/phpBB/includes/notification/manager.php
index ee81cc0f7c..9eceeb753a 100644
--- a/phpBB/includes/notification/manager.php
+++ b/phpBB/includes/notification/manager.php
@@ -390,7 +390,6 @@ class phpbb_notification_manager
$user_ids = array();
$notification_objects = $notification_methods = array();
- $new_rows = array();
// Never send notifications to the anonymous user!
unset($notify_users[ANONYMOUS]);
@@ -420,6 +419,8 @@ class phpbb_notification_manager
$pre_create_data = $notification->pre_create_insert_array($data, $notify_users);
unset($notification);
+ $insert_buffer = new phpbb_db_sql_insert_buffer($this->db, $this->notifications_table);
+
// Go through each user so we can insert a row in the DB and then notify them by their desired means
foreach ($notify_users as $user => $methods)
{
@@ -427,15 +428,8 @@ class phpbb_notification_manager
$notification->user_id = (int) $user;
- // Store the creation array in our new rows that will be inserted later
- $new_rows[] = $notification->create_insert_array($data, $pre_create_data);
-
- // Flush to DB if $new_rows is big enough.
- if (sizeof($new_rows) > 500)
- {
- $this->db->sql_multi_insert($this->notifications_table, $new_rows);
- $new_rows = array();
- }
+ // Insert notification row using buffer.
+ $insert_buffer->insert($notification->create_insert_array($data, $pre_create_data));
// Users are needed to send notifications
$user_ids = array_merge($user_ids, $notification->users_to_query());
@@ -455,10 +449,7 @@ class phpbb_notification_manager
}
}
- if (!empty($new_rows))
- {
- $this->db->sql_multi_insert($this->notifications_table, $new_rows);
- }
+ $insert_buffer->flush();
// We need to load all of the users to send notifications
$this->user_loader->load_users($user_ids);