4 * fixed #157 seeking before beginning of file should fail, reported and fixed by @merijnvdk
5 * structure array in `vfsStream::create()` and `vfsStream::setup()` now can contain instances of `org\bovigo\vfs\content\FileContent` and `org\bovigo\vfs\vfsStreamFile`, patch provivded by Joshua Smith (@jsmitty12)
11 * fixed #134 type safe directory names, reported and fixed by Sebastian Hopfe
17 * fixed #131 recursive mkdir() fails if the last dirname is '0'
23 * fixed #128 duplicate "valid" files/directories and incorrect file names
29 * `vfsStream::url()` didn't urlencode single path parts while `vfsStream::path()` did urldecode them
30 * fixed #120, #122: create directory with trailing slash results in "Uninitialized string offset: 0"
36 * added `vfsStreamWrapper::unregister()`, provided by @malkusch with #114
37 * fixed #115: incorrect handling of `..` in root directory on PHP 5.5, fix provided by @acoulton with #116
43 * implemented #91: `vfsStream::copyFromFileSystem()` should create large file instances
44 * implemented #92: `vfsStream::copyFromFileSystem()` should respect block devices
45 * fixed #107: `touch()` does not respect file permissions
46 * fixed #105: vfs directory structure is not reset after each test
47 * fixed #104: vfsStream can't handle url encoded pathes
53 * implemented #85: Added support for emulating block devices in the virtual filesystem, feature provided by Harris Borawski
54 * fixed #68: Unlink a non-existing file now triggers a PHP warning
60 * implemented #79: possibility to mock large files without large memory footprint, see https://github.com/mikey179/vfsStream/wiki/MockingLargeFiles
61 * implemented #67: added partial support for text-mode translation flag (i.e., no actual translation of line endings takes place) so it no longer throws an exception (provided by Anthon Pang)
62 * fixed issue #74: issue with trailing windows path separators (provided by Sebastian Krüger)
63 * fixed issue #50: difference between real file system and vfs with `RecursiveDirectoryIterator`
64 * fixed issue #80: touch with no arguments for modification and access time behave incorrect
65 * deprecated `org\bovigo\vfs\vfsStreamFile::readUntilEnd()`
66 * deprecated `org\bovigo\vfs\vfsStreamFile::getBytesRead()`
72 * implemented issue #34: provide `url()` method on all `vfsStreamContent` instances
73 * added `org\bovigo\vfs\vfsStreamContent::url()`
74 * added `org\bovigo\vfs\vfsStreamContent::path()`
75 * fixed issue #40: flock implementation doesn't work correctly, patch provided by Kamil Dziedzic
76 * fixed issue #49: call to member function on a non-object when trying to delete a file one above root where a file with same name in root exists
77 * fixed issue #51: `unlink()` must consider permissions of directory where file is inside, not of the file to unlink itself
78 * fixed issue #52: `chmod()`, `chown()` and `chgrp()` must consider permissions of directory where file/directory is inside
79 * fixed issue #53: `chmod()`, `chown()` and `chgrp()` must consider current user and current owner of file/directoy to change
85 * implemented issue #11: add support for `streamWrapper::stream_metadata()` vfsStream now supports `touch()`, `chown()`, `chgrp()` and `chmod()`
86 * implemented issue #33: add support for `stream_truncate()` (provided by https://github.com/nikcorg)
87 * implemented issue #35: size limit (quota) for VFS
93 * raised requirement for PHP version to 5.3.0
94 * migrated codebase to use namespaces
95 * changed distribution from PEAR to Composer
96 * implemented issue #30: support "c" mode for `fopen()`
97 * fixed issue #31: prohibit aquiring locks when already locked / release lock on `fclose()`
98 * fixed issue #32: problems when subfolder has same name as folder
99 * fixed issue #36: `vfsStreamWrapper::stream_open()` should return false while trying to open existing non-writable file, patch provided by Alexander Peresypkin
105 * fixed issue #29: set permissions properly when using `vfsStream::copyFromFileSystem()`, patch provided by predakanga
106 * fixed failing tests under PHP > 5.3.2
112 * fixed issue #28: `mkdir()` overwrites existing directories/files
118 * implemented issue #20: `vfsStream::create()` removes old structure
119 * implemented issue #4: possibility to copy structure from existing file system
120 * fixed issue #23: `unlink()` should not remove any directory
121 * fixed issue #25: `vfsStreamDirectory::hasChild()` gives false positives for nested paths, patch provided by Andrew Coulton
122 * fixed issue #26: opening a file for reading only should not update its modification time, reported and initial patch provided by Ludovic Chabant
128 * fixed issue #16: replace `vfsStreamContent` to `vfsStreamContainer` for autocompletion
129 * fixed issue #17: `vfsStream::create()` has issues with numeric directories, patch provided by mathieuk
135 * added new method `vfsStreamContainer::hasChildren()` and `vfsStreamDirectory::hasChildren()`
136 * implemented issue #14: less verbose way to initialize vfsStream
137 * implemented issue #13: remove deprecated method `vfsStreamContent::setFilemtime()`
138 * implemented issue #6: locking meachanism for files
139 * ensured that `stream_set_blocking()`, `stream_set_timeout()` and `stream_set_write_buffer()` on vfsStream urls have the same behaviour with PHP 5.2 and 5.3
140 * implemented issue #10: method to print directory structure
146 * implemented feature request issue #7: add support for `fileatime()` and `filectime()`
147 * fixed issue #3: add support for `streamWrapper::stream_cast()`
148 * fixed issue #9: resolve path not called everywhere its needed
149 * deprecated `vfsStreamAbstractContent::setFilemtime()`, use `vfsStreamAbstractContent::lastModified()` instead, will be removed with 0.10.0
155 * implemented enhancement #6: use `vfsStream::umask()` to influence initial file mode for files and directories
156 * implemented enhancement #19: support of .. in the url, patch provided by Guislain Duthieuw
157 * fixed issue #18: `getChild()` returns NULL when child's name contains parent name
158 * fixed bug with incomplete error message when accessing non-existing files on root level
164 * added new `vfsStream::setup()` method to simplify vfsStream usage
165 * fixed issue #15: `mkdir()` creates a subfolder in a folder without permissions
171 * added support for `$mode` param when opening files, implements enhancement #7 and fixes issue #13
172 * `vfsStreamWrapper::stream_open()` now evaluates `$options` for `STREAM_REPORT_ERRORS`
178 * added support for `rename()`, patch provided by Benoit Aubuchon
179 * added support for . as directory alias so that `vfs://foo/.` resolves to `vfs://foo`, can be used as workaround for bug #8
185 * added support for file modes, users and groups (with restrictions, see http://code.google.com/p/bovigo/wiki/vfsStreamDocsKnownIssues)
186 * fixed bug #5: `vfsStreamDirectory::addChild()` does not replace child with same name
187 * fixed bug with `is_writable()` because of missing `stat()` fields, patch provided by Sergey Galkin
193 * support trailing slashes on directories in vfsStream urls, patch provided by Gabriel Birke
194 * fixed bug #4: vfsstream can only be read once, reported by Christoph Bloemer
195 * enabled multiple iterations at the same time over the same directory
201 * fixed path/directory separator issues under linux systems
202 * fixed uid/gid issues under linux systems
208 * added support for `rmdir()`
209 * added `vfsStream::newDirectory()`, dropped `vfsStreamDirectory::ceate()`
210 * added new interface `vfsStreamContainer`
211 * added `vfsStreamContent::at()` which allows code like `$file = vfsStream::newFile('file.txt.')->withContent('foo')->at($otherDir);`
212 * added `vfsStreamContent::lastModified()`, made `vfsStreamContent::setFilemtime()` an alias for this
213 * moved from Stubbles development environment to bovigo
214 * refactorings to reduce crap index of various methods
220 * moved `vfsStreamWrapper::PROTOCOL` to `vfsStream::SCHEME`
221 * added new `vfsStream::url()` method to assist in creating correct vfsStream urls
222 * added `vfsStream::path()` method as opposite to `vfsStream::url()`
223 * a call to `vfsStreamWrapper::register()` will now reset the root to null, implemented on request from David Zuelke
224 * added support for `is_readable()`, `is_dir()`, `is_file()`
225 * added `vfsStream::newFile()` to be able to do `$file = vfsStream::newFile("foo.txt")->withContent("bar");`