/** * 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"); }