Mercurial > hg > isophonics-drupal-site
diff core/lib/Drupal/Core/File/FileSystemInterface.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | af1871eacc83 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/lib/Drupal/Core/File/FileSystemInterface.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,240 @@ +<?php + +namespace Drupal\Core\File; + +/** + * Provides an interface for helpers that operate on files and stream wrappers. + */ +interface FileSystemInterface { + + /** + * Moves an uploaded file to a new location. + * + * PHP's move_uploaded_file() does not properly support streams if + * open_basedir is enabled, so this function fills that gap. + * + * Compatibility: normal paths and stream wrappers. + * + * @param string $filename + * The filename of the uploaded file. + * @param string $uri + * A string containing the destination URI of the file. + * + * @return bool + * TRUE on success, or FALSE on failure. + * + * @see move_uploaded_file() + * @see https://www.drupal.org/node/515192 + * @ingroup php_wrappers + */ + public function moveUploadedFile($filename, $uri); + + /** + * Sets the permissions on a file or directory. + * + * This function will use the file_chmod_directory and + * file_chmod_file settings for the default modes for directories + * and uploaded/generated files. By default these will give everyone read + * access so that users accessing the files with a user account without the + * webserver group (e.g. via FTP) can read these files, and give group write + * permissions so webserver group members (e.g. a vhost account) can alter + * files uploaded and owned by the webserver. + * + * PHP's chmod does not support stream wrappers so we use our wrapper + * implementation which interfaces with chmod() by default. Contrib wrappers + * may override this behavior in their implementations as needed. + * + * @param string $uri + * A string containing a URI file, or directory path. + * @param int $mode + * Integer value for the permissions. Consult PHP chmod() documentation for + * more information. + * + * @return bool + * TRUE for success, FALSE in the event of an error. + * + * @ingroup php_wrappers + */ + public function chmod($uri, $mode = NULL); + + /** + * Deletes a file. + * + * PHP's unlink() is broken on Windows, as it can fail to remove a file when + * it has a read-only flag set. + * + * @param string $uri + * A URI or pathname. + * @param resource $context + * Refer to http://php.net/manual/ref.stream.php + * + * @return bool + * Boolean TRUE on success, or FALSE on failure. + * + * @see unlink() + * @ingroup php_wrappers + */ + public function unlink($uri, $context = NULL); + + /** + * Resolves the absolute filepath of a local URI or filepath. + * + * The use of this method is discouraged, because it does not work for + * remote URIs. Except in rare cases, URIs should not be manually resolved. + * + * Only use this function if you know that the stream wrapper in the URI uses + * the local file system, and you need to pass an absolute path to a function + * that is incompatible with stream URIs. + * + * @param string $uri + * A stream wrapper URI or a filepath, possibly including one or more + * symbolic links. + * + * @return string|false + * The absolute local filepath (with no symbolic links) or FALSE on failure. + * + * @see \Drupal\Core\StreamWrapper\StreamWrapperInterface::realpath() + * @see http://php.net/manual/function.realpath.php + * @ingroup php_wrappers + */ + public function realpath($uri); + + /** + * Gets the name of the directory from a given path. + * + * PHP's dirname() does not properly pass streams, so this function fills that + * gap. It is backwards compatible with normal paths and will use PHP's + * dirname() as a fallback. + * + * Compatibility: normal paths and stream wrappers. + * + * @param string $uri + * A URI or path. + * + * @return string + * A string containing the directory name. + * + * @see dirname() + * @see https://www.drupal.org/node/515192 + * @ingroup php_wrappers + */ + public function dirname($uri); + + /** + * Gets the filename from a given path. + * + * PHP's basename() does not properly support streams or filenames beginning + * with a non-US-ASCII character. + * + * @see http://bugs.php.net/bug.php?id=37738 + * @see basename() + * + * @ingroup php_wrappers + */ + public function basename($uri, $suffix = NULL); + + /** + * Creates a directory, optionally creating missing components in the path to + * the directory. + * + * When PHP's mkdir() creates a directory, the requested mode is affected by + * the process's umask. This function overrides the umask and sets the mode + * explicitly for all directory components created. + * + * @param string $uri + * A URI or pathname. + * @param int $mode + * Mode given to created directories. Defaults to the directory mode + * configured in the Drupal installation. It must have a leading zero. + * @param bool $recursive + * Create directories recursively, defaults to FALSE. Cannot work with a + * mode which denies writing or execution to the owner of the process. + * @param resource $context + * Refer to http://php.net/manual/ref.stream.php + * + * @return bool + * Boolean TRUE on success, or FALSE on failure. + * + * @see mkdir() + * @see https://www.drupal.org/node/515192 + * @ingroup php_wrappers + * + * @todo Update with open_basedir compatible recursion logic from + * \Drupal\Component\PhpStorage\FileStorage::ensureDirectory(). + */ + public function mkdir($uri, $mode = NULL, $recursive = FALSE, $context = NULL); + + /** + * Removes a directory. + * + * PHP's rmdir() is broken on Windows, as it can fail to remove a directory + * when it has a read-only flag set. + * + * @param string $uri + * A URI or pathname. + * @param resource $context + * Refer to http://php.net/manual/ref.stream.php + * + * @return bool + * Boolean TRUE on success, or FALSE on failure. + * + * @see rmdir() + * @ingroup php_wrappers + */ + public function rmdir($uri, $context = NULL); + + /** + * Creates a file with a unique filename in the specified directory. + * + * PHP's tempnam() does not return a URI like we want. This function will + * return a URI if given a URI, or it will return a filepath if given a + * filepath. + * + * Compatibility: normal paths and stream wrappers. + * + * @param string $directory + * The directory where the temporary filename will be created. + * @param string $prefix + * The prefix of the generated temporary filename. + * Note: Windows uses only the first three characters of prefix. + * + * @return string|bool + * The new temporary filename, or FALSE on failure. + * + * @see tempnam() + * @see https://www.drupal.org/node/515192 + * @ingroup php_wrappers + */ + public function tempnam($directory, $prefix); + + /** + * Returns the scheme of a URI (e.g. a stream). + * + * @param string $uri + * A stream, referenced as "scheme://target" or "data:target". + * + * @return string|bool + * A string containing the name of the scheme, or FALSE if none. For + * example, the URI "public://example.txt" would return "public". + * + * @see file_uri_target() + */ + public function uriScheme($uri); + + /** + * Checks that the scheme of a stream URI is valid. + * + * Confirms that there is a registered stream handler for the provided scheme + * and that it is callable. This is useful if you want to confirm a valid + * scheme without creating a new instance of the registered handler. + * + * @param string $scheme + * A URI scheme, a stream is referenced as "scheme://target". + * + * @return bool + * Returns TRUE if the string is the name of a validated stream, or FALSE if + * the scheme does not have a registered handler. + */ + public function validScheme($scheme); + +}