From 66162cee818f5a4d60a60f57fba7cf143c0a06e2 Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Thu, 12 Sep 2019 08:45:35 +0200 Subject: [PATCH] Remove course/session list in social network BT#16059 Fix search announcements list - dont call get all course/session list --- main/announcements/announcements.php | 19 +------ main/inc/lib/AnnouncementManager.php | 75 +++++++++++----------------- main/inc/lib/social.lib.php | 44 ++++------------ main/social/home.php | 10 ++-- main/social/profile.php | 20 +++----- 5 files changed, 55 insertions(+), 113 deletions(-) diff --git a/main/announcements/announcements.php b/main/announcements/announcements.php index e65c5c33fa..079a88cca0 100755 --- a/main/announcements/announcements.php +++ b/main/announcements/announcements.php @@ -27,8 +27,6 @@ $token = Security::get_existing_token(); $courseId = api_get_course_int_id(); $_course = api_get_course_info_by_id($courseId); $group_id = api_get_group_id(); -$sessionId = api_get_session_id(); - $current_course_tool = TOOL_ANNOUNCEMENT; $this_section = SECTION_COURSES; $nameTools = get_lang('ToolAnnouncement'); @@ -45,20 +43,8 @@ if (!empty($sessionId) && $drhHasAccessToSessionContent) { $allowToEdit = $allowToEdit || api_is_drh(); } -// Configuration settings -$display_announcement_list = true; -$display_form = false; -$display_title_list = true; - -// Maximum title messages to display -$maximum = '12'; - -// Length of the titles -$length = '36'; // Database Table Definitions -$tbl_courses = Database::get_main_table(TABLE_MAIN_COURSE); -$tbl_sessions = Database::get_main_table(TABLE_MAIN_SESSION); $tbl_announcement = Database::get_course_table(TABLE_ANNOUNCEMENT); $tbl_item_property = Database::get_course_table(TABLE_ITEM_PROPERTY); @@ -100,8 +86,6 @@ $searchFormToString = ''; $logInfo = [ 'tool' => TOOL_ANNOUNCEMENT, - 'tool_id' => 0, - 'tool_id_detail' => 0, 'action' => $action, ]; Event::registerLog($logInfo); @@ -128,7 +112,6 @@ switch ($action) { $sortDirection = 'ASC'; } - $announcementInfo = AnnouncementManager::get_by_id($courseId, $thisAnnouncementId); $sql = "SELECT DISTINCT announcement.id, announcement.display_order FROM $tbl_announcement announcement INNER JOIN $tbl_item_property itemproperty @@ -322,7 +305,7 @@ switch ($action) { break; case 'delete': /* Delete announcement */ - $id = intval($_GET['id']); + $id = (int) $_GET['id']; if ($sessionId != 0 && api_is_allowed_to_session_edit(false, true) == false) { api_not_allowed(); } diff --git a/main/inc/lib/AnnouncementManager.php b/main/inc/lib/AnnouncementManager.php index b4c456911c..0c58c82a5c 100755 --- a/main/inc/lib/AnnouncementManager.php +++ b/main/inc/lib/AnnouncementManager.php @@ -1016,64 +1016,49 @@ class AnnouncementManager } /** - * Gets all announcements from a user by course. + * @param int $user_id * - * @param string course db - * @param int user id - * - * @return array html with the content and count of announcements or false otherwise + * @return array|bool */ - public static function get_all_annoucement_by_user_course($course_code, $user_id) + public static function getAnnoucementCourseTotalByUser($user_id) { - $course_info = api_get_course_info($course_code); - $courseId = $course_info['real_id']; + $user_id = (int) $user_id; if (empty($user_id)) { return false; } + $tbl_announcement = Database::get_course_table(TABLE_ANNOUNCEMENT); $tbl_item_property = Database::get_course_table(TABLE_ITEM_PROPERTY); - if (!empty($user_id) && is_numeric($user_id)) { - $user_id = (int) $user_id; - $sql = "SELECT DISTINCT - announcement.title, - announcement.content, - display_order - FROM $tbl_announcement announcement - INNER JOIN $tbl_item_property ip - ON (announcement.id = ip.ref AND announcement.c_id = ip.c_id) - WHERE - announcement.c_id = $courseId AND - ip.c_id = $courseId AND - ip.tool='announcement' AND - ( - ip.insert_user_id='$user_id' AND - (ip.to_group_id='0' OR ip.to_group_id IS NULL) - ) - AND ip.visibility='1' - AND announcement.session_id = 0 - ORDER BY display_order DESC"; - $rs = Database::query($sql); - $num_rows = Database::num_rows($rs); - $content = ''; - $i = 0; - $result = []; - if ($num_rows > 0) { - while ($myrow = Database::fetch_array($rs)) { - $content .= ''.$myrow['title'].'

'; - $content .= $myrow['content']; - $i++; - } - $result['content'] = $content; - $result['count'] = $i; - return $result; + $sql = "SELECT DISTINCT + announcement.c_id, + count(announcement.id) count + FROM $tbl_announcement announcement + INNER JOIN $tbl_item_property ip + ON (announcement.id = ip.ref AND announcement.c_id = ip.c_id) + WHERE + ip.tool='announcement' AND + ( + ip.to_user_id = '$user_id' AND + (ip.to_group_id='0' OR ip.to_group_id IS NULL) + ) + AND ip.visibility='1' + AND announcement.session_id = 0 + GROUP BY announcement.c_id"; + $rs = Database::query($sql); + $num_rows = Database::num_rows($rs); + $result = []; + if ($num_rows > 0) { + while ($row = Database::fetch_array($rs, 'ASSOC')) { + if (empty($row['c_id'])) { + continue; + } + $result[] = ['course' => api_get_course_info_by_id($row['c_id']), 'count' => $row['count']]; } - - return false; } - return false; + return $result; } /** diff --git a/main/inc/lib/social.lib.php b/main/inc/lib/social.lib.php index 43b6607aec..3e335241cc 100755 --- a/main/inc/lib/social.lib.php +++ b/main/inc/lib/social.lib.php @@ -1233,44 +1233,22 @@ class SocialManager extends UserManager ); if ($show_full_profile && $user_id == api_get_user_id()) { - $personal_course_list = UserManager::get_personal_session_course_list($user_id); - $course_list_code = []; - $i = 1; - if (is_array($personal_course_list)) { - foreach ($personal_course_list as $my_course) { - if ($i <= 10) { - $course_list_code[] = ['code' => $my_course['code']]; - } else { - break; - } - $i++; - } - // To avoid repeated courses - $course_list_code = array_unique_dimensional($course_list_code); - } - // Announcements $announcements = []; - foreach ($course_list_code as $course) { - $course_info = api_get_course_info($course['code']); - if (!empty($course_info)) { - $content = AnnouncementManager::get_all_annoucement_by_user_course( - $course_info['code'], - $user_id + $announcementsByCourse = AnnouncementManager::getAnnoucementCourseTotalByUser($user_id); + if (!empty($announcementsByCourse)) { + foreach ($announcementsByCourse as $announcement) { + $url = Display::url( + Display::return_icon( + 'announcement.png', + get_lang('Announcements') + ).$announcement['course']['name'].' ('.$announcement['count'].')', + api_get_path(WEB_CODE_PATH).'announcements/announcements.php?cidReq='.$announcement['course']['code'] ); - - if (!empty($content)) { - $url = Display::url( - Display::return_icon( - 'announcement.png', - get_lang('Announcements') - ).$course_info['name'].' ('.$content['count'].')', - api_get_path(WEB_CODE_PATH).'announcements/announcements.php?cidReq='.$course['code'] - ); - $announcements[] = Display::tag('li', $url); - } + $announcements[] = Display::tag('li', $url); } } + if (!empty($announcements)) { $html .= '
'; $html .= '