|
@@ -49,20 +49,22 @@ class MessageManager
|
|
|
/**
|
|
|
* Gets the total number of messages, used for the inbox sortable table.
|
|
|
*
|
|
|
- * @param bool $unread
|
|
|
+ * @param array $params
|
|
|
*
|
|
|
* @return int
|
|
|
*/
|
|
|
- public static function getNumberOfMessages($unread = false)
|
|
|
+ public static function getNumberOfMessages($params = [])
|
|
|
{
|
|
|
- $table = Database::get_main_table(TABLE_MESSAGE);
|
|
|
- if ($unread) {
|
|
|
- $condition_msg_status = ' msg_status = '.MESSAGE_STATUS_UNREAD.' ';
|
|
|
- } else {
|
|
|
- $condition_msg_status = ' msg_status IN('.MESSAGE_STATUS_NEW.','.MESSAGE_STATUS_UNREAD.') ';
|
|
|
+ $messageStatus = [MESSAGE_STATUS_NEW, MESSAGE_STATUS_UNREAD];
|
|
|
+ if (isset($params['message_status']) && !empty($params['message_status'])) {
|
|
|
+ $messageStatus = $params['message_status'];
|
|
|
}
|
|
|
+ $messageStatus = array_map('intval', $messageStatus);
|
|
|
+ $messageStatusCondition = implode("','", $messageStatus);
|
|
|
+
|
|
|
+ $table = Database::get_main_table(TABLE_MESSAGE);
|
|
|
+ $keyword = isset($params['keyword']) ? $params['keyword'] : '';
|
|
|
|
|
|
- $keyword = Session::read('message_search_keyword');
|
|
|
$keywordCondition = '';
|
|
|
if (!empty($keyword)) {
|
|
|
$keyword = Database::escape_string($keyword);
|
|
@@ -71,8 +73,9 @@ class MessageManager
|
|
|
|
|
|
$sql = "SELECT COUNT(id) as number_messages
|
|
|
FROM $table
|
|
|
- WHERE $condition_msg_status AND
|
|
|
- user_receiver_id=".api_get_user_id()."
|
|
|
+ WHERE
|
|
|
+ msg_status IN ('$messageStatusCondition') AND
|
|
|
+ user_receiver_id = ".api_get_user_id()."
|
|
|
$keywordCondition
|
|
|
";
|
|
|
$result = Database::query($sql);
|
|
@@ -89,23 +92,23 @@ class MessageManager
|
|
|
* Gets information about some messages, used for the inbox sortable table.
|
|
|
*
|
|
|
* @param int $from
|
|
|
- * @param int $number_of_items
|
|
|
+ * @param int $numberOfItems
|
|
|
* @param string $column
|
|
|
* @param string $direction
|
|
|
- * @param int $userId
|
|
|
+ * @param array $extraParams
|
|
|
*
|
|
|
* @return array
|
|
|
*/
|
|
|
- public static function get_message_data(
|
|
|
+ public static function getMessageData(
|
|
|
$from,
|
|
|
- $number_of_items,
|
|
|
+ $numberOfItems,
|
|
|
$column,
|
|
|
$direction,
|
|
|
- $userId = 0
|
|
|
+ $extraParams = []
|
|
|
) {
|
|
|
$from = (int) $from;
|
|
|
- $number_of_items = (int) $number_of_items;
|
|
|
- $userId = empty($userId) ? api_get_user_id() : (int) $userId;
|
|
|
+ $numberOfItems = (int) $numberOfItems;
|
|
|
+ $userId = api_get_user_id();
|
|
|
|
|
|
// Forcing this order.
|
|
|
if (!isset($direction)) {
|
|
@@ -122,13 +125,22 @@ class MessageManager
|
|
|
$column = 2;
|
|
|
}
|
|
|
|
|
|
- $keyword = Session::read('message_search_keyword');
|
|
|
+ $keyword = isset($extraParams['keyword']) ? $extraParams['keyword'] : '';
|
|
|
+ $viewUrl = isset($extraParams['view_url']) ? $extraParams['view_url'] : api_get_path(WEB_CODE_PATH).'message/view_message.php';
|
|
|
+
|
|
|
$keywordCondition = '';
|
|
|
if (!empty($keyword)) {
|
|
|
$keyword = Database::escape_string($keyword);
|
|
|
$keywordCondition = " AND (title like '%$keyword%' OR content LIKE '%$keyword%') ";
|
|
|
}
|
|
|
|
|
|
+ $messageStatus = [MESSAGE_STATUS_NEW, MESSAGE_STATUS_UNREAD];
|
|
|
+ if (isset($extraParams['message_status']) && !empty($extraParams['message_status'])) {
|
|
|
+ $messageStatus = $extraParams['message_status'];
|
|
|
+ }
|
|
|
+ $messageStatus = array_map('intval', $messageStatus);
|
|
|
+ $messageStatusCondition = implode("','", $messageStatus);
|
|
|
+
|
|
|
$table = Database::get_main_table(TABLE_MESSAGE);
|
|
|
$sql = "SELECT
|
|
|
id as col0,
|
|
@@ -138,15 +150,18 @@ class MessageManager
|
|
|
user_sender_id
|
|
|
FROM $table
|
|
|
WHERE
|
|
|
- user_receiver_id=".$userId." AND
|
|
|
- msg_status IN (".MESSAGE_STATUS_NEW.", ".MESSAGE_STATUS_UNREAD.")
|
|
|
+ user_receiver_id = $userId AND
|
|
|
+ msg_status IN ('$messageStatusCondition')
|
|
|
$keywordCondition
|
|
|
ORDER BY col$column $direction
|
|
|
- LIMIT $from, $number_of_items";
|
|
|
+ LIMIT $from, $numberOfItems";
|
|
|
|
|
|
$result = Database::query($sql);
|
|
|
$messageList = [];
|
|
|
$newMessageLink = api_get_path(WEB_CODE_PATH).'messages/new_message.php';
|
|
|
+
|
|
|
+ $actions = $extraParams['actions'];
|
|
|
+ $url = api_get_self();
|
|
|
while ($row = Database::fetch_array($result, 'ASSOC')) {
|
|
|
$messageId = $row['col0'];
|
|
|
$title = $row['col1'];
|
|
@@ -163,41 +178,65 @@ class MessageManager
|
|
|
}
|
|
|
|
|
|
$userInfo = api_get_user_info($senderId);
|
|
|
+ $message[3] = '';
|
|
|
if (!empty($senderId) && !empty($userInfo)) {
|
|
|
- $message[1] = '<a '.$class.' href="view_message.php?id='.$messageId.'">'.$title.'</a><br />';
|
|
|
+ $message[1] = '<a '.$class.' href="'.$viewUrl.'?id='.$messageId.'">'.$title.'</a><br />';
|
|
|
$message[1] .= $userInfo['complete_name_with_username'];
|
|
|
- $message[3] =
|
|
|
- Display::url(
|
|
|
- Display::returnFontAwesomeIcon('reply', 2),
|
|
|
- $newMessageLink.'?re_id='.$messageId,
|
|
|
- ['title' => get_lang('ReplyToMessage')]
|
|
|
- );
|
|
|
+ if (in_array('reply', $actions)) {
|
|
|
+ $message[3] =
|
|
|
+ Display::url(
|
|
|
+ Display::returnFontAwesomeIcon('reply', 2),
|
|
|
+ $newMessageLink.'?re_id='.$messageId,
|
|
|
+ ['title' => get_lang('ReplyToMessage')]
|
|
|
+ );
|
|
|
+ }
|
|
|
} else {
|
|
|
- $message[1] = '<a '.$class.' href="view_message.php?id='.$messageId.'">'.$title.'</a><br />';
|
|
|
+ $message[1] = '<a '.$class.' href="'.$viewUrl.'?id='.$messageId.'">'.$title.'</a><br />';
|
|
|
$message[1] .= get_lang('UnknownUser');
|
|
|
- $message[3] =
|
|
|
- Display::url(
|
|
|
- Display::returnFontAwesomeIcon('reply', 2),
|
|
|
- '#',
|
|
|
- ['title' => get_lang('ReplyToMessage')]
|
|
|
- );
|
|
|
+ if (in_array('reply', $actions)) {
|
|
|
+ $message[3] =
|
|
|
+ Display::url(
|
|
|
+ Display::returnFontAwesomeIcon('reply', 2),
|
|
|
+ '#',
|
|
|
+ ['title' => get_lang('ReplyToMessage')]
|
|
|
+ );
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
$message[0] = $messageId;
|
|
|
$message[2] = api_convert_and_format_date($sendDate, DATE_TIME_FORMAT_LONG);
|
|
|
- $message[3] .=
|
|
|
- ' '.
|
|
|
- Display::url(
|
|
|
- Display::returnFontAwesomeIcon('share', 2),
|
|
|
- $newMessageLink.'?forward_id='.$messageId,
|
|
|
- ['title' => get_lang('ForwardMessage')]
|
|
|
- ).
|
|
|
- ' <a title="'.addslashes(
|
|
|
+
|
|
|
+ // Actions
|
|
|
+ if (in_array('edit', $actions)) {
|
|
|
+ $message[3] .=
|
|
|
+ ' '.
|
|
|
+ Display::url(
|
|
|
+ Display::returnFontAwesomeIcon('pencil', 2),
|
|
|
+ $newMessageLink.'?action=edit&id='.$messageId,
|
|
|
+ ['title' => get_lang('ForwardMessage')]
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ // Actions
|
|
|
+ if (in_array('forward', $actions)) {
|
|
|
+ $message[3] .=
|
|
|
+ ' '.
|
|
|
+ Display::url(
|
|
|
+ Display::returnFontAwesomeIcon('share', 2),
|
|
|
+ $newMessageLink.'?forward_id='.$messageId,
|
|
|
+ ['title' => get_lang('ForwardMessage')]
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ if (in_array('delete', $actions)) {
|
|
|
+ $message[3] .= ' <a title="'.addslashes(
|
|
|
get_lang('DeleteMessage')
|
|
|
).'" onclick="javascript:if(!confirm('."'".addslashes(
|
|
|
api_htmlentities(get_lang('ConfirmDeleteMessage'))
|
|
|
- )."'".')) return false;" href="inbox.php?action=deleteone&id='.$messageId.'">'.
|
|
|
+ )."'".')) return false;" href="'.$url.'?action=deleteone&id='.$messageId.'">'.
|
|
|
Display::returnFontAwesomeIcon('trash', 2).'</a>';
|
|
|
+ }
|
|
|
+
|
|
|
foreach ($message as $key => $value) {
|
|
|
$message[$key] = api_xml_http_response_encode($value);
|
|
|
}
|
|
@@ -388,7 +427,8 @@ class MessageManager
|
|
|
$forwardId = 0,
|
|
|
$smsParameters = [],
|
|
|
$checkCurrentAudioId = false,
|
|
|
- $forceTitleWhenSendingEmail = false
|
|
|
+ $forceTitleWhenSendingEmail = false,
|
|
|
+ $status = 0
|
|
|
) {
|
|
|
$table = Database::get_main_table(TABLE_MESSAGE);
|
|
|
$group_id = (int) $group_id;
|
|
@@ -397,6 +437,8 @@ class MessageManager
|
|
|
$editMessageId = (int) $editMessageId;
|
|
|
$topic_id = (int) $topic_id;
|
|
|
|
|
|
+ $status = empty($status) ? MESSAGE_STATUS_UNREAD : (int) $status;
|
|
|
+
|
|
|
if (!empty($receiver_user_id)) {
|
|
|
$receiverUserInfo = api_get_user_info($receiver_user_id);
|
|
|
|
|
@@ -490,7 +532,7 @@ class MessageManager
|
|
|
$params = [
|
|
|
'user_sender_id' => $user_sender_id,
|
|
|
'user_receiver_id' => $receiver_user_id,
|
|
|
- 'msg_status' => MESSAGE_STATUS_UNREAD,
|
|
|
+ 'msg_status' => $status,
|
|
|
'send_date' => $now,
|
|
|
'title' => $subject,
|
|
|
'content' => $content,
|
|
@@ -537,8 +579,8 @@ class MessageManager
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (empty($group_id)) {
|
|
|
- // message in outbox for user friend or group
|
|
|
+ // Save message in the outbox for user friend or group.
|
|
|
+ if (empty($group_id) && $status == MESSAGE_STATUS_UNREAD) {
|
|
|
$params = [
|
|
|
'user_sender_id' => $user_sender_id,
|
|
|
'user_receiver_id' => $receiver_user_id,
|
|
@@ -762,30 +804,32 @@ class MessageManager
|
|
|
public static function delete_message_by_user_receiver($user_receiver_id, $id)
|
|
|
{
|
|
|
$table = Database::get_main_table(TABLE_MESSAGE);
|
|
|
- if ($id != strval(intval($id))) {
|
|
|
- return false;
|
|
|
- }
|
|
|
$id = (int) $id;
|
|
|
$user_receiver_id = (int) $user_receiver_id;
|
|
|
+
|
|
|
+ if (empty($id) || empty($user_receiver_id)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
$sql = "SELECT * FROM $table
|
|
|
- WHERE id = ".$id." AND msg_status <>".MESSAGE_STATUS_OUTBOX;
|
|
|
+ WHERE id = $id AND msg_status <> ".MESSAGE_STATUS_OUTBOX;
|
|
|
$rs = Database::query($sql);
|
|
|
|
|
|
if (Database::num_rows($rs) > 0) {
|
|
|
- // delete attachment file
|
|
|
+ // Delete attachment file.
|
|
|
self::delete_message_attachment_file($id, $user_receiver_id);
|
|
|
- // delete message
|
|
|
+ // Soft delete message.
|
|
|
$query = "UPDATE $table
|
|
|
SET msg_status = ".MESSAGE_STATUS_DELETED."
|
|
|
- WHERE
|
|
|
- user_receiver_id=".$user_receiver_id." AND
|
|
|
- id = ".$id;
|
|
|
+ WHERE
|
|
|
+ id = $id AND
|
|
|
+ user_receiver_id = $user_receiver_id ";
|
|
|
Database::query($query);
|
|
|
|
|
|
return true;
|
|
|
- } else {
|
|
|
- return false;
|
|
|
}
|
|
|
+
|
|
|
+ return false;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -816,7 +860,7 @@ class MessageManager
|
|
|
// delete attachment file
|
|
|
self::delete_message_attachment_file($id, $user_sender_id);
|
|
|
// delete message
|
|
|
- $sql = "UPDATE $table
|
|
|
+ $sql = "UPDATE $table
|
|
|
SET msg_status = ".MESSAGE_STATUS_DELETED."
|
|
|
WHERE user_sender_id='$user_sender_id' AND id='$id'";
|
|
|
Database::query($sql);
|
|
@@ -932,12 +976,12 @@ class MessageManager
|
|
|
$message_uid = (int) $message_uid;
|
|
|
$table_message_attach = Database::get_main_table(TABLE_MESSAGE_ATTACHMENT);
|
|
|
|
|
|
- $sql = "SELECT * FROM $table_message_attach
|
|
|
+ $sql = "SELECT * FROM $table_message_attach
|
|
|
WHERE message_id = '$message_id'";
|
|
|
$rs = Database::query($sql);
|
|
|
while ($row = Database::fetch_array($rs)) {
|
|
|
$path = $row['path'];
|
|
|
- $attach_id = $row['id'];
|
|
|
+ $attach_id = (int) $row['id'];
|
|
|
$new_path = $path.'_DELETED_'.$attach_id;
|
|
|
|
|
|
if (!empty($group_id)) {
|
|
@@ -957,8 +1001,9 @@ class MessageManager
|
|
|
$path_message_attach = $path_user_info['dir'].'message_attachments/';
|
|
|
if (is_file($path_message_attach.$path)) {
|
|
|
if (rename($path_message_attach.$path, $path_message_attach.$new_path)) {
|
|
|
- $sql = "UPDATE $table_message_attach set path='$new_path'
|
|
|
- WHERE id ='$attach_id'";
|
|
|
+ $sql = "UPDATE $table_message_attach
|
|
|
+ SET path = '$new_path'
|
|
|
+ WHERE id = $attach_id ";
|
|
|
Database::query($sql);
|
|
|
}
|
|
|
}
|
|
@@ -1000,12 +1045,13 @@ class MessageManager
|
|
|
*/
|
|
|
public static function get_messages_by_group($group_id)
|
|
|
{
|
|
|
- if ($group_id != strval(intval($group_id))) {
|
|
|
+ $group_id = (int) $group_id;
|
|
|
+
|
|
|
+ if (empty($group_id)) {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
$table = Database::get_main_table(TABLE_MESSAGE);
|
|
|
- $group_id = intval($group_id);
|
|
|
$sql = "SELECT * FROM $table
|
|
|
WHERE
|
|
|
group_id= $group_id AND
|
|
@@ -1032,11 +1078,13 @@ class MessageManager
|
|
|
*/
|
|
|
public static function get_messages_by_group_by_message($group_id, $message_id)
|
|
|
{
|
|
|
- if ($group_id != strval(intval($group_id))) {
|
|
|
+ $group_id = (int) $group_id;
|
|
|
+
|
|
|
+ if (empty($group_id)) {
|
|
|
return false;
|
|
|
}
|
|
|
+
|
|
|
$table = Database::get_main_table(TABLE_MESSAGE);
|
|
|
- $group_id = intval($group_id);
|
|
|
$sql = "SELECT * FROM $table
|
|
|
WHERE
|
|
|
group_id = $group_id AND
|
|
@@ -1094,7 +1142,7 @@ class MessageManager
|
|
|
$sql = "SELECT * FROM $table
|
|
|
WHERE
|
|
|
parent_id='$parentId' AND
|
|
|
- msg_status NOT IN (".MESSAGE_STATUS_OUTBOX.", ".MESSAGE_STATUS_WALL_DELETE.")
|
|
|
+ msg_status NOT IN (".MESSAGE_STATUS_OUTBOX.", ".MESSAGE_STATUS_WALL_DELETE.")
|
|
|
$condition_group_id
|
|
|
ORDER BY send_date DESC $condition_limit ";
|
|
|
$rs = Database::query($sql);
|
|
@@ -1120,12 +1168,13 @@ class MessageManager
|
|
|
*/
|
|
|
public static function get_message_data_sent(
|
|
|
$from,
|
|
|
- $number_of_items,
|
|
|
+ $numberOfItems,
|
|
|
$column,
|
|
|
- $direction
|
|
|
+ $direction,
|
|
|
+ $extraParams = []
|
|
|
) {
|
|
|
$from = (int) $from;
|
|
|
- $number_of_items = (int) $number_of_items;
|
|
|
+ $numberOfItems = (int) $numberOfItems;
|
|
|
if (!isset($direction)) {
|
|
|
$column = 2;
|
|
|
$direction = 'DESC';
|
|
@@ -1141,7 +1190,7 @@ class MessageManager
|
|
|
}
|
|
|
$table = Database::get_main_table(TABLE_MESSAGE);
|
|
|
$request = api_is_xml_http_request();
|
|
|
- $keyword = Session::read('message_sent_search_keyword');
|
|
|
+ $keyword = isset($extraParams['keyword']) ? $extraParams['keyword'] : '';
|
|
|
$keywordCondition = '';
|
|
|
if (!empty($keyword)) {
|
|
|
$keyword = Database::escape_string($keyword);
|
|
@@ -1149,10 +1198,10 @@ class MessageManager
|
|
|
}
|
|
|
|
|
|
$sql = "SELECT
|
|
|
- id as col0,
|
|
|
- title as col1,
|
|
|
- send_date as col2,
|
|
|
- user_receiver_id,
|
|
|
+ id as col0,
|
|
|
+ title as col1,
|
|
|
+ send_date as col2,
|
|
|
+ user_receiver_id,
|
|
|
msg_status,
|
|
|
user_sender_id
|
|
|
FROM $table
|
|
@@ -1161,7 +1210,7 @@ class MessageManager
|
|
|
msg_status = ".MESSAGE_STATUS_OUTBOX."
|
|
|
$keywordCondition
|
|
|
ORDER BY col$column $direction
|
|
|
- LIMIT $from, $number_of_items";
|
|
|
+ LIMIT $from, $numberOfItems";
|
|
|
$result = Database::query($sql);
|
|
|
|
|
|
$message_list = [];
|
|
@@ -1211,38 +1260,6 @@ class MessageManager
|
|
|
return $message_list;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * Gets information about number messages sent.
|
|
|
- *
|
|
|
- * @author Isaac FLores Paz <isaac.flores@dokeos.com>
|
|
|
- *
|
|
|
- * @param void
|
|
|
- *
|
|
|
- * @return int
|
|
|
- */
|
|
|
- public static function getNumberOfMessagesSent()
|
|
|
- {
|
|
|
- $table = Database::get_main_table(TABLE_MESSAGE);
|
|
|
- $keyword = Session::read('message_sent_search_keyword');
|
|
|
- $keywordCondition = '';
|
|
|
- if (!empty($keyword)) {
|
|
|
- $keyword = Database::escape_string($keyword);
|
|
|
- $keywordCondition = " AND (title like '%$keyword%' OR content LIKE '%$keyword%') ";
|
|
|
- }
|
|
|
-
|
|
|
- $sql = "SELECT COUNT(id) as number_messages
|
|
|
- FROM $table
|
|
|
- WHERE
|
|
|
- msg_status = ".MESSAGE_STATUS_OUTBOX." AND
|
|
|
- user_sender_id = ".api_get_user_id()."
|
|
|
- $keywordCondition
|
|
|
- ";
|
|
|
- $result = Database::query($sql);
|
|
|
- $result = Database::fetch_array($result);
|
|
|
-
|
|
|
- return $result['number_messages'];
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* display message box in the inbox.
|
|
|
*
|
|
@@ -1259,7 +1276,7 @@ class MessageManager
|
|
|
$messageId = (int) $messageId;
|
|
|
$currentUserId = api_get_user_id();
|
|
|
|
|
|
- if ($source == 'outbox') {
|
|
|
+ if ($source === 'outbox') {
|
|
|
if (isset($messageId) && is_numeric($messageId)) {
|
|
|
$query = "SELECT * FROM $table
|
|
|
WHERE
|
|
@@ -1326,7 +1343,7 @@ class MessageManager
|
|
|
$message_content .= '<tr>';
|
|
|
if (api_get_setting('allow_social_tool') === 'true') {
|
|
|
$message_content .= '<div class="row">';
|
|
|
- if ($source == 'outbox') {
|
|
|
+ if ($source === 'outbox') {
|
|
|
$message_content .= '<div class="col-md-12">';
|
|
|
$message_content .= '<ul class="list-message">';
|
|
|
$message_content .= '<li>'.$userImage.'</li>';
|
|
@@ -1354,14 +1371,16 @@ class MessageManager
|
|
|
$message_content .= '<li>'.$name;
|
|
|
}
|
|
|
|
|
|
- $message_content .= ' '.api_strtolower(get_lang('To')).' '.get_lang('Me');
|
|
|
+ if ($source === 'inbox') {
|
|
|
+ $message_content .= ' '.api_strtolower(get_lang('To')).' '.get_lang('Me');
|
|
|
+ }
|
|
|
$message_content .= '<li>'.Display::dateToStringAgoAndLongDate($row['send_date']).'</li>';
|
|
|
$message_content .= '</ul>';
|
|
|
$message_content .= '</div>';
|
|
|
}
|
|
|
$message_content .= '</div>';
|
|
|
} else {
|
|
|
- if ($source == 'outbox') {
|
|
|
+ if ($source === 'outbox') {
|
|
|
$message_content .= get_lang('From').': '.$name.'</b> '.api_strtolower(get_lang('To')).' <b>'.
|
|
|
$receiverUserInfo['complete_name_with_username'].'</b>';
|
|
|
} else {
|
|
@@ -1370,7 +1389,7 @@ class MessageManager
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- $message_content .= '
|
|
|
+ $message_content .= '
|
|
|
<hr style="color:#ddd" />
|
|
|
<table width="100%">
|
|
|
<tr>
|
|
@@ -1383,17 +1402,21 @@ class MessageManager
|
|
|
if (isset($_GET['f']) && $_GET['f'] == 'social') {
|
|
|
$social_link = 'f=social';
|
|
|
}
|
|
|
+
|
|
|
if ($source == 'outbox') {
|
|
|
$message_content .= '<a href="outbox.php?'.$social_link.'">'.
|
|
|
Display::return_icon('back.png', get_lang('ReturnToOutbox')).'</a>  ';
|
|
|
- } else {
|
|
|
+ } elseif ($source === 'inbox') {
|
|
|
$message_content .= '<a href="inbox.php?'.$social_link.'">'.
|
|
|
Display::return_icon('back.png', get_lang('ReturnToInbox')).'</a>  ';
|
|
|
$message_content .= '<a href="new_message.php?re_id='.$messageId.'&'.$social_link.'">'.
|
|
|
Display::return_icon('message_reply.png', get_lang('ReplyToMessage')).'</a>  ';
|
|
|
}
|
|
|
- $message_content .= '<a href="inbox.php?action=deleteone&id='.$messageId.'&'.$social_link.'" >'.
|
|
|
- Display::return_icon('delete.png', get_lang('DeleteMessage')).'</a> ';
|
|
|
+
|
|
|
+ if (in_array($source, ['inbox', 'outbox'])) {
|
|
|
+ $message_content .= '<a href="inbox.php?action=deleteone&id='.$messageId.'&'.$social_link.'" >'.
|
|
|
+ Display::return_icon('delete.png', get_lang('DeleteMessage')).'</a> ';
|
|
|
+ }
|
|
|
|
|
|
$message_content .= '</div></td>
|
|
|
<td width=10></td>
|
|
@@ -1413,7 +1436,7 @@ class MessageManager
|
|
|
public static function get_user_id_by_email($user_email)
|
|
|
{
|
|
|
$table = Database::get_main_table(TABLE_MAIN_USER);
|
|
|
- $sql = 'SELECT user_id
|
|
|
+ $sql = 'SELECT user_id
|
|
|
FROM '.$table.'
|
|
|
WHERE email="'.Database::escape_string($user_email).'";';
|
|
|
$rs = Database::query($sql);
|
|
@@ -2061,27 +2084,32 @@ class MessageManager
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * @param string $keyword
|
|
|
+ * @param string $statusList
|
|
|
+ * @param array $keyword
|
|
|
+ * @param array $actions
|
|
|
+ * @param string $viewUrl
|
|
|
*
|
|
|
* @return string
|
|
|
*/
|
|
|
- public static function inbox_display($keyword = '')
|
|
|
+ public static function getMessageGrid($statusList, $keyword, $actions = [], $viewUrl = '')
|
|
|
{
|
|
|
+ if (empty($statusList)) {
|
|
|
+ return '';
|
|
|
+ }
|
|
|
$success = get_lang('SelectedMessagesDeleted');
|
|
|
$success_read = get_lang('SelectedMessagesRead');
|
|
|
$success_unread = get_lang('SelectedMessagesUnRead');
|
|
|
+ $currentUserId = api_get_user_id();
|
|
|
$html = '';
|
|
|
|
|
|
- Session::write('message_search_keyword', $keyword);
|
|
|
-
|
|
|
if (isset($_REQUEST['action'])) {
|
|
|
switch ($_REQUEST['action']) {
|
|
|
case 'mark_as_unread':
|
|
|
if (is_array($_POST['id'])) {
|
|
|
- foreach ($_POST['id'] as $index => $message_id) {
|
|
|
+ foreach ($_POST['id'] as $index => $messageId) {
|
|
|
self::update_message_status(
|
|
|
- api_get_user_id(),
|
|
|
- $message_id,
|
|
|
+ $currentUserId,
|
|
|
+ $messageId,
|
|
|
MESSAGE_STATUS_UNREAD
|
|
|
);
|
|
|
}
|
|
@@ -2094,10 +2122,10 @@ class MessageManager
|
|
|
break;
|
|
|
case 'mark_as_read':
|
|
|
if (is_array($_POST['id'])) {
|
|
|
- foreach ($_POST['id'] as $index => $message_id) {
|
|
|
+ foreach ($_POST['id'] as $index => $messageId) {
|
|
|
self::update_message_status(
|
|
|
- api_get_user_id(),
|
|
|
- $message_id,
|
|
|
+ $currentUserId,
|
|
|
+ $messageId,
|
|
|
MESSAGE_STATUS_NEW
|
|
|
);
|
|
|
}
|
|
@@ -2109,8 +2137,8 @@ class MessageManager
|
|
|
);
|
|
|
break;
|
|
|
case 'delete':
|
|
|
- foreach ($_POST['id'] as $index => $message_id) {
|
|
|
- self::delete_message_by_user_receiver(api_get_user_id(), $message_id);
|
|
|
+ foreach ($_POST['id'] as $index => $messageId) {
|
|
|
+ self::delete_message_by_user_receiver($currentUserId, $messageId);
|
|
|
}
|
|
|
$html .= Display::return_message(
|
|
|
api_xml_http_response_encode($success),
|
|
@@ -2119,7 +2147,7 @@ class MessageManager
|
|
|
);
|
|
|
break;
|
|
|
case 'deleteone':
|
|
|
- self::delete_message_by_user_receiver(api_get_user_id(), $_GET['id']);
|
|
|
+ self::delete_message_by_user_receiver($currentUserId, $_GET['id']);
|
|
|
$html .= Display::return_message(
|
|
|
api_xml_http_response_encode($success),
|
|
|
'confirmation',
|
|
@@ -2133,30 +2161,72 @@ class MessageManager
|
|
|
$table = new SortableTable(
|
|
|
'message_inbox',
|
|
|
['MessageManager', 'getNumberOfMessages'],
|
|
|
- ['MessageManager', 'get_message_data'],
|
|
|
+ ['MessageManager', 'getMessageData'],
|
|
|
2,
|
|
|
20,
|
|
|
'DESC'
|
|
|
);
|
|
|
+
|
|
|
+ $table->setDataFunctionParams(
|
|
|
+ ['keyword' => $keyword, 'message_status' => $statusList, 'actions' => $actions, 'view_url' => $viewUrl]
|
|
|
+ );
|
|
|
$table->set_header(0, '', false, ['style' => 'width:15px;']);
|
|
|
$table->set_header(1, get_lang('Messages'), false);
|
|
|
$table->set_header(2, get_lang('Date'), true, ['style' => 'width:180px;']);
|
|
|
$table->set_header(3, get_lang('Modify'), false, ['style' => 'width:120px;']);
|
|
|
|
|
|
- if (isset($_REQUEST['f']) && $_REQUEST['f'] == 'social') {
|
|
|
+ if (isset($_REQUEST['f']) && $_REQUEST['f'] === 'social') {
|
|
|
$parameters['f'] = 'social';
|
|
|
$table->set_additional_parameters($parameters);
|
|
|
}
|
|
|
- $table->set_form_actions(
|
|
|
- [
|
|
|
- 'delete' => get_lang('DeleteSelectedMessages'),
|
|
|
- 'mark_as_unread' => get_lang('MailMarkSelectedAsUnread'),
|
|
|
- 'mark_as_read' => get_lang('MailMarkSelectedAsRead'),
|
|
|
- ]
|
|
|
- );
|
|
|
+
|
|
|
+ $defaultActions = [
|
|
|
+ 'delete' => get_lang('DeleteSelectedMessages'),
|
|
|
+ 'mark_as_unread' => get_lang('MailMarkSelectedAsUnread'),
|
|
|
+ 'mark_as_read' => get_lang('MailMarkSelectedAsRead'),
|
|
|
+ ];
|
|
|
+
|
|
|
+ if (!in_array('delete', $actions)) {
|
|
|
+ unset($defaultActions['delete']);
|
|
|
+ }
|
|
|
+ if (!in_array('mark_as_unread', $actions)) {
|
|
|
+ unset($defaultActions['mark_as_unread']);
|
|
|
+ }
|
|
|
+ if (!in_array('mark_as_read', $actions)) {
|
|
|
+ unset($defaultActions['mark_as_read']);
|
|
|
+ }
|
|
|
+
|
|
|
+ $table->set_form_actions($defaultActions);
|
|
|
+
|
|
|
$html .= $table->return_table();
|
|
|
|
|
|
- Session::erase('message_search_keyword');
|
|
|
+ return $html;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param string $keyword
|
|
|
+ *
|
|
|
+ * @return string
|
|
|
+ */
|
|
|
+ public static function inboxDisplay($keyword = '')
|
|
|
+ {
|
|
|
+ $actions = ['reply', 'mark_as_unread', 'mark_as_read', 'forward', 'delete'];
|
|
|
+ $html = self::getMessageGrid([MESSAGE_STATUS_NEW, MESSAGE_STATUS_UNREAD], $keyword, $actions);
|
|
|
+
|
|
|
+ return $html;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param string $keyword
|
|
|
+ *
|
|
|
+ * @return string
|
|
|
+ */
|
|
|
+ public static function getPromotedMessagesGrid($keyword = '')
|
|
|
+ {
|
|
|
+ //$actions = ['edit', 'delete'];
|
|
|
+ $actions = ['delete'];
|
|
|
+ $url = api_get_path(WEB_CODE_PATH).'social/view_promoted_message.php';
|
|
|
+ $html = self::getMessageGrid([MESSAGE_STATUS_PROMOTED], $keyword, $actions, $url);
|
|
|
|
|
|
return $html;
|
|
|
}
|
|
@@ -2176,12 +2246,12 @@ class MessageManager
|
|
|
if (isset($_REQUEST['action'])) {
|
|
|
switch ($_REQUEST['action']) {
|
|
|
case 'delete':
|
|
|
- $number_of_selected_messages = count($_POST['id']);
|
|
|
- if ($number_of_selected_messages != 0) {
|
|
|
- foreach ($_POST['id'] as $index => $message_id) {
|
|
|
+ $count = count($_POST['id']);
|
|
|
+ if ($count != 0) {
|
|
|
+ foreach ($_POST['id'] as $index => $messageId) {
|
|
|
self::delete_message_by_user_receiver(
|
|
|
api_get_user_id(),
|
|
|
- $message_id
|
|
|
+ $messageId
|
|
|
);
|
|
|
}
|
|
|
}
|
|
@@ -2198,12 +2268,15 @@ class MessageManager
|
|
|
// display sortable table with messages of the current user
|
|
|
$table = new SortableTable(
|
|
|
'message_outbox',
|
|
|
- ['MessageManager', 'getNumberOfMessagesSent'],
|
|
|
+ ['MessageManager', 'getNumberOfMessages'],
|
|
|
['MessageManager', 'get_message_data_sent'],
|
|
|
2,
|
|
|
20,
|
|
|
'DESC'
|
|
|
);
|
|
|
+ $table->setDataFunctionParams(
|
|
|
+ ['keyword' => $keyword, 'message_status' => [MESSAGE_STATUS_OUTBOX]]
|
|
|
+ );
|
|
|
|
|
|
$table->set_header(0, '', false, ['style' => 'width:15px;']);
|
|
|
$table->set_header(1, get_lang('Messages'), false);
|
|
@@ -2213,8 +2286,6 @@ class MessageManager
|
|
|
$table->set_form_actions(['delete' => get_lang('DeleteSelectedMessages')]);
|
|
|
$html .= $table->return_table();
|
|
|
|
|
|
- Session::erase('message_sent_search_keyword');
|
|
|
-
|
|
|
return $html;
|
|
|
}
|
|
|
|