Loading core/lib/Drupal/Core/StreamWrapper/LocalStream.php +19 −176 Original line number Diff line number Diff line Loading @@ -144,21 +144,7 @@ protected function getLocalPath($uri = NULL) { } /** * Support for fopen(), file_get_contents(), file_put_contents() etc. * * @param string $uri * A string containing the URI to the file to open. * @param int $mode * The file mode ("r", "wb" etc.). * @param int $options * A bit mask of STREAM_USE_PATH and STREAM_REPORT_ERRORS. * @param string $opened_path * A string containing the path actually opened. * * @return bool * Returns TRUE if file was opened successfully. * * @see http://php.net/manual/streamwrapper.stream-open.php * {@inheritdoc} */ public function stream_open($uri, $mode, $options, &$opened_path) { $this->uri = $uri; Loading @@ -179,20 +165,7 @@ public function stream_open($uri, $mode, $options, &$opened_path) { } /** * Support for flock(). * * @param int $operation * One of the following: * - LOCK_SH to acquire a shared lock (reader). * - LOCK_EX to acquire an exclusive lock (writer). * - LOCK_UN to release a lock (shared or exclusive). * - LOCK_NB if you don't want flock() to block while locking (not * supported on Windows). * * @return bool * Always returns TRUE at the present time. * * @see http://php.net/manual/streamwrapper.stream-lock.php * {@inheritdoc} */ public function stream_lock($operation) { if (in_array($operation, [LOCK_SH, LOCK_EX, LOCK_UN, LOCK_NB])) { Loading @@ -203,42 +176,21 @@ public function stream_lock($operation) { } /** * Support for fread(), file_get_contents() etc. * * @param int $count * Maximum number of bytes to be read. * * @return string|bool * The string that was read, or FALSE in case of an error. * * @see http://php.net/manual/streamwrapper.stream-read.php * {@inheritdoc} */ public function stream_read($count) { return fread($this->handle, $count); } /** * Support for fwrite(), file_put_contents() etc. * * @param string $data * The string to be written. * * @return int * The number of bytes written. * * @see http://php.net/manual/streamwrapper.stream-write.php * {@inheritdoc} */ public function stream_write($data) { return fwrite($this->handle, $data); } /** * Support for feof(). * * @return bool * TRUE if end-of-file has been reached. * * @see http://php.net/manual/streamwrapper.stream-eof.php * {@inheritdoc} */ public function stream_eof() { return feof($this->handle); Loading @@ -254,49 +206,28 @@ public function stream_seek($offset, $whence = SEEK_SET) { } /** * Support for fflush(). * * @return bool * TRUE if data was successfully stored (or there was no data to store). * * @see http://php.net/manual/streamwrapper.stream-flush.php * {@inheritdoc} */ public function stream_flush() { return fflush($this->handle); } /** * Support for ftell(). * * @return bool * The current offset in bytes from the beginning of file. * * @see http://php.net/manual/streamwrapper.stream-tell.php * {@inheritdoc} */ public function stream_tell() { return ftell($this->handle); } /** * Support for fstat(). * * @return bool * An array with file status, or FALSE in case of an error - see fstat() * for a description of this array. * * @see http://php.net/manual/streamwrapper.stream-stat.php * {@inheritdoc} */ public function stream_stat() { return fstat($this->handle); } /** * Support for fclose(). * * @return bool * TRUE if stream was successfully closed. * * @see http://php.net/manual/streamwrapper.stream-close.php * {@inheritdoc} */ public function stream_close() { return fclose($this->handle); Loading Loading @@ -368,15 +299,7 @@ public function stream_truncate($new_size) { } /** * Support for unlink(). * * @param string $uri * A string containing the URI to the resource to delete. * * @return bool * TRUE if resource was successfully deleted. * * @see http://php.net/manual/streamwrapper.unlink.php * {@inheritdoc} */ public function unlink($uri) { $this->uri = $uri; Loading @@ -384,36 +307,14 @@ public function unlink($uri) { } /** * Support for rename(). * * @param string $from_uri * The URI to the file to rename. * @param string $to_uri * The new URI for file. * * @return bool * TRUE if file was successfully renamed. * * @see http://php.net/manual/streamwrapper.rename.php * {@inheritdoc} */ public function rename($from_uri, $to_uri) { return rename($this->getLocalPath($from_uri), $this->getLocalPath($to_uri)); } /** * Gets the name of the directory from a given path. * * This method is usually accessed through * \Drupal\Core\File\FileSystemInterface::dirname(), which wraps around the * PHP dirname() function because it does not support stream wrappers. * * @param string $uri * A URI or path. * * @return string * A string containing the directory name. * * @see \Drupal\Core\File\FileSystemInterface::dirname() * {@inheritdoc} */ public function dirname($uri = NULL) { list($scheme) = explode('://', $uri, 2); Loading @@ -428,19 +329,7 @@ public function dirname($uri = NULL) { } /** * Support for mkdir(). * * @param string $uri * A string containing the URI to the directory to create. * @param int $mode * Permission flags - see mkdir(). * @param int $options * A bit mask of STREAM_REPORT_ERRORS and STREAM_MKDIR_RECURSIVE. * * @return bool * TRUE if directory was successfully created. * * @see http://php.net/manual/streamwrapper.mkdir.php * {@inheritdoc} */ public function mkdir($uri, $mode, $options) { $this->uri = $uri; Loading @@ -464,17 +353,7 @@ public function mkdir($uri, $mode, $options) { } /** * Support for rmdir(). * * @param string $uri * A string containing the URI to the directory to delete. * @param int $options * A bit mask of STREAM_REPORT_ERRORS. * * @return bool * TRUE if directory was successfully removed. * * @see http://php.net/manual/streamwrapper.rmdir.php * {@inheritdoc} */ public function rmdir($uri, $options) { $this->uri = $uri; Loading @@ -489,18 +368,7 @@ public function rmdir($uri, $options) { } /** * Support for stat(). * * @param string $uri * A string containing the URI to get information about. * @param int $flags * A bit mask of STREAM_URL_STAT_LINK and STREAM_URL_STAT_QUIET. * * @return array * An array with file status, or FALSE in case of an error - see fstat() * for a description of this array. * * @see http://php.net/manual/streamwrapper.url-stat.php * {@inheritdoc} */ public function url_stat($uri, $flags) { $this->uri = $uri; Loading @@ -516,17 +384,7 @@ public function url_stat($uri, $flags) { } /** * Support for opendir(). * * @param string $uri * A string containing the URI to the directory to open. * @param int $options * Unknown (parameter is not documented in PHP Manual). * * @return bool * TRUE on success. * * @see http://php.net/manual/streamwrapper.dir-opendir.php * {@inheritdoc} */ public function dir_opendir($uri, $options) { $this->uri = $uri; Loading @@ -536,24 +394,14 @@ public function dir_opendir($uri, $options) { } /** * Support for readdir(). * * @return string * The next filename, or FALSE if there are no more files in the directory. * * @see http://php.net/manual/streamwrapper.dir-readdir.php * {@inheritdoc} */ public function dir_readdir() { return readdir($this->handle); } /** * Support for rewinddir(). * * @return bool * TRUE on success. * * @see http://php.net/manual/streamwrapper.dir-rewinddir.php * {@inheritdoc} */ public function dir_rewinddir() { rewinddir($this->handle); Loading @@ -564,12 +412,7 @@ public function dir_rewinddir() { } /** * Support for closedir(). * * @return bool * TRUE on success. * * @see http://php.net/manual/streamwrapper.dir-closedir.php * {@inheritdoc} */ public function dir_closedir() { closedir($this->handle); Loading core/lib/Drupal/Core/StreamWrapper/PhpStreamWrapperInterface.php +311 −4 Original line number Diff line number Diff line Loading @@ -10,37 +10,144 @@ interface PhpStreamWrapperInterface { /** * Close directory handle. * * This method is called in response to closedir(). Any resources which were * locked, or allocated, during opening and use of the directory stream * should be released. * * @return bool * Returns TRUE on success or FALSE on failure. * * @see closedir() * @see http://php.net/manual/en/streamwrapper.dir-closedir.php */ public function dir_closedir(); /** * Open directory handle. * * This method is called in response to opendir(). * * @param string $path * Specifies the URL that was passed to opendir(). * @param int $options * Whether or not to enforce safe_mode (0x04). * * @return bool * Returns TRUE on success or FALSE on failure. * * @see opendir() * @see http://php.net/manual/en/streamwrapper.dir-opendir.php */ public function dir_opendir($path, $options); /** * @return string * Read entry from directory handle. * * This method is called in response to readdir(). * * @return string|false * Should return string representing the next filename, or FALSE if there * is no next file. Note, the return value will be casted to string. * * @see readdir() * @see http://php.net/manual/en/streamwrapper.dir-readdir.php */ public function dir_readdir(); /** * Rewind directory handle. * * This method is called in response to rewinddir(). Should reset the output * generated by PhpStreamWrapperInterface::dir_readdir. The next call to * PhpStreamWrapperInterface::dir_readdir should return the first entry in the * location returned by PhpStreamWrapperInterface::dir_opendir. * * @return bool * Returns TRUE on success or FALSE on failure. * * @see rewinddir() * @see PhpStreamWrapperInterface::dir_readdir() * @see http://php.net/manual/en/streamwrapper.dir-rewinddir.php */ public function dir_rewinddir(); /** * Create a directory. * * This method is called in response to mkdir() * * Note, in order for the appropriate error message to be returned this method * should not be defined if the wrapper does not support creating directories. * * Note, the streamWrapper::$context property is updated if a valid context is * passed to the caller function. * * @param string $path * Directory which should be created. * @param int $mode * The value passed to mkdir(). * @param int $options * A bitwise mask of values, such as STREAM_MKDIR_RECURSIVE. * * @return bool * Returns TRUE on success or FALSE on failure. * * @see mkdir() * @see PhpStreamWrapperInterface::rmdir() * @see http://php.net/manual/en/streamwrapper.mkdir.php */ public function mkdir($path, $mode, $options); /** * Renames a file or directory. * * This method is called in response to rename(). Should attempt to rename * $path_from to $path_to. * * Note, in order for the appropriate error message to be returned this method * should not be defined if the wrapper does not support renaming files. * * Note, the streamWrapper::$context property is updated if a valid context is * passed to the caller function. * * @param string $path_from * The URL to the current file. * @param string $path_to * The URL which the $path_from should be renamed to. * * @return bool * Returns TRUE on success or FALSE on failure. * * @see rename() * @see http://php.net/manual/en/streamwrapper.rename.php */ public function rename($path_from, $path_to); /** * Removes a directory. * * This method is called in response to rmdir(). * * Note, in order for the appropriate error message to be returned this method * should not be defined if the wrapper does not support removing directories. * * Note, the streamWrapper::$context property is updated if a valid context is * passed to the caller function. * * @param string $path * The directory URL which should be removed. * @param int $options * A bitwise mask of values, such as STREAM_MKDIR_RECURSIVE. * * @return bool * Returns TRUE on success or FALSE on failure. * * @see rmdir() * @see PhpStreamWrapperInterface::mkdir() * @see PhpStreamWrapperInterface::unlink() * @see http://php.net/manual/en/streamwrapper.rmdir.php */ public function rmdir($path, $options); Loading @@ -65,21 +172,77 @@ public function stream_cast($cast_as); /** * Closes stream. * * This method is called in response to fclose(). All resources that were * locked, or allocated, by the wrapper should be released. * * @see fclose() * @see PhpStreamWrapperInterface::dir_closedir() * @see http://php.net/manual/en/streamwrapper.stream-close.php */ public function stream_close(); /** * Tests for end-of-file on a file pointer. * * This method is called in response to feof(). * * Warning, when reading the whole file (for example, with * file_get_contents()), PHP will call * PhpStreamWrapperInterface::stream_read() followed by * PhpStreamWrapperInterface::stream_eof() in a loop but as long as * PhpStreamWrapperInterface::stream_read() returns a non-empty string, the * return value of PhpStreamWrapperInterface::stream_eof() is ignored. * * @return bool * Should return TRUE if the read/write position is at the end of the * stream and if no more data is available to be read, or FALSE otherwise. * * @see feof() * @see http://php.net/manual/en/streamwrapper.stream-eof.php */ public function stream_eof(); /** * Flushes the output. * * This method is called in response to fflush() and when the stream is being * closed while any un-flushed data has been written to it before. If you have * cached data in your stream but not yet stored it into the underlying * storage, you should do so now. * * Note, if not implemented, FALSE is assumed as the return value. * * @return bool * Should return TRUE if the cached data was successfully stored (or if * there was no data to store), or FALSE if the data could not be stored. * * @see fflush() * @see http://php.net/manual/en/streamwrapper.stream-flush.php */ public function stream_flush(); /** * Advisory file locking. * * This method is called in response to flock(), when file_put_contents() * (when flags contains LOCK_EX), stream_set_blocking() and when closing the * stream (LOCK_UN). * * @param int $operation * One of: * - LOCK_SH: To acquire a shared lock (reader). * - LOCK_EX: To acquire an exclusive lock (writer). * - LOCK_UN: To release a lock (shared or exclusive). * - LOCK_NB: If you don't want flock() to block while locking. This * operation is not supported on Windows. * * @return bool * Returns TRUE on success or FALSE on failure. * * @see flock() * @see stream_set_blocking() * @see http://php.net/manual/en/streamwrapper.stream-lock.php */ public function stream_lock($operation); Loading Loading @@ -116,12 +279,73 @@ public function stream_lock($operation); public function stream_metadata($path, $option, $value); /** * Opens file or URL. * * This method is called immediately after the wrapper is initialized (e.g. * by fopen() and file_get_contents()). * * Note the streamWrapper::$context property is updated if a valid context * is passed to the caller function. * * @param string $path * Specifies the URL that was passed to the original function. Note that * the URL can be broken apart with parse_url(). Note that only URLs * delimited by "://" are supported. ":" and ":/" while technically valid * URLs, are not. * @param string $mode * The mode used to open the file, as detailed for fopen(). Note, remember * to check if the mode is valid for the path requested. * @param int $options * Holds additional flags set by the streams API. It can hold one or more * of the following values ORed together: * - STREAM_USE_PATH: If path is relative, search for the resource using * the include_path. * - STREAM_REPORT_ERRORS: If this flag is set, you are responsible for * raising errors using trigger_error() during opening of the stream. If * this flag is not set, you should not raise any errors. * @param string $opened_path * If the path is opened successfully, and STREAM_USE_PATH is set in * options, opened_path should be set to the full path of the file/resource * that was actually opened. * * @return bool * Returns TRUE on success or FALSE on failure. * * @see fopen() * @see parse_url() * @see http://php.net/manual/en/streamwrapper.stream-open.php */ public function stream_open($path, $mode, $options, &$opened_path); /** * @return string * Read from stream. * * This method is called in response to fread() and fgets(). * * Note, remember to update the read/write position of the stream (by the * number of bytes that were successfully read). * * Note, PhpStreamWrapperInterface::stream_eof() is called directly after * calling PhpStreamWrapperInterface::stream_read() to check if EOF has been * reached. If not implemented, EOF is assumed. * * Warning, when reading the whole file (e.g., with file_get_contents()), PHP * will call PhpStreamWrapperInterface::stream_read() followed by * PhpStreamWrapperInterface::stream_eof() in a loop but as long as * PhpStreamWrapperInterface::stream_read() returns a non-empty string, the * return value of PhpStreamWrapperInterface::stream_eof() is ignored. * * @param int $count * How many bytes of data from the current position should be returned. * * @return string|false * If there are less than $count bytes available, return as many as are * available. If no more data is available, return either FALSE or an empty * string. * * @see fread() * @see fgets() * @see http://php.net/manual/en/streamwrapper.stream-read.php */ public function stream_read($count); Loading Loading @@ -183,12 +407,30 @@ public function stream_seek($offset, $whence = SEEK_SET); public function stream_set_option($option, $arg1, $arg2); /** * @return array * Retrieve information about a file resource. * * This method is called in response to fstat(). * * @return array|false * See stat(). * * @see stat() * @see PhpStreamWrapperInterface::url_stat() * @see http://php.net/manual/en/streamwrapper.stream-stat.php */ public function stream_stat(); /** * Retrieve the current position of a stream. * * This method is called in response to fseek() to determine the current * position. * * @return int * Should return the current position of the stream. * * @see PhpStreamWrapperInterface::stream_tell() * @see http://php.net/manual/en/streamwrapper.stream-tell.php */ public function stream_tell(); Loading @@ -202,21 +444,86 @@ public function stream_tell(); * * @return bool * TRUE on success, FALSE otherwise. * * @see ftruncate() * @see http://php.net/manual/en/streamwrapper.stream-truncate.php */ public function stream_truncate($new_size); /** * Write to stream. * * This method is called in response to fwrite(). Remember to update the * current position of the stream by number of bytes that were successfully * written. * * @param string $data * Should be stored into the underlying stream. If there is not enough room * in the underlying stream, store as much as possible. * * @return int * Should return the number of bytes that were successfully stored, or 0 if * none could be stored. * * @see fwrite() * @see http://php.net/manual/en/streamwrapper.stream-write.php */ public function stream_write($data); /** * Delete a file. * * This method is called in response to unlink(). * * Note, in order for the appropriate error message to be returned this method * should not be defined if the wrapper does not support removing files. * * Note, the streamWrapper::$context property is updated if a valid context is * passed to the caller function. * * @param string $path * The file URL which should be deleted. * * @return bool * Returns TRUE on success or FALSE on failure. * * @see unlink() * @see PhpStreamWrapperInterface::rmdir() * @see http://php.net/manual/en/streamwrapper.unlink.php */ public function unlink($path); /** * @return array * Retrieve information about a file. * * This method is called in response to all stat() related functions. * * Note, the streamWrapper::$context property is updated if a valid context is * passed to the caller function. * * @param string $path * The file path or URL to stat. Note that in the case of a URL, it must be * a "://" delimited URL. Other URL forms are not supported. * @param int $flags * Holds additional flags set by the streams API. It can hold one or more * of the following values ORed together: * - STREAM_URL_STAT_LINK: For resources with the ability to link to other * resource (such as an HTTP Location: forward, or a filesystem symlink). * This flag specified that only information about the link itself should * be returned, not the resource pointed to by the link. This flag is set * in response to calls to lstat(), is_link(), or filetype(). * - STREAM_URL_STAT_QUIET: If this flag is set, your wrapper should not * raise any errors. If this flag is not set, you are responsible for * reporting errors using the trigger_error() function during stating of * the path. * * @return array|false * Should return the same as stat() does. Unknown or unavailable values * should be set to a rational value (usually 0). * * @see stat() * @see PhpStreamWrapperInterface::stream_stat() * @see http://php.net/manual/en/streamwrapper.url-stat.php */ public function url_stat($path, $flags); Loading Loading
core/lib/Drupal/Core/StreamWrapper/LocalStream.php +19 −176 Original line number Diff line number Diff line Loading @@ -144,21 +144,7 @@ protected function getLocalPath($uri = NULL) { } /** * Support for fopen(), file_get_contents(), file_put_contents() etc. * * @param string $uri * A string containing the URI to the file to open. * @param int $mode * The file mode ("r", "wb" etc.). * @param int $options * A bit mask of STREAM_USE_PATH and STREAM_REPORT_ERRORS. * @param string $opened_path * A string containing the path actually opened. * * @return bool * Returns TRUE if file was opened successfully. * * @see http://php.net/manual/streamwrapper.stream-open.php * {@inheritdoc} */ public function stream_open($uri, $mode, $options, &$opened_path) { $this->uri = $uri; Loading @@ -179,20 +165,7 @@ public function stream_open($uri, $mode, $options, &$opened_path) { } /** * Support for flock(). * * @param int $operation * One of the following: * - LOCK_SH to acquire a shared lock (reader). * - LOCK_EX to acquire an exclusive lock (writer). * - LOCK_UN to release a lock (shared or exclusive). * - LOCK_NB if you don't want flock() to block while locking (not * supported on Windows). * * @return bool * Always returns TRUE at the present time. * * @see http://php.net/manual/streamwrapper.stream-lock.php * {@inheritdoc} */ public function stream_lock($operation) { if (in_array($operation, [LOCK_SH, LOCK_EX, LOCK_UN, LOCK_NB])) { Loading @@ -203,42 +176,21 @@ public function stream_lock($operation) { } /** * Support for fread(), file_get_contents() etc. * * @param int $count * Maximum number of bytes to be read. * * @return string|bool * The string that was read, or FALSE in case of an error. * * @see http://php.net/manual/streamwrapper.stream-read.php * {@inheritdoc} */ public function stream_read($count) { return fread($this->handle, $count); } /** * Support for fwrite(), file_put_contents() etc. * * @param string $data * The string to be written. * * @return int * The number of bytes written. * * @see http://php.net/manual/streamwrapper.stream-write.php * {@inheritdoc} */ public function stream_write($data) { return fwrite($this->handle, $data); } /** * Support for feof(). * * @return bool * TRUE if end-of-file has been reached. * * @see http://php.net/manual/streamwrapper.stream-eof.php * {@inheritdoc} */ public function stream_eof() { return feof($this->handle); Loading @@ -254,49 +206,28 @@ public function stream_seek($offset, $whence = SEEK_SET) { } /** * Support for fflush(). * * @return bool * TRUE if data was successfully stored (or there was no data to store). * * @see http://php.net/manual/streamwrapper.stream-flush.php * {@inheritdoc} */ public function stream_flush() { return fflush($this->handle); } /** * Support for ftell(). * * @return bool * The current offset in bytes from the beginning of file. * * @see http://php.net/manual/streamwrapper.stream-tell.php * {@inheritdoc} */ public function stream_tell() { return ftell($this->handle); } /** * Support for fstat(). * * @return bool * An array with file status, or FALSE in case of an error - see fstat() * for a description of this array. * * @see http://php.net/manual/streamwrapper.stream-stat.php * {@inheritdoc} */ public function stream_stat() { return fstat($this->handle); } /** * Support for fclose(). * * @return bool * TRUE if stream was successfully closed. * * @see http://php.net/manual/streamwrapper.stream-close.php * {@inheritdoc} */ public function stream_close() { return fclose($this->handle); Loading Loading @@ -368,15 +299,7 @@ public function stream_truncate($new_size) { } /** * Support for unlink(). * * @param string $uri * A string containing the URI to the resource to delete. * * @return bool * TRUE if resource was successfully deleted. * * @see http://php.net/manual/streamwrapper.unlink.php * {@inheritdoc} */ public function unlink($uri) { $this->uri = $uri; Loading @@ -384,36 +307,14 @@ public function unlink($uri) { } /** * Support for rename(). * * @param string $from_uri * The URI to the file to rename. * @param string $to_uri * The new URI for file. * * @return bool * TRUE if file was successfully renamed. * * @see http://php.net/manual/streamwrapper.rename.php * {@inheritdoc} */ public function rename($from_uri, $to_uri) { return rename($this->getLocalPath($from_uri), $this->getLocalPath($to_uri)); } /** * Gets the name of the directory from a given path. * * This method is usually accessed through * \Drupal\Core\File\FileSystemInterface::dirname(), which wraps around the * PHP dirname() function because it does not support stream wrappers. * * @param string $uri * A URI or path. * * @return string * A string containing the directory name. * * @see \Drupal\Core\File\FileSystemInterface::dirname() * {@inheritdoc} */ public function dirname($uri = NULL) { list($scheme) = explode('://', $uri, 2); Loading @@ -428,19 +329,7 @@ public function dirname($uri = NULL) { } /** * Support for mkdir(). * * @param string $uri * A string containing the URI to the directory to create. * @param int $mode * Permission flags - see mkdir(). * @param int $options * A bit mask of STREAM_REPORT_ERRORS and STREAM_MKDIR_RECURSIVE. * * @return bool * TRUE if directory was successfully created. * * @see http://php.net/manual/streamwrapper.mkdir.php * {@inheritdoc} */ public function mkdir($uri, $mode, $options) { $this->uri = $uri; Loading @@ -464,17 +353,7 @@ public function mkdir($uri, $mode, $options) { } /** * Support for rmdir(). * * @param string $uri * A string containing the URI to the directory to delete. * @param int $options * A bit mask of STREAM_REPORT_ERRORS. * * @return bool * TRUE if directory was successfully removed. * * @see http://php.net/manual/streamwrapper.rmdir.php * {@inheritdoc} */ public function rmdir($uri, $options) { $this->uri = $uri; Loading @@ -489,18 +368,7 @@ public function rmdir($uri, $options) { } /** * Support for stat(). * * @param string $uri * A string containing the URI to get information about. * @param int $flags * A bit mask of STREAM_URL_STAT_LINK and STREAM_URL_STAT_QUIET. * * @return array * An array with file status, or FALSE in case of an error - see fstat() * for a description of this array. * * @see http://php.net/manual/streamwrapper.url-stat.php * {@inheritdoc} */ public function url_stat($uri, $flags) { $this->uri = $uri; Loading @@ -516,17 +384,7 @@ public function url_stat($uri, $flags) { } /** * Support for opendir(). * * @param string $uri * A string containing the URI to the directory to open. * @param int $options * Unknown (parameter is not documented in PHP Manual). * * @return bool * TRUE on success. * * @see http://php.net/manual/streamwrapper.dir-opendir.php * {@inheritdoc} */ public function dir_opendir($uri, $options) { $this->uri = $uri; Loading @@ -536,24 +394,14 @@ public function dir_opendir($uri, $options) { } /** * Support for readdir(). * * @return string * The next filename, or FALSE if there are no more files in the directory. * * @see http://php.net/manual/streamwrapper.dir-readdir.php * {@inheritdoc} */ public function dir_readdir() { return readdir($this->handle); } /** * Support for rewinddir(). * * @return bool * TRUE on success. * * @see http://php.net/manual/streamwrapper.dir-rewinddir.php * {@inheritdoc} */ public function dir_rewinddir() { rewinddir($this->handle); Loading @@ -564,12 +412,7 @@ public function dir_rewinddir() { } /** * Support for closedir(). * * @return bool * TRUE on success. * * @see http://php.net/manual/streamwrapper.dir-closedir.php * {@inheritdoc} */ public function dir_closedir() { closedir($this->handle); Loading
core/lib/Drupal/Core/StreamWrapper/PhpStreamWrapperInterface.php +311 −4 Original line number Diff line number Diff line Loading @@ -10,37 +10,144 @@ interface PhpStreamWrapperInterface { /** * Close directory handle. * * This method is called in response to closedir(). Any resources which were * locked, or allocated, during opening and use of the directory stream * should be released. * * @return bool * Returns TRUE on success or FALSE on failure. * * @see closedir() * @see http://php.net/manual/en/streamwrapper.dir-closedir.php */ public function dir_closedir(); /** * Open directory handle. * * This method is called in response to opendir(). * * @param string $path * Specifies the URL that was passed to opendir(). * @param int $options * Whether or not to enforce safe_mode (0x04). * * @return bool * Returns TRUE on success or FALSE on failure. * * @see opendir() * @see http://php.net/manual/en/streamwrapper.dir-opendir.php */ public function dir_opendir($path, $options); /** * @return string * Read entry from directory handle. * * This method is called in response to readdir(). * * @return string|false * Should return string representing the next filename, or FALSE if there * is no next file. Note, the return value will be casted to string. * * @see readdir() * @see http://php.net/manual/en/streamwrapper.dir-readdir.php */ public function dir_readdir(); /** * Rewind directory handle. * * This method is called in response to rewinddir(). Should reset the output * generated by PhpStreamWrapperInterface::dir_readdir. The next call to * PhpStreamWrapperInterface::dir_readdir should return the first entry in the * location returned by PhpStreamWrapperInterface::dir_opendir. * * @return bool * Returns TRUE on success or FALSE on failure. * * @see rewinddir() * @see PhpStreamWrapperInterface::dir_readdir() * @see http://php.net/manual/en/streamwrapper.dir-rewinddir.php */ public function dir_rewinddir(); /** * Create a directory. * * This method is called in response to mkdir() * * Note, in order for the appropriate error message to be returned this method * should not be defined if the wrapper does not support creating directories. * * Note, the streamWrapper::$context property is updated if a valid context is * passed to the caller function. * * @param string $path * Directory which should be created. * @param int $mode * The value passed to mkdir(). * @param int $options * A bitwise mask of values, such as STREAM_MKDIR_RECURSIVE. * * @return bool * Returns TRUE on success or FALSE on failure. * * @see mkdir() * @see PhpStreamWrapperInterface::rmdir() * @see http://php.net/manual/en/streamwrapper.mkdir.php */ public function mkdir($path, $mode, $options); /** * Renames a file or directory. * * This method is called in response to rename(). Should attempt to rename * $path_from to $path_to. * * Note, in order for the appropriate error message to be returned this method * should not be defined if the wrapper does not support renaming files. * * Note, the streamWrapper::$context property is updated if a valid context is * passed to the caller function. * * @param string $path_from * The URL to the current file. * @param string $path_to * The URL which the $path_from should be renamed to. * * @return bool * Returns TRUE on success or FALSE on failure. * * @see rename() * @see http://php.net/manual/en/streamwrapper.rename.php */ public function rename($path_from, $path_to); /** * Removes a directory. * * This method is called in response to rmdir(). * * Note, in order for the appropriate error message to be returned this method * should not be defined if the wrapper does not support removing directories. * * Note, the streamWrapper::$context property is updated if a valid context is * passed to the caller function. * * @param string $path * The directory URL which should be removed. * @param int $options * A bitwise mask of values, such as STREAM_MKDIR_RECURSIVE. * * @return bool * Returns TRUE on success or FALSE on failure. * * @see rmdir() * @see PhpStreamWrapperInterface::mkdir() * @see PhpStreamWrapperInterface::unlink() * @see http://php.net/manual/en/streamwrapper.rmdir.php */ public function rmdir($path, $options); Loading @@ -65,21 +172,77 @@ public function stream_cast($cast_as); /** * Closes stream. * * This method is called in response to fclose(). All resources that were * locked, or allocated, by the wrapper should be released. * * @see fclose() * @see PhpStreamWrapperInterface::dir_closedir() * @see http://php.net/manual/en/streamwrapper.stream-close.php */ public function stream_close(); /** * Tests for end-of-file on a file pointer. * * This method is called in response to feof(). * * Warning, when reading the whole file (for example, with * file_get_contents()), PHP will call * PhpStreamWrapperInterface::stream_read() followed by * PhpStreamWrapperInterface::stream_eof() in a loop but as long as * PhpStreamWrapperInterface::stream_read() returns a non-empty string, the * return value of PhpStreamWrapperInterface::stream_eof() is ignored. * * @return bool * Should return TRUE if the read/write position is at the end of the * stream and if no more data is available to be read, or FALSE otherwise. * * @see feof() * @see http://php.net/manual/en/streamwrapper.stream-eof.php */ public function stream_eof(); /** * Flushes the output. * * This method is called in response to fflush() and when the stream is being * closed while any un-flushed data has been written to it before. If you have * cached data in your stream but not yet stored it into the underlying * storage, you should do so now. * * Note, if not implemented, FALSE is assumed as the return value. * * @return bool * Should return TRUE if the cached data was successfully stored (or if * there was no data to store), or FALSE if the data could not be stored. * * @see fflush() * @see http://php.net/manual/en/streamwrapper.stream-flush.php */ public function stream_flush(); /** * Advisory file locking. * * This method is called in response to flock(), when file_put_contents() * (when flags contains LOCK_EX), stream_set_blocking() and when closing the * stream (LOCK_UN). * * @param int $operation * One of: * - LOCK_SH: To acquire a shared lock (reader). * - LOCK_EX: To acquire an exclusive lock (writer). * - LOCK_UN: To release a lock (shared or exclusive). * - LOCK_NB: If you don't want flock() to block while locking. This * operation is not supported on Windows. * * @return bool * Returns TRUE on success or FALSE on failure. * * @see flock() * @see stream_set_blocking() * @see http://php.net/manual/en/streamwrapper.stream-lock.php */ public function stream_lock($operation); Loading Loading @@ -116,12 +279,73 @@ public function stream_lock($operation); public function stream_metadata($path, $option, $value); /** * Opens file or URL. * * This method is called immediately after the wrapper is initialized (e.g. * by fopen() and file_get_contents()). * * Note the streamWrapper::$context property is updated if a valid context * is passed to the caller function. * * @param string $path * Specifies the URL that was passed to the original function. Note that * the URL can be broken apart with parse_url(). Note that only URLs * delimited by "://" are supported. ":" and ":/" while technically valid * URLs, are not. * @param string $mode * The mode used to open the file, as detailed for fopen(). Note, remember * to check if the mode is valid for the path requested. * @param int $options * Holds additional flags set by the streams API. It can hold one or more * of the following values ORed together: * - STREAM_USE_PATH: If path is relative, search for the resource using * the include_path. * - STREAM_REPORT_ERRORS: If this flag is set, you are responsible for * raising errors using trigger_error() during opening of the stream. If * this flag is not set, you should not raise any errors. * @param string $opened_path * If the path is opened successfully, and STREAM_USE_PATH is set in * options, opened_path should be set to the full path of the file/resource * that was actually opened. * * @return bool * Returns TRUE on success or FALSE on failure. * * @see fopen() * @see parse_url() * @see http://php.net/manual/en/streamwrapper.stream-open.php */ public function stream_open($path, $mode, $options, &$opened_path); /** * @return string * Read from stream. * * This method is called in response to fread() and fgets(). * * Note, remember to update the read/write position of the stream (by the * number of bytes that were successfully read). * * Note, PhpStreamWrapperInterface::stream_eof() is called directly after * calling PhpStreamWrapperInterface::stream_read() to check if EOF has been * reached. If not implemented, EOF is assumed. * * Warning, when reading the whole file (e.g., with file_get_contents()), PHP * will call PhpStreamWrapperInterface::stream_read() followed by * PhpStreamWrapperInterface::stream_eof() in a loop but as long as * PhpStreamWrapperInterface::stream_read() returns a non-empty string, the * return value of PhpStreamWrapperInterface::stream_eof() is ignored. * * @param int $count * How many bytes of data from the current position should be returned. * * @return string|false * If there are less than $count bytes available, return as many as are * available. If no more data is available, return either FALSE or an empty * string. * * @see fread() * @see fgets() * @see http://php.net/manual/en/streamwrapper.stream-read.php */ public function stream_read($count); Loading Loading @@ -183,12 +407,30 @@ public function stream_seek($offset, $whence = SEEK_SET); public function stream_set_option($option, $arg1, $arg2); /** * @return array * Retrieve information about a file resource. * * This method is called in response to fstat(). * * @return array|false * See stat(). * * @see stat() * @see PhpStreamWrapperInterface::url_stat() * @see http://php.net/manual/en/streamwrapper.stream-stat.php */ public function stream_stat(); /** * Retrieve the current position of a stream. * * This method is called in response to fseek() to determine the current * position. * * @return int * Should return the current position of the stream. * * @see PhpStreamWrapperInterface::stream_tell() * @see http://php.net/manual/en/streamwrapper.stream-tell.php */ public function stream_tell(); Loading @@ -202,21 +444,86 @@ public function stream_tell(); * * @return bool * TRUE on success, FALSE otherwise. * * @see ftruncate() * @see http://php.net/manual/en/streamwrapper.stream-truncate.php */ public function stream_truncate($new_size); /** * Write to stream. * * This method is called in response to fwrite(). Remember to update the * current position of the stream by number of bytes that were successfully * written. * * @param string $data * Should be stored into the underlying stream. If there is not enough room * in the underlying stream, store as much as possible. * * @return int * Should return the number of bytes that were successfully stored, or 0 if * none could be stored. * * @see fwrite() * @see http://php.net/manual/en/streamwrapper.stream-write.php */ public function stream_write($data); /** * Delete a file. * * This method is called in response to unlink(). * * Note, in order for the appropriate error message to be returned this method * should not be defined if the wrapper does not support removing files. * * Note, the streamWrapper::$context property is updated if a valid context is * passed to the caller function. * * @param string $path * The file URL which should be deleted. * * @return bool * Returns TRUE on success or FALSE on failure. * * @see unlink() * @see PhpStreamWrapperInterface::rmdir() * @see http://php.net/manual/en/streamwrapper.unlink.php */ public function unlink($path); /** * @return array * Retrieve information about a file. * * This method is called in response to all stat() related functions. * * Note, the streamWrapper::$context property is updated if a valid context is * passed to the caller function. * * @param string $path * The file path or URL to stat. Note that in the case of a URL, it must be * a "://" delimited URL. Other URL forms are not supported. * @param int $flags * Holds additional flags set by the streams API. It can hold one or more * of the following values ORed together: * - STREAM_URL_STAT_LINK: For resources with the ability to link to other * resource (such as an HTTP Location: forward, or a filesystem symlink). * This flag specified that only information about the link itself should * be returned, not the resource pointed to by the link. This flag is set * in response to calls to lstat(), is_link(), or filetype(). * - STREAM_URL_STAT_QUIET: If this flag is set, your wrapper should not * raise any errors. If this flag is not set, you are responsible for * reporting errors using the trigger_error() function during stating of * the path. * * @return array|false * Should return the same as stat() does. Unknown or unavailable values * should be set to a rational value (usually 0). * * @see stat() * @see PhpStreamWrapperInterface::stream_stat() * @see http://php.net/manual/en/streamwrapper.url-stat.php */ public function url_stat($path, $flags); Loading