From b156b22f35eab64a9780167bfe8d515f2e2a8480 Mon Sep 17 00:00:00 2001 From: Andreas Fischer Date: Fri, 29 Mar 2013 16:44:29 +0100 Subject: [PATCH] [ticket/11403] Use an instance of phpbb_db_sql_insert_buffer instead. PHPBB3-11403 --- phpBB/includes/notification/manager.php | 19 +++++-------------- 1 file 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);