From 09dfe32eb6b538225686fd6ed0220240010bc574 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Mon, 1 Aug 2011 01:22:36 -0400 Subject: initial commit. Partway through a rewrite. I have some old files I didn't want to entirely delete. --- src/ext/MimeMailParser_attachment.class.php | 136 ++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 src/ext/MimeMailParser_attachment.class.php (limited to 'src/ext/MimeMailParser_attachment.class.php') diff --git a/src/ext/MimeMailParser_attachment.class.php b/src/ext/MimeMailParser_attachment.class.php new file mode 100644 index 0000000..6bd327c --- /dev/null +++ b/src/ext/MimeMailParser_attachment.class.php @@ -0,0 +1,136 @@ +filename = $filename; + $this->content_type = $content_type; + $this->stream = $stream; + $this->content = null; + $this->content_disposition = $content_disposition; + $this->headers = $headers; + } + + /** + * retrieve the attachment filename + * @return String + */ + public function getFilename() { + return $this->filename; + } + + /** + * Retrieve the Attachment Content-Type + * @return String + */ + public function getContentType() { + return $this->content_type; + } + + /** + * Retrieve the Attachment Content-Disposition + * @return String + */ + public function getContentDisposition() { + return $this->content_disposition; + } + + /** + * Retrieve the Attachment Headers + * @return String + */ + public function getHeaders() { + return $this->headers; + } + + /** + * Retrieve the file extension + * @return String + */ + public function getFileExtension() { + if (!$this->extension) { + $ext = substr(strrchr($this->filename, '.'), 1); + if ($ext == 'gz') { + // special case, tar.gz + // todo: other special cases? + $ext = preg_match("/\.tar\.gz$/i", $ext) ? 'tar.gz' : 'gz'; + } + $this->extension = $ext; + } + return $this->extension; + } + + /** + * Read the contents a few bytes at a time until completed + * Once read to completion, it always returns false + * @return String + * @param $bytes Int[optional] + */ + public function read($bytes = 2082) { + return feof($this->stream) ? false : fread($this->stream, $bytes); + } + + /** + * Retrieve the file content in one go + * Once you retreive the content you cannot use MimeMailParser_attachment::read() + * @return String + */ + public function getContent() { + if ($this->content === null) { + fseek($this->stream, 0); + while(($buf = $this->read()) !== false) { + $this->content .= $buf; + } + } + return $this->content; + } + + /** + * Allow the properties + * MimeMailParser_attachment::$name, + * MimeMailParser_attachment::$extension + * to be retrieved as public properties + * @param $name Object + */ + public function __get($name) { + if ($name == 'content') { + return $this->getContent(); + } else if ($name == 'extension') { + return $this->getFileExtension(); + } + return null; + } + +} + +?> \ No newline at end of file -- cgit v1.2.3-2-g168b