Refactor message grid see BT#15983

pull/2981/head
Julio Montoya 6 years ago
parent 319bf79c87
commit d88e0b6367
  1. 489
      main/inc/lib/message.lib.php
  2. 4
      main/inc/lib/social.lib.php
  3. 1
      main/inc/lib/sortable_table.class.php
  4. 11
      main/messages/download.php
  5. 84
      main/messages/inbox.php
  6. 2
      main/messages/new_message.php
  7. 33
      main/messages/outbox.php
  8. 31
      main/messages/view_message.php

@ -15,6 +15,10 @@ use ChamiloSession as Session;
*/
class MessageManager
{
const MESSAGE_TYPE_INBOX = 1;
const MESSAGE_TYPE_OUTBOX = 2;
const MESSAGE_TYPE_PROMOTED = 3;
/**
* Get count new messages for the current user from the database.
*
@ -53,32 +57,16 @@ class MessageManager
*
* @return int
*/
public static function getNumberOfMessages($params = [])
public static function getNumberOfMessages($params)
{
$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']) && !empty($params['keyword']) ? $params['keyword'] : '';
$keywordCondition = '';
if (!empty($keyword)) {
$keyword = Database::escape_string($keyword);
$keywordCondition = " AND (title like '%$keyword%' OR content LIKE '%$keyword%') ";
}
$conditions = self::getWhereConditions($params);
$sql = "SELECT COUNT(id) as number_messages
FROM $table
WHERE
msg_status IN ('$messageStatusCondition') AND
user_receiver_id = ".api_get_user_id()."
$keywordCondition
$conditions
";
$result = Database::query($sql);
$result = Database::fetch_array($result);
@ -89,6 +77,53 @@ class MessageManager
return 0;
}
/**
* @param array $extraParams
*
* @return string
*/
public static function getWhereConditions($extraParams)
{
$userId = api_get_user_id();
$keyword = isset($extraParams['keyword']) && !empty($extraParams['keyword']) ? $extraParams['keyword'] : '';
$type = isset($extraParams['type']) && !empty($extraParams['type']) ? $extraParams['type'] : '';
if (empty($type)) {
return '';
}
switch ($type) {
case self::MESSAGE_TYPE_INBOX:
$statusList = [MESSAGE_STATUS_NEW, MESSAGE_STATUS_UNREAD];
$userCondition = " user_receiver_id = $userId AND";
break;
case self::MESSAGE_TYPE_OUTBOX:
$statusList = [MESSAGE_STATUS_OUTBOX];
$userCondition = " user_sender_id = $userId AND";
break;
case self::MESSAGE_TYPE_PROMOTED:
$statusList = [MESSAGE_STATUS_PROMOTED];
$userCondition = " user_receiver_id = $userId AND";
break;
}
if (empty($statusList)) {
return '';
}
$keywordCondition = '';
if (!empty($keyword)) {
$keyword = Database::escape_string($keyword);
$keywordCondition = " AND (title like '%$keyword%' OR content LIKE '%$keyword%') ";
}
$messageStatusCondition = implode("','", $statusList);
return " $userCondition
msg_status IN ('$messageStatusCondition')
$keywordCondition";
}
/**
* Gets information about some messages, used for the inbox sortable table.
*
@ -109,8 +144,6 @@ class MessageManager
) {
$from = (int) $from;
$numberOfItems = (int) $numberOfItems;
$userId = api_get_user_id();
// Forcing this order.
if (!isset($direction)) {
$column = 2;
@ -126,24 +159,29 @@ class MessageManager
$column = 2;
}
$keyword = isset($extraParams['keyword']) && !empty($extraParams['keyword']) ? $extraParams['keyword'] : '';
$viewUrl = api_get_path(WEB_CODE_PATH).'messages/view_message.php';
if (isset($extraParams['view_url']) && !empty($extraParams['view_url'])) {
$viewUrl = $extraParams['view_url'];
$type = isset($extraParams['type']) && !empty($extraParams['type']) ? $extraParams['type'] : '';
if (empty($type)) {
return [];
}
$keywordCondition = '';
if (!empty($keyword)) {
$keyword = Database::escape_string($keyword);
$keywordCondition = " AND (title like '%$keyword%' OR content LIKE '%$keyword%') ";
$viewUrl = '';
switch ($type) {
case self::MESSAGE_TYPE_OUTBOX:
case self::MESSAGE_TYPE_INBOX:
$viewUrl = api_get_path(WEB_CODE_PATH).'messages/view_message.php';
break;
case self::MESSAGE_TYPE_PROMOTED:
$viewUrl = api_get_path(WEB_CODE_PATH).'social/view_promoted_message.php';
break;
}
$viewUrl .= '?type='.$type;
$whereConditions = self::getWhereConditions($extraParams);
$messageStatus = [MESSAGE_STATUS_NEW, MESSAGE_STATUS_UNREAD];
if (isset($extraParams['message_status']) && !empty($extraParams['message_status'])) {
$messageStatus = $extraParams['message_status'];
if (empty($whereConditions)) {
return [];
}
$messageStatus = array_map('intval', $messageStatus);
$messageStatusCondition = implode("','", $messageStatus);
$table = Database::get_main_table(TABLE_MESSAGE);
$sql = "SELECT
@ -154,9 +192,7 @@ class MessageManager
user_sender_id
FROM $table
WHERE
user_receiver_id = $userId AND
msg_status IN ('$messageStatusCondition')
$keywordCondition
$whereConditions
ORDER BY col$column $direction
LIMIT $from, $numberOfItems";
@ -184,7 +220,7 @@ class MessageManager
$userInfo = api_get_user_info($senderId);
$message[3] = '';
if (!empty($senderId) && !empty($userInfo)) {
$message[1] = '<a '.$class.' href="'.$viewUrl.'?id='.$messageId.'">'.$title.'</a><br />';
$message[1] = '<a '.$class.' href="'.$viewUrl.'&id='.$messageId.'">'.$title.'</a><br />';
$message[1] .= $userInfo['complete_name_with_username'];
if (in_array('reply', $actions)) {
$message[3] =
@ -195,7 +231,7 @@ class MessageManager
);
}
} else {
$message[1] = '<a '.$class.' href="'.$viewUrl.'?id='.$messageId.'">'.$title.'</a><br />';
$message[1] = '<a '.$class.' href="'.$viewUrl.'&id='.$messageId.'">'.$title.'</a><br />';
$message[1] .= get_lang('UnknownUser');
if (in_array('reply', $actions)) {
$message[3] =
@ -816,7 +852,10 @@ class MessageManager
}
$sql = "SELECT * FROM $table
WHERE id = $id AND msg_status <> ".MESSAGE_STATUS_OUTBOX;
WHERE
id = $id AND
user_receiver_id = $user_receiver_id AND
msg_status <> ".MESSAGE_STATUS_OUTBOX;
$rs = Database::query($sql);
if (Database::num_rows($rs) > 0) {
@ -851,9 +890,13 @@ class MessageManager
$user_sender_id = (int) $user_sender_id;
$id = (int) $id;
if (empty($id) || empty($user_sender_id)) {
return false;
}
$table = Database::get_main_table(TABLE_MESSAGE);
$sql = "SELECT * FROM $table WHERE id='$id'";
$sql = "SELECT * FROM $table WHERE id = $id AND user_sender_id= $user_sender_id";
$rs = Database::query($sql);
if (Database::num_rows($rs) > 0) {
@ -861,10 +904,9 @@ class MessageManager
self::delete_message_attachment_file($id, $user_sender_id);
// delete message
$sql = "UPDATE $table
SET msg_status = ".MESSAGE_STATUS_DELETED."
SET msg_status = '".MESSAGE_STATUS_DELETED."'
WHERE user_sender_id= $user_sender_id AND id= $id";
Database::query($sql);
return true;
}
@ -1263,30 +1305,34 @@ class MessageManager
/**
* display message box in the inbox.
*
* @param int the message id
* @param string inbox or outbox strings are available
* @param int $messageId
* @param int $type
*
* @todo replace numbers with letters in the $row array pff...
*
* @return string html with the message content
*/
public static function showMessageBox($messageId, $source)
public static function showMessageBox($messageId, $type)
{
$table = Database::get_main_table(TABLE_MESSAGE);
$messageId = (int) $messageId;
if (empty($messageId)) {
if (empty($messageId) || empty($type)) {
return '';
}
$currentUserId = api_get_user_id();
switch ($source) {
case 'outbox':
$table = Database::get_main_table(TABLE_MESSAGE);
if (empty($type)) {
return '';
}
switch ($type) {
case self::MESSAGE_TYPE_OUTBOX:
$status = MESSAGE_STATUS_OUTBOX;
$userCondition = " user_sender_id = $currentUserId AND ";
break;
case 'inbox':
case self::MESSAGE_TYPE_INBOX:
$status = MESSAGE_STATUS_NEW;
$userCondition = " user_receiver_id = $currentUserId AND ";
@ -1295,17 +1341,17 @@ class MessageManager
WHERE id = $messageId ";
Database::query($query);
break;
case 'promoted_messages':
case self::MESSAGE_TYPE_PROMOTED:
$status = MESSAGE_STATUS_PROMOTED;
$userCondition = " user_receiver_id = $currentUserId AND ";
break;
}
$query = "SELECT * FROM $table
WHERE
id = $messageId AND
$userCondition
msg_status = $status";
WHERE
id = $messageId AND
$userCondition
msg_status = $status";
$result = Database::query($query);
$row = Database::fetch_array($result, 'ASSOC');
@ -1316,10 +1362,7 @@ class MessageManager
$user_sender_id = $row['user_sender_id'];
// get file attachments by message id
$files_attachments = self::getAttachmentLinkList(
$messageId,
$source
);
$files_attachments = self::getAttachmentLinkList($messageId, $type);
$row['content'] = str_replace('</br>', '<br />', $row['content']);
$title = Security::remove_XSS($row['title'], STUDENT, true);
@ -1348,49 +1391,51 @@ class MessageManager
$message_content .= '<tr>';
if (api_get_setting('allow_social_tool') === 'true') {
$message_content .= '<div class="row">';
if ($source === 'outbox') {
$message_content .= '<div class="col-md-12">';
$message_content .= '<ul class="list-message">';
$message_content .= '<li>'.$userImage.'</li>';
$message_content .= '<li>'.$name.'&nbsp;';
if (!empty($receiverUserInfo)) {
$message_content .= api_strtolower(
get_lang('To')
).'&nbsp;<b>'.$receiverUserInfo['complete_name_with_username'].'</b></li>';
} else {
$message_content .= api_strtolower(get_lang('To')).'&nbsp;<b>-</b></li>';
}
$message_content .= '<div class="col-md-12">';
$message_content .= '<ul class="list-message">';
$message_content .= '<li>'.Display::dateToStringAgoAndLongDate($row['send_date']).'</li>';
$message_content .= '</ul>';
$message_content .= '</div>';
if (!empty($user_sender_id)) {
$message_content .= '<li>'.$userImage.'</li>';
$message_content .= '<li>';
$message_content .= Display::url(
$name,
api_get_path(WEB_PATH).'main/social/profile.php?u='.$user_sender_id
);
} else {
$message_content .= '<div class="col-md-12">';
$message_content .= '<ul class="list-message">';
if (!empty($user_sender_id)) {
$message_content .= '<li>'.$userImage.'</li>';
$message_content .= '<li><a href="'.api_get_path(
WEB_PATH
).'main/social/profile.php?u='.$user_sender_id.'">'.$name.'</a>';
} else {
$message_content .= '<li>'.$name;
}
$message_content .= '<li>'.$name;
}
if ($source === 'inbox') {
switch ($type) {
case self::MESSAGE_TYPE_INBOX:
//$message_content .= api_strtolower(get_lang('To')).'&nbsp;<b>-</b></li>';
$message_content .= '&nbsp;'.api_strtolower(get_lang('To')).'&nbsp;'.get_lang('Me');
}
$message_content .= '<li>'.Display::dateToStringAgoAndLongDate($row['send_date']).'</li>';
$message_content .= '</ul>';
$message_content .= '</div>';
break;
case self::MESSAGE_TYPE_OUTBOX:
if (!empty($receiverUserInfo)) {
$message_content .= '&nbsp;'.api_strtolower(
get_lang('To')
).'&nbsp;<b>'.$receiverUserInfo['complete_name_with_username'].'</b></li>';
}
break;
case self::MESSAGE_TYPE_PROMOTED:
break;
}
$message_content .= '&nbsp;<li>'.Display::dateToStringAgoAndLongDate($row['send_date']).'</li>';
$message_content .= '</ul>';
$message_content .= '</div>';
$message_content .= '</div>';
} else {
if ($source === 'outbox') {
$message_content .= get_lang('From').':&nbsp;'.$name.'</b> '.api_strtolower(get_lang('To')).' <b>'.
$receiverUserInfo['complete_name_with_username'].'</b>';
} else {
$message_content .= get_lang('From').':&nbsp;'.$name.'</b> '.api_strtolower(get_lang('To')).' <b>'.
get_lang('Me').'</b>';
switch ($type) {
case self::MESSAGE_TYPE_INBOX:
$message_content .= get_lang('From').':&nbsp;'.$name.'</b> '.api_strtolower(get_lang('To')).' <b>'.
get_lang('Me').'</b>';
break;
case self::MESSAGE_TYPE_OUTBOX:
$message_content .= get_lang('From').':&nbsp;'.$name.'</b> '.api_strtolower(get_lang('To')).' <b>'.
$receiverUserInfo['complete_name_with_username'].'</b>';
break;
}
}
@ -1408,19 +1453,21 @@ class MessageManager
$social_link = 'f=social';
}
if ($source == 'outbox') {
$message_content .= '<a href="outbox.php?'.$social_link.'">'.
Display::return_icon('back.png', get_lang('ReturnToOutbox')).'</a> &nbsp';
} elseif ($source === 'inbox') {
$message_content .= '<a href="inbox.php?'.$social_link.'">'.
Display::return_icon('back.png', get_lang('ReturnToInbox')).'</a> &nbsp';
$message_content .= '<a href="new_message.php?re_id='.$messageId.'&'.$social_link.'">'.
Display::return_icon('message_reply.png', get_lang('ReplyToMessage')).'</a> &nbsp';
}
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>&nbsp';
switch ($type) {
case self::MESSAGE_TYPE_OUTBOX:
$message_content .= '<a href="outbox.php?'.$social_link.'">'.
Display::return_icon('back.png', get_lang('ReturnToOutbox')).'</a> &nbsp';
$message_content .= '<a href="outbox.php?action=deleteone&id='.$messageId.'&'.$social_link.'" >'.
Display::return_icon('delete.png', get_lang('DeleteMessage')).'</a>&nbsp';
break;
case self::MESSAGE_TYPE_INBOX:
$message_content .= '<a href="inbox.php?'.$social_link.'">'.
Display::return_icon('back.png', get_lang('ReturnToInbox')).'</a> &nbsp';
$message_content .= '<a href="new_message.php?re_id='.$messageId.'&'.$social_link.'">'.
Display::return_icon('message_reply.png', get_lang('ReplyToMessage')).'</a> &nbsp';
$message_content .= '<a href="inbox.php?action=deleteone&id='.$messageId.'&'.$social_link.'" >'.
Display::return_icon('delete.png', get_lang('DeleteMessage')).'</a>&nbsp';
break;
}
$message_content .= '</div></td>
@ -1621,7 +1668,7 @@ class MessageManager
$items_page_nr = null;
$user_sender_info = api_get_user_info($main_message['user_sender_id']);
$files_attachments = self::getAttachmentLinkList($main_message['id']);
$files_attachments = self::getAttachmentLinkList($main_message['id'], 0);
$name = $user_sender_info['complete_name'];
$topic_page_nr = isset($_GET['topics_page_nr']) ? (int) $_GET['topics_page_nr'] : null;
@ -1763,7 +1810,7 @@ class MessageManager
$links .= '<div class="pull-right">';
$html_items = '';
$user_sender_info = api_get_user_info($topic['user_sender_id']);
$files_attachments = self::getAttachmentLinkList($topic['id']);
$files_attachments = self::getAttachmentLinkList($topic['id'], 0);
$name = $user_sender_info['complete_name'];
$links .= '<div class="btn-group btn-group-sm">';
@ -1994,12 +2041,12 @@ class MessageManager
/**
* Get array of links (download) for message attachment files.
*
* @param int $messageId
* @param string $type message list (inbox/outbox)
* @param int $messageId
* @param int $type
*
* @return array
*/
public static function getAttachmentLinkList($messageId, $type = '')
public static function getAttachmentLinkList($messageId, $type)
{
$files = self::getAttachmentList($messageId);
// get file attachments by message id
@ -2017,10 +2064,9 @@ class MessageManager
$comment = !empty($comment) ? '&nbsp;-&nbsp;<i>'.$comment.'</i>' : '';
$attachmentLine = $attachIcon.'&nbsp;'.$link.'&nbsp;('.$size.')'.$comment;
if ($row_file['comment'] == 'audio_message') {
if ($row_file['comment'] === 'audio_message') {
$attachmentLine = '<audio src="'.$archiveURL.$archiveFile.'"/>';
}
$list[] = $attachmentLine;
}
}
@ -2089,23 +2135,72 @@ class MessageManager
}
/**
* @param string $statusList
* @param array $keyword
* @param string $type
* @param string $keyword
* @param array $actions
* @param string $viewUrl
*
* @return string
*/
public static function getMessageGrid($statusList, $keyword, $actions = [], $viewUrl = '')
public static function getMessageGrid($type, $keyword, $actions = [])
{
if (empty($statusList)) {
return '';
$html = '';
// display sortable table with messages of the current user
$table = new SortableTable(
'message_inbox',
['MessageManager', 'getNumberOfMessages'],
['MessageManager', 'getMessageData'],
2,
20,
'DESC'
);
$table->setDataFunctionParams(
['keyword' => $keyword, 'type' => $type, 'actions' => $actions]
);
$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') {
$parameters['f'] = 'social';
$table->set_additional_parameters($parameters);
}
$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();
return $html;
}
/**
* @param string $keyword
*
* @return string
*/
public static function inboxDisplay($keyword = '')
{
$success = get_lang('SelectedMessagesDeleted');
$success_read = get_lang('SelectedMessagesRead');
$success_unread = get_lang('SelectedMessagesUnRead');
$currentUserId = api_get_user_id();
$html = '';
if (isset($_REQUEST['action'])) {
switch ($_REQUEST['action']) {
@ -2119,11 +2214,11 @@ class MessageManager
);
}
}
$html .= Display::return_message(
api_xml_http_response_encode($success_unread),
Display::addFlash(Display::return_message(
$success_unread,
'normal',
false
);
));
break;
case 'mark_as_read':
if (is_array($_POST['id'])) {
@ -2135,75 +2230,39 @@ class MessageManager
);
}
}
$html .= Display::return_message(
api_xml_http_response_encode($success_read),
Display::addFlash(Display::return_message(
$success_read,
'normal',
false
);
));
break;
case 'delete':
foreach ($_POST['id'] as $index => $messageId) {
self::delete_message_by_user_receiver($currentUserId, $messageId);
}
$html .= Display::return_message(
api_xml_http_response_encode($success),
Display::addFlash(Display::return_message(
$success,
'normal',
false
);
));
break;
case 'deleteone':
self::delete_message_by_user_receiver($currentUserId, $_GET['id']);
$html .= Display::return_message(
api_xml_http_response_encode($success),
'confirmation',
false
);
$result = self::delete_message_by_user_receiver($currentUserId, $_GET['id']);
if ($result) {
Display::addFlash(
Display::return_message(
$success,
'confirmation',
false
)
);
}
break;
}
}
// display sortable table with messages of the current user
$table = new SortableTable(
'message_inbox',
['MessageManager', 'getNumberOfMessages'],
['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') {
$parameters['f'] = 'social';
$table->set_additional_parameters($parameters);
}
$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();
$actions = ['reply', 'mark_as_unread', 'mark_as_read', 'forward', 'delete'];
$html = self::getMessageGrid(self::MESSAGE_TYPE_INBOX, $keyword, $actions);
return $html;
}
@ -2213,10 +2272,36 @@ class MessageManager
*
* @return string
*/
public static function inboxDisplay($keyword = '')
public static function getPromotedMessagesGrid($keyword)
{
$actions = ['reply', 'mark_as_unread', 'mark_as_read', 'forward', 'delete'];
$html = self::getMessageGrid([MESSAGE_STATUS_NEW, MESSAGE_STATUS_UNREAD], $keyword, $actions);
$actions = ['delete'];
$currentUserId = api_get_user_id();
$success = get_lang('SelectedMessagesDeleted');
if (isset($_REQUEST['action'])) {
switch ($_REQUEST['action']) {
case 'delete':
foreach ($_POST['id'] as $index => $messageId) {
self::delete_message_by_user_receiver($currentUserId, $messageId);
}
Display::addFlash(Display::return_message(
$success,
'normal',
false
));
break;
case 'deleteone':
self::delete_message_by_user_receiver($currentUserId, $_GET['id']);
Display::addFlash(Display::return_message(
$success,
'confirmation',
false
));
break;
}
}
$html = self::getMessageGrid(self::MESSAGE_TYPE_PROMOTED, $keyword, $actions);
return $html;
}
@ -2226,12 +2311,36 @@ class MessageManager
*
* @return string
*/
public static function getPromotedMessagesGrid($keyword = '')
public static function outBoxDisplay($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);
$success = get_lang('SelectedMessagesDeleted');
$currentUserId = api_get_user_id();
if (isset($_REQUEST['action'])) {
switch ($_REQUEST['action']) {
case 'delete':
foreach ($_POST['id'] as $index => $messageId) {
self::delete_message_by_user_sender($currentUserId, $messageId);
}
Display::addFlash(Display::return_message(
$success,
'normal',
false
));
break;
case 'deleteone':
self::delete_message_by_user_sender($currentUserId, $_GET['id']);
Display::addFlash(Display::return_message(
$success,
'confirmation',
false
));
break;
}
}
$html = self::getMessageGrid(self::MESSAGE_TYPE_OUTBOX, $keyword, $actions);
return $html;
}
@ -2274,13 +2383,13 @@ class MessageManager
$table = new SortableTable(
'message_outbox',
['MessageManager', 'getNumberOfMessages'],
['MessageManager', 'get_message_data_sent'],
['MessageManager', 'getMessageData'],
2,
20,
'DESC'
);
$table->setDataFunctionParams(
['keyword' => $keyword, 'message_status' => [MESSAGE_STATUS_OUTBOX]]
['keyword' => $keyword, 'type' => self::MESSAGE_TYPE_OUTBOX]
);
$table->set_header(0, '', false, ['style' => 'width:15px;']);

@ -917,7 +917,7 @@ class SocialManager extends UserManager
];
// get count unread message and total invitations
$count_unread_message = MessageManager::getNumberOfMessages(['message_status' => [MESSAGE_STATUS_UNREAD]]);
$count_unread_message = MessageManager::getCountNewMessagesFromDB(api_get_user_id());
$count_unread_message = !empty($count_unread_message) ? Display::badge($count_unread_message) : null;
$number_of_new_messages_of_friend = self::get_message_number_invitation_by_user_id(api_get_user_id());
@ -1950,7 +1950,7 @@ class SocialManager extends UserManager
}
}
} else {
$list = MessageManager::getAttachmentLinkList($messageId);
$list = MessageManager::getAttachmentLinkList($messageId, 0);
}
return $list;

@ -1012,7 +1012,6 @@ class SortableTable extends HTML_Table
$this->getDataFunctionParams()
);
}
return $this->total_number_of_items;
}

@ -14,6 +14,7 @@ session_cache_limiter('public');
require_once __DIR__.'/../inc/global.inc.php';
$file_url = isset($_GET['file']) ? $_GET['file'] : '';
$type = isset($_GET['type']) ? $_GET['type'] : '';
if (empty($file_url)) {
api_not_allowed();
@ -52,13 +53,13 @@ $current_uid = api_get_user_id();
// get message user id for inbox/outbox
$message_uid = '';
$message_type = ['inbox', 'outbox'];
if (in_array($_GET['type'], $message_type)) {
if ($_GET['type'] == 'inbox') {
switch ($type) {
case MessageManager::MESSAGE_TYPE_INBOX:
$message_uid = $row_users['user_receiver_id'];
} else {
break;
case MessageManager::MESSAGE_TYPE_OUTBOX:
$message_uid = $row_users['user_sender_id'];
}
break;
}
// allow to the correct user for download this file

@ -23,74 +23,6 @@ Event::registerLog($logInfo);
$allowSocial = api_get_setting('allow_social_tool') == 'true';
$allowMessage = api_get_setting('allow_message_tool') == 'true';
if (isset($_GET['messages_page_nr'])) {
if ($allowSocial && $allowMessage) {
header('Location:inbox.php');
exit;
}
}
$nameTools = get_lang('Messages');
$show_message = null;
if (isset($_GET['form_reply']) || isset($_GET['form_delete'])) {
$info_reply = [];
$info_delete = [];
if (isset($_GET['form_reply'])) {
//allow to insert messages
$info_reply = explode(base64_encode('&%ff..x'), $_GET['form_reply']);
$count_reply = count($info_reply);
$button_sent = urldecode($info_reply[4]);
}
if (isset($_GET['form_delete'])) {
//allow to delete messages
$info_delete = explode(',', $_GET['form_delete']);
$count_delete = (count($info_delete) - 1);
}
if (isset($button_sent)) {
$title = urldecode($info_reply[0]);
$content = str_replace("\\", '', urldecode($info_reply[1]));
$user_reply = $info_reply[2];
$user_email_base = str_replace(')', '(', $info_reply[5]);
$user_email_prepare = explode('(', $user_email_base);
if (count($user_email_prepare) == 1) {
$user_email = trim($user_email_prepare[0]);
} elseif (count($user_email_prepare) == 3) {
$user_email = trim($user_email_prepare[1]);
}
$user_id_by_email = MessageManager::get_user_id_by_email($user_email);
if ($info_reply[6] == 'save_form') {
$user_id_by_email = $info_reply[2];
}
if (isset($user_reply) && !is_null($user_id_by_email) && strlen($info_reply[0]) > 0) {
MessageManager::send_message($user_id_by_email, $title, $content);
$show_message .= MessageManager::return_message($user_id_by_email, 'confirmation');
$social_right_content .= MessageManager::inboxDisplay();
exit;
} elseif (is_null($user_id_by_email)) {
$message_box = get_lang('ErrorSendingMessage');
$show_message .= Display::return_message(api_xml_http_response_encode($message_box), 'error');
$social_right_content .= MessageManager::inboxDisplay();
exit;
}
} elseif (trim($info_delete[0]) == 'delete') {
for ($i = 1; $i <= $count_delete; $i++) {
MessageManager::delete_message_by_user_receiver(
api_get_user_id(),
$info_delete[$i]
);
}
$message_box = get_lang('SelectedMessagesDeleted');
$show_message .= Display::return_message(api_xml_http_response_encode($message_box));
$social_right_content .= MessageManager::inboxDisplay();
exit;
}
}
if ($allowSocial) {
$this_section = SECTION_SOCIAL;
$interbreadcrumb[] = [
@ -147,21 +79,7 @@ if ($allowSocial) {
$social_right_content .= Display::toolbarAction('toolbar', [$actionsLeft, $actionsRight]);
}
if (!isset($_GET['del_msg'])) {
$social_right_content .= MessageManager::inboxDisplay($keyword);
} else {
$num_msg = (int) $_POST['total'];
for ($i = 0; $i < $num_msg; $i++) {
if ($_POST[$i]) {
// The user_id was necessary to delete a message??
$show_message .= MessageManager::delete_message_by_user_receiver(
api_get_user_id(),
$_POST['_'.$i]
);
}
}
$social_right_content .= MessageManager::inboxDisplay();
}
$social_right_content .= MessageManager::inboxDisplay($keyword);
$tpl = new Template(null);

@ -197,7 +197,7 @@ function manageForm($default, $select_from_user_list = null, $sent_to = '', $tpl
if (isset($_GET['forward_id'])) {
$forwardId = (int) $_GET['forward_id'];
$message_reply_info = MessageManager::get_message_by_id($forwardId);
$attachments = MessageManager::getAttachmentLinkList($forwardId);
$attachments = MessageManager::getAttachmentLinkList($forwardId, MessageManager::MESSAGE_TYPE_INBOX);
if (!empty($attachments)) {
$fileListToString = !empty($attachments) ? implode('<br />', $attachments) : '';
$form->addLabel('', $fileListToString);

@ -55,11 +55,6 @@ if ($allowMessage) {
Display::return_icon('outbox.png', get_lang('Outbox')).'</a>';
}
$action = null;
if (isset($_REQUEST['action'])) {
$action = $_REQUEST['action'];
}
$keyword = '';
$social_right_content = '';
if ($allowSocial) {
@ -79,32 +74,8 @@ if ($allowSocial) {
[$actionsLeft, $actionsRight]
);
}
//MAIN CONTENT
if ($action == 'delete') {
$delete_list_id = [];
if (isset($_POST['out'])) {
$delete_list_id = $_POST['out'];
}
if (isset($_POST['id'])) {
$delete_list_id = $_POST['id'];
}
for ($i = 0; $i < count($delete_list_id); $i++) {
MessageManager::delete_message_by_user_sender(
api_get_user_id(),
$delete_list_id[$i]
);
}
MessageManager::outbox_display($keyword);
header("Location: ".api_get_self());
exit;
} elseif ($action == 'deleteone') {
MessageManager::delete_message_by_user_sender(api_get_user_id(), $_GET['id']);
MessageManager::outbox_display($keyword);
header("Location: ".api_get_self());
exit;
} else {
$social_right_content = MessageManager::outbox_display($keyword);
}
$social_right_content .= MessageManager::outBoxDisplay($keyword);
$tpl = new Template(get_lang('Outbox'));
// Block Social Avatar

@ -8,12 +8,19 @@ $cidReset = true;
require_once __DIR__.'/../inc/global.inc.php';
api_block_anonymous_users();
if (api_get_setting('allow_message_tool') != 'true') {
$allowSocial = api_get_setting('allow_social_tool') === 'true';
$allowMessage = api_get_setting('allow_message_tool') === 'true';
if (!$allowMessage) {
api_not_allowed(true);
}
$messageId = isset($_GET['id']) ? (int) $_GET['id'] : 0;
if (empty($messageId)) {
api_not_allowed(true);
}
$allowSocial = api_get_setting('allow_social_tool') === 'true';
$allowMessage = api_get_setting('allow_message_tool') === 'true';
if ($allowSocial) {
$this_section = SECTION_SOCIAL;
@ -25,7 +32,7 @@ if ($allowSocial) {
$interbreadcrumb[] = ['url' => 'inbox.php', 'name' => get_lang('Messages')];
$social_right_content = '<div class="actions">';
if (api_get_setting('allow_message_tool') === 'true') {
if ($allowMessage === 'true') {
$social_right_content .= '<a href="'.api_get_path(WEB_PATH).'main/messages/new_message.php">'.
Display::return_icon('new-message.png', get_lang('ComposeMessage')).'</a>';
$social_right_content .= '<a href="'.api_get_path(WEB_PATH).'main/messages/inbox.php">'.
@ -34,22 +41,18 @@ if (api_get_setting('allow_message_tool') === 'true') {
Display::return_icon('outbox.png', get_lang('Outbox')).'</a>';
}
$social_right_content .= '</div>';
$type = isset($_GET['type']) ? (int) $_GET['type'] : MessageManager::MESSAGE_TYPE_INBOX;
if (empty($_GET['id'])) {
$messageId = $_GET['id_send'];
$source = 'outbox';
$show_menu = 'messages_inbox';
if ($type === MessageManager::MESSAGE_TYPE_OUTBOX) {
$show_menu = 'messages_outbox';
} else {
$messageId = $_GET['id'];
$source = 'inbox';
$show_menu = 'messages_inbox';
}
$message = '';
$logInfo = [
'tool' => 'Messages',
'action' => $source,
'tool_id' => $messageId,
'action' => 'view-message',
'action_details' => 'view-message',
];
Event::registerLog($logInfo);
@ -60,7 +63,7 @@ if (api_get_setting('allow_social_tool') === 'true') {
$social_menu_block = SocialManager::show_social_menu($show_menu);
}
// MAIN CONTENT
$message .= MessageManager::showMessageBox($messageId, $source);
$message .= MessageManager::showMessageBox($messageId, $type);
if (!empty($message)) {
$social_right_content .= $message;

Loading…
Cancel
Save