Explorar el Código

Add "forward message" button see BT#12619

jmontoyaa hace 7 años
padre
commit
2bc3f226e4

+ 64 - 29
main/inc/lib/message.lib.php

@@ -140,9 +140,9 @@ class MessageManager
                     msg_status as col4
                 FROM $table_message
                 WHERE
-                  user_receiver_id=".api_get_user_id()." AND
-                  msg_status IN (".MESSAGE_STATUS_NEW.", ".MESSAGE_STATUS_UNREAD.")
-                  $keywordCondition
+                    user_receiver_id=".api_get_user_id()." AND
+                    msg_status IN (".MESSAGE_STATUS_NEW.", ".MESSAGE_STATUS_UNREAD.")
+                    $keywordCondition
                 ORDER BY col$column $direction
                 LIMIT $from, $number_of_items";
 
@@ -150,6 +150,7 @@ class MessageManager
         $i = 0;
         $message_list = array();
 
+        $newMessageLink = api_get_path(WEB_CODE_PATH).'messages/new_message.php';
         while ($result = Database::fetch_row($sql_result)) {
             $message[0] = $result[0];
             $result[2] = Security::remove_XSS($result[2], STUDENT, true);
@@ -164,11 +165,24 @@ class MessageManager
             if (isset($_GET['f']) && $_GET['f'] == 'social') {
                 $link = '&f=social';
             }
+
             $userInfo = api_get_user_info($result[1]);
             $message[1] = '<a '.$class.' href="view_message.php?id='.$result[0].$link.'">'.$result[2].'</a><br />'.$userInfo['complete_name'];
-            $message[3] = '<a href="new_message.php?re_id='.$result[0].$link.'">'.
-                Display::return_icon('message_reply.png', get_lang('ReplyToMessage')).'</a>'.
-                '&nbsp;&nbsp;<a onclick="javascript:if(!confirm('."'".addslashes(api_htmlentities(get_lang('ConfirmDeleteMessage')))."'".')) return false;" href="inbox.php?action=deleteone&id='.$result[0].$link.'">'.Display::return_icon('delete.png', get_lang('DeleteMessage')).'</a>';
+
+            $message[3] =
+                Display::url(
+                    Display::returnFontAwesomeIcon('reply', 2),
+                    $newMessageLink.'?re_id='.$result[0].$link,
+                    ['title' => get_lang('ReplyToMessage') ]
+                ).
+                '&nbsp;&nbsp;'.
+                Display::url(
+                    Display::returnFontAwesomeIcon('share', 2),
+                    $newMessageLink.'?forward_id='.$result[0].$link,
+                    ['title' => get_lang('ForwardMessage') ]
+                ).
+                '&nbsp;&nbsp;<a title="'.addslashes(get_lang('DeleteMessage')).'" onclick="javascript:if(!confirm('."'".addslashes(api_htmlentities(get_lang('ConfirmDeleteMessage')))."'".')) return false;" href="inbox.php?action=deleteone&id='.$result[0].$link.'">'.
+                Display::returnFontAwesomeIcon('trash', 2).'</a>';
 
             $message[2] = api_convert_and_format_date($result[3], DATE_TIME_FORMAT_LONG); //date stays the same
             foreach ($message as $key => $value) {
@@ -257,6 +271,7 @@ class MessageManager
      * @param int $topic_id (optional) the default value is the current user_id
      * @param int $sender_id
      * @param bool $directMessage
+     * @param int $forwardId
      *
      * @return bool
      */
@@ -271,7 +286,8 @@ class MessageManager
         $edit_message_id = 0,
         $topic_id = 0,
         $sender_id = null,
-        $directMessage = false
+        $directMessage = false,
+        $forwardId = 0
     ) {
         $table_message = Database::get_main_table(TABLE_MESSAGE);
         $group_id = intval($group_id);
@@ -330,7 +346,6 @@ class MessageManager
         }
 
         $inbox_last_id = null;
-
         //Just in case we replace the and \n and \n\r while saving in the DB
         //$content = str_replace(array("\n", "\n\r"), '<br />', $content);
         $now = api_get_utc_datetime();
@@ -677,7 +692,11 @@ class MessageManager
             // User-reserved directory where photos have to be placed.*
             $userGroup = new UserGroup();
             if (!empty($group_id)) {
-                $path_user_info = $userGroup->get_group_picture_path_by_id($group_id, 'system', true);
+                $path_user_info = $userGroup->get_group_picture_path_by_id(
+                    $group_id,
+                    'system',
+                    true
+                );
             } else {
                 $path_user_info['dir'] = UserManager::getUserPathById($message_user_id, 'system');
             }
@@ -766,7 +785,8 @@ class MessageManager
         }
 
         $table_message = Database::get_main_table(TABLE_MESSAGE);
