. */ /** * Extended file stream wrapper class which auto-creates directories * * @author Michiel Rook * @version $Id: ExtendedFileStream.php 905 2010-10-05 16:28:03Z mrook $ * @package phing.util */ class ExtendedFileStream { private $fp = NULL; static function registerStream() { if (!in_array("efile", stream_get_wrappers())) { stream_wrapper_register("efile", "ExtendedFileStream"); } } static function unregisterStream() { stream_wrapper_unregister("efile"); } private function createDirectories($path) { $f = new PhingFile($path); if (!$f->exists()) { $f->mkdirs(); } } function stream_open($path, $mode, $options, &$opened_path) { /** Small fix for Windows */ if ($path[8] == DIRECTORY_SEPARATOR) { $filepath = substr($path, 7); } else { $filepath = substr($path, 8); } $this->createDirectories(dirname($filepath)); $this->fp = fopen($filepath, $mode); return true; } function stream_close() { fclose($this->fp); $this->fp = NULL; } function stream_read($count) { return fread($this->fp, $count); } function stream_write($data) { return fwrite($this->fp, $data); } function stream_eof() { return feof($this->fp); } function stream_tell() { return ftell($this->fp); } function stream_seek($offset, $whence) { return fseek($this->fp, $offset, $whence); } function stream_flush() { return fflush($this->fp); } function stream_stat() { return fstat($this->fp); } function unlink($path) { return FALSE; } function rename($path_from, $path_to) { return FALSE; } function mkdir($path, $mode, $options) { return FALSE; } function rmdir($path, $options) { return FALSE; } };