Add search form (title and content) see BT#10948

1.9.x
jmontoya 10 years ago
parent 823d898a59
commit 09e1312ef5
  1. 126
      main/inc/lib/message.lib.php
  2. 12
      main/messages/inbox.php
  3. 15
      main/messages/outbox.php

@ -1,6 +1,8 @@
<?php <?php
/* For licensing terms, see /license.txt */ /* For licensing terms, see /license.txt */
use ChamiloSession as Session;
require_once api_get_path(LIBRARY_PATH).'online.inc.php'; require_once api_get_path(LIBRARY_PATH).'online.inc.php';
require_once api_get_path(LIBRARY_PATH).'fileUpload.lib.php'; require_once api_get_path(LIBRARY_PATH).'fileUpload.lib.php';
require_once api_get_path(LIBRARY_PATH).'fileDisplay.lib.php'; require_once api_get_path(LIBRARY_PATH).'fileDisplay.lib.php';
@ -131,8 +133,19 @@ class MessageManager
$condition_msg_status = ' msg_status IN('.MESSAGE_STATUS_NEW.','.MESSAGE_STATUS_UNREAD.') '; $condition_msg_status = ' msg_status IN('.MESSAGE_STATUS_NEW.','.MESSAGE_STATUS_UNREAD.') ';
} }
$keyword = Session::read('message_search_keyword');
$keywordCondition = '';
if (!empty($keyword)) {
$keyword = Database::escape_string($keyword);
$keywordCondition = " AND (title like '%$keyword%' OR content LIKE '%$keyword%') ";
}
$sql = "SELECT COUNT(*) as number_messages FROM $table_message $sql = "SELECT COUNT(*) as number_messages FROM $table_message
WHERE $condition_msg_status AND user_receiver_id=".api_get_user_id(); WHERE
$condition_msg_status AND
user_receiver_id=".api_get_user_id()."
$keywordCondition
";
$sql_result = Database::query($sql); $sql_result = Database::query($sql);
$result = Database::fetch_array($sql_result); $result = Database::fetch_array($sql_result);
return $result['number_messages']; return $result['number_messages'];
@ -160,9 +173,19 @@ class MessageManager
} }
$table_message = Database::get_main_table(TABLE_MESSAGE); $table_message = Database::get_main_table(TABLE_MESSAGE);
$keyword = Session::read('message_search_keyword');
$keywordCondition = '';
if (!empty($keyword)) {
$keyword = Database::escape_string($keyword);
$keywordCondition = " AND (title like '%$keyword%' OR content LIKE '%$keyword%') ";
}
$sql = "SELECT id as col0, user_sender_id as col1, title as col2, send_date as col3, msg_status as col4 $sql = "SELECT id as col0, user_sender_id as col1, title as col2, send_date as col3, msg_status as col4
FROM $table_message FROM $table_message
WHERE user_receiver_id=".api_get_user_id()." AND msg_status IN (0,1) WHERE
user_receiver_id=".api_get_user_id()." AND
msg_status IN (0,1)
$keywordCondition
ORDER BY col$column $direction ORDER BY col$column $direction
LIMIT $from,$number_of_items"; LIMIT $from,$number_of_items";
@ -803,6 +826,14 @@ class MessageManager
if (!in_array($direction, array('ASC', 'DESC'))) if (!in_array($direction, array('ASC', 'DESC')))
$direction = 'ASC'; $direction = 'ASC';
} }
$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%') ";
}
$table_message = Database::get_main_table(TABLE_MESSAGE); $table_message = Database::get_main_table(TABLE_MESSAGE);
$request = api_is_xml_http_request(); $request = api_is_xml_http_request();
$sql = "SELECT $sql = "SELECT
@ -811,6 +842,7 @@ class MessageManager
WHERE WHERE
user_sender_id=".api_get_user_id()." AND user_sender_id=".api_get_user_id()." AND
msg_status=".MESSAGE_STATUS_OUTBOX." msg_status=".MESSAGE_STATUS_OUTBOX."
$keywordCondition
ORDER BY col$column $direction ORDER BY col$column $direction
LIMIT $from, $number_of_items"; LIMIT $from, $number_of_items";
$sql_result = Database::query($sql); $sql_result = Database::query($sql);
@ -861,8 +893,20 @@ class MessageManager
public static function get_number_of_messages_sent() public static function get_number_of_messages_sent()
{ {
$table_message = Database::get_main_table(TABLE_MESSAGE); $table_message = 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(*) as number_messages FROM $table_message $sql = "SELECT COUNT(*) as number_messages FROM $table_message
WHERE msg_status=".MESSAGE_STATUS_OUTBOX." AND user_sender_id=".api_get_user_id(); WHERE
msg_status=".MESSAGE_STATUS_OUTBOX." AND
user_sender_id=".api_get_user_id()."
$keywordCondition
";
$sql_result = Database::query($sql); $sql_result = Database::query($sql);
$result = Database::fetch_array($sql_result); $result = Database::fetch_array($sql_result);
return $result['number_messages']; return $result['number_messages'];
@ -1445,19 +1489,22 @@ class MessageManager
return $div; return $div;
} }
//@todo this functions should be in the message class /**
* @param string $keyword
public static function inbox_display() * @return string
*/
public static function inbox_display($keyword = '')
{ {
$success = get_lang('SelectedMessagesDeleted'); $success = get_lang('SelectedMessagesDeleted');
$success_read = get_lang('SelectedMessagesRead'); $success_read = get_lang('SelectedMessagesRead');
$success_unread = get_lang('SelectedMessagesUnRead'); $success_unread = get_lang('SelectedMessagesUnRead');
$html = ''; $html = '';
Session::write('message_search_keyword', $keyword);
if (isset($_REQUEST['action'])) { if (isset($_REQUEST['action'])) {
switch ($_REQUEST['action']) { switch ($_REQUEST['action']) {
case 'mark_as_unread' : case 'mark_as_unread':
$number_of_selected_messages = count($_POST['id']);
if (is_array($_POST['id'])) { if (is_array($_POST['id'])) {
foreach ($_POST['id'] as $index => $message_id) { foreach ($_POST['id'] as $index => $message_id) {
MessageManager::update_message_status(api_get_user_id(), $message_id, MESSAGE_STATUS_UNREAD); MessageManager::update_message_status(api_get_user_id(), $message_id, MESSAGE_STATUS_UNREAD);
@ -1465,8 +1512,7 @@ class MessageManager
} }
$html .= Display::return_message(api_xml_http_response_encode($success_unread), 'normal', false); $html .= Display::return_message(api_xml_http_response_encode($success_unread), 'normal', false);
break; break;
case 'mark_as_read' : case 'mark_as_read':
$number_of_selected_messages = count($_POST['id']);
if (is_array($_POST['id'])) { if (is_array($_POST['id'])) {
foreach ($_POST['id'] as $index => $message_id) { foreach ($_POST['id'] as $index => $message_id) {
MessageManager::update_message_status(api_get_user_id(), $message_id, MESSAGE_STATUS_NEW); MessageManager::update_message_status(api_get_user_id(), $message_id, MESSAGE_STATUS_NEW);
@ -1474,14 +1520,13 @@ class MessageManager
} }
$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; break;
case 'delete' : case 'delete':
$number_of_selected_messages = count($_POST['id']);
foreach ($_POST['id'] as $index => $message_id) { foreach ($_POST['id'] as $index => $message_id) {
MessageManager::delete_message_by_user_receiver(api_get_user_id(), $message_id); MessageManager::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; break;
case 'deleteone' : case 'deleteone':
MessageManager::delete_message_by_user_receiver(api_get_user_id(), $_GET['id']); MessageManager::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; break;
@ -1489,7 +1534,14 @@ class MessageManager
} }
// display sortable table with messages of the current user // display sortable table with messages of the current user
$table = new SortableTable('message_inbox', array('MessageManager', 'get_number_of_messages'), array('MessageManager', 'get_message_data'), 3, 20, 'DESC'); $table = new SortableTable(
'message_inbox',
array('MessageManager', 'get_number_of_messages'),
array('MessageManager', 'get_message_data'),
3,
20,
'DESC'
);
$table->set_header(0, '', false, array('style' => 'width:15px;')); $table->set_header(0, '', false, array('style' => 'width:15px;'));
$table->set_header(1, get_lang('Messages'), false); $table->set_header(1, get_lang('Messages'), false);
$table->set_header(2, get_lang('Date'), true, array('style' => 'width:180px;')); $table->set_header(2, get_lang('Date'), true, array('style' => 'width:180px;'));
@ -1498,21 +1550,34 @@ class MessageManager
if (isset($_REQUEST['f']) && $_REQUEST['f'] == 'social') { if (isset($_REQUEST['f']) && $_REQUEST['f'] == 'social') {
$parameters['f'] = 'social'; $parameters['f'] = 'social';
$table->set_additional_parameters($parameters); $table->set_additional_parameters($parameters);
} }
$table->set_form_actions(array('delete' => get_lang('DeleteSelectedMessages'),'mark_as_unread' => get_lang('MailMarkSelectedAsUnread'),'mark_as_read' => get_lang('MailMarkSelectedAsRead'))); $table->set_form_actions(
array(
'delete' => get_lang('DeleteSelectedMessages'),
'mark_as_unread' => get_lang('MailMarkSelectedAsUnread'),
'mark_as_read' => get_lang('MailMarkSelectedAsRead'),
)
);
$html .= $table->return_table(); $html .= $table->return_table();
Session::erase('message_search_keyword');
return $html; return $html;
} }
/** /**
* @return string * @param string $keyword
* @return null|string
*/ */
static function outbox_display() public static function outbox_display($keyword = '')
{ {
$social_link = false; $social_link = false;
if (isset($_REQUEST['f']) && $_REQUEST['f'] == 'social') { if (isset($_REQUEST['f']) && $_REQUEST['f'] == 'social') {
$social_link = 'f=social'; $social_link = 'f=social';
} }
Session::write('message_sent_search_keyword', $keyword);
$success = get_lang('SelectedMessagesDeleted').'&nbsp</b><br /><a href="outbox.php?'.$social_link.'">'.get_lang('BackToOutbox').'</a>'; $success = get_lang('SelectedMessagesDeleted').'&nbsp</b><br /><a href="outbox.php?'.$social_link.'">'.get_lang('BackToOutbox').'</a>';
$html = null; $html = null;
@ -1536,7 +1601,14 @@ class MessageManager
} }
// display sortable table with messages of the current user // display sortable table with messages of the current user
$table = new SortableTable('message_outbox', array('MessageManager', 'get_number_of_messages_sent'), array('MessageManager', 'get_message_data_sent'), 3, 20, 'DESC'); $table = new SortableTable(
'message_outbox',
array('MessageManager', 'get_number_of_messages_sent'),
array('MessageManager', 'get_message_data_sent'),
3,
20,
'DESC'
);
$parameters['f'] = isset($_GET['f']) && $_GET['f'] == 'social' ? 'social' : null; $parameters['f'] = isset($_GET['f']) && $_GET['f'] == 'social' ? 'social' : null;
$table->set_additional_parameters($parameters); $table->set_additional_parameters($parameters);
@ -1548,6 +1620,9 @@ class MessageManager
$table->set_form_actions(array('delete' => get_lang('DeleteSelectedMessages'))); $table->set_form_actions(array('delete' => get_lang('DeleteSelectedMessages')));
$html .= $table->return_table(); $html .= $table->return_table();
Session::erase('message_sent_search_keyword');
return $html; return $html;
} }
@ -1659,4 +1734,19 @@ class MessageManager
return false; return false;
} }
/**
* @param string $url
*
* @return FormValidator
*/
public static function getSearchForm($url)
{
$form = new FormValidator('search', 'post', $url, null, array('class' => 'form-search'));
$form->addElement('text', 'keyword');
$form->addElement('style_submit_button', 'submit', get_lang('Search'));
return $form;
}
} }

@ -135,12 +135,20 @@ if (api_get_setting('allow_social_tool') == 'true') {
//Right content //Right content
$social_right_content = null; $social_right_content = null;
$keyword = '';
if (api_get_setting('allow_social_tool') == 'true') { if (api_get_setting('allow_social_tool') == 'true') {
$social_right_content .= '<div class="span9">'; $social_right_content .= '<div class="span9">';
$social_right_content .= '<div class="actions">'; $social_right_content .= '<div class="actions">';
$social_right_content .= '<a href="'.api_get_path(WEB_PATH).'main/messages/new_message.php?f=social">'.Display::return_icon('compose_message.png', get_lang('ComposeMessage'), array(), 32).'</a>'; $social_right_content .= '<a href="'.api_get_path(WEB_PATH).'main/messages/new_message.php?f=social">'.Display::return_icon('compose_message.png', get_lang('ComposeMessage'), array(), 32).'</a>';
$social_right_content .= '<a href="'.api_get_path(WEB_PATH).'main/messages/outbox.php?f=social">'.Display::return_icon('outbox.png', get_lang('Outbox'), array(), 32).'</a>'; $social_right_content .= '<a href="'.api_get_path(WEB_PATH).'main/messages/outbox.php?f=social">'.Display::return_icon('outbox.png', get_lang('Outbox'), array(), 32).'</a>';
$form = MessageManager::getSearchForm();
if ($form->validate()) {
$values = $form->getSubmitValues();
$keyword = $values['keyword'];
}
$social_right_content .= $form->return_form();
$social_right_content .= '</div>'; $social_right_content .= '</div>';
$social_right_content .= '</div>'; $social_right_content .= '</div>';
$social_right_content .= '<div class="span9">'; $social_right_content .= '<div class="span9">';
@ -148,7 +156,7 @@ if (api_get_setting('allow_social_tool') == 'true') {
//MAIN CONTENT //MAIN CONTENT
if (!isset($_GET['del_msg'])) { if (!isset($_GET['del_msg'])) {
$social_right_content .= MessageManager::inbox_display(); $social_right_content .= MessageManager::inbox_display($keyword);
} else { } else {
$num_msg = intval($_POST['total']); $num_msg = intval($_POST['total']);
for ($i = 0; $i < $num_msg; $i++) { for ($i = 0; $i < $num_msg; $i++) {

@ -108,6 +108,7 @@ if (isset($_REQUEST['action'])) {
} }
$social_right_content = ''; $social_right_content = '';
$keyword = '';
if (api_get_setting('allow_social_tool') == 'true') { if (api_get_setting('allow_social_tool') == 'true') {
$social_avatar_block = SocialManager::show_social_avatar_block('messages'); $social_avatar_block = SocialManager::show_social_avatar_block('messages');
@ -115,6 +116,14 @@ if (api_get_setting('allow_social_tool') == 'true') {
$social_right_content .= '<div class="span9">'; $social_right_content .= '<div class="span9">';
$social_right_content .= '<div class="actions">'; $social_right_content .= '<div class="actions">';
$social_right_content .= '<a href="'.api_get_path(WEB_PATH).'main/messages/inbox.php?f=social">'.Display::return_icon('back.png', get_lang('Back'), array(), 32).'</a>'; $social_right_content .= '<a href="'.api_get_path(WEB_PATH).'main/messages/inbox.php?f=social">'.Display::return_icon('back.png', get_lang('Back'), array(), 32).'</a>';
$form = MessageManager::getSearchForm();
if ($form->validate()) {
$values = $form->getSubmitValues();
$keyword = $values['keyword'];
}
$social_right_content .= $form->return_form();
$social_right_content .= '</div>'; $social_right_content .= '</div>';
$social_right_content .= '</div>'; $social_right_content .= '</div>';
$social_right_content .= '<div class="span9">'; $social_right_content .= '<div class="span9">';
@ -132,16 +141,16 @@ if ($action == 'delete') {
MessageManager::delete_message_by_user_sender(api_get_user_id(), $delete_list_id[$i]); MessageManager::delete_message_by_user_sender(api_get_user_id(), $delete_list_id[$i]);
} }
$delete_list_id=array(); $delete_list_id=array();
$social_right_content .= MessageManager::outbox_display(); $social_right_content .= MessageManager::outbox_display($keyword);
} elseif($action =='deleteone') { } elseif($action =='deleteone') {
$delete_list_id=array(); $delete_list_id=array();
$id = Security::remove_XSS($_GET['id']); $id = Security::remove_XSS($_GET['id']);
MessageManager::delete_message_by_user_sender(api_get_user_id(),$id); MessageManager::delete_message_by_user_sender(api_get_user_id(),$id);
$delete_list_id=array(); $delete_list_id=array();
$social_right_content .= MessageManager::outbox_display(); $social_right_content .= MessageManager::outbox_display($keyword);
} else { } else {
$social_right_content .= MessageManager::outbox_display(); $social_right_content .= MessageManager::outbox_display($keyword);
} }
if (api_get_setting('allow_social_tool') == 'true') { if (api_get_setting('allow_social_tool') == 'true') {

Loading…
Cancel
Save