/** * Notifies the site administrator (via email) of the supplied OmniLog Entry. * * @access public * @param Omnilog_entry $entry The log entry. * @return void */ public function notify_site_admin_of_log_entry(Omnilog_entry $entry) { $this->EE->load->helper('text'); $this->EE->load->library('email'); $email = $this->EE->email; $lang = $this->EE->lang; $lang->loadfile('omnilog'); if (!$entry->is_populated()) { throw new Exception($lang->line('exception__notify_admin__missing_data')); } $webmaster_email = $this->EE->config->item('webmaster_email'); if ($email->valid_email($webmaster_email) !== TRUE) { throw new Exception($lang->line('exception__notify_admin__invalid_webmaster_email')); } $webmaster_name = ($webmaster_name = $this->EE->config->item('webmaster_name')) ? $webmaster_name : ''; switch ($entry->get_type()) { case Omnilog_entry::NOTICE: $lang_entry_type = $lang->line('email_entry_type_notice'); break; case Omnilog_entry::WARNING: $lang_entry_type = $lang->line('email_entry_type_warning'); break; case Omnilog_entry::ERROR: $lang_entry_type = $lang->line('email_entry_type_error'); break; default: $lang_entry_type = $lang->line('email_entry_type_unknown'); break; } $subject = ($site_name = $this->EE->config->item('site_name')) ? $lang->line('email_subject') . ' (' . $site_name . ')' : $lang->line('email_subject'); $admin_emails = ($admin_emails = $entry->get_admin_emails()) ? $admin_emails : array($webmaster_email); $message = $lang->line('email_preamble') . NL . NL; $message .= $lang->line('email_addon_name') . NL . $entry->get_addon_name() . NL . NL; $message .= $lang->line('email_log_date') . NL . date('r', $entry->get_date()) . NL . NL; $message .= $lang->line('email_entry_type') . NL . $lang_entry_type . NL . NL; $message .= $lang->line('email_log_message') . NL . $entry->get_message() . NL . NL; $message .= $lang->line('email_log_extended_data') . NL . $entry->get_extended_data() . NL . NL; $message .= $lang->line('email_cp_url') . NL . $this->EE->config->item('cp_url') . NL . NL; $message .= $lang->line('email_postscript'); $message = entities_to_ascii($message); $email->from($webmaster_email, $webmaster_name); $email->to($admin_emails); $email->subject($subject); $email->message($message); if ($email->send() !== TRUE) { throw new Exception($lang->line('exception__notify_admin__email_not_sent')); } }