|
|
|
@ -17,10 +17,10 @@ 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); |
|
|
|
|
$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); |
|
|
|
|
$userGroup = new UserGroup(); |
|
|
|
|
$userGroup = new UserGroup(); |
|
|
|
|
|
|
|
|
|
$temp_user_groups = $userGroup->get_groups_by_user(api_get_user_id(),0); |
|
|
|
|
$groups = array(); |
|
|
|
@ -32,10 +32,10 @@ class SystemAnnouncementManager |
|
|
|
|
$groups_string = '('.implode($groups,',').')'; |
|
|
|
|
$now = api_get_utc_datetime(); |
|
|
|
|
$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') "; |
|
|
|
|
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 self::VISIBLE_GUEST : |
|
|
|
@ -55,47 +55,47 @@ class SystemAnnouncementManager |
|
|
|
|
WHERE group_id in $groups_string |
|
|
|
|
) "; |
|
|
|
|
} |
|
|
|
|
$current_access_url_id = 1; |
|
|
|
|
if (api_is_multiple_url_enabled()) { |
|
|
|
|
$current_access_url_id = api_get_current_access_url_id(); |
|
|
|
|
} |
|
|
|
|
$sql .= " AND access_url_id = '$current_access_url_id' "; |
|
|
|
|
$sql .= " ORDER BY date_start DESC LIMIT 0,7"; |
|
|
|
|
|
|
|
|
|
$announcements = Database::query($sql); |
|
|
|
|
if (Database::num_rows($announcements) > 0) { |
|
|
|
|
$query_string = ereg_replace('announcement=[1-9]+', '', $_SERVER['QUERY_STRING']); |
|
|
|
|
$query_string = ereg_replace('&$', '', $query_string); |
|
|
|
|
$url = api_get_self(); |
|
|
|
|
echo '<div class="system_announcements">'; |
|
|
|
|
echo '<h3>'.get_lang('SystemAnnouncements').'</h3>'; |
|
|
|
|
echo '<div style="margin:10px;text-align:right;"><a href="news_list.php">'.get_lang('More').'</a></div>'; |
|
|
|
|
|
|
|
|
|
while ($announcement = Database::fetch_object($announcements)) { |
|
|
|
|
if ($id != $announcement->id) { |
|
|
|
|
if (strlen($query_string) > 0) { |
|
|
|
|
$show_url = 'news_list.php#'.$announcement->id; |
|
|
|
|
} else { |
|
|
|
|
$show_url = 'news_list.php#'.$announcement->id; |
|
|
|
|
} |
|
|
|
|
$display_date = api_convert_and_format_date($announcement->display_date, DATE_FORMAT_LONG); |
|
|
|
|
echo '<a name="'.$announcement->id.'"></a> |
|
|
|
|
<div class="system_announcement"> |
|
|
|
|
<div class="system_announcement_title"><a name="ann'.$announcement->id.'" href="'.$show_url.'">'.$announcement->title.'</a></div><div class="system_announcement_date">'.$display_date.'</div> |
|
|
|
|
</div>'; |
|
|
|
|
} else { |
|
|
|
|
echo '<div class="system_announcement"> |
|
|
|
|
<div class="system_announcement_title">' |
|
|
|
|
.$announcement->display_date.' |
|
|
|
|
<a name="ann'.$announcement->id.'" href="'.$url.'?'.$query_string.'#ann'.$announcement->id.'">'.$announcement->title.'</a> |
|
|
|
|
</div>'; |
|
|
|
|
} |
|
|
|
|
echo '<br />'; |
|
|
|
|
} |
|
|
|
|
echo '</div>'; |
|
|
|
|
} |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
$current_access_url_id = 1; |
|
|
|
|
if (api_is_multiple_url_enabled()) { |
|
|
|
|
$current_access_url_id = api_get_current_access_url_id(); |
|
|
|
|
} |
|
|
|
|
$sql .= " AND access_url_id = '$current_access_url_id' "; |
|
|
|
|
$sql .= " ORDER BY date_start DESC LIMIT 0,7"; |
|
|
|
|
|
|
|
|
|
$announcements = Database::query($sql); |
|
|
|
|
if (Database::num_rows($announcements) > 0) { |
|
|
|
|
$query_string = ereg_replace('announcement=[1-9]+', '', $_SERVER['QUERY_STRING']); |
|
|
|
|
$query_string = ereg_replace('&$', '', $query_string); |
|
|
|
|
$url = api_get_self(); |
|
|
|
|
echo '<div class="system_announcements">'; |
|
|
|
|
echo '<h3>'.get_lang('SystemAnnouncements').'</h3>'; |
|
|
|
|
echo '<div style="margin:10px;text-align:right;"><a href="news_list.php">'.get_lang('More').'</a></div>'; |
|
|
|
|
|
|
|
|
|
while ($announcement = Database::fetch_object($announcements)) { |
|
|
|
|
if ($id != $announcement->id) { |
|
|
|
|
if (strlen($query_string) > 0) { |
|
|
|
|
$show_url = 'news_list.php#'.$announcement->id; |
|
|
|
|
} else { |
|
|
|
|
$show_url = 'news_list.php#'.$announcement->id; |
|
|
|
|
} |
|
|
|
|
$display_date = api_convert_and_format_date($announcement->display_date, DATE_FORMAT_LONG); |
|
|
|
|
echo '<a name="'.$announcement->id.'"></a> |
|
|
|
|
<div class="system_announcement"> |
|
|
|
|
<div class="system_announcement_title"><a name="ann'.$announcement->id.'" href="'.$show_url.'">'.$announcement->title.'</a></div><div class="system_announcement_date">'.$display_date.'</div> |
|
|
|
|
</div>'; |
|
|
|
|
} else { |
|
|
|
|
echo '<div class="system_announcement"> |
|
|
|
|
<div class="system_announcement_title">' |
|
|
|
|
.$announcement->display_date.' |
|
|
|
|
<a name="ann'.$announcement->id.'" href="'.$url.'?'.$query_string.'#ann'.$announcement->id.'">'.$announcement->title.'</a> |
|
|
|
|
</div>'; |
|
|
|
|
} |
|
|
|
|
echo '<br />'; |
|
|
|
|
} |
|
|
|
|
echo '</div>'; |
|
|
|
|
} |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @param $visible |
|
|
|
@ -106,100 +106,100 @@ class SystemAnnouncementManager |
|
|
|
|
*/ |
|
|
|
|
public static function display_all_announcements($visible, $id = -1, $start = 0,$user_id='') |
|
|
|
|
{ |
|
|
|
|
$user_selected_language = api_get_interface_language(); |
|
|
|
|
$start = intval($start); |
|
|
|
|
$user_selected_language = api_get_interface_language(); |
|
|
|
|
$start = intval($start); |
|
|
|
|
$userGroup = new UserGroup(); |
|
|
|
|
$tbl_announcement_group = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS_GROUPS); |
|
|
|
|
$temp_user_groups = $userGroup->get_groups_by_user(api_get_user_id(),0); |
|
|
|
|
$tbl_announcement_group = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS_GROUPS); |
|
|
|
|
$temp_user_groups = $userGroup->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, $userGroup->get_parent_groups($user_group['id'])); |
|
|
|
|
} |
|
|
|
|
foreach ($temp_user_groups as $user_group) { |
|
|
|
|
$groups = array_merge($groups, array($user_group['id'])); |
|
|
|
|
$groups = array_merge($groups, $userGroup->get_parent_groups($user_group['id'])); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Checks if tables exists to not break platform not updated |
|
|
|
|
$groups_string = '('.implode($groups,',').')'; |
|
|
|
|
// Checks if tables exists to not break platform not updated |
|
|
|
|
$groups_string = '('.implode($groups,',').')'; |
|
|
|
|
|
|
|
|
|
$db_table = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS); |
|
|
|
|
$now = api_get_utc_datetime(); |
|
|
|
|
$db_table = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS); |
|
|
|
|
$now = api_get_utc_datetime(); |
|
|
|
|
|
|
|
|
|
$sql = "SELECT * FROM ".$db_table." |
|
|
|
|
WHERE |
|
|
|
|
(lang = '$user_selected_language' OR lang IS NULL) AND |
|
|
|
|
( '$now' >= date_start AND '$now' <= date_end) "; |
|
|
|
|
|
|
|
|
|
switch ($visible) { |
|
|
|
|
case self::VISIBLE_GUEST : |
|
|
|
|
$sql .= " AND visible_guest = 1 "; |
|
|
|
|
break; |
|
|
|
|
case self::VISIBLE_STUDENT : |
|
|
|
|
$sql .= " AND visible_student = 1 "; |
|
|
|
|
break; |
|
|
|
|
case self::VISIBLE_TEACHER : |
|
|
|
|
$sql .= " AND visible_teacher = 1 "; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
$sql = "SELECT * FROM ".$db_table." |
|
|
|
|
WHERE |
|
|
|
|
(lang = '$user_selected_language' OR lang IS NULL) AND |
|
|
|
|
( '$now' >= date_start AND '$now' <= date_end) "; |
|
|
|
|
|
|
|
|
|
if (count($groups) > 0) { |
|
|
|
|
switch ($visible) { |
|
|
|
|
case self::VISIBLE_GUEST: |
|
|
|
|
$sql .= " AND visible_guest = 1 "; |
|
|
|
|
break; |
|
|
|
|
case self::VISIBLE_STUDENT: |
|
|
|
|
$sql .= " AND visible_student = 1 "; |
|
|
|
|
break; |
|
|
|
|
case self::VISIBLE_TEACHER: |
|
|
|
|
$sql .= " AND visible_teacher = 1 "; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (count($groups) > 0) { |
|
|
|
|
$sql .= " OR id IN ( |
|
|
|
|
SELECT announcement_id FROM $tbl_announcement_group |
|
|
|
|
WHERE group_id in $groups_string |
|
|
|
|
) "; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (api_is_multiple_url_enabled()) { |
|
|
|
|
$current_access_url_id = api_get_current_access_url_id(); |
|
|
|
|
if (api_is_multiple_url_enabled()) { |
|
|
|
|
$current_access_url_id = api_get_current_access_url_id(); |
|
|
|
|
$sql .= " AND access_url_id IN ('1', '$current_access_url_id')"; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if(!isset($_GET['start']) || $_GET['start'] == 0) { |
|
|
|
|
$sql .= " ORDER BY date_start DESC LIMIT ".$start.",20"; |
|
|
|
|
} else { |
|
|
|
|
$sql .= " ORDER BY date_start DESC LIMIT ".($start+1).",20"; |
|
|
|
|
} |
|
|
|
|
$announcements = Database::query($sql); |
|
|
|
|
$content = ''; |
|
|
|
|
if (Database::num_rows($announcements) > 0) { |
|
|
|
|
$query_string = ereg_replace('announcement=[1-9]+', '', $_SERVER['QUERY_STRING']); |
|
|
|
|
$query_string = ereg_replace('&$', '', $query_string); |
|
|
|
|
$url = api_get_self(); |
|
|
|
|
$content .= '<div class="system_announcements">'; |
|
|
|
|
$content .= '<h3>'.get_lang('SystemAnnouncements').'</h3>'; |
|
|
|
|
$content .= '<table align="center">'; |
|
|
|
|
$content .= '<tr>'; |
|
|
|
|
$content .= '<td>'; |
|
|
|
|
$content .= SystemAnnouncementManager :: display_arrow($user_id); |
|
|
|
|
$content .= '</td>'; |
|
|
|
|
$content .= '</tr>'; |
|
|
|
|
$content .= '</table>'; |
|
|
|
|
$content .= '<table align="center" border="0" width="900px">'; |
|
|
|
|
while ($announcement = Database::fetch_object($announcements)) { |
|
|
|
|
$display_date = api_convert_and_format_date($announcement->display_date, DATE_FORMAT_LONG); |
|
|
|
|
$content .= '<tr><td>'; |
|
|
|
|
$content .= '<a name="'.$announcement->id.'"></a> |
|
|
|
|
<div class="system_announcement"> |
|
|
|
|
<h2>'.$announcement->title.'</h2><div class="system_announcement_date">'.$display_date.'</div> |
|
|
|
|
<br /> |
|
|
|
|
<div class="system_announcement_content">' |
|
|
|
|
.$announcement->content.' |
|
|
|
|
</div> |
|
|
|
|
</div><br />'; |
|
|
|
|
$content .= '</tr></td>'; |
|
|
|
|
} |
|
|
|
|
$content .= '</table>'; |
|
|
|
|
|
|
|
|
|
$content .= '<table align="center">'; |
|
|
|
|
$content .= '<tr>'; |
|
|
|
|
$content .= '<td>'; |
|
|
|
|
$content .= SystemAnnouncementManager :: display_arrow($user_id); |
|
|
|
|
$content .= '</td>'; |
|
|
|
|
$content .= '</tr>'; |
|
|
|
|
$content .= '</table>'; |
|
|
|
|
$content .= '</div>'; |
|
|
|
|
} |
|
|
|
|
if(!isset($_GET['start']) || $_GET['start'] == 0) { |
|
|
|
|
$sql .= " ORDER BY date_start DESC LIMIT ".$start.",20"; |
|
|
|
|
} else { |
|
|
|
|
$sql .= " ORDER BY date_start DESC LIMIT ".($start+1).",20"; |
|
|
|
|
} |
|
|
|
|
$announcements = Database::query($sql); |
|
|
|
|
$content = ''; |
|
|
|
|
if (Database::num_rows($announcements) > 0) { |
|
|
|
|
$query_string = ereg_replace('announcement=[1-9]+', '', $_SERVER['QUERY_STRING']); |
|
|
|
|
$query_string = ereg_replace('&$', '', $query_string); |
|
|
|
|
$url = api_get_self(); |
|
|
|
|
$content .= '<div class="system_announcements">'; |
|
|
|
|
$content .= '<h3>'.get_lang('SystemAnnouncements').'</h3>'; |
|
|
|
|
$content .= '<table align="center">'; |
|
|
|
|
$content .= '<tr>'; |
|
|
|
|
$content .= '<td>'; |
|
|
|
|
$content .= SystemAnnouncementManager :: display_arrow($user_id); |
|
|
|
|
$content .= '</td>'; |
|
|
|
|
$content .= '</tr>'; |
|
|
|
|
$content .= '</table>'; |
|
|
|
|
$content .= '<table align="center" border="0" width="900px">'; |
|
|
|
|
while ($announcement = Database::fetch_object($announcements)) { |
|
|
|
|
$display_date = api_convert_and_format_date($announcement->display_date, DATE_FORMAT_LONG); |
|
|
|
|
$content .= '<tr><td>'; |
|
|
|
|
$content .= '<a name="'.$announcement->id.'"></a> |
|
|
|
|
<div class="system_announcement"> |
|
|
|
|
<h2>'.$announcement->title.'</h2><div class="system_announcement_date">'.$display_date.'</div> |
|
|
|
|
<br /> |
|
|
|
|
<div class="system_announcement_content">' |
|
|
|
|
.$announcement->content.' |
|
|
|
|
</div> |
|
|
|
|
</div><br />'; |
|
|
|
|
$content .= '</tr></td>'; |
|
|
|
|
} |
|
|
|
|
$content .= '</table>'; |
|
|
|
|
|
|
|
|
|
$content .= '<table align="center">'; |
|
|
|
|
$content .= '<tr>'; |
|
|
|
|
$content .= '<td>'; |
|
|
|
|
$content .= SystemAnnouncementManager :: display_arrow($user_id); |
|
|
|
|
$content .= '</td>'; |
|
|
|
|
$content .= '</tr>'; |
|
|
|
|
$content .= '</table>'; |
|
|
|
|
$content .= '</div>'; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return $content; |
|
|
|
|
} |
|
|
|
|
return $content; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @param int $user_id |
|
|
|
@ -207,23 +207,23 @@ class SystemAnnouncementManager |
|
|
|
|
*/ |
|
|
|
|
public static function display_arrow($user_id) |
|
|
|
|
{ |
|
|
|
|
$start = (int)$_GET['start']; |
|
|
|
|
$nb_announcement = SystemAnnouncementManager :: count_nb_announcement($start,$user_id); |
|
|
|
|
$next = ((int)$_GET['start']+19); |
|
|
|
|
$prev = ((int)$_GET['start']-19); |
|
|
|
|
$content = ''; |
|
|
|
|
if(!isset($_GET['start']) || $_GET['start'] == 0) { |
|
|
|
|
if($nb_announcement > 20) { |
|
|
|
|
$content .= '<a href="news_list.php?start='.$next.'">'.get_lang('NextBis').' >> </a>'; |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
echo '<a href="news_list.php?start='.$prev.'"> << '.get_lang('Prev').'</a>'; |
|
|
|
|
if ($nb_announcement > 20) { |
|
|
|
|
$content .= '<a href="news_list.php?start='.$next.'">'.get_lang('NextBis').' >> </a>'; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return $content; |
|
|
|
|
} |
|
|
|
|
$start = (int)$_GET['start']; |
|
|
|
|
$nb_announcement = SystemAnnouncementManager :: count_nb_announcement($start,$user_id); |
|
|
|
|
$next = ((int)$_GET['start']+19); |
|
|
|
|
$prev = ((int)$_GET['start']-19); |
|
|
|
|
$content = ''; |
|
|
|
|
if(!isset($_GET['start']) || $_GET['start'] == 0) { |
|
|
|
|
if($nb_announcement > 20) { |
|
|
|
|
$content .= '<a href="news_list.php?start='.$next.'">'.get_lang('NextBis').' >> </a>'; |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
echo '<a href="news_list.php?start='.$prev.'"> << '.get_lang('Prev').'</a>'; |
|
|
|
|
if ($nb_announcement > 20) { |
|
|
|
|
$content .= '<a href="news_list.php?start='.$next.'">'.get_lang('NextBis').' >> </a>'; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return $content; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @param int $start |
|
|
|
@ -232,82 +232,82 @@ class SystemAnnouncementManager |
|
|
|
|
*/ |
|
|
|
|
public static function count_nb_announcement($start = 0, $user_id = '') |
|
|
|
|
{ |
|
|
|
|
$start = intval($start); |
|
|
|
|
$visibility = api_is_allowed_to_create_course() ? self::VISIBLE_TEACHER : self::VISIBLE_STUDENT; |
|
|
|
|
$user_selected_language = api_get_interface_language(); |
|
|
|
|
$db_table = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS); |
|
|
|
|
$sql = 'SELECT id FROM '.$db_table.' |
|
|
|
|
WHERE (lang="'.$user_selected_language.'" OR lang IS NULL) '; |
|
|
|
|
if (isset($user_id)) { |
|
|
|
|
switch ($visibility) { |
|
|
|
|
case self::VISIBLE_GUEST : |
|
|
|
|
$sql .= " AND visible_guest = 1 "; |
|
|
|
|
break; |
|
|
|
|
case self::VISIBLE_STUDENT : |
|
|
|
|
$sql .= " AND visible_student = 1 "; |
|
|
|
|
break; |
|
|
|
|
case self::VISIBLE_TEACHER : |
|
|
|
|
$sql .= " AND visible_teacher = 1 "; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$current_access_url_id = 1; |
|
|
|
|
if (api_is_multiple_url_enabled()) { |
|
|
|
|
$current_access_url_id = api_get_current_access_url_id(); |
|
|
|
|
} |
|
|
|
|
$sql .= " AND access_url_id = '$current_access_url_id' "; |
|
|
|
|
$start = intval($start); |
|
|
|
|
$visibility = api_is_allowed_to_create_course() ? self::VISIBLE_TEACHER : self::VISIBLE_STUDENT; |
|
|
|
|
$user_selected_language = api_get_interface_language(); |
|
|
|
|
$db_table = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS); |
|
|
|
|
$sql = 'SELECT id FROM '.$db_table.' |
|
|
|
|
WHERE (lang="'.$user_selected_language.'" OR lang IS NULL) '; |
|
|
|
|
if (isset($user_id)) { |
|
|
|
|
switch ($visibility) { |
|
|
|
|
case self::VISIBLE_GUEST: |
|
|
|
|
$sql .= " AND visible_guest = 1 "; |
|
|
|
|
break; |
|
|
|
|
case self::VISIBLE_STUDENT: |
|
|
|
|
$sql .= " AND visible_student = 1 "; |
|
|
|
|
break; |
|
|
|
|
case self::VISIBLE_TEACHER: |
|
|
|
|
$sql .= " AND visible_teacher = 1 "; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$current_access_url_id = 1; |
|
|
|
|
if (api_is_multiple_url_enabled()) { |
|
|
|
|
$current_access_url_id = api_get_current_access_url_id(); |
|
|
|
|
} |
|
|
|
|
$sql .= " AND access_url_id = '$current_access_url_id' "; |
|
|
|
|
|
|
|
|
|
$sql .= 'LIMIT '.$start.', 21'; |
|
|
|
|
$announcements = Database::query($sql); |
|
|
|
|
$i = 0; |
|
|
|
|
while ($rows = Database::fetch_array($announcements)) { |
|
|
|
|
$i++; |
|
|
|
|
} |
|
|
|
|
return $i; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Get all announcements |
|
|
|
|
* @return array An array with all available system announcements (as php |
|
|
|
|
* objects) |
|
|
|
|
*/ |
|
|
|
|
public static function get_all_announcements() |
|
|
|
|
$sql .= 'LIMIT '.$start.', 21'; |
|
|
|
|
$announcements = Database::query($sql); |
|
|
|
|
$i = 0; |
|
|
|
|
while ($rows = Database::fetch_array($announcements)) { |
|
|
|
|
$i++; |
|
|
|
|
} |
|
|
|
|
return $i; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Get all announcements |
|
|
|
|
* @return array An array with all available system announcements (as php |
|
|
|
|
* objects) |
|
|
|
|
*/ |
|
|
|
|
public static function get_all_announcements() |
|
|
|
|
{ |
|
|
|
|
$table = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS); |
|
|
|
|
$now = api_get_utc_datetime(); |
|
|
|
|
$sql = "SELECT *, IF ( '$now' >= date_start AND '$now' <= date_end, '1', '0') AS visible |
|
|
|
|
FROM $table"; |
|
|
|
|
$table = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS); |
|
|
|
|
$now = api_get_utc_datetime(); |
|
|
|
|
$sql = "SELECT *, IF ( '$now' >= date_start AND '$now' <= date_end, '1', '0') AS visible |
|
|
|
|
FROM $table"; |
|
|
|
|
|
|
|
|
|
$current_access_url_id = 1; |
|
|
|
|
if (api_is_multiple_url_enabled()) { |
|
|
|
|
$current_access_url_id = api_get_current_access_url_id(); |
|
|
|
|
} |
|
|
|
|
$sql .= " WHERE access_url_id = '$current_access_url_id' "; |
|
|
|
|
$sql .= " ORDER BY date_start ASC"; |
|
|
|
|
$current_access_url_id = 1; |
|
|
|
|
if (api_is_multiple_url_enabled()) { |
|
|
|
|
$current_access_url_id = api_get_current_access_url_id(); |
|
|
|
|
} |
|
|
|
|
$sql .= " WHERE access_url_id = '$current_access_url_id' "; |
|
|
|
|
$sql .= " ORDER BY date_start ASC"; |
|
|
|
|
|
|
|
|
|
$announcements = Database::query($sql); |
|
|
|
|
$all_announcements = array(); |
|
|
|
|
while ($announcement = Database::fetch_object($announcements)) { |
|
|
|
|
$all_announcements[] = $announcement; |
|
|
|
|
} |
|
|
|
|
return $all_announcements; |
|
|
|
|
} |
|
|
|
|
$announcements = Database::query($sql); |
|
|
|
|
$all_announcements = array(); |
|
|
|
|
while ($announcement = Database::fetch_object($announcements)) { |
|
|
|
|
$all_announcements[] = $announcement; |
|
|
|
|
} |
|
|
|
|
return $all_announcements; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Adds an announcement to the database |
|
|
|
|
* @param string Title of the announcement |
|
|
|
|
* @param string Content of the announcement |
|
|
|
|
* @param string Start date (YYYY-MM-DD HH:II: SS) |
|
|
|
|
* @param string End date (YYYY-MM-DD HH:II: SS) |
|
|
|
|
* @param int Whether the announcement should be visible to teachers (1) or not (0) |
|
|
|
|
* @param int Whether the announcement should be visible to students (1) or not (0) |
|
|
|
|
* @param int Whether the announcement should be visible to anonymous users (1) or not (0) |
|
|
|
|
* @param string The language for which the announvement should be shown. Leave null for all langages |
|
|
|
|
* @param int Whether to send an e-mail to all users (1) or not (0) |
|
|
|
|
* @return mixed insert_id on success, false on failure |
|
|
|
|
*/ |
|
|
|
|
/** |
|
|
|
|
* Adds an announcement to the database |
|
|
|
|
* @param string Title of the announcement |
|
|
|
|
* @param string Content of the announcement |
|
|
|
|
* @param string Start date (YYYY-MM-DD HH:II: SS) |
|
|
|
|
* @param string End date (YYYY-MM-DD HH:II: SS) |
|
|
|
|
* @param int Whether the announcement should be visible to teachers (1) or not (0) |
|
|
|
|
* @param int Whether the announcement should be visible to students (1) or not (0) |
|
|
|
|
* @param int Whether the announcement should be visible to anonymous users (1) or not (0) |
|
|
|
|
* @param string The language for which the announvement should be shown. Leave null for all langages |
|
|
|
|
* @param int Whether to send an e-mail to all users (1) or not (0) |
|
|
|
|
* @return mixed insert_id on success, false on failure |
|
|
|
|
*/ |
|
|
|
|
public static function add_announcement( |
|
|
|
|
$title, |
|
|
|
|
$content, |
|
|
|
@ -321,114 +321,112 @@ class SystemAnnouncementManager |
|
|
|
|
$add_to_calendar = false, |
|
|
|
|
$sendEmailTest = false |
|
|
|
|
) { |
|
|
|
|
$original_content = $content; |
|
|
|
|
$a_dateS = explode(' ',$date_start); |
|
|
|
|
$a_arraySD = explode('-',$a_dateS[0]); |
|
|
|
|
$a_arraySH = explode(':',$a_dateS[1]); |
|
|
|
|
$date_start_to_compare = array_merge($a_arraySD,$a_arraySH); |
|
|
|
|
$original_content = $content; |
|
|
|
|
$a_dateS = explode(' ', $date_start); |
|
|
|
|
$a_arraySD = explode('-', $a_dateS[0]); |
|
|
|
|
$a_arraySH = explode(':', $a_dateS[1]); |
|
|
|
|
$date_start_to_compare = array_merge($a_arraySD, $a_arraySH); |
|
|
|
|
|
|
|
|
|
$a_dateE = explode(' ',$date_end); |
|
|
|
|
$a_arrayED = explode('-',$a_dateE[0]); |
|
|
|
|
$a_arrayEH = explode(':',$a_dateE[1]); |
|
|
|
|
$date_end_to_compare = array_merge($a_arrayED,$a_arrayEH); |
|
|
|
|
$a_dateE = explode(' ', $date_end); |
|
|
|
|
$a_arrayED = explode('-', $a_dateE[0]); |
|
|
|
|
$a_arrayEH = explode(':', $a_dateE[1]); |
|
|
|
|
$date_end_to_compare = array_merge($a_arrayED, $a_arrayEH); |
|
|
|
|
|
|
|
|
|
$db_table = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS); |
|
|
|
|
$db_table = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS); |
|
|
|
|
|
|
|
|
|
if (!checkdate($date_start_to_compare[1], $date_start_to_compare[2], $date_start_to_compare[0])) { |
|
|
|
|
Display :: display_normal_message(get_lang('InvalidStartDate')); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
if (!checkdate($date_start_to_compare[1], $date_start_to_compare[2], $date_start_to_compare[0])) { |
|
|
|
|
Display :: display_normal_message(get_lang('InvalidStartDate')); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (($date_end_to_compare[1] || |
|
|
|
|
if (($date_end_to_compare[1] || |
|
|
|
|
$date_end_to_compare[2] || |
|
|
|
|
$date_end_to_compare[0]) && |
|
|
|
|
!checkdate($date_end_to_compare[1], $date_end_to_compare[2], $date_end_to_compare[0]) |
|
|
|
|
) { |
|
|
|
|
Display :: display_normal_message(get_lang('InvalidEndDate')); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
if (strlen(trim($title)) == 0) { |
|
|
|
|
Display::display_normal_message(get_lang('InvalidTitle')); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
Display :: display_normal_message(get_lang('InvalidEndDate')); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
if (strlen(trim($title)) == 0) { |
|
|
|
|
Display::display_normal_message(get_lang('InvalidTitle')); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$start = api_get_utc_datetime($date_start); |
|
|
|
|
$start = api_get_utc_datetime($date_start); |
|
|
|
|
$end = api_get_utc_datetime($date_end); |
|
|
|
|
|
|
|
|
|
//Fixing urls that are sent by email |
|
|
|
|
//$content = str_replace('src=\"/home/', 'src=\"'.api_get_path(WEB_PATH).'home/', $content); |
|
|
|
|
//$content = str_replace('file=/home/', 'file='.api_get_path(WEB_PATH).'home/', $content); |
|
|
|
|
$content = str_replace('src=\"'.api_get_path(REL_HOME_PATH), 'src=\"'.api_get_path(WEB_PATH).api_get_path(REL_HOME_PATH), $content); |
|
|
|
|
$content = str_replace('file='.api_get_path(REL_HOME_PATH), 'file='.api_get_path(WEB_PATH).api_get_path(REL_HOME_PATH), $content); |
|
|
|
|
//Fixing urls that are sent by email |
|
|
|
|
//$content = str_replace('src=\"/home/', 'src=\"'.api_get_path(WEB_PATH).'home/', $content); |
|
|
|
|
//$content = str_replace('file=/home/', 'file='.api_get_path(WEB_PATH).'home/', $content); |
|
|
|
|
$content = str_replace('src=\"'.api_get_path(REL_HOME_PATH), 'src=\"'.api_get_path(WEB_PATH).api_get_path(REL_HOME_PATH), $content); |
|
|
|
|
$content = str_replace('file='.api_get_path(REL_HOME_PATH), 'file='.api_get_path(WEB_PATH).api_get_path(REL_HOME_PATH), $content); |
|
|
|
|
$lang = is_null($lang) ? '' : $lang; |
|
|
|
|
|
|
|
|
|
$current_access_url_id = 1; |
|
|
|
|
if (api_is_multiple_url_enabled()) { |
|
|
|
|
$current_access_url_id = api_get_current_access_url_id(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$params = [ |
|
|
|
|
'title' => $title, |
|
|
|
|
'content' => $content, |
|
|
|
|
'date_start' => $start, |
|
|
|
|
'date_end' => $end, |
|
|
|
|
'visible_teacher' => $visible_teacher, |
|
|
|
|
'visible_student' => $visible_student, |
|
|
|
|
'visible_guest' => $visible_guest, |
|
|
|
|
'lang' => $lang, |
|
|
|
|
'access_url_id' => $current_access_url_id, |
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
$lang = is_null($lang) ? '' : $lang; |
|
|
|
|
$resultId = Database::insert($db_table, $params); |
|
|
|
|
|
|
|
|
|
$current_access_url_id = 1; |
|
|
|
|
if (api_is_multiple_url_enabled()) { |
|
|
|
|
$current_access_url_id = api_get_current_access_url_id(); |
|
|
|
|
} |
|
|
|
|
if ($resultId) { |
|
|
|
|
|
|
|
|
|
$params = [ |
|
|
|
|
'title' => $title, |
|
|
|
|
'content' => $content, |
|
|
|
|
'date_start' => $start, |
|
|
|
|
'date_end' => $end, |
|
|
|
|
'visible_teacher' => $visible_teacher, |
|
|
|
|
'visible_student' => $visible_student, |
|
|
|
|
'visible_guest' => $visible_guest, |
|
|
|
|
'lang' => $lang, |
|
|
|
|
'access_url_id' => $current_access_url_id, |
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
$resultId = Database::insert($db_table, $params); |
|
|
|
|
|
|
|
|
|
if ($resultId) { |
|
|
|
|
|
|
|
|
|
if ($sendEmailTest) { |
|
|
|
|
SystemAnnouncementManager::send_system_announcement_by_email( |
|
|
|
|
$title, |
|
|
|
|
$content, |
|
|
|
|
$visible_teacher, |
|
|
|
|
$visible_student, |
|
|
|
|
$lang, |
|
|
|
|
true |
|
|
|
|
); |
|
|
|
|
} else { |
|
|
|
|
if ($send_mail == 1) { |
|
|
|
|
SystemAnnouncementManager::send_system_announcement_by_email( |
|
|
|
|
$title, |
|
|
|
|
$content, |
|
|
|
|
$visible_teacher, |
|
|
|
|
$visible_student, |
|
|
|
|
$lang |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if ($add_to_calendar) { |
|
|
|
|
$agenda = new Agenda(); |
|
|
|
|
$agenda->setType('admin'); |
|
|
|
|
$agenda->addEvent( |
|
|
|
|
$date_start, |
|
|
|
|
$date_end, |
|
|
|
|
false, |
|
|
|
|
$title, |
|
|
|
|
$original_content |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return $resultId; |
|
|
|
|
if ($sendEmailTest) { |
|
|
|
|
SystemAnnouncementManager::send_system_announcement_by_email( |
|
|
|
|
$title, |
|
|
|
|
$content, |
|
|
|
|
$visible_teacher, |
|
|
|
|
$visible_student, |
|
|
|
|
$lang, |
|
|
|
|
true |
|
|
|
|
); |
|
|
|
|
} else { |
|
|
|
|
if ($send_mail == 1) { |
|
|
|
|
SystemAnnouncementManager::send_system_announcement_by_email( |
|
|
|
|
$title, |
|
|
|
|
$content, |
|
|
|
|
$visible_teacher, |
|
|
|
|
$visible_student, |
|
|
|
|
$lang |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
if ($add_to_calendar) { |
|
|
|
|
$agenda = new Agenda(); |
|
|
|
|
$agenda->setType('admin'); |
|
|
|
|
$agenda->addEvent( |
|
|
|
|
$date_start, |
|
|
|
|
$date_end, |
|
|
|
|
false, |
|
|
|
|
$title, |
|
|
|
|
$original_content |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
return $resultId; |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Makes the announcement id visible only for groups in groups_array |
|
|
|
|
* @param int announcement id |
|
|
|
|
* @param array array of group id |
|
|
|
|
* @param int $announcement_id |
|
|
|
|
* @param array $group_array array of group id |
|
|
|
|
**/ |
|
|
|
|
public static function announcement_for_groups($announcement_id, $group_array) |
|
|
|
|
{ |
|
|
|
@ -437,9 +435,8 @@ class SystemAnnouncementManager |
|
|
|
|
); |
|
|
|
|
//first delete all group associations for this announcement |
|
|
|
|
$res = Database::query( |
|
|
|
|
"DELETE FROM $tbl_announcement_group WHERE announcement_id=".intval( |
|
|
|
|
$announcement_id |
|
|
|
|
) |
|
|
|
|
"DELETE FROM $tbl_announcement_group |
|
|
|
|
WHERE announcement_id=".intval($announcement_id) |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
if ($res === false) { |
|
|
|
@ -482,6 +479,7 @@ class SystemAnnouncementManager |
|
|
|
|
ag.group_id = g.id"; |
|
|
|
|
$res = Database::query($sql); |
|
|
|
|
$groups = Database::fetch_array($res); |
|
|
|
|
|
|
|
|
|
return $groups; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -509,22 +507,23 @@ class SystemAnnouncementManager |
|
|
|
|
) { |
|
|
|
|
$em = Database::getManager(); |
|
|
|
|
|
|
|
|
|
$a_dateS = explode(' ',$date_start); |
|
|
|
|
$a_arraySD = explode('-',$a_dateS[0]); |
|
|
|
|
$a_arraySH = explode(':',$a_dateS[1]); |
|
|
|
|
$date_start_to_compare = array_merge($a_arraySD,$a_arraySH); |
|
|
|
|
$a_dateS = explode(' ', $date_start); |
|
|
|
|
$a_arraySD = explode('-', $a_dateS[0]); |
|
|
|
|
$a_arraySH = explode(':', $a_dateS[1]); |
|
|
|
|
$date_start_to_compare = array_merge($a_arraySD, $a_arraySH); |
|
|
|
|
|
|
|
|
|
$a_dateE = explode(' ',$date_end); |
|
|
|
|
$a_arrayED = explode('-',$a_dateE[0]); |
|
|
|
|
$a_arrayEH = explode(':',$a_dateE[1]); |
|
|
|
|
$date_end_to_compare = array_merge($a_arrayED,$a_arrayEH); |
|
|
|
|
$a_dateE = explode(' ', $date_end); |
|
|
|
|
$a_arrayED = explode('-', $a_dateE[0]); |
|
|
|
|
$a_arrayEH = explode(':', $a_dateE[1]); |
|
|
|
|
$date_end_to_compare = array_merge($a_arrayED, $a_arrayEH); |
|
|
|
|
|
|
|
|
|
$lang = is_null($lang) ? '' : $lang; |
|
|
|
|
|
|
|
|
|
if (!checkdate($date_start_to_compare[1], $date_start_to_compare[2], $date_start_to_compare[0])) { |
|
|
|
|
Display :: display_normal_message(get_lang('InvalidStartDate')); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
if (!checkdate($date_start_to_compare[1], $date_start_to_compare[2], $date_start_to_compare[0])) { |
|
|
|
|
Display:: display_normal_message(get_lang('InvalidStartDate')); |
|
|
|
|
|
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (($date_end_to_compare[1] || |
|
|
|
|
$date_end_to_compare[2] || |
|
|
|
@ -670,8 +669,14 @@ class SystemAnnouncementManager |
|
|
|
|
* @param string Language (optional, considered for all languages if left empty) |
|
|
|
|
* @return bool True if the message was sent or there was no destination matching. False on database or e-mail sending error. |
|
|
|
|
*/ |
|
|
|
|
public static function send_system_announcement_by_email($title, $content, $teacher, $student, $language = null, $sendEmailTest = false) |
|
|
|
|
{ |
|
|
|
|
public static function send_system_announcement_by_email( |
|
|
|
|
$title, |
|
|
|
|
$content, |
|
|
|
|
$teacher, |
|
|
|
|
$student, |
|
|
|
|
$language = null, |
|
|
|
|
$sendEmailTest = false |
|
|
|
|
) { |
|
|
|
|
global $charset; |
|
|
|
|
|
|
|
|
|
$title = api_html_entity_decode(stripslashes($title), ENT_QUOTES, $charset); |
|
|
|
@ -753,13 +758,13 @@ class SystemAnnouncementManager |
|
|
|
|
('$now' >= date_start AND '$now' <= date_end) "; |
|
|
|
|
|
|
|
|
|
switch ($visible) { |
|
|
|
|
case self::VISIBLE_GUEST : |
|
|
|
|
case self::VISIBLE_GUEST: |
|
|
|
|
$sql .= " AND visible_guest = 1 "; |
|
|
|
|
break; |
|
|
|
|
case self::VISIBLE_STUDENT : |
|
|
|
|
case self::VISIBLE_STUDENT: |
|
|
|
|
$sql .= " AND visible_student = 1 "; |
|
|
|
|
break; |
|
|
|
|
case self::VISIBLE_TEACHER : |
|
|
|
|
case self::VISIBLE_TEACHER: |
|
|
|
|
$sql .= " AND visible_teacher = 1 "; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|