aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDark❶ <dark-1@users.noreply.github.com>2019-07-28 17:51:17 +0530
committerDark❶ <dark-1@users.noreply.github.com>2019-07-28 17:51:17 +0530
commit5cd0aad3c6329bcb67de3b2513aa61d397381e1f (patch)
tree78475a379926416000dbc55593b0029395387f52
parentae62bc46428948cdfbb735c8b9b566d02c0f78f0 (diff)
downloadforums-5cd0aad3c6329bcb67de3b2513aa61d397381e1f.tar
forums-5cd0aad3c6329bcb67de3b2513aa61d397381e1f.tar.gz
forums-5cd0aad3c6329bcb67de3b2513aa61d397381e1f.tar.bz2
forums-5cd0aad3c6329bcb67de3b2513aa61d397381e1f.tar.xz
forums-5cd0aad3c6329bcb67de3b2513aa61d397381e1f.zip
[ticket/16111] Add core.message_history_modify_sql_ary
PHPBB3-16111
-rw-r--r--phpBB/includes/functions_privmsgs.php39
1 files changed, 33 insertions, 6 deletions
diff --git a/phpBB/includes/functions_privmsgs.php b/phpBB/includes/functions_privmsgs.php
index baadf5bdee..fe2308ec29 100644
--- a/phpBB/includes/functions_privmsgs.php
+++ b/phpBB/includes/functions_privmsgs.php
@@ -1985,9 +1985,16 @@ function message_history($msg_id, $user_id, $message_row, $folder, $in_post_mode
$recipients = array_unique($recipients);
// Get History Messages (could be newer)
- $sql = 'SELECT t.*, p.*, u.*
- FROM ' . PRIVMSGS_TABLE . ' p, ' . PRIVMSGS_TO_TABLE . ' t, ' . USERS_TABLE . ' u
- WHERE t.msg_id = p.msg_id
+ $sql_array = array(
+ 'SELECT' => 'SELECT t.*, p.*, u.*',
+ 'FROM' => array(
+ PRIVMSGS_TABLE => 'p',
+ PRIVMSGS_TO_TABLE => 't',
+ USERS_TABLE => 'u'
+ )
+ );
+
+ $sql_where = 't.msg_id = p.msg_id
AND p.author_id = u.user_id
AND t.folder_id NOT IN (' . PRIVMSGS_NO_BOX . ', ' . PRIVMSGS_HOLD_BOX . ')
AND ' . $db->sql_in_set('t.author_id', $recipients, false, true) . "
@@ -1998,14 +2005,34 @@ function message_history($msg_id, $user_id, $message_row, $folder, $in_post_mode
if (!$message_row['root_level'])
{
- $sql .= " AND (p.root_level = $msg_id OR (p.root_level = 0 AND p.msg_id = $msg_id))";
+ $sql_where .= " AND (p.root_level = $msg_id OR (p.root_level = 0 AND p.msg_id = $msg_id))";
}
else
{
- $sql .= " AND (p.root_level = " . $message_row['root_level'] . ' OR p.msg_id = ' . $message_row['root_level'] . ')';
+ $sql_where .= " AND (p.root_level = " . $message_row['root_level'] . ' OR p.msg_id = ' . $message_row['root_level'] . ')';
}
- $sql .= ' ORDER BY p.message_time DESC';
+ $sql_ary = array(
+ 'SELECT' => $sql_array['SELECT'],
+ 'FROM' => $sql_array['FROM'],
+ 'LEFT_JOIN' => array(),
+
+ 'WHERE' => $sql_where,
+
+ 'ORDER_BY' => 'p.message_time DESC',
+ );
+
+ /**
+ * Event to modify the SQL query before the message history in private message is queried
+ *
+ * @event core.message_history_modify_sql_ary
+ * @var array sql_ary The SQL array to get the data of the message history in private message
+ * @since 3.2.8-RC1
+ */
+ $vars = array('sql_ary');
+ extract($phpbb_dispatcher->trigger_event('core.message_history_modify_sql_ary', compact($vars)));
+
+ $sql = $db->sql_build_query('SELECT', $sql_ary);
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);