class LocalReadOnlyStream
Same name in other branches
- 9 core/lib/Drupal/Core/StreamWrapper/LocalReadOnlyStream.php \Drupal\Core\StreamWrapper\LocalReadOnlyStream
- 8.9.x core/lib/Drupal/Core/StreamWrapper/LocalReadOnlyStream.php \Drupal\Core\StreamWrapper\LocalReadOnlyStream
- 11.x core/lib/Drupal/Core/StreamWrapper/LocalReadOnlyStream.php \Drupal\Core\StreamWrapper\LocalReadOnlyStream
Defines a read-only Drupal stream wrapper base class for local files.
This class extends the complete stream wrapper implementation in LocalStream. URIs such as "public://example.txt" are expanded to a normal filesystem path such as "sites/default/files/example.txt" and then PHP filesystem functions are invoked.
Drupal\Core\StreamWrapper\LocalReadOnlyStream implementations need to implement at least the getDirectoryPath() and getExternalUrl() methods.
Hierarchy
- class \Drupal\Core\StreamWrapper\LocalStream implements \Drupal\Core\StreamWrapper\StreamWrapperInterface
- class \Drupal\Core\StreamWrapper\LocalReadOnlyStream extends \Drupal\Core\StreamWrapper\LocalStream
Expanded class hierarchy of LocalReadOnlyStream
1 file declares its use of LocalReadOnlyStream
- DummyReadOnlyStreamWrapper.php in core/
modules/ file/ tests/ file_test/ src/ StreamWrapper/ DummyReadOnlyStreamWrapper.php
File
-
core/
lib/ Drupal/ Core/ StreamWrapper/ LocalReadOnlyStream.php, line 16
Namespace
Drupal\Core\StreamWrapperView source
abstract class LocalReadOnlyStream extends LocalStream {
/**
* {@inheritdoc}
*/
public static function getType() {
return StreamWrapperInterface::READ_VISIBLE | StreamWrapperInterface::LOCAL;
}
/**
* {@inheritdoc}
*/
public function stream_open($uri, $mode, $options, &$opened_path) {
if (!in_array($mode, [
'r',
'rb',
'rt',
])) {
if ($options & STREAM_REPORT_ERRORS) {
trigger_error('stream_open() write modes not supported for read-only stream wrappers', E_USER_WARNING);
}
return FALSE;
}
return parent::stream_open($uri, $mode, $options, $opened_path);
}
/**
* Support for flock().
*
* An exclusive lock attempt will be rejected, as this is a read-only stream
* wrapper.
*
* @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 added as a bitmask if you don't want flock() to block while
* locking (not supported on Windows).
*
* @return bool
* Return FALSE for an exclusive lock (writer), as this is a read-only
* stream wrapper. Return the result of flock() for other valid operations.
* Defaults to TRUE if an invalid operation is passed.
*
* @see http://php.net/manual/streamwrapper.stream-lock.php
*/
public function stream_lock($operation) {
// Disallow exclusive lock or non-blocking lock requests
if (in_array($operation, [
LOCK_EX,
LOCK_EX | LOCK_NB,
])) {
trigger_error('stream_lock() exclusive lock operations not supported for read-only stream wrappers', E_USER_WARNING);
return FALSE;
}
if (in_array($operation, [
LOCK_SH,
LOCK_UN,
LOCK_SH | LOCK_NB,
])) {
return flock($this->handle, $operation);
}
return TRUE;
}
/**
* Support for fwrite(), file_put_contents() etc.
*
* Data will not be written as this is a read-only stream wrapper.
*
* @param string $data
* The string to be written.
*
* @return bool
* FALSE as data will not be written.
*
* @see http://php.net/manual/streamwrapper.stream-write.php
*/
public function stream_write($data) {
trigger_error('stream_write() not supported for read-only stream wrappers', E_USER_WARNING);
return FALSE;
}
/**
* Support for fflush().
*
* Nothing will be output to the file, as this is a read-only stream wrapper.
* However as stream_flush is called during stream_close we should not trigger
* an error.
*
* @return bool
* FALSE, as no data will be stored.
*
* @see http://php.net/manual/streamwrapper.stream-flush.php
*/
public function stream_flush() {
return FALSE;
}
/**
* {@inheritdoc}
*
* Does not change meta data as this is a read-only stream wrapper.
*/
public function stream_metadata($uri, $option, $value) {
trigger_error('stream_metadata() not supported for read-only stream wrappers', E_USER_WARNING);
return FALSE;
}
/**
* {@inheritdoc}
*/
public function stream_truncate($new_size) {
trigger_error('stream_truncate() not supported for read-only stream wrappers', E_USER_WARNING);
return FALSE;
}
/**
* Support for unlink().
*
* The file will not be deleted from the stream as this is a read-only stream
* wrapper.
*
* @param string $uri
* A string containing the uri to the resource to delete.
*
* @return bool
* TRUE so that file_delete() will remove db reference to file. File is not
* actually deleted.
*
* @see http://php.net/manual/streamwrapper.unlink.php
*/
public function unlink($uri) {
trigger_error('unlink() not supported for read-only stream wrappers', E_USER_WARNING);
return TRUE;
}
/**
* Support for rename().
*
* The file will not be renamed as this is a read-only stream wrapper.
*
* @param string $from_uri
* The uri to the file to rename.
* @param string $to_uri
* The new uri for file.
*
* @return bool
* FALSE as file will never be renamed.
*
* @see http://php.net/manual/streamwrapper.rename.php
*/
public function rename($from_uri, $to_uri) {
trigger_error('rename() not supported for read-only stream wrappers', E_USER_WARNING);
return FALSE;
}
/**
* Support for mkdir().
*
* Directory will never be created as this is a read-only stream wrapper.
*
* @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
* FALSE as directory will never be created.
*
* @see http://php.net/manual/streamwrapper.mkdir.php
*/
public function mkdir($uri, $mode, $options) {
trigger_error('mkdir() not supported for read-only stream wrappers', E_USER_WARNING);
return FALSE;
}
/**
* Support for rmdir().
*
* Directory will never be deleted as this is a read-only stream wrapper.
*
* @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
* FALSE as directory will never be deleted.
*
* @see http://php.net/manual/streamwrapper.rmdir.php
*/
public function rmdir($uri, $options) {
trigger_error('rmdir() not supported for read-only stream wrappers', E_USER_WARNING);
return FALSE;
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title | Overrides |
---|---|---|---|---|---|
LocalReadOnlyStream::getType | public static | function | Overrides LocalStream::getType | ||
LocalReadOnlyStream::mkdir | public | function | Support for mkdir(). | Overrides LocalStream::mkdir | |
LocalReadOnlyStream::rename | public | function | Support for rename(). | Overrides LocalStream::rename | |
LocalReadOnlyStream::rmdir | public | function | Support for rmdir(). | Overrides LocalStream::rmdir | |
LocalReadOnlyStream::stream_flush | public | function | Support for fflush(). | Overrides LocalStream::stream_flush | |
LocalReadOnlyStream::stream_lock | public | function | Support for flock(). | Overrides LocalStream::stream_lock | |
LocalReadOnlyStream::stream_metadata | public | function | Does not change meta data as this is a read-only stream wrapper. | Overrides LocalStream::stream_metadata | |
LocalReadOnlyStream::stream_open | public | function | Overrides LocalStream::stream_open | ||
LocalReadOnlyStream::stream_truncate | public | function | Overrides LocalStream::stream_truncate | ||
LocalReadOnlyStream::stream_write | public | function | Support for fwrite(), file_put_contents() etc. | Overrides LocalStream::stream_write | |
LocalReadOnlyStream::unlink | public | function | Support for unlink(). | Overrides LocalStream::unlink | |
LocalStream::$context | public | property | Stream context resource. | ||
LocalStream::$handle | public | property | A generic resource handle. | ||
LocalStream::$uri | protected | property | Instance URI (stream). | ||
LocalStream::dirname | public | function | Overrides StreamWrapperInterface::dirname | ||
LocalStream::dir_closedir | public | function | Overrides PhpStreamWrapperInterface::dir_closedir | ||
LocalStream::dir_opendir | public | function | Overrides PhpStreamWrapperInterface::dir_opendir | ||
LocalStream::dir_readdir | public | function | Overrides PhpStreamWrapperInterface::dir_readdir | ||
LocalStream::dir_rewinddir | public | function | Overrides PhpStreamWrapperInterface::dir_rewinddir | ||
LocalStream::getDirectoryPath | abstract public | function | Gets the path that the wrapper is responsible for. | 6 | |
LocalStream::getFileSystem | private | function | Returns file system service. | ||
LocalStream::getLocalPath | protected | function | Returns the canonical absolute path of the URI, if possible. | 1 | |
LocalStream::getTarget | protected | function | Returns the local writable target of the resource within the stream. | ||
LocalStream::getUri | public | function | Overrides StreamWrapperInterface::getUri | ||
LocalStream::realpath | public | function | Overrides StreamWrapperInterface::realpath | 1 | |
LocalStream::setUri | public | function | Overrides StreamWrapperInterface::setUri | ||
LocalStream::stream_cast | public | function | Overrides PhpStreamWrapperInterface::stream_cast | ||
LocalStream::stream_close | public | function | Overrides PhpStreamWrapperInterface::stream_close | ||
LocalStream::stream_eof | public | function | Overrides PhpStreamWrapperInterface::stream_eof | ||
LocalStream::stream_read | public | function | Overrides PhpStreamWrapperInterface::stream_read | ||
LocalStream::stream_seek | public | function | Overrides PhpStreamWrapperInterface::stream_seek | ||
LocalStream::stream_set_option | public | function | Since Windows systems do not allow it and it is not needed for most use cases anyway, this method is not supported on local files and will trigger an error and return false. If needed, custom subclasses can provide OS-specific implementations for… |
Overrides PhpStreamWrapperInterface::stream_set_option | |
LocalStream::stream_stat | public | function | Overrides PhpStreamWrapperInterface::stream_stat | ||
LocalStream::stream_tell | public | function | Overrides PhpStreamWrapperInterface::stream_tell | ||
LocalStream::url_stat | public | function | Overrides PhpStreamWrapperInterface::url_stat | ||
StreamWrapperInterface::ALL | constant | A filter that matches all wrappers. | |||
StreamWrapperInterface::getDescription | public | function | Returns the description of the stream wrapper for use in the UI. | 7 | |
StreamWrapperInterface::getExternalUrl | public | function | Returns a web accessible URL for the resource. | 7 | |
StreamWrapperInterface::getName | public | function | Returns the name of the stream wrapper for use in the UI. | 7 | |
StreamWrapperInterface::HIDDEN | constant | Defines the stream wrapper bit flag for a hidden file. | |||
StreamWrapperInterface::LOCAL | constant | Refers to a local file system location. | |||
StreamWrapperInterface::LOCAL_HIDDEN | constant | Hidden, readable and writable using local files. | |||
StreamWrapperInterface::LOCAL_NORMAL | constant | Visible, readable and writable using local files. | |||
StreamWrapperInterface::NORMAL | constant | The default 'type' flag. | |||
StreamWrapperInterface::READ | constant | Wrapper is readable (almost always true). | |||
StreamWrapperInterface::READ_VISIBLE | constant | Visible and read-only. | |||
StreamWrapperInterface::VISIBLE | constant | Exposed in the UI and potentially web accessible. | |||
StreamWrapperInterface::WRITE | constant | Wrapper is writable. | |||
StreamWrapperInterface::WRITE_VISIBLE | constant | Visible, readable and writable. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.