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
/* 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).'fileUpload.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.') ';
}
$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
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);
$result = Database::fetch_array($sql_result);
return $result['number_messages'];
@ -160,9 +173,19 @@ class MessageManager
}
$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
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
LIMIT $from,$number_of_items";
@ -803,6 +826,14 @@ class MessageManager
if (!in_array($direction, array('ASC', 'DESC')))
$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);
$request = api_is_xml_http_request();
$sql = "SELECT
@ -811,6 +842,7 @@ class MessageManager
WHERE
user_sender_id=".api_get_user_id()." AND
msg_status=".MESSAGE_STATUS_OUTBOX."
$keywordCondition
ORDER BY col$column $direction
LIMIT $from, $number_of_items";
$sql_result = Database::query($sql);
@ -861,8 +893,20 @@ 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)) {
$keyword = Database::escape_string($keyword);
$keywordCondition = " AND (title like '%$keyword%' OR content LIKE '%$keyword%') ";
}
$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);
$result = Database::fetch_array($sql_result);
return $result['number_messages'];
@ -1445,19 +1489,22 @@ class MessageManager
return $div;
}
//@todo this functions should be in the message class
public static function inbox_display()
/**
* @param string $keyword
* @return string
*/
public static function inbox_display($keyword = '')
{
$success = get_lang('SelectedMessagesDeleted');
$success_read = get_lang('SelectedMessagesRead');
$success_unread = get_lang('SelectedMessagesUnRead');
$html = '';
Session::write('message_search_keyword', $keyword);
if (isset($_REQUEST['action'])) {
switch ($_REQUEST['action']) {
case 'mark_as_unread' :
$number_of_selected_messages = count($_POST['id']);
case 'mark_as_unread':
if (is_array($_POST['id'])) {
foreach ($_POST['id'] as $index => $message_id) {
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);
break;
case 'mark_as_read' :
$number_of_selected_messages = count($_POST['id']);
case 'mark_as_read':
if (is_array($_POST['id'])) {
foreach ($_POST['id'] as $index => $message_id) {
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);
break;
case 'delete' :
$number_of_selected_messages = count($_POST['id']);
case 'delete':
foreach ($_POST['id'] as $index => $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);
break;
case 'deleteone' :
case 'deleteone':
MessageManager::delete_message_by_user_receiver(api_get_user_id(), $_GET['id']);
$html .= Display::return_message(api_xml_http_response_encode($success), 'confirmation', false);
break;
@ -1489,7 +1534,14 @@ class MessageManager
}
// 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(1, get_lang('Messages'), false);
$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') {
$parameters['f'] = 'social';
$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();
Session::erase('message_search_keyword');
return $html;
}
/**
* @return string
* @param string $keyword
* @return null|string
*/
static function outbox_display()
public static function outbox_display($keyword = '')
{
$social_link = false;
if (isset($_REQUEST['f']) && $_REQUEST['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>';
$html = null;
@ -1536,7 +1601,14 @@ class MessageManager
}
// 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;
$table->set_additional_parameters($parameters);
@ -1548,6 +1620,9 @@ class MessageManager
$table->set_form_actions(array('delete' => get_lang('DeleteSelectedMessages')));
$html .= $table->return_table();
Session::erase('message_sent_search_keyword');
return $html;
}
@ -1659,4 +1734,19 @@ class MessageManager
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
$social_right_content = null;
$keyword = '';
if (api_get_setting('allow_social_tool') == 'true') {
$social_right_content .= '<div class="span9">';
$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/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 class="span9">';
@ -148,7 +156,7 @@ if (api_get_setting('allow_social_tool') == 'true') {
//MAIN CONTENT
if (!isset($_GET['del_msg'])) {
$social_right_content .= MessageManager::inbox_display();
$social_right_content .= MessageManager::inbox_display($keyword);
} else {
$num_msg = intval($_POST['total']);
for ($i = 0; $i < $num_msg; $i++) {

@ -108,6 +108,7 @@ if (isset($_REQUEST['action'])) {
}
$social_right_content = '';
$keyword = '';
if (api_get_setting('allow_social_tool') == 'true') {
$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="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>';
$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 class="span9">';
@ -132,16 +141,16 @@ if ($action == 'delete') {
MessageManager::delete_message_by_user_sender(api_get_user_id(), $delete_list_id[$i]);
}
$delete_list_id=array();
$social_right_content .= MessageManager::outbox_display();
$social_right_content .= MessageManager::outbox_display($keyword);
} elseif($action =='deleteone') {
$delete_list_id=array();
$id = Security::remove_XSS($_GET['id']);
MessageManager::delete_message_by_user_sender(api_get_user_id(),$id);
$delete_list_id=array();
$social_right_content .= MessageManager::outbox_display();
$social_right_content .= MessageManager::outbox_display($keyword);
} else {
$social_right_content .= MessageManager::outbox_display();
$social_right_content .= MessageManager::outbox_display($keyword);
}
if (api_get_setting('allow_social_tool') == 'true') {

Loading…
Cancel
Save