/**
  * Handles sending a message to a destination
  * 
  * If the destination is an email address or file, the messages will be
  * spooled up until the end of the script execution to prevent multiple
  * emails from being sent or a log file being written to multiple times.
  * 
  * @param  string $type     If the message is an error or an exception
  * @param  string $message  The message to send to the destination
  * @return void
  */
 private static function sendMessageToDestination($type, $message)
 {
     $destination = $type == 'exception' ? self::$exception_destination : self::$error_destination;
     if ($destination == 'html') {
         if (self::$show_context && !self::$context_shown) {
             self::expose(self::generateContext());
             self::$context_shown = TRUE;
         }
         self::expose($message);
         return;
     }
     static $registered_function = FALSE;
     if (!$registered_function) {
         register_shutdown_function(self::callback(self::sendMessagesOnShutdown));
         $registered_function = TRUE;
     }
     if ($type == 'error') {
         self::$error_message_queue[] = $message;
     } else {
         self::$exception_message = $message;
     }
 }