-        $sql = "UPDATE $table_message SET msg_status = '".MESSAGE_STATUS_NEW."'
+        $sql = "UPDATE $table_message SET 
+                    msg_status = '".MESSAGE_STATUS_NEW."'
                 WHERE
                     msg_status <> ".MESSAGE_STATUS_OUTBOX." AND
                     user_receiver_id=".intval($user_id)." AND
@@ -1009,8 +1029,8 @@ class MessageManager
                 $message[1] = '<a onclick="show_sent_message('.$result[0].')" href="javascript:void(0)">'.$userInfo['complete_name'].'</a>';
                 $message[2] = '<a onclick="show_sent_message('.$result[0].')" href="javascript:void(0)">'.str_replace("\\", "", $result[2]).'</a>';
                 $message[3] = api_convert_and_format_date($result[3], DATE_TIME_FORMAT_LONG); //date stays the same
-                $message[4] = '&nbsp;&nbsp;<a onclick="delete_one_message_outbox('.$result[0].')" href="javascript:void(0)"  >'.
-                    Display::return_icon('delete.png', get_lang('DeleteMessage')).'</a>';
+                $message[4] = '&nbsp;&nbsp;<a title="'.addslashes(get_lang('DeleteMessage')).'" onclick="delete_one_message_outbox('.$result[0].')" href="javascript:void(0)"  >'.
+                    Display::returnFontAwesomeIcon('trash', 2).'</a>';
             } else {
                 $link = '';
                 if (isset($_GET['f']) && $_GET['f'] == 'social') {
@@ -1018,8 +1038,8 @@ class MessageManager
                 }
                 $message[1] = '<a '.$class.' onclick="show_sent_message ('.$result[0].')" href="../messages/view_message.php?id_send='.$result[0].$link.'">'.$result[2].'</a><br />'.$userInfo['complete_name'];
                 $message[2] = api_convert_and_format_date($result[3], DATE_TIME_FORMAT_LONG); //date stays the same
-                $message[3] = '<a href="outbox.php?action=deleteone&id='.$result[0].'&'.$link.'"  onclick="javascript:if(!confirm('."'".addslashes(api_htmlentities(get_lang('ConfirmDeleteMessage')))."'".')) return false;" >'.
-                    Display::return_icon('delete.png', get_lang('DeleteMessage')).'</a>';
+                $message[3] = '<a title="'.addslashes(get_lang('DeleteMessage')).'" href="outbox.php?action=deleteone&id='.$result[0].'&'.$link.'"  onclick="javascript:if(!confirm('."'".addslashes(api_htmlentities(get_lang('ConfirmDeleteMessage')))."'".')) return false;" >'.
+                    Display::returnFontAwesomeIcon('trash', 2).'</a>';
             }
 
             foreach ($message as $key => $value) {
@@ -1041,7 +1061,6 @@ class MessageManager
     public static function get_number_of_messages_sent()
     {
         $table_message = Database::get_main_table(TABLE_MESSAGE);
-
         $keyword = Session::read('message_sent_search_keyword');
         $keywordCondition = '';
         if (!empty($keyword)) {
@@ -1248,7 +1267,6 @@ class MessageManager
             }
 
             $array_html = array();
-
             foreach ($new_topics as $index => $topic) {
                 $html = '';
                 // topics
@@ -1720,7 +1738,7 @@ class MessageManager
 
         if (isset($_REQUEST['action'])) {
             switch ($_REQUEST['action']) {
-                case 'mark_as_unread' :
+                case 'mark_as_unread':
                     if (is_array($_POST['id'])) {
                         foreach ($_POST['id'] as $index => $message_id) {
                             self::update_message_status(
@@ -1736,23 +1754,39 @@ class MessageManager
                         false
                     );
                     break;
-                case 'mark_as_read' :
+                case 'mark_as_read':
                     if (is_array($_POST['id'])) {
                         foreach ($_POST['id'] as $index => $message_id) {
-                            self::update_message_status(api_get_user_id(), $message_id, MESSAGE_STATUS_NEW);
+                            self::update_message_status(
+                                api_get_user_id(),
+                                $message_id,
+                                MESSAGE_STATUS_NEW
+                            );
                         }
                     }
-                    $html .= Display::return_message(api_xml_http_response_encode($success_read), 'normal', false);
+                    $html .= Display::return_message(
+                        api_xml_http_response_encode($success_read),
+                        'normal',
+                        false
+                    );
                     break;
-                case 'delete' :
+                case 'delete':
                     foreach ($_POST['id'] as $index => $message_id) {
                         self::delete_message_by_user_receiver(api_get_user_id(), $message_id);
                     }
-                    $html .= Display::return_message(api_xml_http_response_encode($success), 'normal', false);
+                    $html .= Display::return_message(
+                        api_xml_http_response_encode($success),
+                        'normal',
+                        false
+                    );
                     break;
-                case 'deleteone' :
+                case 'deleteone':
                     self::delete_message_by_user_receiver(api_get_user_id(), $_GET['id']);
-                    $html .= Display::return_message(api_xml_http_response_encode($success), 'confirmation', false);
+                    $html .= Display::return_message(
+                        api_xml_http_response_encode($success),
+                        'confirmation',
+                        false
+                    );
                     break;
             }
         }
@@ -1769,7 +1803,7 @@ class MessageManager
         $table->set_header(0, '', false, array('style' => 'width:15px;'));
         $table->set_header(1, get_lang('Messages'), false);
         $table->set_header(2, get_lang('Date'), true, array('style' => 'width:180px;'));
-        $table->set_header(3, get_lang('Modify'), false, array('style' => 'width:70px;'));
+        $table->set_header(3, get_lang('Modify'), false, array('style' => 'width:120px;'));
 
         if (isset($_REQUEST['f']) && $_REQUEST['f'] == 'social') {
             $parameters['f'] = 'social';
@@ -1801,7 +1835,6 @@ class MessageManager
         }
 
         Session::write('message_sent_search_keyword', $keyword);
-
         $success = get_lang('SelectedMessagesDeleted').'&nbsp</b><br /><a href="outbox.php?'.$social_link.'">'.get_lang('BackToOutbox').'</a>';
 
         $html = null;
@@ -1811,7 +1844,10 @@ class MessageManager
                     $number_of_selected_messages = count($_POST['id']);
                     if ($number_of_selected_messages != 0) {
                         foreach ($_POST['id'] as $index => $message_id) {
-                            self::delete_message_by_user_receiver(api_get_user_id(), $message_id);
+                            self::delete_message_by_user_receiver(
+                                api_get_user_id(),
+                                $message_id
+                            );
                         }
                     }
                     $html .= Display::return_message(api_xml_http_response_encode($success), 'normal', false);
@@ -1837,9 +1873,8 @@ class MessageManager
         $parameters['f'] = isset($_GET['f']) && $_GET['f'] == 'social' ? 'social' : null;
         $table->set_additional_parameters($parameters);
         $table->set_header(0, '', false, array('style' => 'width:15px;'));
-
         $table->set_header(1, get_lang('Messages'), false);
-        $table->set_header(2, get_lang('Date'), true, array('style' => 'width:160px;'));
+        $table->set_header(2, get_lang('Date'), true, array('style' => 'width:180px;'));
         $table->set_header(3, get_lang('Modify'), false, array('style' => 'width:70px;'));
 
         $table->set_form_actions(array('delete' => get_lang('DeleteSelectedMessages')));

+ 3 - 0
main/lang/english/trad4all.inc.php

@@ -8041,4 +8041,7 @@ Sincerely,
 ((author_first_name)), ((author_last_name))
 ((portal_name))";
 $SendCertificateNotifications = "Send certificate notification to all users";
+$MailSubjectForwardShort = "Fwd";
+$ForwardedMessage = "Forwarded message";
+$ForwardMessage = "Forward message";
 ?>

+ 19 - 6
main/messages/inbox.php

@@ -2,7 +2,7 @@
 /* For licensing terms, see /license.txt */
 
 /**
- * 	@package chamilo.messages
+ * @package chamilo.messages
  */
 
 $cidReset = true;
@@ -15,7 +15,9 @@ if (isset($_GET['messages_page_nr'])) {
     if ($_REQUEST['f'] == 'social') {
         $social_link = '?f=social';
     }
-    if (api_get_setting('allow_social_tool') == 'true' && api_get_setting('allow_message_tool') == 'true') {
+    if (api_get_setting('allow_social_tool') == 'true' &&
+        api_get_setting('allow_message_tool') == 'true'
+    ) {
         header('Location:inbox.php'.$social_link);
         exit;
     }
@@ -74,7 +76,10 @@ if (isset($_GET['form_reply']) || isset($_GET['form_delete'])) {
         }
     } 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]);
+            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));
@@ -92,7 +97,10 @@ if (isset($_GET['f']) && $_GET['f'] == 'social') {
     $interbreadcrumb[] = array('url' => '#', 'name' => get_lang('Inbox'));
 } else {
     $this_section = SECTION_MYPROFILE;
-    $interbreadcrumb[] = array('url' => api_get_path(WEB_PATH).'main/auth/profile.php', 'name' => get_lang('Profile'));
+    $interbreadcrumb[] = array(
+        'url' => api_get_path(WEB_PATH).'main/auth/profile.php',
+        'name' => get_lang('Profile')
+    );
 }
 
 $social_parameter = '';
@@ -103,7 +111,9 @@ if ((isset($_GET['f']) && $_GET['f'] === 'social') ||
     $social_parameter = '?f=social';
 } else {
     //Comes from normal profile
-    if (api_get_setting('allow_social_tool') === 'true' && api_get_setting('allow_message_tool') === 'true') {
+    if (api_get_setting('allow_social_tool') === 'true' &&
+        api_get_setting('allow_message_tool') === 'true'
+    ) {
         $actions .= '<a href="'.api_get_path(WEB_PATH).'main/social/profile.php">'.
             Display::return_icon('shared_profile.png', get_lang('ViewSharedProfile')).'</a>';
     }
@@ -151,7 +161,10 @@ if (!isset($_GET['del_msg'])) {
     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]);
+            $show_message .= MessageManager::delete_message_by_user_receiver(
+                api_get_user_id(),
+                $_POST['_'.$i]
+            );
         }
     }
     $social_right_content .= MessageManager::inbox_display();

+ 36 - 8
main/messages/new_message.php

@@ -70,7 +70,7 @@ function show_compose_to_any($user_id)
 {
     $default['user_list'] = 0;
     $online_user_list = null;
-    $html = manage_form($default, $online_user_list);
+    $html = manageForm($default, $online_user_list);
 
     return $html;
 }
@@ -90,7 +90,7 @@ function show_compose_reply_to_message($message_id, $receiver_id)
     }
     $userInfo = api_get_user_info($row['user_sender_id']);
     $default['users'] = array($row['user_sender_id']);
