public function write($file = null) { $message = $this->message(); $status = null; if ($message != '') { $destination = $this->config('email') ? $this->config('email') : $this->config('file'); $type = $destination ? $this->config('storage') : self::SYSTEM; switch ($type) { case self::FILE: if (class_exists('FileSystem')) { $file_config = array('mode' => 'a'); $messenger = new FileSystem($file_config); $messenger->file($this->config('file')); $messenger->contents($message); $messenger->write(); $status = $messenger->status(); } else { $status = error_log($message, $type, $destination) ? "Errors saved by system" : "Unable to save errors. Ironic."; } break; case self::EMAIL: if (class_exists('Email')) { $messenger = new Email($destination, $from, $subject, $message); $messenger->send(); $status = $messenger->status(); } else { $status = mail($destination, $from, $subject, $message) ? "Log emailed to recipient" : error_log($message, $type, $destination) ? "Errors emailed by system" : "Unable to send email report"; } break; default: case self::SYSTEM: $status = error_log($message, $type, $destination) ? "Errors reported to system" : "Unable to record error"; break; } } $this->status($status); }