Improving Social groups UI

skala
Julio Montoya 14 years ago
parent 1a5ff57339
commit e5aa096d38
  1. 55
      main/css/base.css
  2. 332
      main/inc/lib/message.lib.php
  3. 2
      main/inc/lib/phpmailer/class.phpmailer.php
  4. 22
      main/inc/lib/sortabletable.class.php
  5. 2
      main/social/group_invitation.php
  6. 6
      main/social/group_members.php
  7. 129
      main/social/group_topics.php
  8. 53
      main/social/groups.php
  9. 4
      main/social/message_for_group_form.inc.php

@ -6,6 +6,11 @@
outline :none;
}
h2 {
margin:0px;
padding:0px;
}
input {
-moz-border-radius:5px;
-webkit-border-radius:5px;
@ -617,22 +622,29 @@ button:hover {
.group_social_item {
float:left;
width:600px;
background-color: #E9F4FA;
width:95%;
}
.group_social_sub_item {
float:left;
/* width:600px; */
background-color: #E9F4FA;
background-repeat: repeat-x;
margin: 8px;
padding:5px;
margin: 8px;
padding:5px;
width:100%;
}
.message-group-author {
float:left;
width:30px;
margin:5px;
}
.message-group-content {
float:right;
width:560px;
width:90%;
line-height: 100%;
}
@ -654,3 +666,36 @@ button:hover {
margin: 8px;
padding:5px;
}
.group_discussions_replies {
background-color: #E9F4FA;
background-repeat: repeat-x;
border: 1px solid #D0E2EC;
border-radius: 3px 3px 3px 3px;
color: #999999;
float: left;
font-size: 0.8em;
margin-right: 10px;
overflow: hidden;
padding: 7px 10px;
text-align: center;
width: 40px;
margin-bottom: 65px;
}
.group_discussions_replies span {
display: block;
font-size: 2em;
}
.group_social_grid {
float:left;
width:100%;
}
.message-attach {
float:left;
}

@ -232,6 +232,8 @@ class MessageManager
return sprintf(get_lang("FilesSizeExceedsX"),format_file_size(api_get_setting('message_max_upload_filesize')));
}
$inbox_last_id = null;
if (!empty($receiver_user_id) || !empty($group_id)) {
// message for user friend
@ -296,7 +298,7 @@ class MessageManager
}
$notification->save_group_notifications($new_user_list, $subject,$content);
}
return $result;
return $inbox_last_id;
} else {
return get_lang('UserDoesNotExist');
}
@ -485,7 +487,7 @@ class MessageManager
* @param int message id
* @return resource
*/
public static function update_message ($user_id, $message_id) {
public static function update_message($user_id, $message_id) {
if ($message_id != strval(intval($message_id)) || $user_id != strval(intval($user_id))) return false;
$table_message = Database::get_main_table(TABLE_MESSAGE);
$query = "UPDATE $table_message SET msg_status = '0' WHERE msg_status<>4 AND user_receiver_id=".intval($user_id)." AND id='".intval($message_id)."'";
@ -498,7 +500,7 @@ class MessageManager
* @param int message id
* @return array
*/
public static function get_message_by_user ($user_id,$message_id) {
public static function get_message_by_user($user_id,$message_id) {
if ($message_id != strval(intval($message_id)) || $user_id != strval(intval($user_id))) return false;
$table_message = Database::get_main_table(TABLE_MESSAGE);
$query = "SELECT * FROM $table_message WHERE user_receiver_id=".intval($user_id)." AND id='".intval($message_id)."'";
@ -527,6 +529,32 @@ class MessageManager
return $data;
}
/**
* get messages by group id
* @param int group id
* @return array
*/
public static function get_messages_by_group_by_message($group_id, $message_id) {
if ($group_id != strval(intval($group_id))) return false;
$table_message = Database::get_main_table(TABLE_MESSAGE);
$current_uid = api_get_user_id();
$group_id = intval($group_id);
$query = "SELECT * FROM $table_message WHERE group_id=$group_id AND msg_status <> ".MESSAGE_STATUS_OUTBOX." ORDER BY id";
$rs = Database::query($query);
$data = array();
$parents = array();
if (Database::num_rows($rs) > 0) {
while ($row = Database::fetch_array($rs, 'ASSOC')) {
if ($message_id == $row['parent_id'] || in_array($row['parent_id'], $parents)) {
$parents[]= $row['id'];
$data[] = $row;
}
}
}
return $data;
}
/**
* get messages by parent id optionally with limit
* @param int parent id
@ -857,14 +885,14 @@ class MessageManager
public static function display_messages_for_group($group_id) {
global $my_group_role;
$rows = self::get_messages_by_group($group_id);
$rows = self::calculate_children($rows);
//$rows = self::calculate_children($rows);
$group_info = GroupPortalManager::get_group_data($group_id);
$current_user_id = api_get_user_id();
$topics_per_page = 5;
$items_per_page = 10;
$topics_per_page = 10;
$count_items = 0;
$html_messages = '';
$query_vars = array('id'=>$group_id,'topics_page_nr'=>0);
$query_vars = array('id'=>$group_id, 'topics_page_nr'=>0);
if (is_array($rows) && count($rows)> 0) {
@ -892,14 +920,16 @@ class MessageManager
$name = api_get_person_name($user_sender_info['firstname'], $user_sender_info['lastname']);
$html .= '<div class="rounded_div" style="width:620px">';
$items = count($topic['items']);
$reply_label = ($items == 1) ? get_lang('Reply'): get_lang('Replies');
$html .= Display::div(Display::tag('span', $items).$reply_label, array('class' =>'group_discussions_replies'));
$topic['title'] = trim($topic['title']);
/*$html .= '<a href="#" class="head" id="head_'.$topic['id'].'">';
$html .= '<span class="message-group-title-topic">'.(((isset($_GET['anchor_topic']) && $_GET['anchor_topic'] == 'topic_'.$topic['id']) || in_array('items_'.$topic['id'].'_page_nr',$param_names))?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'))).'
'.Security::remove_XSS($topic['title']).'</span>';
$html .= '</a>';*/
if (empty($topic['title'])) {
$topic['title'] = get_lang('Untitled');
}
$title = Display::url('<h2>'.Security::remove_XSS($topic['title']).'</h2>', 'group_topics.php?id='.$group_id.'&topic_id='.$topic['id']);
$html .= '<h2>'.Security::remove_XSS($topic['title']).'</h2>';
$date = '';
$link = '';
if ($topic['send_date']!=$topic['update_date']) {
@ -910,194 +940,181 @@ class MessageManager
$date .= '<div class="message-group-date"> <i>'.get_lang('Created').' '.date_to_str_ago($topic['send_date']).'</i></div>';
}
$html .= '<div id="topic_'.$topic['id'].'" >';
$html .= '<a name="topic_'.$topic['id'].'"></a>';
$html.= '<div class="group_social_main_item">';
$link = '<div id="message-reply-link" style="margin-right:10px">
<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=390&width=610&&user_friend='.$current_user_id.'&group_id='.$group_id.'&message_id='.$topic['id'].'&action=reply_message_group&anchor_topic=topic_'.$topic['id'].'&topics_page_nr='.intval($_GET['topics_page_nr']).'&items_page_nr='.intval($_GET['items_page_nr']).'" class="thickbox" title="'.get_lang('Reply').'">'.Display :: return_icon('talk.png', get_lang('Reply')).'</a>';
if (($my_group_role == GROUP_USER_PERMISSION_ADMIN || $my_group_role == GROUP_USER_PERMISSION_MODERATOR) || $topic['user_sender_id'] == $current_user_id) {
$link.= '&nbsp;&nbsp;<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=390&width=610&&user_friend='.$current_user_id.'&group_id='.$group_id.'&message_id='.$topic['id'].'&action=edit_message_group&anchor_topic=topic_'.$topic['id'].'&topics_page_nr='.intval($_GET['topics_page_nr']).'&items_page_nr='.intval($_GET['items_page_nr']).'" class="thickbox" title="'.get_lang('Edit').'">'.Display :: return_icon('edit.gif', get_lang('Edit')).'</a>';
}
$link.= '</div>';
$image_path = UserManager::get_user_picture_path_by_id($topic['user_sender_id'], 'web', false, true);
$image_repository = $image_path['dir'];
$existing_image = $image_path['file'];
$html.= '<div class="message-group-author"><img src="'.$image_repository.$existing_image.'" alt="'.$name.'" width="32" height="32" title="'.$name.'" /></div>';
$user = '<a href="'.api_get_path(WEB_PATH).'main/social/profile.php?u='.$topic['user_sender_id'].'">'.$name.'&nbsp;</a>';
$html.= '<div class="message-group-content">'.$user.$date.$topic['content'].$link.'</div>';
$html.= '<div class="message-attach">'.(!empty($files_attachments)?implode('&nbsp;|&nbsp;',$files_attachments):'').'</div>';
$html.= '</div>';
// items
if (is_array($topic['items'])) {
$items_page_nr = intval($_GET['items_'.$topic['id'].'_page_nr']);
$array_html_items = array();
foreach ($topic['items'] as $item) {
$user_link = '';
$links = '';
$html_items = '';
$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']);
$links.= '<div id="message-reply-link">';
$links.= '<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=390&width=610&&user_friend='.api_get_user_id().'&group_id='.$group_id.'&message_id='.$item['id'].'&action=reply_message_group&anchor_topic=topic_'.$topic['id'].'&topics_page_nr='.intval($_GET['topics_page_nr']).'&items_page_nr='.intval($items_page_nr).'&topic_id='.$topic['id'].'" class="thickbox" title="'.get_lang('Reply').'">'.Display :: return_icon('talk.png', get_lang('Reply')).'</a>';
if (($my_group_role == GROUP_USER_PERMISSION_ADMIN || $my_group_role == GROUP_USER_PERMISSION_MODERATOR) || $item['user_sender_id'] == $current_user_id) {
$links.= '&nbsp;&nbsp;<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=390&width=610&&user_friend='.$current_user_id.'&group_id='.$group_id.'&message_id='.$item['id'].'&action=edit_message_group&anchor_topic=topic_'.$topic['id'].'&topics_page_nr='.intval($_GET['topics_page_nr']).'&items_page_nr='.intval($items_page_nr).'&topic_id='.$topic['id'].'" class="thickbox" title="'.get_lang('Edit').'">'.Display :: return_icon('edit.gif', get_lang('Edit')).'</a>';
}
$links.= '</div>';
//$html_items.= '<div class="message-group-title">'.Security::remove_XSS($item['title']).'&nbsp;</div>';
$image_path = UserManager::get_user_picture_path_by_id($item['user_sender_id'], 'web', false, true);
$image_repository = $image_path['dir'];
$existing_image = $image_path['file'];
$html_items.= '<div class="message-group-author"><img src="'.$image_repository.$existing_image.'" alt="'.$name.'" width="32" height="32" title="'.$name.'" /></div>';
$user_link = '<a href="'.api_get_path(WEB_PATH).'main/social/profile.php?u='.$item['user_sender_id'].'">'.$name.'&nbsp;</a>';
$date = '';
if ($item['send_date'] != $item['update_date']) {
if (!empty($item['update_date']) && $item['update_date'] != '0000-00-00 00:00:00' ) {
$date = '<div class="message-group-date"> '.get_lang('LastUpdate').' '.date_to_str_ago($item['update_date']).'</div>';
}
} else {
$date = '<div class="message-group-date"> '.get_lang('Created').' '.date_to_str_ago($item['send_date']).'</div>';
}
$html_items.= '<div class="message-group-content">'.$user_link.' '.$date.$item['content'].$links.'</div>';
$html_items.= '<div class="message-attach">'.(!empty($files_attachments)?implode('&nbsp;|&nbsp;',$files_attachments):'').'</div>';
$array_html_items[] = array($html_items);
}
// grids for items with paginations
$options = array('hide_navigation'=>false, 'per_page' => $items_per_page);
$order = array(true, true, true,false);
$style_class = array('item_class'=>'group_social_item', 'grid_class'=>'group_social_grid');
$html .= Display::return_sortable_grid('items_'.$topic['id'], array(), $array_html_items, $options, $query_vars, false, $order, false, $style_class);
}
$html .= '</div>';
/*$link = '<div id="message-reply-link" style="margin-right:10px">
<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=390&width=610&&user_friend='.$current_user_id.'&group_id='.$group_id.'&message_id='.$topic['id'].'&action=reply_message_group&anchor_topic=topic_'.$topic['id'].'&topics_page_nr='.intval($_GET['topics_page_nr']).'&items_page_nr='.intval($_GET['items_page_nr']).'" class="thickbox" title="'.get_lang('Reply').'">'.Display :: return_icon('talk.png', get_lang('Reply')).'</a>';
if (($my_group_role == GROUP_USER_PERMISSION_ADMIN || $my_group_role == GROUP_USER_PERMISSION_MODERATOR) || $topic['user_sender_id'] == $current_user_id) {
$link.= '&nbsp;&nbsp;<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=390&width=610&&user_friend='.$current_user_id.'&group_id='.$group_id.'&message_id='.$topic['id'].'&action=edit_message_group&anchor_topic=topic_'.$topic['id'].'&topics_page_nr='.intval($_GET['topics_page_nr']).'&items_page_nr='.intval($_GET['items_page_nr']).'" class="thickbox" title="'.get_lang('Edit').'">'.Display :: return_icon('edit.gif', get_lang('Edit')).'</a>';
}
$link.= '</div>';
*/
$image_path = UserManager::get_user_picture_path_by_id($topic['user_sender_id'], 'web', false, true);
$image_repository = $image_path['dir'];
$existing_image = $image_path['file'];
$user_image = '<div class="message-group-author"><img src="'.$image_repository.$existing_image.'" alt="'.$name.'" width="32" height="32" title="'.$name.'" /></div>';
$user = '<a href="'.api_get_path(WEB_PATH).'main/social/profile.php?u='.$topic['user_sender_id'].'">'.$name.'&nbsp;</a>';
//$html.= '<div class="message-group-content">'.$user.$date.$topic['content'].$link.'</div>';
$html .= Display::div($title.cut($topic['content'], 350).$user_image.$user.$date.$link, array('class'=>'group_discussions_info'));
//$html.= '<div class="message-attach">'.(!empty($files_attachments)?implode('&nbsp;|&nbsp;',$files_attachments):'').'</div>';
$html .= '</div>'; //rounded_div
$array_html[] = array($html);
}
// grids for items and topics with paginations
//$html_messages .= '<div class="social-box-container2">';
$html_messages .= Display::return_sortable_grid('topics', array(), $array_html, array('hide_navigation'=>false, 'per_page' => $topics_per_page), $query_vars, false, array(true, true, true,false), false);
//$html_messages .= '</div>';
}
return $html_messages;
}
/**
/**
* Displays messages of a group with nested view
* @param int group id
*/
public static function display_title_messages_for_group($group_id) {
public static function display_message_for_group($group_id, $message_id) {
global $my_group_role;
$rows = self::get_messages_by_group($group_id);
$rows = self::calculate_children($rows);
$main_message = self::get_message_by_id($message_id);
$group_info = GroupPortalManager::get_group_data($group_id);
$rows = self::get_messages_by_group_by_message($group_id, $message_id);
$rows = self::calculate_children($rows, $message_id);
$current_user_id = api_get_user_id();
$topics_per_page = 5;
$items_per_page = 3;
$topics_per_page = 5;
$items_per_page = 100;
$count_items = 0;
$html_messages = '';
$query_vars = array('id'=>$group_id,'topics_page_nr'=>0);
$query_vars = array('id'=>$group_id, 'topic_id'=>$message_id , 'topics_page_nr'=>0);
if (is_array($rows) && count($rows)> 0) {
// prepare array for topics with its items
$topics = array();
$x = 0;
foreach ($rows as $index=>$value) {
if (empty($value['parent_id'])) {
$x = $index;
$topics[$x] = $value;
} else {
$topics[$x]['items'][] = $value;
}
// Main message
$html = '';
$user_link = '';
$links = '';
$main_content = '';
echo Display::tag('h2', $main_message['title']);
$user_sender_info = UserManager::get_user_info_by_id($main_message['user_sender_id']);
$files_attachments = self::get_links_message_attachment_files($main_message['id']);
$name = api_get_person_name($user_sender_info['firstname'], $user_sender_info['lastname']);
$links.= '<div id="message-reply-link">';
$links.= '<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=390&width=610&&user_friend='.api_get_user_id().'&group_id='.$group_id.'&message_id='.$main_message['id'].'&action=reply_message_group&anchor_topic=topic_'.$main_message['id'].'&topics_page_nr='.intval($_GET['topics_page_nr']).'&items_page_nr='.intval($items_page_nr).'&topic_id='.$main_message['id'].'" class="thickbox" title="'.get_lang('Reply').'">'.Display :: return_icon('talk.png', get_lang('Reply')).'</a>';
if (($my_group_role == GROUP_USER_PERMISSION_ADMIN || $my_group_role == GROUP_USER_PERMISSION_MODERATOR) || $main_message['user_sender_id'] == $current_user_id) {
$links.= '&nbsp;&nbsp;<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=390&width=610&&user_friend='.$current_user_id.'&group_id='.$group_id.'&message_id='.$main_message['id'].'&action=edit_message_group&anchor_topic=topic_'.$main_message['id'].'&topics_page_nr='.intval($_GET['topics_page_nr']).'&items_page_nr='.intval($items_page_nr).'&topic_id='.$main_message['id'].'" class="thickbox" title="'.get_lang('Edit').'">'.Display :: return_icon('edit.gif', get_lang('Edit')).'</a>';
}
$links.= '</div>';
$image_path = UserManager::get_user_picture_path_by_id($main_message['user_sender_id'], 'web', false, true);
$image_repository = $image_path['dir'];
$existing_image = $image_path['file'];
$main_content.= '<div class="message-group-author"><img src="'.$image_repository.$existing_image.'" alt="'.$name.'" width="32" height="32" title="'.$name.'" /></div>';
$user_link = '<a href="'.api_get_path(WEB_PATH).'main/social/profile.php?u='.$main_message['user_sender_id'].'">'.$name.'&nbsp;</a>';
$date = '';
if ($main_message['send_date'] != $main_message['update_date']) {
if (!empty($main_message['update_date']) && $main_message['update_date'] != '0000-00-00 00:00:00' ) {
$date = '<div class="message-group-date"> '.get_lang('LastUpdate').' '.date_to_str_ago($main_message['update_date']).'</div>';
}
uasort($topics,array('MessageManager','order_desc_date'));
} else {
$date = '<div class="message-group-date"> '.get_lang('Created').' '.date_to_str_ago($main_message['send_date']).'</div>';
}
$attachment = '<div class="message-attach">'.(!empty($files_attachments)?implode('&nbsp;|&nbsp;',$files_attachments):'').'</div>';
$main_content.= '<div class="message-group-content">'.$links.$user_link.' '.$date.$main_message['content'].$attachment.'</div>';
$param_names = array_keys($_GET);
$html = '';
$html .= Display::div(Display::div(Display::div($main_content, array('class'=>'group_social_sub_item', 'style'=>'background-color:#fff;')), array('class' => 'group_social_item')), array('class' => 'group_social_grid'));
$topic_id = $main_message['id'];
if (is_array($rows) && count($rows)> 0) {
$topics = $rows;
$array_html = array();
foreach ($topics as $index => $topic) {
$html = '';
// topics
$indent = 0;
if (empty($topic['id'])) {
continue;
}
$items_page_nr = intval($_GET['items_'.$topic['id'].'_page_nr']);
$user_link = '';
$links = '';
$html_items = '';
$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 .= '<div class="rounded_div" style="width:620px">';
$html .= '<a href="#" class="head" id="head_'.$topic['id'].'">';
$html .= '<span class="message-group-title-topic">'.(((isset($_GET['anchor_topic']) && $_GET['anchor_topic'] == 'topic_'.$topic['id']) || in_array('items_'.$topic['id'].'_page_nr',$param_names))?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'))).'
'.Security::remove_XSS($topic['title']).'</span>';
$html .= '</a>';
if ($topic['send_date']!=$topic['update_date']) {
if (!empty($topic['update_date']) && $topic['update_date'] != '0000-00-00 00:00:00' ) {
$html .= '<span class="message-group-date" > ('.get_lang('LastUpdate').' '.date_to_str_ago($topic['update_date']).')</span>';
}
} else {
$html .= '<span class="message-group-date"> <i>'.get_lang('Created').' '.date_to_str_ago($topic['send_date']).'</i></span>';
}
$html .= '<div id="topic_'.$topic['id'].'" >';
$html .= '<a name="topic_'.$topic['id'].'"></a>';
$html.= '<div style="margin-bottom:10px">';
$html.= '<div id="message-reply-link" style="margin-right:10px">
<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=390&width=610&&user_friend='.$current_user_id.'&group_id='.$group_id.'&message_id='.$topic['id'].'&action=reply_message_group&anchor_topic=topic_'.$topic['id'].'&topics_page_nr='.intval($_GET['topics_page_nr']).'&items_page_nr='.intval($_GET['items_page_nr']).'" class="thickbox" title="'.get_lang('Reply').'">'.Display :: return_icon('talk.png', get_lang('Reply')).'</a>';
if (($my_group_role == GROUP_USER_PERMISSION_ADMIN || $my_group_role == GROUP_USER_PERMISSION_MODERATOR) || $topic['user_sender_id'] == $current_user_id) {
$html.= '&nbsp;&nbsp;<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=390&width=610&&user_friend='.$current_user_id.'&group_id='.$group_id.'&message_id='.$topic['id'].'&action=edit_message_group&anchor_topic=topic_'.$topic['id'].'&topics_page_nr='.intval($_GET['topics_page_nr']).'&items_page_nr='.intval($_GET['items_page_nr']).'" class="thickbox" title="'.get_lang('Edit').'">'.Display :: return_icon('edit.gif', get_lang('Edit')).'</a>';
}
$html.= '</div>';
$html.= '<br />';
$image_path = UserManager::get_user_picture_path_by_id($topic['user_sender_id'], 'web', false, true); $image_repository = $image_path['dir'];
$existing_image = $image_path['file'];
$html.= '<div class="message-group-author"><img src="'.$image_repository.$existing_image.'" alt="'.$name.'" width="44" height="44" title="'.$name.'" />&nbsp;<a href="'.api_get_path(WEB_PATH).'main/social/profile.php?u='.$topic['user_sender_id'].'">'.$name.'&nbsp;</a></div>';
$html.= '<div class="message-group-content">'.$topic['content'].'</div>';
$html.= '<div class="message-attach">'.(!empty($files_attachments)?implode('&nbsp;|&nbsp;',$files_attachments):'').'</div>';
$html.= '</div>';
$html .= '</div>';
$html .= '</div>'; //rounded_div
$array_html[] = array($html);
$links.= '<div id="message-reply-link">';
$links.= '<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=390&width=610&&user_friend='.api_get_user_id().'&group_id='.$group_id.'&message_id='.$topic['id'].'&action=reply_message_group&anchor_topic=topic_'.$topic_id.'&topics_page_nr='.intval($_GET['topics_page_nr']).'&items_page_nr='.intval($items_page_nr).'&topic_id='.$topic_id.'" class="thickbox" title="'.get_lang('Reply').'">'.Display :: return_icon('talk.png', get_lang('Reply')).'</a>';
if (($my_group_role == GROUP_USER_PERMISSION_ADMIN || $my_group_role == GROUP_USER_PERMISSION_MODERATOR) || $topic['user_sender_id'] == $current_user_id) {
$links.= '&nbsp;&nbsp;<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=390&width=610&&user_friend='.$current_user_id.'&group_id='.$group_id.'&message_id='.$topic['id'].'&action=edit_message_group&anchor_topic=topic_'.$topic_id.'&topics_page_nr='.intval($_GET['topics_page_nr']).'&items_page_nr='.intval($items_page_nr).'&topic_id='.$topic_id.'" class="thickbox" title="'.get_lang('Edit').'">'.Display :: return_icon('edit.gif', get_lang('Edit')).'</a>';
}
$links.= '</div>';
$image_path = UserManager::get_user_picture_path_by_id($topic['user_sender_id'], 'web', false, true);
$image_repository = $image_path['dir'];
$existing_image = $image_path['file'];
$html_items.= '<div class="message-group-author"><img src="'.$image_repository.$existing_image.'" alt="'.$name.'" width="32" height="32" title="'.$name.'" /></div>';
$user_link = '<a href="'.api_get_path(WEB_PATH).'main/social/profile.php?u='.$topic['user_sender_id'].'">'.$name.'&nbsp;</a>';
$date = '';
if ($topic['send_date'] != $topic['update_date']) {
if (!empty($topic['update_date']) && $topic['update_date'] != '0000-00-00 00:00:00' ) {
$date = '<div class="message-group-date"> '.get_lang('LastUpdate').' '.date_to_str_ago($topic['update_date']).'</div>';
}
} else {
$date = '<div class="message-group-date"> '.get_lang('Created').' '.date_to_str_ago($topic['send_date']).'</div>';
}
$attachment = '<div class="message-attach">'.(!empty($files_attachments)?implode('&nbsp;|&nbsp;',$files_attachments):'').'</div>';
$html_items.= '<div class="message-group-content">'.$links.$user_link.' '.$date.$topic['content'].$attachment.'</div>';
if ($topic['indent_cnt'] == 0 || $topic['indent_cnt'] == 1) {
$indent = 0;
} else {
$indent = intval($topic['indent_cnt'])*20;
}
//var_dump($topic); 'style'=>'margin-left:'.$indent.'px'
$html_items = Display::div($html_items, array('class' => 'group_social_sub_item'));
$html_items = Display::div($html_items, array('class' => '', 'style'=>'margin-left:'.$indent.'px'));
$array_html_items[] = array($html_items);
}
// grids for items and topics with paginations
// grids for items with paginations
$options = array('hide_navigation'=>false, 'per_page' => $items_per_page);
$order = array(true, true, true,false);
//$html_messages .= '<div class="social-box-container2">';
$html_messages .= Display::return_sortable_grid('topics', array(), $array_html, array('hide_navigation'=>false, 'per_page' => $topics_per_page), $query_vars, false, array(true, true, true,false), false);
//$html_messages .= '</div>';
$style_class = array('item' => array('class'=>'group_social_item'), 'main' => array('class'=>'group_social_grid'));
if (!empty($array_html_items)) {
$html .= Display::return_sortable_grid('items_'.$topic['id'], array(), $array_html_items, $options, $query_vars, false, $order, false, $style_class);
}
}
return $html_messages;
$html .= '</div>';
$html = Display::div($html, array('class'=>'rounded_div', 'style'=>'width:638px'));
return $html;
}
/**
* 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) {
public static function calculate_children($rows, $first_seed) {
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);
self::message_recursive_sort($rows, $sorted_rows, $first_seed);
unset($sorted_rows[0]);
return $sorted_rows;
}
@ -1111,12 +1128,13 @@ class MessageManager
* @return void
*/
public static function message_recursive_sort($rows, &$messages, $seed=0, $indent=0) {
if($seed>0) {
if ($seed > 0) {
$messages[$rows[$seed]["id"]]=$rows[$seed];
$messages[$rows[$seed]["id"]]["indent_cnt"]=$indent;
$indent++;
}
if(isset($rows[$seed]["children"])) {
if (isset($rows[$seed]["children"])) {
foreach($rows[$seed]["children"] as $child) {
self::message_recursive_sort($rows, $messages, $child, $indent);
}

@ -583,7 +583,7 @@ class PHPMailer {
if ($this->exceptions) {
throw $e;
}
echo $e->getMessage()."\n";
//echo $e->getMessage()."\n";
return false;
}
}

@ -446,7 +446,7 @@ class SortableTable extends HTML_Table {
}
$nav = $this->get_navigation_html();
// This also must be moved
$html = '<div class="sub-header" >';
$html = '<div class="sub-header">';
$html .= '<div class="grid_selectbox">'.$form.'</div>';
$html .= '<div class="grid_title">'.$this->get_table_title().'</div>';
$html .= '<div class="grid_nav">'.$nav.'</div>';
@ -480,7 +480,6 @@ class SortableTable extends HTML_Table {
$items = $this->get_clean_html($sort_data); // Getting the items of the table
}
// Generation of style classes must be improved. Maybe we need a a table name to create style on the fly:
// i.e: .whoisonline_table_grid_container instead of .grid_container
// where whoisonline is the table's name like drupal's template engine
@ -491,27 +490,30 @@ class SortableTable extends HTML_Table {
$filter = $visibility_options !== false;
}
$grid_style = $item_style = '';
if (!empty($grid_class)) {
$grid_style = $grid_class['grid_class'];
$item_style = $grid_class['item_class'];
$grid_css_class = $grid_class['main']['class'];
$item_css_class = $grid_class['item']['class'];
$grid_css_style = $grid_class['main']['style'];
$item_css_style = $grid_class['item']['style'];
}
$html .= '<div class="'.$grid_style.' '.$this->table_name.'_grid_container">';
$div = '';
if (is_array($items) && count($items) > 0) {
foreach ($items as & $row) {
$html .= '<div class="'.$item_style.' '.$this->table_name.'_grid_item">';
$i = 0;
$rows = '';
foreach ($row as & $element) {
if ($filter || $visibility_options[$i]) {
$html.='<div class="'.$this->table_name.'_grid_element_'.$i.'">'.$element.'</div>';
$rows .= '<div class="'.$this->table_name.'_grid_element_'.$i.'">'.$element.'</div>';
}
$i++;
}
$html .= '</div>';
$div .= Display::div($rows, array('class'=>$item_css_class.' '.$this->table_name.'_grid_item', 'style' => $item_css_style));
}
}
$html .= '</div>';
$html .= Display::div($div, array('class'=>$grid_css_class.' '.$this->table_name.'_grid_container', 'style' => $grid_css_style));
$html .= '<div class="clear"></div>';
return $html;
}

@ -319,7 +319,7 @@ if ($add_type == 'multiple') {
echo '</div>';
echo '<div id="social-content-right">';
echo '<h2><a href="groups.php?id='.$group_id.'">'.$group_info['name'].'</a></h2>';
echo '<h1><a href="groups.php?id='.$group_id.'">'.$group_info['name'].'</a></h1>';
if (count($nosessionUsersList) == 0) {
$friends = SocialManager::get_friends(api_get_user_id());

@ -7,7 +7,7 @@
$language_file = array('userInfo');
$cidReset = true;
require '../inc/global.inc.php';
require_once '../inc/global.inc.php';
api_block_anonymous_users();
if (api_get_setting('allow_social_tool') !='true') {
@ -98,7 +98,7 @@ echo '<div id="social-content">';
echo '</div>';
echo '<div id="social-content-right">';
echo '<h2><a href="groups.php?id='.$group_id.'">'.$group_info['name'].'</a></h2>';
echo '<h1><a href="groups.php?id='.$group_id.'">'.$group_info['name'].'</a></h1>';
echo '<div class="rounded_div" style="width:90%">';
@ -112,7 +112,7 @@ echo '<div id="social-content">';
break;
case GROUP_USER_PERMISSION_READER:
if (in_array($user_role, array(GROUP_USER_PERMISSION_ADMIN, GROUP_USER_PERMISSION_MODERATOR))) {
$user['link'] = '<a href="group_members.php?id='.$group_id.'&u='.$user['user_id'].'&action=delete">'.Display::return_icon('user_delete.png', get_lang('DeleteFromGroup')).'</a>'.
$user['link'] = '<a href="group_members.php?id='.$group_id.'&u='.$user['user_id'].'&action=delete">'.Display::return_icon('delete.png', get_lang('DeleteFromGroup')).'</a>'.
'<a href="group_members.php?id='.$group_id.'&u='.$user['user_id'].'&action=set_moderator">'.Display::return_icon('social_moderator_add.png', get_lang('AddModerator')).'</a>';
}
break;

@ -0,0 +1,129 @@
<?php
/* For licensing terms, see /license.txt */
/**
* @package chamilo.social
* @author Julio Montoya <gugli100@gmail.com>
*/
$language_file = array('userInfo');
$cidReset = true;
require '../inc/global.inc.php';
api_block_anonymous_users();
if (api_get_setting('allow_social_tool') !='true') {
api_not_allowed();
}
require_once api_get_path(LIBRARY_PATH).'group_portal_manager.lib.php';
require_once api_get_path(LIBRARY_PATH).'usermanager.lib.php';
require_once api_get_path(LIBRARY_PATH).'message.lib.php';
require_once api_get_path(LIBRARY_PATH).'social.lib.php';
//jquery thickbox already called from main/inc/header.inc.php
$htmlHeadXtra[] = '<script type="text/javascript">
function show_icon_edit(element_html) {
ident="#edit_image";
$(ident).show();
}
function hide_icon_edit(element_html) {
ident="#edit_image";
$(ident).hide();
}
</script>';
$this_section = SECTION_SOCIAL;
$interbreadcrumb[]= array ('url' =>'home.php','name' => get_lang('Social'));
$interbreadcrumb[] = array('url' => 'groups.php','name' => get_lang('Groups'));
$interbreadcrumb[] = array('url' => '#','name' => get_lang('MemberList'));
api_block_anonymous_users();
$group_id = intval($_GET['id']);
$topic_id = intval($_GET['topic_id']);
//todo @this validation could be in a function in group_portal_manager
if (empty($group_id)) {
api_not_allowed(true);
} else {
$group_info = GroupPortalManager::get_group_data($group_id);
if (empty($group_info)) {
api_not_allowed(true);
}
$user_role = GroupPortalManager::get_user_group_role(api_get_user_id(), $group_id);
if (!in_array($user_role, array(GROUP_USER_PERMISSION_ADMIN, GROUP_USER_PERMISSION_MODERATOR, GROUP_USER_PERMISSION_READER))) {
api_not_allowed(true);
}
}
Display :: display_header($tool_name, 'Groups');
// save message group
if (isset($_POST['token']) && $_POST['token'] === $_SESSION['sec_token']) {
if (isset($_POST['action'])) {
$title = $_POST['title'];
$content = $_POST['content'];
$group_id = intval($_POST['group_id']);
$parent_id = intval($_POST['parent_id']);
if ($_POST['action'] == 'reply_message_group') {
$title = cut($content, 50);
}
if ($_POST['action'] == 'edit_message_group') {
$edit_message_id = intval($_POST['message_id']);
$res = MessageManager::send_message(0, $title, $content, $_FILES, '', $group_id, $parent_id, $edit_message_id);
} else {
$res = MessageManager::send_message(0, $title, $content, $_FILES, '', $group_id, $parent_id);
}
// display error messages
if (is_string($res)) {
Display::display_error_message($res);
}
if (!empty($res)) {
$groups_user = GroupPortalManager::get_users_by_group($group_id);
$group_info = GroupPortalManager::get_group_data($group_id);
$admin_user_info = api_get_user_info(1);
$sender_name = api_get_person_name($admin_user_info['firstName'], $admin_user_info['lastName'], null, PERSON_NAME_EMAIL_ADDRESS);
$sender_email = $admin_user_info['mail'];
$subject = sprintf(get_lang('ThereIsANewMessageInTheGroupX'),$group_info['name']);
$link = api_get_path(WEB_PATH).'main/social/groups.php?'.Security::remove_XSS($_SERVER['QUERY_STRING']);
$text_link = '<a href="'.$link.'">'.get_lang('ClickHereToSeeMessageGroup')."</a><br />\r\n<br />\r\n".get_lang('OrCopyPasteTheFollowingUrl')." <br />\r\n ".$link;
$message = sprintf(get_lang('YouHaveReceivedANewMessageInTheGroupX'), $group_info['name'])."<br />$text_link";
foreach ($groups_user as $group_user) {
if ($group_user == $current_user) continue;
$group_user_info = api_get_user_info($group_user['user_id']);
$recipient_name = api_get_person_name($group_user_info['firstName'], $group_user_info['lastName'], null, PERSON_NAME_EMAIL_ADDRESS);
$recipient_email = $group_user_info['mail'];
@api_mail_html($recipient_name, $recipient_email, stripslashes($subject), $message, $sender_name, $sender_email);
}
}
$topic_id = intval($_GET['topic_id']);
if ($_POST['action'] == 'add_message_group') {
$topic_id = $res;
}
}
}
echo '<div id="social-content">';
echo '<div id="social-content-left">';
//this include the social menu div
SocialManager::show_social_menu('member_list', $group_id);
echo '</div>';
echo '<div id="social-content-right">';
echo '<h1><a href="groups.php?id='.$group_id.'">'.$group_info['name'].'</a></h1>';
if (!empty($show_message)){
Display::display_confirmation_message($show_message);
}
$content = MessageManager::display_message_for_group($group_id, $topic_id);
echo $content;
echo '</div>';
echo '</div>';
Display :: display_footer();

@ -21,8 +21,6 @@ require_once api_get_path(LIBRARY_PATH).'mail.lib.inc.php';
$this_section = SECTION_SOCIAL;
//jquery thickbox already called from main/inc/header.inc.php
// prepare anchor for message group topic
$anchor = '';
if (isset($_GET['anchor_topic'])) {
@ -144,54 +142,6 @@ if (isset($_GET['view']) && in_array($_GET['view'],$allowed_views)) {
Display :: display_header($tool_name, 'Groups');
// save message group
if (isset($_POST['token']) && $_POST['token'] === $_SESSION['sec_token']) {
if (isset($_POST['action'])) {
$title = $_POST['title'];
$content = $_POST['content'];
$group_id = intval($_POST['group_id']);
$parent_id = intval($_POST['parent_id']);
if ($_POST['action'] == 'reply_message_group') {
$title = cut($content, 50);
}
if ($_POST['action'] == 'edit_message_group') {
$edit_message_id = intval($_POST['message_id']);
$res = MessageManager::send_message(0, $title, $content, $_FILES, '', $group_id, $parent_id, $edit_message_id);
} else {
$res = MessageManager::send_message(0, $title, $content, $_FILES, '', $group_id, $parent_id);
}
// display error messages
if (is_string($res)) {
Display::display_error_message($res);
}
if ($res === true) {
$groups_user = GroupPortalManager::get_users_by_group($group_id);
$group_info = GroupPortalManager::get_group_data($group_id);
$admin_user_info = api_get_user_info(1);
$sender_name = api_get_person_name($admin_user_info['firstName'], $admin_user_info['lastName'], null, PERSON_NAME_EMAIL_ADDRESS);
$sender_email = $admin_user_info['mail'];
$subject = sprintf(get_lang('ThereIsANewMessageInTheGroupX'),$group_info['name']);
$link = api_get_path(WEB_PATH).'main/social/groups.php?'.$_SERVER['QUERY_STRING'];
$text_link = '<a href="'.$link.'">'.get_lang('ClickHereToSeeMessageGroup')."</a><br />\r\n<br />\r\n".get_lang('OrCopyPasteTheFollowingUrl')." <br />\r\n ".$link;
$message = sprintf(get_lang('YouHaveReceivedANewMessageInTheGroupX'),$group_info['name'])."<br />$text_link";
foreach ($groups_user as $group_user) {
if ($group_user == $current_user) continue;
$group_user_info = api_get_user_info($group_user['user_id']);
$recipient_name = api_get_person_name($group_user_info['firstName'], $group_user_info['lastName'], null, PERSON_NAME_EMAIL_ADDRESS);
$recipient_email = $group_user_info['mail'];
@api_mail_html($recipient_name, $recipient_email, stripslashes($subject), $message, $sender_name, $sender_email);
}
}
Security::clear_token();
}
}
// getting group information
$group_id = intval($_GET['id']);
$relation_group_title = '';
@ -301,14 +251,12 @@ if ($group_id != 0 ) {
$create_thread_link = '<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=400&width=610&&user_friend='.api_get_user_id().'&group_id='.$group_id.'&action=add_message_group" class="thickbox" title="'.get_lang('ComposeMessage').'">'.Display::return_icon('compose_message.png', get_lang('NewTopic'), array('hspace'=>'6')).get_lang('NewTopic').'</a>';
$content = $create_thread_link.$content;
}
$members = GroupPortalManager::get_users_by_group($group_id);
$member_content = '';
//Members
if (count($members) > 0) {
$min_count_members = 4;
$i = 1;
//$member_content .= '<div width="100%">';
$member_content .= Display::url(Display::return_icon('edit.gif', get_lang('EditMembersList')).' '.get_lang('EditMembersList'), 'group_members.php?id='.$group_id);
foreach($members as $member) {
@ -336,7 +284,6 @@ if ($group_id != 0 ) {
}
$headers = array(get_lang('Messages'), get_lang('Members'));
echo Display::tabs($headers, array($content, $member_content),'tabs');
} else {
// if I already sent an invitation message
if (!in_array($my_group_role, array(GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER, GROUP_USER_PERMISSION_PENDING_INVITATION))) {

@ -52,12 +52,12 @@ if (!empty($group_id) && $allowed_action) {
}
$page_item = !empty($_GET['topics_page_nr'])?intval($_GET['topics_page_nr']):1;
$param_item_page = isset($_GET['items_page_nr']) && isset($_GET['topic_id'])?('&items_'.intval($_GET['topic_id']).'_page_nr='.(!empty($_GET['topics_page_nr'])?intval($_GET['topics_page_nr']):1)):'';
$param_item_page .= '&topic_id='.intval($_GET['topic_id']);
$page_topic = !empty($_GET['topics_page_nr'])?intval($_GET['topics_page_nr']):1;
?>
<form name="form" action="groups.php?id=<?php echo $group_id ?>&anchor_topic=<?php echo Security::remove_XSS($_GET['anchor_topic']) ?>&topics_page_nr=<?php echo $page_topic ?><?php echo $param_item_page ?>" method="POST" enctype="multipart/form-data">
<form name="form" action="group_topics.php?id=<?php echo $group_id ?>&anchor_topic=<?php echo Security::remove_XSS($_GET['anchor_topic']) ?>&topics_page_nr=<?php echo $page_topic ?><?php echo $param_item_page ?>" method="POST" enctype="multipart/form-data">
<input type="hidden" name="action" value="<?php echo $allowed_action ?>" />
<input type="hidden" name="group_id" value="<?php echo $group_id ?>" />
<input type="hidden" name="parent_id" value="<?php echo $message_id ?>" />

Loading…
Cancel
Save