|
|
|
|
@ -24,39 +24,41 @@ class SystemAnnouncementManager { |
|
|
|
|
public static function display_announcements($visible, $id = -1) { |
|
|
|
|
$user_selected_language = api_get_interface_language(); |
|
|
|
|
$db_table = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS); |
|
|
|
|
$tbl_announcement_group = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS_GROUPS); |
|
|
|
|
$temp_user_groups = GroupPortalManager::get_groups_by_user(api_get_user_id(),0); |
|
|
|
|
$groups =array(); |
|
|
|
|
foreach ($temp_user_groups as $user_group) { |
|
|
|
|
$groups = array_merge($groups, array($user_group['id'])); |
|
|
|
|
$groups = array_merge($groups, GroupPortalManager::get_parent_groups($user_group['id'])); |
|
|
|
|
} |
|
|
|
|
//checks if tables exists to not break platform not updated |
|
|
|
|
$ann_group_db_ok =false; |
|
|
|
|
if( Database::num_rows(Database::query("SHOW TABLES LIKE 'announcement_rel_group'")) > 0) |
|
|
|
|
$ann_group_db_ok =true; |
|
|
|
|
$tbl_announcement_group = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS_GROUPS); |
|
|
|
|
$temp_user_groups = GroupPortalManager::get_groups_by_user(api_get_user_id(),0); |
|
|
|
|
$groups =array(); |
|
|
|
|
foreach ($temp_user_groups as $user_group) { |
|
|
|
|
$groups = array_merge($groups, array($user_group['id'])); |
|
|
|
|
$groups = array_merge($groups, GroupPortalManager::get_parent_groups($user_group['id'])); |
|
|
|
|
} |
|
|
|
|
//checks if tables exists to not break platform not updated |
|
|
|
|
$ann_group_db_ok =false; |
|
|
|
|
if( Database::num_rows(Database::query("SHOW TABLES LIKE 'announcement_rel_group'")) > 0) |
|
|
|
|
$ann_group_db_ok =true; |
|
|
|
|
|
|
|
|
|
$groups_string = '('.implode($groups,',').')'; |
|
|
|
|
$sql = "SELECT *, DATE_FORMAT(date_start,'%d-%m-%Y %h:%i:%s') AS display_date" |
|
|
|
|
." FROM $db_table" |
|
|
|
|
." WHERE (lang='$user_selected_language'" |
|
|
|
|
." OR lang IS NULL)" |
|
|
|
|
." AND ((NOW() BETWEEN date_start AND date_end) OR date_end='0000-00-00') "; |
|
|
|
|
switch ($visible) { |
|
|
|
|
case VISIBLE_GUEST : |
|
|
|
|
$sql .= " AND visible_guest = 1 "; |
|
|
|
|
break; |
|
|
|
|
case VISIBLE_STUDENT : |
|
|
|
|
$sql .= " AND visible_student = 1 "; |
|
|
|
|
break; |
|
|
|
|
case VISIBLE_TEACHER : |
|
|
|
|
$sql .= " AND visible_teacher = 1 "; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
if (count($groups) > 0 and $ann_group_db_ok ) { |
|
|
|
|
$sql .= " OR id IN (SELECT announcement_id FROM $tbl_announcement_group " |
|
|
|
|
." WHERE group_id in $groups_string) "; |
|
|
|
|
} |
|
|
|
|
$groups_string = '('.implode($groups,',').')'; |
|
|
|
|
$sql = "SELECT *, DATE_FORMAT(date_start,'%d-%m-%Y %h:%i:%s') AS display_date" |
|
|
|
|
." FROM $db_table" |
|
|
|
|
." WHERE (lang='$user_selected_language'" |
|
|
|
|
." OR lang IS NULL)" |
|
|
|
|
." AND ((NOW() BETWEEN date_start AND date_end) OR date_end='0000-00-00') "; |
|
|
|
|
|
|
|
|
|
switch ($visible) { |
|
|
|
|
case VISIBLE_GUEST : |
|
|
|
|
$sql .= " AND visible_guest = 1 "; |
|
|
|
|
break; |
|
|
|
|
case VISIBLE_STUDENT : |
|
|
|
|
$sql .= " AND visible_student = 1 "; |
|
|
|
|
break; |
|
|
|
|
case VISIBLE_TEACHER : |
|
|
|
|
$sql .= " AND visible_teacher = 1 "; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (count($groups) > 0 and $ann_group_db_ok ) { |
|
|
|
|
$sql .= " OR id IN (SELECT announcement_id FROM $tbl_announcement_group " |
|
|
|
|
." WHERE group_id in $groups_string) "; |
|
|
|
|
} |
|
|
|
|
global $_configuration; |
|
|
|
|
$current_access_url_id = 1; |
|
|
|
|
if ($_configuration['multiple_access_urls']) { |
|
|
|
|
@ -349,8 +351,7 @@ class SystemAnnouncementManager { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
if ($add_to_calendar) { |
|
|
|
|
require_once 'calendar.lib.php'; |
|
|
|
|
|
|
|
|
|
require_once 'calendar.lib.php'; |
|
|
|
|
$agenda_id = agenda_add_item($title, $original_content, $date_start, $date_end); |
|
|
|
|
} |
|
|
|
|
return Database::insert_id(); |
|
|
|
|
@ -387,15 +388,15 @@ class SystemAnnouncementManager { |
|
|
|
|
* @return array array of group id |
|
|
|
|
**/ |
|
|
|
|
public static function get_announcement_groups($announcement_id){ |
|
|
|
|
$tbl_announcement_group = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS_GROUPS); |
|
|
|
|
$tbl_group = Database :: get_main_table(TABLE_MAIN_GROUP); |
|
|
|
|
//first delete all group associations for this announcement |
|
|
|
|
$tbl_announcement_group = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS_GROUPS); |
|
|
|
|
$tbl_group = Database :: get_main_table(TABLE_MAIN_GROUP); |
|
|
|
|
//first delete all group associations for this announcement |
|
|
|
|
|
|
|
|
|
$res = Database::query("SELECT g.id as group_id , g.name as group_name FROM $tbl_group g , $tbl_announcement_group ag" |
|
|
|
|
." WHERE announcement_id=".intval($announcement_id) |
|
|
|
|
." AND ag.group_id = g.id"); |
|
|
|
|
$groups = Database::fetch_array($res); |
|
|
|
|
return $groups; |
|
|
|
|
$res = Database::query("SELECT g.id as group_id , g.name as group_name FROM $tbl_group g , $tbl_announcement_group ag" |
|
|
|
|
." WHERE announcement_id=".intval($announcement_id) |
|
|
|
|
." AND ag.group_id = g.id"); |
|
|
|
|
$groups = Database::fetch_array($res); |
|
|
|
|
return $groups; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
@ -619,6 +620,5 @@ class SystemAnnouncementManager { |
|
|
|
|
$html .= '</ul></div></div>'; |
|
|
|
|
} |
|
|
|
|
return $html; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |