From 0fe6e0aa887929433db7bb35ffb81b1a793e6fa5 Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Fri, 18 Jan 2013 16:14:19 +0100 Subject: [PATCH] Fixing when dealing with agenda/announcements in groups --- main/announcements/announcements.php | 52 ++++++++++---------- main/calendar/agenda.lib.php | 14 ++++-- main/inc/lib/announcements.inc.php | 71 ++++++++++++++++------------ main/inc/lib/main_api.lib.php | 42 ++++++++-------- 4 files changed, 99 insertions(+), 80 deletions(-) diff --git a/main/announcements/announcements.php b/main/announcements/announcements.php index c59355c1aa..b88a0d71a7 100644 --- a/main/announcements/announcements.php +++ b/main/announcements/announcements.php @@ -432,7 +432,6 @@ if (api_is_allowed_to_edit(false, true)) { $group_memberships = GroupManager::get_group_ids($_course['real_id'], api_get_user_id()); if ((api_get_course_setting('allow_user_edit_announcement') && !api_is_anonymous())) { - if (api_get_group_id() == 0) { $cond_user_id = " AND (ip.lastedit_user_id = '".api_get_user_id()."' OR ( ip.to_user_id='".api_get_user_id()."'". "OR ip.to_group_id IN (0, ".implode(", ", $group_memberships)."))) "; @@ -445,23 +444,24 @@ if (api_is_allowed_to_edit(false, true)) { $cond_user_id = " AND ( ip.to_user_id='".api_get_user_id()."'". "OR ip.to_group_id IN (0, ".implode(", ", $group_memberships).")) "; } else { - $cond_user_id = " AND ( ip.to_user_id='".api_get_user_id()."'". - "OR ip.to_group_id IN (0, ".api_get_group_id().")) "; + $cond_user_id = " AND ( + (ip.to_user_id='".api_get_user_id()."' AND ip.to_group_id = ".api_get_group_id().") OR + ip.to_group_id IN (".api_get_group_id().") AND ip.to_user_id = 0 ) "; } } // the user is member of several groups => display personal announcements AND his group announcements AND the general announcements if (is_array($group_memberships) && count($group_memberships) > 0) { - $sql = "SELECT announcement.*, ip.visibility, ip.to_group_id, ip.insert_user_id + $sql = "SELECT announcement.*, ip.visibility, ip.to_group_id, ip.insert_user_id FROM $tbl_announcement announcement, $tbl_item_property ip WHERE - announcement.c_id = $course_id AND - ip.c_id = $course_id AND - announcement.id = ip.ref AND - ip.tool='announcement' - AND ip.visibility='1' - $cond_user_id - $condition_session + announcement.c_id = $course_id AND + ip.c_id = $course_id AND + announcement.id = ip.ref AND + ip.tool='announcement' AND + ip.visibility='1' + $cond_user_id + $condition_session GROUP BY ip.ref ORDER BY display_order DESC LIMIT 0,$maximum"; @@ -588,8 +588,8 @@ if ($display_form) { //@todo use formvalidator if (empty($group_id)) { - echo '
-