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 .= '