/**
  * Custom Event: Add an announcement
  *
  * @access	private
  * @author	Matt Mecham
  * @return	void
  */
 private function _customEvent_modAnnounceSave($type = 'add')
 {
     //-----------------------------------------
     // INIT
     //-----------------------------------------
     $forums_to_save = "";
     $start_date = 0;
     $end_date = 0;
     $announce_id = intval($this->request['announce_id']);
     //-----------------------------------------
     // Check to see if we have access
     //-----------------------------------------
     if (!$this->memberData['g_is_supmod']) {
         $this->registry->getClass('output')->showError('announcements_supermods', 2031, true);
         return;
     }
     //-----------------------------------------
     // Turn off global form stuff
     //-----------------------------------------
     $this->hide_form_and_save_button = 1;
     //-----------------------------------------
     // check...
     //-----------------------------------------
     if (!$this->request['announce_title'] or !$this->request['announce_post']) {
         return $this->_customEvent_modAnnounceForm($type, $this->lang->words['announce_error_title']);
     }
     //-----------------------------------------
     // Get forums to add announce in
     //-----------------------------------------
     if (is_array($_POST['announce_forum']) and count($_POST['announce_forum'])) {
         if (in_array('*', $_POST['announce_forum'])) {
             $forums_to_save = '*';
         } else {
             $forums_to_save = implode(",", $_POST['announce_forum']);
         }
     }
     if (!$forums_to_save) {
         return $this->_customEvent_modAnnounceForm($type, $this->lang->words['announce_error_forums']);
     }
     //-----------------------------------------
     // Check Dates
     //-----------------------------------------
     if (strstr($this->request['announce_start'], '-')) {
         $start_array = explode('-', $this->request['announce_start']);
         if ($start_array[0] and $start_array[1] and $start_array[2]) {
             if (!checkdate($start_array[0], $start_array[1], $start_array[2])) {
                 return $this->_customEvent_modAnnounceForm($type, $this->lang->words['announce_error_date']);
             }
         }
         $start_date = IPSTime::date_gmmktime(0, 0, 1, $start_array[0], $start_array[1], $start_array[2]);
     }
     if (strstr($this->request['announce_end'], '-')) {
         $end_array = explode('-', $this->request['announce_end']);
         if ($end_array[0] and $end_array[1] and $end_array[2]) {
             if (!checkdate($end_array[0], $end_array[1], $end_array[2])) {
                 return $this->_customEvent_modAnnounceForm($type, $this->lang->words['announce_error_date']);
             }
         }
         $end_date = IPSTime::date_gmmktime(23, 59, 59, $end_array[0], $end_array[1], $end_array[2]);
     }
     //-----------------------------------------
     // Sort out the content
     //-----------------------------------------
     $announceContent = IPSText::getTextClass('editor')->processRawPost('announce_post');
     IPSText::getTextClass('bbcode')->bypass_badwords = 1;
     IPSText::getTextClass('bbcode')->parse_smilies = 1;
     IPSText::getTextClass('bbcode')->parse_html = $this->request['announce_html_enabled'] ? $this->request['announce_html_enabled'] : 0;
     IPSText::getTextClass('bbcode')->parse_nl2br = $this->request['announce_nlbr_enabled'] ? $this->request['announce_nlbr_enabled'] : 0;
     IPSText::getTextClass('bbcode')->parse_bbcode = 1;
     IPSText::getTextClass('bbcode')->parsing_section = 'announcement';
     //-----------------------------------------
     // Build save array
     //-----------------------------------------
     $save_array = array('announce_title' => $this->request['announce_title'], 'announce_post' => IPSText::getTextClass('bbcode')->preDbParse($announceContent), 'announce_active' => $this->request['announce_active'] ? $this->request['announce_active'] : 0, 'announce_forum' => $forums_to_save, 'announce_html_enabled' => $this->request['announce_html_enabled'] ? $this->request['announce_html_enabled'] : 0, 'announce_nlbr_enabled' => $this->request['announce_nlbr_enabled'] ? $this->request['announce_nlbr_enabled'] : 0, 'announce_start' => $start_date, 'announce_end' => $end_date);
     //-----------------------------------------
     // Save..
     //-----------------------------------------
     if ($type == 'add') {
         $save_array['announce_member_id'] = $this->memberData['member_id'];
         $this->DB->insert('announcements', $save_array);
     } else {
         if ($announce_id) {
             $this->DB->update('announcements', $save_array, 'announce_id=' . $announce_id);
         }
     }
     //-----------------------------------------
     // Update cache
     //-----------------------------------------
     $this->registry->cache()->rebuildCache('announcements', 'forums');
     $this->registry->getClass('output')->silentRedirect($this->settings['base_url'] . "app=core&module=usercp&tab=forums&area=mod_announcements");
 }