diff --git a/main/admin/system_announcements.php b/main/admin/system_announcements.php index 8c561e1a56..08464a8456 100644 --- a/main/admin/system_announcements.php +++ b/main/admin/system_announcements.php @@ -1,5 +1,5 @@ addElement('select', 'lang',get_lang('Language'),$language_list_with_keys); - $form->addElement('submit', 'submit', get_lang('Ok')); - $form->display(); +if($_GET['action'] != 'add' && $_GET['action'] != 'edit') +{ echo ''.get_lang('AddAnnouncement').''; } $form_action = ""; @@ -136,7 +127,7 @@ if (isset ($_POST['action']) && $_POST['action'] == 'delete_selected') { foreach($_POST['id'] as $index => $id) { - SystemAnnouncementManager :: delete_announcement($id); + SystemAnnouncementManager :: delete_announcement($id); } Display :: display_normal_message(get_lang('AnnouncementDeleted')); $action_todo = false; @@ -173,14 +164,15 @@ if ($action_todo) $form->add_textfield('title', get_lang('Title')); $language_list = api_get_languages(); $language_list_with_keys = array(); + $language_list_with_keys['all'] = get_lang('All'); for($i=0; $iaddElement('select', 'lang',get_lang('Language'),$language_list_with_keys); $form->add_html_editor('content', get_lang('Content')); $form->add_timewindow('start','end',get_lang('StartTimeWindow'),get_lang('EndTimeWindow')); @@ -196,15 +188,19 @@ if ($action_todo) $values = $form->exportValues(); if( !isset($values['visible_teacher'])) { - $values['visible_teacher'] = false; + $values['visible_teacher'] = false; } if( !isset($values['visible_student'])) { - $values['visible_student'] = false; + $values['visible_student'] = false; } if( !isset($values['visible_guest'])) { - $values['visible_guest'] = false; + $values['visible_guest'] = false; + } + if($values['lang'] == 'all') + { + $values['lang'] = null; } switch($values['action']) { @@ -224,7 +220,7 @@ if ($action_todo) $form->display(); } break; - default: + default: break; } $show_announcement_list = true; @@ -237,7 +233,7 @@ if ($action_todo) } if ($show_announcement_list) { - $announcements = SystemAnnouncementManager :: get_all_announcements($_GET['lang']); + $announcements = SystemAnnouncementManager :: get_all_announcements(); $announcement_data = array (); foreach ($announcements as $index => $announcement) { @@ -250,6 +246,7 @@ if ($show_announcement_list) $row[] = "id."&person=".VISIBLE_STUDENT."&action=". ($announcement->visible_student ? 'make_invisible' : 'make_visible')."\">visible_student ? 'visible.gif' : 'invisible.gif')."\" border=\"0\">"; $row[] = "id."&person=".VISIBLE_GUEST."&action=". ($announcement->visible_guest ? 'make_invisible' : 'make_visible')."\">visible_guest ? 'visible.gif' : 'invisible.gif')."\" border=\"0\">"; $row[] = $announcement->title; + $row[] = $announcement->lang; $row[] = "id."\"> id."\" onclick=\"javascript:if(!confirm('".addslashes(htmlentities(get_lang("ConfirmYourChoice")))."')) return false;\">"; $announcement_data[] = $row; } @@ -262,7 +259,8 @@ if ($show_announcement_list) $table->set_header(5,get_lang('Student')); $table->set_header(6,get_lang('Guest')); $table->set_header(7,get_lang('Title')); - $table->set_header(8,get_lang('Modify'), false); + $table->set_header(8,get_lang('Language')); + $table->set_header(9,get_lang('Modify'), false); $form_actions = array(); $form_actions['delete_selected'] = get_lang('Delete'); $table->set_form_actions($form_actions); @@ -270,7 +268,7 @@ if ($show_announcement_list) } /* ============================================================================== - FOOTER + FOOTER ============================================================================== */ Display :: display_footer(); diff --git a/main/inc/lib/system_announcements.lib.php b/main/inc/lib/system_announcements.lib.php index 93e92172a0..c99465b836 100644 --- a/main/inc/lib/system_announcements.lib.php +++ b/main/inc/lib/system_announcements.lib.php @@ -1,40 +1,40 @@ '; while ($announcement = mysql_fetch_object($announcements)) { - + if ($id != $announcement->id) { if (strlen($query_string) > 0) @@ -96,16 +96,16 @@ class SystemAnnouncementManager { echo '
' - .$announcement->display_date.' + .$announcement->display_date.' '.$announcement->title.'
' .$announcement->content.'
'; } - + } - + echo ''; echo ''; echo ''.get_lang("More").''; @@ -115,17 +115,17 @@ class SystemAnnouncementManager } return; } - + function display_all_announcements($visible, $id = -1,$start = 0,$user_id) - { - + { + $user_selected_language = $_SESSION["user_language_choice"] ? $_SESSION["user_language_choice"] : get_setting('platformLanguage'); - + $db_table = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS); - $sql = "SELECT *, DATE_FORMAT(date_start,'%d-%m-%Y') AS display_date FROM ".$db_table." - WHERE lang='$user_selected_language' AND (NOW() BETWEEN date_start AND date_end) + $sql = "SELECT *, DATE_FORMAT(date_start,'%d-%m-%Y') 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 : @@ -138,7 +138,7 @@ class SystemAnnouncementManager $sql .= " AND visible_teacher = 'true'"; break; } - + if(!isset($_GET['start']) || $_GET['start'] == 0) { $sql .= " ORDER BY date_start DESC LIMIT ".$start.",20"; @@ -148,7 +148,7 @@ class SystemAnnouncementManager $sql .= " ORDER BY date_start DESC LIMIT ".($start+1).",20"; } $announcements = api_sql_query($sql,__FILE__,__LINE__); - + if (mysql_num_rows($announcements)) { $query_string = ereg_replace('announcement=[1-9]+', '', $_SERVER['QUERY_STRING']); @@ -193,46 +193,46 @@ class SystemAnnouncementManager } return; } - + function display_fleche($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); - + if(!isset($_GET['start']) || $_GET['start'] == 0) { - + if($nb_announcement > 20) { echo ''.get_lang('NextBis').' >> '; } - + } else { echo ' << '.get_lang('Prev').''; - + if($nb_announcement > 20) { echo ''.get_lang('NextBis').' >> '; } - + } - + } - + function count_nb_announcement($start = 0,$user_id = '') { $visibility = api_is_allowed_to_create_course() ? VISIBLE_TEACHER : VISIBLE_STUDENT; $user_selected_language = $_SESSION["user_language_choice"] ? $_SESSION["user_language_choice"] : get_setting('platformLanguage'); $db_table = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS); - $sql = 'SELECT id + $sql = 'SELECT id FROM '.$db_table.' - WHERE lang="'.$user_selected_language.'"'; + WHERE (lang="'.$user_selected_language.'" OR lang IS NULL) '; if (isset($user_id)) - { + { switch ($visibility) { case VISIBLE_GUEST : @@ -255,24 +255,17 @@ class SystemAnnouncementManager } return $i; } - + /** * Get all announcements * @return array An array with all available system announcements (as php * objects) */ - function get_all_announcements($lang) + function get_all_announcements() { $db_table = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS); - $where=""; - - if(!empty($lang)) - { - $where="WHERE lang='$lang'"; - } - - $sql = "SELECT *, IF( NOW() BETWEEN date_start AND date_end, '1', '0') AS visible FROM ".$db_table." $where ORDER BY date_start ASC"; + $sql = "SELECT *, IF( NOW() BETWEEN date_start AND date_end, '1', '0') AS visible FROM ".$db_table." ORDER BY date_start ASC"; $announcements = api_sql_query($sql,__FILE__,__LINE__); $all_announcements = array(); while ($announcement = mysql_fetch_object($announcements)) @@ -288,43 +281,43 @@ class SystemAnnouncementManager * @param string $date_start Start date (YYYY-MM-DD HH:II: SS) * @param string $date_end End date (YYYY-MM-DD HH:II: SS) */ - function add_announcement($title, $content, $date_start, $date_end, $visible_teacher = 'false', $visible_student = 'false', $visible_guest = 'false', $lang = 'dutch') + function add_announcement($title, $content, $date_start, $date_end, $visible_teacher = 'false', $visible_student = 'false', $visible_guest = 'false', $lang = null) { - + $a_dateS = explode(' ',$date_start); $a_arraySD = explode('-',$a_dateS[0]); $a_arraySH = explode(':',$a_dateS[1]); $date_start = 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 = array_merge($a_arrayED,$a_arrayEH); - + $db_table = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS); - + if (!checkdate($date_start[1], $date_start[2], $date_start[0])) { Display :: display_normal_message(get_lang('InvalidStartDate')); return false; } if (($date_end[1] || $date_end[2] || $date_end[0]) && !checkdate($date_end[1], $date_end[2], $date_end[0])) - { + { Display :: display_normal_message(get_lang('InvalidEndDate')); return false; } if( strlen(trim($title)) == 0) { Display::display_normal_message(get_lang('InvalidTitle')); - return false; + return false; } $start = $date_start[0]."-".$date_start[1]."-".$date_start[2]." ".$date_start[3].":".$date_start[4].":".$date_start[5]; $end = $date_end[0]."-".$date_end[1]."-".$date_end[2]." ".$date_end[3].":".$date_end[4].":".$date_start[5]; $title = mysql_real_escape_string($title); $content = mysql_real_escape_string($content); - $sql = "INSERT INTO ".$db_table." (`title`,`content`,`date_start`,`date_end`,`visible_teacher`,`visible_student`,`visible_guest`, `lang`) - VALUES ('".$title."','".$content."','".$start."','".$end."','".$visible_teacher."','".$visible_student."','".$visible_guest."','".$lang."')"; - + $lang = is_null($lang) ? 'NULL' : "\'".mysql_real_escape_string($lang)."\'"; + $sql = "INSERT INTO ".$db_table." (`title`,`content`,`date_start`,`date_end`,`visible_teacher`,`visible_student`,`visible_guest`, `lang`) + VALUES ('".$title."','".$content."','".$start."','".$end."','".$visible_teacher."','".$visible_student."','".$visible_guest."',".$lang.")"; return api_sql_query($sql,__FILE__,__LINE__); } /** @@ -337,17 +330,17 @@ class SystemAnnouncementManager */ function update_announcement($id, $title, $content, $date_start, $date_end, $visible_teacher = 'false', $visible_student = 'false', $visible_guest = 'false',$lang='dutch') { - + $a_dateS = explode(' ',$date_start); $a_arraySD = explode('-',$a_dateS[0]); $a_arraySH = explode(':',$a_dateS[1]); $date_start = 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 = array_merge($a_arrayED,$a_arrayEH); - + $db_table = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS); if (!checkdate($date_start[1], $date_start[2], $date_start[0])) { @@ -355,14 +348,14 @@ if (!checkdate($date_start[1], $date_start[2], $date_start[0])) return false; } if (($date_end[1] || $date_end[2] || $date_end[0]) && !checkdate($date_end[1], $date_end[2], $date_end[0])) - { + { Display :: display_normal_message(get_lang('InvalidEndDate')); return false; } if( strlen(trim($title)) == 0) { Display::display_normal_message(get_lang('InvalidTitle')); - return false; + return false; } $start = $date_start[0]."-".$date_start[1]."-".$date_start[2]." ".$date_start[3].":".$date_start[4].":".$date_start[5]; $end = $date_end[0]."-".$date_end[1]."-".$date_end[2]." ".$date_end[3].":".$date_end[4].":".$date_start[5];