';
$html .= ' ';
foreach ($topics as $index => $topic) {
if (!in_array($index,$parents)) continue;
// topics
$indent = 0;
$user_sender_info = UserManager::get_user_info_by_id($topic['user_sender_id']);
$files_attachments = self::get_links_message_attachment_files($topic['id']);
$name = api_get_person_name($user_sender_info['firstname'], $user_sender_info['lastname']);
$html .= '
';
$html .= '
'.Display::return_icon('content-post-group1.jpg').'
';
$html .= '
';
$html .= '
'.((isset($_GET['div_id']) && $_GET['div_id'] == 'content_'.$topic['id'])?Display::return_icon('div_hide.gif',get_lang('Hide'),array('style'=>'vertical-align: middle')):
Display::return_icon('div_show.gif',get_lang('Show'),array('style'=>'vertical-align: middle'))).'
'.$topic['title'].'';
$html .= '';
if ($topic['send_date']!=$topic['update_date']) {
if (!empty($topic['update_date']) && $topic['update_date'] != '0000-00-00 00:00:00' ) {
$html .= '
('.get_lang('LastUpdate').' '.date_to_str_ago($topic['update_date']).')';
}
} else {
$html .= '
('.get_lang('Created').' '.date_to_str_ago($topic['send_date']).')';
}
$html .= '
';
$html .= '
';
$html.= '
';
$html.= '
';
$html.= '
';
$html.= '
';
$html.= '
'.$topic['content'].'
';
$html.= '
'.(!empty($files_attachments)?implode(' | ',$files_attachments):'').'
';
$html.= '
';
// items
if (is_array($topic['items'])) {
// pager items
$page_item = isset($_GET['page_item_nr'])?intval($_GET['page_item_nr']):1;
$total_items = count($topic['items']);
$items_per_page = 3;
$div_content = 'content_'.$topic['id'];
$pager_items = self::get_pager_for_message_group($group_id,$page_item,$total_items,$items_per_page,true,$div_content);
$html .= ' ';
$topic_slice['items'] = array_slice($topic['items'],($page_item-1)*($items_per_page),$items_per_page);
foreach ($topic_slice['items'] as $item) {
$indent = $item['indent_cnt']*'15';
$user_sender_info = UserManager::get_user_info_by_id($item['user_sender_id']);
$files_attachments = self::get_links_message_attachment_files($item['id']);
$name = api_get_person_name($user_sender_info['firstname'], $user_sender_info['lastname']);
//$html.= '
';
$html.= '
';
$html .= '
'.Display::return_icon('content-post-reply01.jpg').'
';
$html .= '
';
$html.= '
';
$html.= '
'.$item['title'].'
';
$html.= '
';
$html.= '
'.$item['content'].'
';
if ($item['send_date'] != $item['update_date']) {
if (!empty($item['update_date']) && $item['update_date'] != '0000-00-00 00:00:00' ) {
$html .= '
'.get_lang('LastUpdate').' '.date_to_str_ago($item['update_date']).'';
}
} else {
$html .= '
'.get_lang('Created').' '.date_to_str_ago($item['send_date']).'';
}
$html.= '
'.(!empty($files_attachments)?implode(' | ',$files_attachments):'').'
';
$html.= '
';
$html.= '
';
}
/*
// pager items
$html .= ' ';
*/
}
$html .= '
';
$html .= '
';
$html .= '
';
}
$html .= '
';
/*
// pager
$html .= ' ';
*/
}
return $html;
}
/**
* Get pager for messages of group
* @param int group id
* @param int current page
* @param int total rows
* @param int rows per page
* @return array pager with details and links
*/
public static function get_pager_for_message_group($group_id,$page,$num_rows,$rows_per_page,$pager_items = false,$div_content='') {
$link = '';
$details = '';
$pager = array();
$group_id = intval($group_id);
$page = intval($page);
$num_rows = intval($num_rows);
$first_page = 1;
$last_page = ceil($num_rows/$rows_per_page);
// get details
if ($page == $first_page) {
$details = $page.' - '.($page*$rows_per_page).' / '.$num_rows;
} else if ($page > $first_page && $page < $last_page) {
$details = ((($page-1)*$rows_per_page)+1).' - '.($page*$rows_per_page).' / '.$num_rows;
} else {
$details = ((($page-1)*$rows_per_page)+1).' - '.($num_rows).' / '.$num_rows;
}
$pager['details'] = $details;
// get links for pager
$href = api_get_path(WEB_CODE_PATH).'social/groups.php?id='.$group_id;
if ($pager_items) {
$page_topic = isset($_GET['page_nr'])?intval($_GET['page_nr']):1;
$param_name_page_nr = '&page_nr='.$page_topic.'&div_id='.$div_content.'&page_item_nr=';
} else {
$param_name_page_nr = '&page_nr=';
}
if ($page > 1) {
$link .= '
';
$link .= Display::return_icon('first.png',get_lang('FirstPage'),array('style'=>'vertical-align: middle'));
$link .= '';
$link .= '
';
$link .= Display::return_icon('prev.png',get_lang('PreviousPage'),array('style'=>'vertical-align: middle'));
$link .= '';
}
$link .= $page.'/'.$last_page;
if ($page < $last_page) {
$link .= '
';
$link .= Display::return_icon('next.png',get_lang('NextPage'),array('style'=>'vertical-align: middle'));
$link .= '';
$link .= '
';
$link .= Display::return_icon('last.png',get_lang('PreviousPage'),array('style'=>'vertical-align: middle'));
$link .= '';
}
$pager['links'] = $link;
return $pager;
}
/**
* Add children to messages by id is used for nested view messages
* @param array rows of messages
* @return array new list adding the item children
*/
public static function calculate_children($rows) {
foreach($rows as $row) {
$rows_with_children[$row["id"]]=$row;
$rows_with_children[$row["parent_id"]]["children"][]=$row["id"];
}
$rows=$rows_with_children;
$sorted_rows=array(0=>array());
self::message_recursive_sort($rows, $sorted_rows);
unset($sorted_rows[0]);
return $sorted_rows;
}
/**
* Sort recursively the messages, is used for for nested view messages
* @param array original rows of messages
* @param array list recursive of messages
* @param int seed for calculate the indent
* @param int indent for nested view
* @return void
*/
public static function message_recursive_sort($rows, &$messages, $seed=0, $indent=0) {
if($seed>0) {
$messages[$rows[$seed]["id"]]=$rows[$seed];
$messages[$rows[$seed]["id"]]["indent_cnt"]=$indent;
$indent++;
}
if(isset($rows[$seed]["children"])) {
foreach($rows[$seed]["children"] as $child) {
self::message_recursive_sort($rows, $messages, $child, $indent);
}
}
}
/**
* Sort date by desc from a multi-dimensional array
* @param array1 first array to compare
* @param array2 second array to compare
* @return bool
*/
public function order_desc_date($array1,$array2) {
return strcmp($array2['send_date'],$array1['send_date']);
}
/**
* Get array of links (download) for message attachment files
* @param int message id
* @param string type message list (inbox/outbox)
* @return array
*/
public static function get_links_message_attachment_files($message_id,$type='') {
$tbl_message_attach = Database::get_main_table(TABLE_MESSAGE_ATTACHMENT);
$message_id = intval($message_id);
// get file attachments by message id
$links_attach_file = array();
if (!empty($message_id)) {
$sql = "SELECT * FROM $tbl_message_attach WHERE message_id = '$message_id'";
$rs_file = Database::query($sql,__FILE__,__LINE__);
if (Database::num_rows($rs_file) > 0) {
$attach_icon = Display::return_icon('attachment.gif');
$archiveURL=api_get_path(WEB_CODE_PATH).'messages/download.php?type='.$type.'&file=';
while ($row_file = Database::fetch_array($rs_file)) {
$archiveFile= $row_file['path'];
$filename = $row_file['filename'];
$filesize = format_file_size($row_file['size']);
$filecomment= $row_file['comment'];
$links_attach_file[] = $attach_icon.'
'.$filename.' ('.$filesize.')'.(!empty($filecomment)?' - '.$filecomment:'');
}
}
}
return $links_attach_file;
}
/**
* Get message list by id
* @param int message id
* @return array
*/
public static function get_message_by_id($message_id) {
$tbl_message = Database::get_main_table(TABLE_MESSAGE);
$message_id = intval($message_id);
$sql = "SELECT * FROM $tbl_message WHERE id = '$message_id'";
$res = Database::query($sql, __FILE__, __LINE__);
$item = array();
if (Database::num_rows($res)>0) {
$item = Database::fetch_array($res,'ASSOC');
}
return $item;
}
}
//@todo this functions should be in the message class
function inbox_display() {
global $charset;
// $charset = api_get_setting('platform_charset');
$table_message = Database::get_main_table(TABLE_MESSAGE);
$request=api_is_xml_http_request();
if ($_SESSION['social_exist']===true) {
$redirect="#remote-tab-2";
if (api_get_setting('allow_social_tool')=='true' && api_get_setting('allow_message_tool')=='true') {
$success= get_lang('SelectedMessagesDeleted');
} else {
$success= get_lang('SelectedMessagesDeleted');
}
} else {
$success= get_lang('SelectedMessagesDeleted');
}
if (isset ($_REQUEST['action'])) {
switch ($_REQUEST['action']) {
case 'delete' :
$number_of_selected_messages = count($_POST['id']);
foreach ($_POST['id'] as $index => $message_id) {
MessageManager::delete_message_by_user_receiver(api_get_user_id(), $message_id);
}
Display::display_normal_message(api_xml_http_response_encode($success),false);
break;
case 'deleteone' :
MessageManager::delete_message_by_user_receiver(api_get_user_id(), $_GET['id']);
Display::display_confirmation_message(api_xml_http_response_encode($success),false);
echo '
';
break;
}
}
// display sortable table with messages of the current user
$table = new SortableTable('messages', 'get_number_of_messages_mask', 'get_message_data_mask', 3, get_number_of_messages_mask(),'DESC');
$table->set_header(0, '', false,array ('style' => 'width:20px;'));
$title=api_xml_http_response_encode(get_lang('Title'));
$action=api_xml_http_response_encode(get_lang('Actions'));
$table->set_header(1,api_xml_http_response_encode(get_lang('Status')),false,array('style' => 'width:30px;'));
$table->set_header(2,api_xml_http_response_encode(get_lang('From')),false);
$table->set_header(3,$title,false);
$table->set_header(4,api_xml_http_response_encode(get_lang('Date')),false,array('style' => 'width:150px;'));
$table->set_header(5,$action,false,array ('style' => 'width:100px;'));
if ($_REQUEST['f']=='social') {
$parameters['f'] = 'social';
$table->set_additional_parameters($parameters);
}
echo '
';
if ($request===true) {
echo '
';
if (get_number_of_messages_mask() > 0) {
echo '
'.api_xml_http_response_encode(get_lang('SelectAll')).' ';
echo '
'.api_xml_http_response_encode(get_lang('UnSelectAll')).' ';
echo '
';
}
} else {
$table->set_form_actions(array ('delete' => get_lang('DeleteSelectedMessages')));
$table->display();
}
echo '
';
}
function get_number_of_messages_mask() {
return MessageManager::get_number_of_messages();
}
function get_message_data_mask($from, $number_of_items, $column, $direction) {
$column='3';
$direction='desc';
//non set by SortableTable ?
$number_of_items=get_number_of_messages_mask();
return MessageManager::get_message_data($from, $number_of_items, $column, $direction);
}
function outbox_display() {
$table_message = Database::get_main_table(TABLE_MESSAGE);
$request=api_is_xml_http_request();
global $charset;
$social_link = false;
if ($_REQUEST['f']=='social') {
$social_link ='f=social';
}
if ($_SESSION['social_exist']===true) {
if (api_get_setting('allow_social_tool')=='true' && api_get_setting('allow_message_tool')=='true') {
$success= get_lang('SelectedMessagesDeleted')." 
".get_lang('BackToOutbox')."";
}else {
$success=get_lang('SelectedMessagesDeleted')." 
".get_lang('BackToOutbox')."";
}
} else {
$success= get_lang('SelectedMessagesDeleted').' 
'.get_lang('BackToOutbox').'';
}
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) {
MessageManager::delete_message_by_user_receiver(api_get_user_id(), $message_id);
}
}
Display::display_normal_message(api_xml_http_response_encode($success),false);
break;
case 'deleteone' :
MessageManager::delete_message_by_user_receiver(api_get_user_id(), $_GET['id']);
Display::display_confirmation_message(api_xml_http_response_encode($success),false);
echo '
';
break;
}
}
// display sortable table with messages of the current user
$table = new SortableTable('messages', 'get_number_of_messages_send_mask', 'get_message_data_send_mask', 3, get_number_of_messages_send_mask(), 'DESC');
$title=api_xml_http_response_encode(get_lang('Title'));
$action=api_xml_http_response_encode(get_lang('Actions'));
$table->set_header(0, '', false,array ('style' => 'width:20px;'));
$table->set_header(1, api_xml_http_response_encode(get_lang('Status')),false,array ('style' => 'width:30px;'));
$table->set_header(2, api_xml_http_response_encode(get_lang('To')),false);
$table->set_header(3, $title,false);
$table->set_header(4, api_xml_http_response_encode(get_lang('Date')),false,array ('style' => 'width:150px;'));
$table->set_header(5,$action, false,array ('style' => 'width:100px;'));
if ($_REQUEST['f']=='social') {
$parameters['f'] = 'social';
$table->set_additional_parameters($parameters);
}
echo '
';
if ($request===true) {
echo '
';
if (get_number_of_messages_send_mask() > 0) {
echo '
'.api_xml_http_response_encode(get_lang('SelectAll')).' ';
echo '
'.api_xml_http_response_encode(get_lang('UnSelectAll')).' ';
echo '
';
}
} else {
$table->set_form_actions(array ('delete' => get_lang('DeleteSelectedMessages')));
$table->display();
}
echo '
';
}
function get_number_of_messages_send_mask() {
return MessageManager::get_number_of_messages_sent();
}
function get_message_data_send_mask($from, $number_of_items, $column, $direction) {
$column='3';
$direction='desc';
//non set by SortableTable ?
$number_of_items=get_number_of_messages_send_mask();
return MessageManager::get_message_data_sent($from, $number_of_items, $column, $direction);
}
?>