/**
  * Updates an announcement to the database
  * @param integer $id      : id of the announcement
  * @param string  $title   : title of the announcement
  * @param string  $content : content of the announcement
  * @param array $date_start: start date of announcement (0 => day ; 1 => month ; 2 => year ; 3 => hour ; 4 => minute)
  * @param array $date_end : end date of announcement (0 => day ; 1 => month ; 2 => year ; 3 => hour ; 4 => minute)
  * @return	bool	True on success, false on failure
  */
 public static function update_announcement($id, $title, $content, $date_start, $date_end, $visible_teacher = 0, $visible_student = 0, $visible_guest = 0, $lang = null, $send_mail = 0, $sendEmailTest = false)
 {
     $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);
     $langsql = is_null($lang) ? 'NULL' : "'" . Database::escape_string($lang) . "'";
     $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 (($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;
     }
     $start = api_get_utc_datetime($date_start);
     $end = api_get_utc_datetime($date_end);
     $title = Database::escape_string($title);
     $content = Database::escape_string($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);
     $id = intval($id);
     $sql = "UPDATE " . $db_table . " SET lang={$langsql},title='" . $title . "',content='" . $content . "',date_start='" . $start . "',date_end='" . $end . "', ";
     $sql .= " visible_teacher = '" . $visible_teacher . "', visible_student = '" . $visible_student . "', visible_guest = '" . $visible_guest . "' , access_url_id = '" . api_get_current_access_url_id() . "'  WHERE id = " . $id;
     if ($sendEmailTest) {
         SystemAnnouncementManager::send_system_announcement_by_email($title, $content, null, null, $lang, $sendEmailTest);
     } else {
         if ($send_mail == 1) {
             SystemAnnouncementManager::send_system_announcement_by_email($title, $content, $visible_teacher, $visible_student, $lang);
         }
     }
     $res = Database::query($sql);
     if ($res === false) {
         return false;
     }
     return true;
 }
 /**
  * Updates an announcement to the database
  * @param integer $id      : id of the announcement
  * @param string  $title   : title of the announcement
  * @param string  $content : content of the announcement
  * @param array $date_start: start date of announcement (0 => day ; 1 => month ; 2 => year ; 3 => hour ; 4 => minute)
  * @param array $date_end : end date of announcement (0 => day ; 1 => month ; 2 => year ; 3 => hour ; 4 => minute)
  * @return	bool	True on success, false on failure
  */
 public static function update_announcement($id, $title, $content, $date_start, $date_end, $visible_teacher = 0, $visible_student = 0, $visible_guest = 0, $lang = null, $send_mail = 0, $sendEmailTest = false)
 {
     $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_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 (($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;
     }
     $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);
     $id = intval($id);
     if ($sendEmailTest) {
         SystemAnnouncementManager::send_system_announcement_by_email($title, $content, null, null, $lang, $sendEmailTest);
     } else {
         if ($send_mail == 1) {
             SystemAnnouncementManager::send_system_announcement_by_email($title, $content, $visible_teacher, $visible_student, $lang);
         }
     }
     $announcement = $em->find('ChamiloCoreBundle:SysAnnouncement', $id);
     if (!$announcement) {
         return false;
     }
     $dateStart = new DateTime($start, new DateTimeZone('UTC'));
     $dateEnd = new DateTime($end, new DateTimeZone('UTC'));
     $announcement->setLang($lang)->setTitle($title)->setContent($content)->setDateStart($dateStart)->setDateEnd($dateEnd)->setVisibleTeacher($visible_teacher)->setVisibleStudent($visible_student)->setVisibleGuest($visible_guest)->setAccessUrlId(api_get_current_access_url_id());
     $em->merge($announcement);
     $em->flush();
     return true;
 }