Adding delete topic button (in fact we just change the status to 3 ) only for platform admins in social groups

skala
Julio Montoya 14 years ago
parent cc4239950a
commit f06d3c5dc8
  1. 8
      main/inc/lib/group_portal_manager.lib.php
  2. 10
      main/inc/lib/groupmanager.lib.php
  3. 48
      main/inc/lib/message.lib.php
  4. 14
      main/social/group_topics.php
  5. 79
      main/social/groups.php

@ -1110,4 +1110,12 @@ class GroupPortalManager {
} }
return $html; return $html;
} }
function delete_topic($group_id, $topic_id) {
$table_message = Database::get_main_table(TABLE_MESSAGE);
$topic_id = intval($topic_id);
$group_id = intval($group_id);
$sql = "UPDATE $table_message SET msg_status=3 WHERE group_id = $group_id AND (id = '$topic_id' OR parent_id = $topic_id) ";
Database::query($sql);
}
} }

@ -71,8 +71,7 @@ class GroupManager {
* @param string $course_code Default is current course * @param string $course_code Default is current course
* @return array An array with all information about the groups. * @return array An array with all information about the groups.
*/ */
public static function get_group_list ($category = null, $course_code = null) { public static function get_group_list ($category = null, $course_code = null) {
$course_db = '';
$my_user_id = api_get_user_id(); $my_user_id = api_get_user_id();
$my_status_of_user_in_course = ''; $my_status_of_user_in_course = '';
@ -85,8 +84,7 @@ class GroupManager {
} }
*/ */
$course_info = api_get_course_info($course_code); $course_info = api_get_course_info($course_code);
$course_id = $course_info['real_id']; $course_id = $course_info['real_id'];
$table_user = Database :: get_main_table(TABLE_MAIN_USER);
$table_course = Database :: get_main_table(TABLE_MAIN_COURSE); $table_course = Database :: get_main_table(TABLE_MAIN_COURSE);
$table_group_user = Database :: get_course_table(TABLE_GROUP_USER); $table_group_user = Database :: get_course_table(TABLE_GROUP_USER);
$table_group = Database :: get_course_table(TABLE_GROUP); $table_group = Database :: get_course_table(TABLE_GROUP);
@ -1611,5 +1609,7 @@ class GroupManager {
$complete_user_list = self :: filter_only_students($complete_user_list); $complete_user_list = self :: filter_only_students($complete_user_list);
//now sort by # of group left //now sort by # of group left
$complete_user_list = TableSort :: sort_table($complete_user_list, 'number_groups_left', SORT_DESC); $complete_user_list = TableSort :: sort_table($complete_user_list, 'number_groups_left', SORT_DESC);
return $complete_user_list; } return $complete_user_list;
}
} }

