Improved conversation view (messages) some filters and fixes in functions_messages
Former-commit-id: 13597c6556939bbe772d5ed749930e30e5377c47
This commit is contained in:
parent
d2649bb51c
commit
0dbabd3ba3
|
@ -339,14 +339,16 @@ function messages_get_message_sent(int $message_id)
|
||||||
/**
|
/**
|
||||||
* Counts private messages
|
* Counts private messages
|
||||||
*
|
*
|
||||||
* @param string $user Target user.
|
* @param string $user Target user.
|
||||||
* @param boolean $incl_read Whether or not to include read messages.
|
* @param boolean $incl_read Whether or not to include read messages.
|
||||||
|
* @param boolean $ignore_source Ignore source.
|
||||||
*
|
*
|
||||||
* @return integer The number of messages this user has
|
* @return integer The number of messages this user has
|
||||||
*/
|
*/
|
||||||
function messages_get_count(
|
function messages_get_count(
|
||||||
string $user='',
|
string $user='',
|
||||||
bool $incl_read=false
|
bool $incl_read=false,
|
||||||
|
bool $ignore_source=false
|
||||||
) {
|
) {
|
||||||
if (empty($user)) {
|
if (empty($user)) {
|
||||||
global $config;
|
global $config;
|
||||||
|
@ -361,10 +363,19 @@ function messages_get_count(
|
||||||
$read = 'where t.read is null';
|
$read = 'where t.read is null';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($ignore_source === true) {
|
||||||
|
$source_sql = '';
|
||||||
|
} else {
|
||||||
|
$source_sql = 'INNER JOIN tnotification_source ns
|
||||||
|
ON tm.id_source = ns.id
|
||||||
|
AND ns.enabled = 1';
|
||||||
|
}
|
||||||
|
|
||||||
$sql = sprintf(
|
$sql = sprintf(
|
||||||
'SELECT count(*) FROM (
|
'SELECT count(*) FROM (
|
||||||
SELECT DISTINCT tm.*, utimestamp_read > 0 as "read"
|
SELECT DISTINCT tm.*, utimestamp_read > 0 as "read"
|
||||||
FROM tmensajes tm
|
FROM tmensajes tm
|
||||||
|
%s
|
||||||
LEFT JOIN tnotification_user nu
|
LEFT JOIN tnotification_user nu
|
||||||
ON tm.id_mensaje=nu.id_mensaje
|
ON tm.id_mensaje=nu.id_mensaje
|
||||||
AND nu.id_user="%s"
|
AND nu.id_user="%s"
|
||||||
|
@ -377,6 +388,7 @@ function messages_get_count(
|
||||||
AND (nu.id_user="%s" OR (up.id_usuario="%s" AND ng.id_group=0))
|
AND (nu.id_user="%s" OR (up.id_usuario="%s" AND ng.id_group=0))
|
||||||
) t
|
) t
|
||||||
%s',
|
%s',
|
||||||
|
$source_sql,
|
||||||
$user,
|
$user,
|
||||||
$user,
|
$user,
|
||||||
$user,
|
$user,
|
||||||
|
|
|
@ -106,34 +106,69 @@ if ($read_message) {
|
||||||
$dst_name = $message['id_usuario_destino'];
|
$dst_name = $message['id_usuario_destino'];
|
||||||
}
|
}
|
||||||
|
|
||||||
$table = new stdClass();
|
// Parse message chain.
|
||||||
$table->width = '100%';
|
?>
|
||||||
$table->class = 'databox filters';
|
|
||||||
$table->data = [];
|
|
||||||
|
|
||||||
$table->data[0][0] = __('Sender');
|
<h1>Conversation with <?php echo $user_name; ?></h1>
|
||||||
$table->data[0][1] = $user_name.' '.__('at').' '.ui_print_timestamp(
|
<h2>Subject: <?php echo $message['subject']; ?></h2>
|
||||||
$message['timestamp'],
|
|
||||||
true,
|
|
||||||
['prominent' => 'timestamp']
|
|
||||||
);
|
|
||||||
|
|
||||||
$table->data[1][0] = __('Destination');
|
<?php
|
||||||
$table->data[1][1] = $dst_name;
|
$conversation = [];
|
||||||
|
$target_str = $message['mensaje'];
|
||||||
|
|
||||||
|
while (preg_match_all(
|
||||||
|
'/(.*)On(.*)wrote:(.*)/',
|
||||||
|
$target_str,
|
||||||
|
$decoded,
|
||||||
|
PREG_PATTERN_ORDER
|
||||||
|
) !== false && empty($target_str) !== true) {
|
||||||
|
if (empty($decoded[2]) !== true) {
|
||||||
|
array_push(
|
||||||
|
$conversation,
|
||||||
|
[
|
||||||
|
'message' => array_pop($decoded)[0],
|
||||||
|
'date' => array_pop($decoded)[0],
|
||||||
|
]
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
array_push(
|
||||||
|
$conversation,
|
||||||
|
['message' => $target_str]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$target_str = $decoded[1][0];
|
||||||
|
}
|
||||||
|
|
||||||
|
ui_require_css_file('message_edit');
|
||||||
|
foreach ($conversation as $row) {
|
||||||
|
$date = $row['date'];
|
||||||
|
|
||||||
|
if ($date === null) {
|
||||||
|
$date = date(
|
||||||
|
$config['date_format'],
|
||||||
|
$message['timestamp']
|
||||||
|
).' '.$user_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
$order = [
|
||||||
|
"\r\n",
|
||||||
|
"\n",
|
||||||
|
"\r",
|
||||||
|
];
|
||||||
|
$replace = '<br />';
|
||||||
|
$parsed_message = str_replace(
|
||||||
|
$order,
|
||||||
|
$replace,
|
||||||
|
io_safe_output($row['message'])
|
||||||
|
);
|
||||||
|
|
||||||
|
echo '<div class="container">';
|
||||||
|
echo ' <p>'.$parsed_message.'</p>';
|
||||||
|
echo '<span class="time-left">'.$date.'</span>';
|
||||||
|
echo '</div>';
|
||||||
|
}
|
||||||
|
|
||||||
$table->data[2][0] = __('Subject');
|
|
||||||
$table->data[2][1] = html_print_input_text_extended(
|
|
||||||
'subject',
|
|
||||||
$message['subject'],
|
|
||||||
'text-subject',
|
|
||||||
'',
|
|
||||||
50,
|
|
||||||
70,
|
|
||||||
true,
|
|
||||||
false,
|
|
||||||
'',
|
|
||||||
'readonly'
|
|
||||||
);
|
|
||||||
|
|
||||||
$order = [
|
$order = [
|
||||||
"\r\n",
|
"\r\n",
|
||||||
|
@ -143,16 +178,6 @@ if ($read_message) {
|
||||||
$replace = '<br />';
|
$replace = '<br />';
|
||||||
$parsed_message = str_replace($order, $replace, $message['mensaje']);
|
$parsed_message = str_replace($order, $replace, $message['mensaje']);
|
||||||
|
|
||||||
$table->data[3][0] = __('Message');
|
|
||||||
$table->data[3][1] = html_print_textarea(
|
|
||||||
'message',
|
|
||||||
15,
|
|
||||||
255,
|
|
||||||
$message['mensaje'],
|
|
||||||
'readonly',
|
|
||||||
true
|
|
||||||
);
|
|
||||||
|
|
||||||
// Prevent RE: RE: RE:.
|
// Prevent RE: RE: RE:.
|
||||||
if (strstr($message['subject'], 'RE:')) {
|
if (strstr($message['subject'], 'RE:')) {
|
||||||
$new_subj = $message['subject'];
|
$new_subj = $message['subject'];
|
||||||
|
@ -166,8 +191,8 @@ if ($read_message) {
|
||||||
$message['timestamp']
|
$message['timestamp']
|
||||||
).' '.$user_name.' '.__('wrote').":\n\n".$message['mensaje'];
|
).' '.$user_name.' '.__('wrote').":\n\n".$message['mensaje'];
|
||||||
|
|
||||||
|
|
||||||
echo '<form id="delete_message" method="post" action="index.php?sec=message_list&sec2=operation/messages/message_list&show_sent=1&delete_message=1&id='.$message_id.'">';
|
echo '<form id="delete_message" method="post" action="index.php?sec=message_list&sec2=operation/messages/message_list&show_sent=1&delete_message=1&id='.$message_id.'">';
|
||||||
html_print_table($table);
|
|
||||||
echo '</form>';
|
echo '</form>';
|
||||||
|
|
||||||
echo '<form id="reply_message" method="post" action="index.php?sec=message_list&sec2=operation/messages/message_edit&new_msg=1&reply=1">';
|
echo '<form id="reply_message" method="post" action="index.php?sec=message_list&sec2=operation/messages/message_edit&new_msg=1&reply=1">';
|
||||||
|
@ -179,7 +204,7 @@ if ($read_message) {
|
||||||
|
|
||||||
echo "<div class= 'action-buttons' style=' width:".$table->width."'>";
|
echo "<div class= 'action-buttons' style=' width:".$table->width."'>";
|
||||||
html_print_submit_button(
|
html_print_submit_button(
|
||||||
__('Delete'),
|
__('Delete conversation'),
|
||||||
'delete_btn',
|
'delete_btn',
|
||||||
false,
|
false,
|
||||||
'form="delete_message" class="sub delete"'
|
'form="delete_message" class="sub delete"'
|
||||||
|
|
|
@ -115,13 +115,13 @@ if ($show_sent) {
|
||||||
$messages = messages_get_overview_sent('', 'DESC');
|
$messages = messages_get_overview_sent('', 'DESC');
|
||||||
} else {
|
} else {
|
||||||
// Messages received.
|
// Messages received.
|
||||||
$num_messages = messages_get_count($config['id_user'], true);
|
$num_messages = messages_get_count($config['id_user'], true, true);
|
||||||
if ($num_messages > 0 && !is_ajax()) {
|
if ($num_messages > 0 && !is_ajax()) {
|
||||||
$unread_messages = messages_get_count($config['id_user']);
|
$unread_messages = messages_get_count($config['id_user'], false, true);
|
||||||
echo '<p>'.__('You have').' <b>'.$unread_messages.'</b> '.__('unread message(s)').'.</p>';
|
echo '<p>'.__('You have').' <b>'.$unread_messages.'</b> '.__('unread message(s)').'.</p>';
|
||||||
$messages = messages_get_overview();
|
$messages = messages_get_overview();
|
||||||
} else {
|
} else {
|
||||||
$messages = messages_get_overview('status', 'ASC', false);
|
$messages = messages_get_overview('status', 'ASC');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue