class PublicStream
Same name in other branches
- 9 core/lib/Drupal/Core/StreamWrapper/PublicStream.php \Drupal\Core\StreamWrapper\PublicStream
- 8.9.x core/lib/Drupal/Core/StreamWrapper/PublicStream.php \Drupal\Core\StreamWrapper\PublicStream
- 11.x core/lib/Drupal/Core/StreamWrapper/PublicStream.php \Drupal\Core\StreamWrapper\PublicStream
Defines a Drupal public (public://) stream wrapper class.
Provides support for storing publicly accessible files with the Drupal file interface.
Hierarchy
- class \Drupal\Core\StreamWrapper\LocalStream implements \Drupal\Core\StreamWrapper\StreamWrapperInterface
- class \Drupal\Core\StreamWrapper\PublicStream extends \Drupal\Core\StreamWrapper\LocalStream
Expanded class hierarchy of PublicStream
20 files declare their use of PublicStream
- CachedStorageTest.php in core/
tests/ Drupal/ KernelTests/ Core/ Config/ Storage/ CachedStorageTest.php - DummyRemoteStreamWrapper.php in core/
modules/ file/ tests/ file_test/ src/ StreamWrapper/ DummyRemoteStreamWrapper.php - FileStorageTest.php in core/
tests/ Drupal/ KernelTests/ Core/ Config/ Storage/ FileStorageTest.php - FileSystem.php in core/
lib/ Drupal/ Core/ File/ FileSystem.php - FileSystemForm.php in core/
modules/ system/ src/ Form/ FileSystemForm.php
1 string reference to 'PublicStream'
- core.services.yml in core/
core.services.yml - core/core.services.yml
1 service uses PublicStream
File
-
core/
lib/ Drupal/ Core/ StreamWrapper/ PublicStream.php, line 16
Namespace
Drupal\Core\StreamWrapperView source
class PublicStream extends LocalStream {
/**
* {@inheritdoc}
*/
public static function getType() {
return StreamWrapperInterface::LOCAL_NORMAL;
}
/**
* {@inheritdoc}
*/
public function getName() {
return t('Public files');
}
/**
* {@inheritdoc}
*/
public function getDescription() {
return t('Public local files served by the webserver.');
}
/**
* {@inheritdoc}
*/
public function getDirectoryPath() {
return static::basePath();
}
/**
* {@inheritdoc}
*/
public function getExternalUrl() {
$path = str_replace('\\', '/', $this->getTarget());
return static::baseUrl() . '/' . UrlHelper::encodePath($path);
}
/**
* Finds and returns the base URL for public://.
*
* Defaults to the current site's base URL plus directory path.
*
* Note that this static method is used by \Drupal\system\Form\FileSystemForm
* so you should alter that form or substitute a different form if you change
* the class providing the stream_wrapper.public service.
*
* @return string
* The external base URL for public://
*/
public static function baseUrl() {
$settings_base_url = Settings::get('file_public_base_url', '');
if ($settings_base_url) {
return (string) $settings_base_url;
}
else {
return $GLOBALS['base_url'] . '/' . static::basePath();
}
}
/**
* Returns the base path for public://.
*
* If we have a setting for the public:// scheme's path, we use that.
* Otherwise we build a reasonable default based on the site.path service if
* it's available, or a default behavior based on the request.
*
* Note that this static method is used by \Drupal\system\Form\FileSystemForm
* so you should alter that form or substitute a different form if you change
* the class providing the stream_wrapper.public service.
*
* The site path is injectable from the site.path service:
* @code
* $base_path = PublicStream::basePath(\Drupal::getContainer()->getParameter('site.path'));
* @endcode
*
* @param string $site_path
* (optional) The site.path service parameter, which is typically the path
* to sites/ in a Drupal installation. This allows you to inject the site
* path using services from the caller. If omitted, this method will use the
* global service container or the kernel's default behavior to determine
* the site path.
*
* @return string
* The base path for public:// typically sites/default/files.
*/
public static function basePath($site_path = NULL) {
if ($site_path === NULL) {
// Find the site path. Kernel service is not always available at this
// point, but is preferred, when available.
if (\Drupal::hasService('kernel')) {
$site_path = \Drupal::getContainer()->getParameter('site.path');
}
else {
// If there is no kernel available yet, we call the static
// findSitePath().
$site_path = DrupalKernel::findSitePath(Request::createFromGlobals());
}
}
return Settings::get('file_public_path', $site_path . '/files');
}
/**
* {@inheritdoc}
*/
protected function getLocalPath($uri = NULL) {
$path = parent::getLocalPath($uri);
if (!$path || str_starts_with($path, 'vfs://')) {
return $path;
}
if (Settings::get('sa_core_2022_012_override') === TRUE) {
return $path;
}
$private_path = Settings::get('file_private_path');
if ($private_path) {
$private_path = realpath($private_path);
if ($private_path && str_starts_with($path, $private_path)) {
return FALSE;
}
}
return $path;
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title | Overrides |
---|---|---|---|---|---|
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 | Gets the name of the directory from a given path. | Overrides StreamWrapperInterface::dirname | |
LocalStream::dir_closedir | public | function | Close directory handle. | Overrides PhpStreamWrapperInterface::dir_closedir | |
LocalStream::dir_opendir | public | function | Open directory handle. | Overrides PhpStreamWrapperInterface::dir_opendir | |
LocalStream::dir_readdir | public | function | Read entry from directory handle. | Overrides PhpStreamWrapperInterface::dir_readdir | |
LocalStream::dir_rewinddir | public | function | Rewind directory handle. | Overrides PhpStreamWrapperInterface::dir_rewinddir | |
LocalStream::getFileSystem | private | function | Returns file system service. | ||
LocalStream::getTarget | protected | function | Returns the local writable target of the resource within the stream. | ||
LocalStream::getUri | public | function | Returns the stream resource URI. | Overrides StreamWrapperInterface::getUri | |
LocalStream::mkdir | public | function | Create a directory. | Overrides PhpStreamWrapperInterface::mkdir | 1 |
LocalStream::realpath | public | function | Returns canonical, absolute path of the resource. | Overrides StreamWrapperInterface::realpath | 1 |
LocalStream::rename | public | function | Renames a file or directory. | Overrides PhpStreamWrapperInterface::rename | 1 |
LocalStream::rmdir | public | function | Removes a directory. | Overrides PhpStreamWrapperInterface::rmdir | 1 |
LocalStream::setUri | public | function | Sets the absolute stream resource URI. | Overrides StreamWrapperInterface::setUri | |
LocalStream::stream_cast | public | function | Retrieve the underlying stream resource. | Overrides PhpStreamWrapperInterface::stream_cast | |
LocalStream::stream_close | public | function | Closes stream. | Overrides PhpStreamWrapperInterface::stream_close | |
LocalStream::stream_eof | public | function | Tests for end-of-file on a file pointer. | Overrides PhpStreamWrapperInterface::stream_eof | |
LocalStream::stream_flush | public | function | Flushes the output. | Overrides PhpStreamWrapperInterface::stream_flush | 1 |
LocalStream::stream_lock | public | function | Advisory file locking. | Overrides PhpStreamWrapperInterface::stream_lock | 1 |
LocalStream::stream_metadata | public | function | Sets metadata on the stream. | Overrides PhpStreamWrapperInterface::stream_metadata | 1 |
LocalStream::stream_open | public | function | Opens file or URL. | Overrides PhpStreamWrapperInterface::stream_open | 1 |
LocalStream::stream_read | public | function | Read from stream. | Overrides PhpStreamWrapperInterface::stream_read | |
LocalStream::stream_seek | public | function | Seeks to specific location in a stream. | 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 | Retrieve information about a file resource. | Overrides PhpStreamWrapperInterface::stream_stat | |
LocalStream::stream_tell | public | function | Retrieve the current position of a stream. | Overrides PhpStreamWrapperInterface::stream_tell | |
LocalStream::stream_truncate | public | function | Truncate stream. | Overrides PhpStreamWrapperInterface::stream_truncate | 1 |
LocalStream::stream_write | public | function | Write to stream. | Overrides PhpStreamWrapperInterface::stream_write | 1 |
LocalStream::unlink | public | function | Delete a file. | Overrides PhpStreamWrapperInterface::unlink | 1 |
LocalStream::url_stat | public | function | Retrieve information about a file. | Overrides PhpStreamWrapperInterface::url_stat | |
PublicStream::basePath | public static | function | Returns the base path for public://. | 1 | |
PublicStream::baseUrl | public static | function | Finds and returns the base URL for public://. | 1 | |
PublicStream::getDescription | public | function | Returns the description of the stream wrapper for use in the UI. | Overrides StreamWrapperInterface::getDescription | 2 |
PublicStream::getDirectoryPath | public | function | Gets the path that the wrapper is responsible for. | Overrides LocalStream::getDirectoryPath | |
PublicStream::getExternalUrl | public | function | Returns a web accessible URL for the resource. | Overrides StreamWrapperInterface::getExternalUrl | |
PublicStream::getLocalPath | protected | function | Returns the canonical absolute path of the URI, if possible. | Overrides LocalStream::getLocalPath | |
PublicStream::getName | public | function | Returns the name of the stream wrapper for use in the UI. | Overrides StreamWrapperInterface::getName | 2 |
PublicStream::getType | public static | function | Returns the type of stream wrapper. | Overrides LocalStream::getType | 2 |
StreamWrapperInterface::ALL | constant | A filter that matches all wrappers. | |||
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.