/**
  * 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'));
     }
 }
 public function test__admin_emails__no_admin_emails()
 {
     unset($this->_props['admin_emails']);
     $subject = new Omnilog_entry($this->_props);
     $this->assertIdentical(array(), $subject->get_admin_emails());
 }