-    $html = manage_form($default, null, $userInfo['complete_name']);
+    $html = manageForm($default, null, $userInfo['complete_name']);
 
     return $html;
 }
@@ -101,12 +101,18 @@ function show_compose_to_user($receiver_id)
     $html = get_lang('To').':&nbsp;<strong>'.$userInfo['complete_name'].'</strong>';
     $default['title'] = api_xml_http_response_encode(get_lang('EnterTitle'));
     $default['users'] = array($receiver_id);
-    $html .= manage_form($default);
+    $html .= manageForm($default);
 
     return $html;
 }
 
-function manage_form($default, $select_from_user_list = null, $sent_to = null)
+/**
+ * @param $default
+ * @param null $select_from_user_list
+ * @param null $sent_to
+ * @return string
+ */
+function manageForm($default, $select_from_user_list = null, $sent_to = null)
 {
     $group_id = isset($_REQUEST['group_id']) ? intval($_REQUEST['group_id']) : null;
     $message_id = isset($_GET['message_id']) ? intval($_GET['message_id']) : null;
@@ -187,6 +193,21 @@ function manage_form($default, $select_from_user_list = null, $sent_to = null)
         );
     }
 
+    if (isset($_GET['forward_id'])) {
+        $forwardId = (int) $_GET['forward_id'];
+        $message_reply_info = MessageManager::get_message_by_id($forwardId);
+        $default['title'] = '['.get_lang('MailSubjectForwardShort').": ".$message_reply_info['title'].']';
+        $form->addHidden('forward_id', $forwardId);
+        $form->addHidden('save_form', 'save_form');
+        $receiverInfo = api_get_user_info($message_reply_info['user_receiver_id']);
+
+        $forwardMessage = '---------- '.get_lang('ForwardedMessage').' ---------'.'<br />';
+        $forwardMessage .= get_lang('Date').': '.api_get_local_time($message_reply_info['send_date']).'<br />';
+        $forwardMessage .= get_lang('Subject').': '.$message_reply_info['title'].'<br />';
+        $forwardMessage .= get_lang('To').': '.$receiverInfo['email'].'<br />';
+        $default['content'] = '<p><br/></p>'.$forwardMessage.'<br />'.Security::filter_terms($message_reply_info['content']);
+    }
+
     if (empty($group_id)) {
         $form->addElement(
             'label',
@@ -233,6 +254,8 @@ function manage_form($default, $select_from_user_list = null, $sent_to = null)
             $content = $default['content'];
             $group_id = isset($default['group_id']) ? $default['group_id'] : null;
             $parent_id = isset($default['parent_id']) ? $default['parent_id'] : null;
+            $forwardId = isset($_POST['forward_id']) ? $_POST['forward_id'] : false;
+
             if (is_array($user_list) && count($user_list) > 0) {
                 //all is well, send the message
                 foreach ($user_list as $userId) {
@@ -243,7 +266,12 @@ function manage_form($default, $select_from_user_list = null, $sent_to = null)
                         $_FILES,
                         $file_comments,
                         $group_id,
-                        $parent_id
+                        $parent_id,
+                        0,
+                        0,
+                        null,
+                        false,
+                        $forwardId
                     );
                     if ($res) {
                         $userInfo = api_get_user_info($userId);
@@ -356,8 +384,8 @@ if (!isset($_POST['compose'])) {
     $default['content'] = $_POST['content'];
 
     // comes from a reply button
-    if (isset($_GET['re_id'])) {
-        $social_right_content .= manage_form($default);
+    if (isset($_GET['re_id']) || isset($_GET['forward_id'])) {
+        $social_right_content .= manageForm($default);
     } else {
         // post
         if ($restrict) {
@@ -369,7 +397,7 @@ if (!isset($_POST['compose'])) {
             if (isset($_POST['hidden_user'])) {
                 $default['users'] = array($_POST['hidden_user']);
             }
-            $social_right_content .= manage_form($default);
+            $social_right_content .= manageForm($default);
         } else {
             $social_right_content .= Display::return_message(get_lang('ErrorSendingMessage'), 'error');
         }