Ejemplo n.º 1
0
 /**
  * Sends mail to recipient(s) if log entries are present.  Note that both
  * plaintext and HTML portions of email are handled here.
  *
  * @return void
  */
 public function shutdown()
 {
     // If there are events to mail, use them as message body.  Otherwise,
     // there is no mail to be sent.
     if (empty($this->_eventsToMail)) {
         return;
     }
     if ($this->_subjectPrependText !== null) {
         // Tack on the summary of entries per-priority to the subject
         // line and set it on the IfwPsn_Vendor_Zend_Mail object.
         $numEntries = $this->_getFormattedNumEntriesPerPriority();
         $this->_mail->setSubject("{$this->_subjectPrependText} ({$numEntries})");
     }
     // Always provide events to mail as plaintext.
     $this->_mail->setBodyText(implode('', $this->_eventsToMail));
     // If a IfwPsn_Vendor_Zend_Layout instance is being used, set its "events"
     // value to the lines formatted for use with the layout.
     if ($this->_layout) {
         // Set the required "messages" value for the layout.  Here we
         // are assuming that the layout is for use with HTML.
         $this->_layout->events = implode('', $this->_layoutEventsToMail);
         // If an exception occurs during rendering, convert it to a notice
         // so we can avoid an exception thrown without a stack frame.
         try {
             $this->_mail->setBodyHtml($this->_layout->render());
         } catch (Exception $e) {
             trigger_error("exception occurred when rendering layout; " . "unable to set html body for message; " . "message = {$e->getMessage()}; " . "code = {$e->getCode()}; " . "exception class = " . get_class($e), E_USER_NOTICE);
         }
     }
     // Finally, send the mail.  If an exception occurs, convert it into a
     // warning-level message so we can avoid an exception thrown without a
     // stack frame.
     try {
         $this->_mail->send();
     } catch (Exception $e) {
         trigger_error("unable to send log entries via email; " . "message = {$e->getMessage()}; " . "code = {$e->getCode()}; " . "exception class = " . get_class($e), E_USER_WARNING);
     }
 }