@ -534,10 +534,9 @@ class MessageManager
*/ */
public static function get_messages_by_group($group_id) { public static function get_messages_by_group($group_id) {
if ($group_id != strval(intval($group_id))) return false; if ($group_id != strval(intval($group_id))) return false;
$table_message = Database::get_main_table(TABLE_MESSAGE); $table_message = Database::get_main_table(TABLE_MESSAGE);
$current_uid = api_get_user_id();
$group_id = intval($group_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"; $query = "SELECT * FROM $table_message WHERE group_id= $group_id AND msg_status NOT IN ('".MESSAGE_STATUS_OUTBOX."', '".MESSAGE_STATUS_DELETED."') ORDER BY id";
$rs = Database::query($query); $rs = Database::query($query);
$data = array(); $data = array();
if (Database::num_rows($rs) > 0) { if (Database::num_rows($rs) > 0) {
@ -556,10 +555,10 @@ class MessageManager
*/ */
public static function get_messages_by_group_by_message($group_id, $message_id) { public static function get_messages_by_group_by_message($group_id, $message_id) {
if ($group_id != strval(intval($group_id))) return false; if ($group_id != strval(intval($group_id))) return false;
$table_message = Database::get_main_table(TABLE_MESSAGE); $table_message = Database::get_main_table(TABLE_MESSAGE);
$current_uid = api_get_user_id();
$group_id = intval($group_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 "; $query = "SELECT * FROM $table_message WHERE group_id = $group_id AND msg_status NOT IN ('".MESSAGE_STATUS_OUTBOX."', '".MESSAGE_STATUS_DELETED."') ORDER BY id ";
$rs = Database::query($query); $rs = Database::query($query);
$data = array(); $data = array();
$parents = array(); $parents = array();
@ -905,12 +904,7 @@ class MessageManager
public static function display_messages_for_group($group_id) { public static function display_messages_for_group($group_id) {
global $my_group_role; global $my_group_role;
$rows = self::get_messages_by_group($group_id); $rows = self::get_messages_by_group($group_id);
//$rows = self::calculate_children($rows, 1);
$group_info = GroupPortalManager::get_group_data($group_id);
$current_user_id = api_get_user_id();
$topics_per_page = 10; $topics_per_page = 10;
$count_items = 0;
$html_messages = ''; $html_messages = '';
$query_vars = array('id'=>$group_id, 'topics_page_nr'=>0); $query_vars = array('id'=>$group_id, 'topics_page_nr'=>0);
@ -918,8 +912,7 @@ class MessageManager
// prepare array for topics with its items // prepare array for topics with its items
$topics = array(); $topics = array();
$x = 0; $x = 0;
$my_items = array();
foreach($rows as $index => $value) { foreach($rows as $index => $value) {
if (empty($value['parent_id'])) { if (empty($value['parent_id'])) {
$topics[$value['id']] = $value; $topics[$value['id']] = $value;
@ -1000,20 +993,20 @@ class MessageManager
* @param int group id * @param int group id
*/ */
public static function display_message_for_group($group_id, $topic_id, $is_member, $message_id ) { public static function display_message_for_group($group_id, $topic_id, $is_member, $message_id ) {
global $my_group_role; global $my_group_role;
$main_message = self::get_message_by_id($topic_id);
$main_message = self::get_message_by_id($topic_id); if (empty($main_message)) {
$group_info = GroupPortalManager::get_group_data($group_id); return false;
$rows = self::get_messages_by_group_by_message($group_id, $topic_id); }
$rows = self::calculate_children($rows, $topic_id); $rows = self::get_messages_by_group_by_message($group_id, $topic_id);
$rows = self::calculate_children($rows, $topic_id);
$current_user_id = api_get_user_id(); $current_user_id = api_get_user_id();
$topics_per_page = 5; //$topics_per_page = 5;
$items_per_page = 50; $items_per_page = 50;
$count_items = 0; //$count_items = 0;
$html_messages = ''; //$html_messages = '';
$query_vars = array('id' => $group_id, 'topic_id' => $topic_id , 'topics_page_nr' => 0); $query_vars = array('id' => $group_id, 'topic_id' => $topic_id , 'topics_page_nr' => 0);
// Main message // Main message
@ -1027,7 +1020,11 @@ class MessageManager
$html = ''; $html = '';
$html .= Display::tag('h3', Security::remove_XSS($main_message['title'], STUDENT, true)); $delete_button = '';
if (api_is_platform_admin()) {
$delete_button = Display::url(Display::return_icon('delete.png', get_lang('Delete'), array(), 22), 'group_topics.php?action=delete&id='.$group_id.'&topic_id='.$topic_id);
}
$html .= Display::tag('h3', Security::remove_XSS($main_message['title'].$delete_button, STUDENT, true));
$user_sender_info = UserManager::get_user_info_by_id($main_message['user_sender_id']); $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']); $files_attachments = self::get_links_message_attachment_files($main_message['id']);
@ -1067,7 +1064,6 @@ class MessageManager
if (is_array($rows) && count($rows)> 0) { if (is_array($rows) && count($rows)> 0) {
$topics = $rows; $topics = $rows;
$array_html = array();
foreach ($topics as $index => $topic) { foreach ($topics as $index => $topic) {
if (empty($topic['id'])) { if (empty($topic['id'])) {
@ -1228,7 +1224,7 @@ class MessageManager
public static function get_message_by_id($message_id) { public static function get_message_by_id($message_id) {
$tbl_message = Database::get_main_table(TABLE_MESSAGE); $tbl_message = Database::get_main_table(TABLE_MESSAGE);
$message_id = intval($message_id); $message_id = intval($message_id);
$sql = "SELECT * FROM $tbl_message WHERE id = '$message_id'"; $sql = "SELECT * FROM $tbl_message WHERE id = '$message_id' AND msg_status <> '".MESSAGE_STATUS_DELETED."' ";
$res = Database::query($sql); $res = Database::query($sql);
$item = array(); $item = array();
if (Database::num_rows($res)>0) { if (Database::num_rows($res)>0) {

@ -36,6 +36,13 @@ if (empty($group_id)) {
} }
} }
if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'delete') {
if (api_is_platform_admin()) {
GroupPortalManager::delete_topic($group_id, $topic_id);
header("Location: groups.php?id=$group_id&action=show_message&msg=topic_deleted");
}
}
// save message group // save message group
if (isset($_POST['token']) && $_POST['token'] === $_SESSION['sec_token']) { if (isset($_POST['token']) && $_POST['token'] === $_SESSION['sec_token']) {
@ -168,14 +175,15 @@ $interbreadcrumb[] = array ('url' =>'home.php', 'name' => get_lang('Social'
$interbreadcrumb[] = array('url' => 'groups.php', 'name' => get_lang('Groups')); $interbreadcrumb[] = array('url' => 'groups.php', 'name' => get_lang('Groups'));
$interbreadcrumb[] = array('url' => '#', 'name' => get_lang('Thread')); $interbreadcrumb[] = array('url' => '#', 'name' => get_lang('Thread'));
$social_left_content = SocialManager::show_social_menu('member_list', $group_id); $social_right_content = '<a href="groups.php?id='.$group_id.'">'.Security::remove_XSS($group_info['name'], STUDENT, true).'</a> &raquo; <a href="groups.php?id='.$group_id.'#tabs_2">'.get_lang('Discussions').'</a>';
$social_right_content .= '<h2><a href="groups.php?id='.$group_id.'">'.Security::remove_XSS($group_info['name'], STUDENT, true).'</a> &raquo; <a href="groups.php?id='.$group_id.'#tabs_2">'.get_lang('Discussions').'</a></h2>'; $social_left_content .= SocialManager::show_social_menu('member_list', $group_id);
if (!empty($show_message)){ if (!empty($show_message)) {
$social_right_content .= Display::return_message($show_message, 'confirmation'); $social_right_content .= Display::return_message($show_message, 'confirmation');
} }
$social_right_content .= MessageManager::display_message_for_group($group_id, $topic_id, $is_member, $message_id); $social_right_content .= MessageManager::display_message_for_group($group_id, $topic_id, $is_member, $message_id);
$tpl = new Template($tool_name); $tpl = new Template($tool_name);
$tpl->set_help('Groups'); $tpl->set_help('Groups');
$tpl->assign('social_left_content', $social_left_content); $tpl->assign('social_left_content', $social_left_content);

@ -213,42 +213,42 @@ if ($group_id != 0 ) {
// details about the current group // details about the current group
$social_right_content = '<div class="head_group">'; $social_right_content = '<div class="head_group">';
$social_right_content .= '<div id="social-group-details">'; $social_right_content .= '<div id="social-group-details">';
//Group's title //Group's title
$social_right_content .= Display::tag('h2', Security::remove_XSS($group_info['name'], STUDENT, true)); $social_right_content .= Display::tag('h2', Security::remove_XSS($group_info['name'], STUDENT, true));
//echo '<div class="social-group-details-info"><a target="_blank" href="'.$group_info['url'].'">'.$group_info['url'].'</a></div>'; //echo '<div class="social-group-details-info"><a target="_blank" href="'.$group_info['url'].'">'.$group_info['url'].'</a></div>';
//Privacy //Privacy
if (!$is_group_member) { if (!$is_group_member) {
$social_right_content .= '<div class="social-group-details-info">'; $social_right_content .= '<div class="social-group-details-info">';
$social_right_content .= '<span>'.get_lang('Privacy').' : </span>'; $social_right_content .= '<span>'.get_lang('Privacy').' : </span>';
if ($group_info['visibility']== GROUP_PERMISSION_OPEN) { if ($group_info['visibility']== GROUP_PERMISSION_OPEN) {
$social_right_content .= get_lang('ThisIsAnOpenGroup'); $social_right_content .= get_lang('ThisIsAnOpenGroup');
} elseif ($group_info['visibility']== GROUP_PERMISSION_CLOSED) { } elseif ($group_info['visibility']== GROUP_PERMISSION_CLOSED) {
$social_right_content .= get_lang('ThisIsACloseGroup'); $social_right_content .= get_lang('ThisIsACloseGroup');
} }
$social_right_content .= '</div>'; $social_right_content .= '</div>';
} }
if (!$is_group_member && $group_info['visibility'] == GROUP_PERMISSION_CLOSED) { if (!$is_group_member && $group_info['visibility'] == GROUP_PERMISSION_CLOSED) {
$role = GroupPortalManager::get_user_group_role(api_get_user_id(), $group_id); $role = GroupPortalManager::get_user_group_role(api_get_user_id(), $group_id);
if ($role == GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER) { if ($role == GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER) {
$social_right_content .= Display::return_message(get_lang('YouAlreadySentAnInvitation')); $social_right_content .= Display::return_message(get_lang('YouAlreadySentAnInvitation'));
} }
} }
if (!empty($relation_group_title)) { if (!empty($relation_group_title)) {
/* /*
echo '<div class="social-group-details-info">'; echo '<div class="social-group-details-info">';
echo '<span>'.get_lang('StatusInThisGroup').' : </span>'; echo '<span>'.get_lang('StatusInThisGroup').' : </span>';
echo $relation_group_title; echo $relation_group_title;
echo '</div>';*/ echo '</div>';*/
} }
//Group's tags //Group's tags
if (!empty($tags)) { if (!empty($tags)) {
$social_right_content .= '<div id="social-group-details-info"><span>'.get_lang('Tags').' : </span>'.$tags.'</div>'; $social_right_content .= '<div id="social-group-details-info"><span>'.get_lang('Tags').' : </span>'.$tags.'</div>';
} }
$social_right_content .= '</div>'; $social_right_content .= '</div>';
$social_right_content .= '</div>'; $social_right_content .= '</div>';
$social_right_content .= '<div class="clear"></div>'; $social_right_content .= '<div class="clear"></div>';
@ -264,8 +264,7 @@ if ($group_id != 0 ) {
$social_right_content .= '<a class="a_button white medium" href="groups.php?id='.$group_id.'&action=join&u='.api_get_user_id().'">'.get_lang('YouHaveBeenInvitedJoinNow').'</a>'; $social_right_content .= '<a class="a_button white medium" href="groups.php?id='.$group_id.'&action=join&u='.api_get_user_id().'">'.get_lang('YouHaveBeenInvitedJoinNow').'</a>';
} }
$social_right_content .= '<br /><br />'; $social_right_content .= '<br /><br />';
} }
$content = MessageManager::display_messages_for_group($group_id); $content = MessageManager::display_messages_for_group($group_id);
if ($is_group_member) { if ($is_group_member) {
if (empty($content)) { if (empty($content)) {
@ -533,7 +532,9 @@ if ($group_id != 0 ) {
$social_right_content .= '</div>'; $social_right_content .= '</div>';
//Display :: display_footer(); //Display :: display_footer();
if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'show_message' && $_REQUEST['msg'] == 'topic_deleted') {
$show_message = Display::return_message(get_lang('Deleted'), 'success');
}
$tpl = new Template($tool_name); $tpl = new Template($tool_name);
$tpl->set_help('Groups'); $tpl->set_help('Groups');

Loading…
Cancel
Save