From 3ed8cffad2de407df2f54712929d8a12956bc5e2 Mon Sep 17 00:00:00 2001 From: 3D-I Date: Fri, 30 Nov 2018 04:02:13 +0100 Subject: [PATCH] [ticket/15889] Add core.memberlist_modify_memberrow_sql PHPBB3-15889 --- phpBB/memberlist.php | 48 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 38 insertions(+), 10 deletions(-) diff --git a/phpBB/memberlist.php b/phpBB/memberlist.php index 977857da59..536006036c 100644 --- a/phpBB/memberlist.php +++ b/phpBB/memberlist.php @@ -1469,19 +1469,25 @@ switch ($mode) // Do the SQL thang if ($mode == 'group') { - $sql = "SELECT u.* - $sql_select - FROM " . USERS_TABLE . " u - $sql_from - WHERE " . $db->sql_in_set('u.user_id', $user_list) . " - $sql_where_data"; + $sql_array = array( + 'SELECT' => 'u.*' . $sql_select, + 'FROM' => array( + USERS_TABLE => 'u' . $sql_from + ), + 'WHERE' => $db->sql_in_set('u.user_id', $user_list) . $sql_where_data . '', + ); } else { - $sql = 'SELECT * - FROM ' . USERS_TABLE . ' - WHERE ' . $db->sql_in_set('user_id', $user_list); + $sql_array = array( + 'SELECT' => '*', + 'FROM' => array( + USERS_TABLE => 'u' + ), + 'WHERE' => $db->sql_in_set('u.user_id', $user_list), + ); } + $sql = $db->sql_build_query('SELECT', $sql_array); $result = $db->sql_query($sql); $id_cache = array(); @@ -1492,9 +1498,31 @@ switch ($mode) $id_cache[$row['user_id']] = $row; } + + /** + * Modify user data SQL before member row is created + * + * @event core.memberlist_modify_memberrow_sql + * @var string mode group + * @var string sql_select Additional select statement + * @var string sql_from Additional from statement + * @var array sql_array Array containing the main query + * @var array user_list Array containing list of users + * @var array id_cache Array of temp user ID data + * @since 3.2.6-RC1 + */ + $vars = array( + 'mode', + 'sql_select', + 'sql_from', + 'sql_array', + 'user_list', + 'id_cache' + ); + extract($phpbb_dispatcher->trigger_event('core.memberlist_modify_memberrow_sql', compact($vars))); + $db->sql_freeresult($result); - // Load custom profile fields if ($config['load_cpf_memberlist']) { // Grab all profile fields from users in id cache for later use - similar to the poster cache