You are here

class LibraryDefinitionsStream in Libraries API 8.3

Provides a stream wrapper for library definitions.

Can be used with the 'library-definitions' scheme, for example 'library-definitions://example.json' for a library ID of 'example'.

By default this stream wrapper reads from a single directory that is configurable and points to the 'library-definitions' directory within the public files directory by default. This makes library definitions writable by the webserver by default, which is in anticipation of a user interface that fetches definitions from a remote repository and stores them locally. For improved security the library definitions can be managed manually (or put under version control) and placed in a directory that is not writable by the webserver.

The idea of using a stream wrapper for this as well as the default location is taken from the 'translations' stream wrapper provided by the Interface Translation module.

@todo Use a setting instead of configuration for the directory.

Hierarchy

Expanded class hierarchy of LibraryDefinitionsStream

See also

\Drupal\locale\StreamWrapper\TranslationsStream

1 string reference to 'LibraryDefinitionsStream'
libraries.services.yml in ./libraries.services.yml
libraries.services.yml
1 service uses LibraryDefinitionsStream
stream_wrapper.library_definitions in ./libraries.services.yml
Drupal\libraries\StreamWrapper\LibraryDefinitionsStream

File

src/StreamWrapper/LibraryDefinitionsStream.php, line 31

Namespace

Drupal\libraries\StreamWrapper
View source
class LibraryDefinitionsStream extends LocalStream {
  use LocalHiddenStreamTrait;
  use PrivateStreamTrait;

  /**
   * The config factory.
   *
   * @var \Drupal\Core\Config\ConfigFactoryInterface
   */
  protected $configFactory;

  /**
   * Constructs an external library registry.
   *
   * @todo Dependency injection.
   */
  public function __construct(ConfigFactory $config_factory) {
    $this->configFactory = $config_factory;
  }

  /**
   * {@inheritdoc}
   */
  public function getName() {
    return t('Library definitions');
  }

  /**
   * {@inheritdoc}
   */
  public function getDescription() {
    return t('Provides access to library definition files.');
  }

  /**
   * {@inheritdoc}
   */
  public function getDirectoryPath() {
    return $this
      ->getConfig('local.path');
  }

  /**
   * Fetches a configuration value from the library definitions configuration.
   * @param $key
   *   The configuration key to fetch.
   *
   * @return array|mixed|null
   *   The configuration value.
   */
  protected function getConfig($key) {
    return $this->configFactory
      ->get('libraries.settings')
      ->get("definitions.{$key}");
  }

}

Members

Namesort descending Modifiers Type Description Overrides
LibraryDefinitionsStream::$configFactory protected property The config factory.
LibraryDefinitionsStream::getConfig protected function Fetches a configuration value from the library definitions configuration.
LibraryDefinitionsStream::getDescription public function Returns the description of the stream wrapper for use in the UI. Overrides StreamWrapperInterface::getDescription
LibraryDefinitionsStream::getDirectoryPath public function Gets the path that the wrapper is responsible for. Overrides LocalStream::getDirectoryPath
LibraryDefinitionsStream::getName public function Returns the name of the stream wrapper for use in the UI. Overrides PrivateStreamTrait::getName
LibraryDefinitionsStream::__construct public function Constructs an external library registry.
LocalHiddenStreamTrait::getType public static function Returns the type of stream wrapper.
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 Support for closedir(). Overrides PhpStreamWrapperInterface::dir_closedir
LocalStream::dir_opendir public function Support for opendir(). Overrides PhpStreamWrapperInterface::dir_opendir
LocalStream::dir_readdir public function Support for readdir(). Overrides PhpStreamWrapperInterface::dir_readdir
LocalStream::dir_rewinddir public function Support for rewinddir(). Overrides PhpStreamWrapperInterface::dir_rewinddir
LocalStream::getFileSystem private function Returns file system service.
LocalStream::getLocalPath protected function Returns the canonical absolute path of the URI, if possible.
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 Support for mkdir(). Overrides PhpStreamWrapperInterface::mkdir 1
LocalStream::realpath public function Returns canonical, absolute path of the resource. Overrides StreamWrapperInterface::realpath 1
LocalStream::rename public function Support for rename(). Overrides PhpStreamWrapperInterface::rename 1
LocalStream::rmdir public function Support for rmdir(). 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 Support for fclose(). Overrides PhpStreamWrapperInterface::stream_close
LocalStream::stream_eof public function Support for feof(). Overrides PhpStreamWrapperInterface::stream_eof
LocalStream::stream_flush public function Support for fflush(). Overrides PhpStreamWrapperInterface::stream_flush 1
LocalStream::stream_lock public function Support for flock(). 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 Support for fopen(), file_get_contents(), file_put_contents() etc. Overrides PhpStreamWrapperInterface::stream_open 1
LocalStream::stream_read public function Support for fread(), file_get_contents() etc. 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 Support for fstat(). Overrides PhpStreamWrapperInterface::stream_stat
LocalStream::stream_tell public function Support for ftell(). Overrides PhpStreamWrapperInterface::stream_tell
LocalStream::stream_truncate public function Truncate stream. Overrides PhpStreamWrapperInterface::stream_truncate 1
LocalStream::stream_write public function Support for fwrite(), file_put_contents() etc. Overrides PhpStreamWrapperInterface::stream_write 1
LocalStream::unlink public function Support for unlink(). Overrides PhpStreamWrapperInterface::unlink 1
LocalStream::url_stat public function Support for stat(). Overrides PhpStreamWrapperInterface::url_stat
PrivateStreamTrait::getExternalUrl function Returns a web accessible URL for the resource.
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 This is the default 'type' flag. This does not include StreamWrapperInterface::LOCAL, because PHP grants a greater trust level to local files (for example, they can be used in an "include" statement, regardless of the…
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.