132 lines
3.8 KiB
PHP
132 lines
3.8 KiB
PHP
<?php
|
|
/**
|
|
* @package awf
|
|
* @copyright Copyright (c)2014-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
|
* @license GNU GPL version 3 or later
|
|
*/
|
|
|
|
namespace Awf\Filesystem;
|
|
|
|
use Awf\Container\Container;
|
|
|
|
/**
|
|
* Filesystem abstraction interface.
|
|
*
|
|
* The filesystem abstraction lets us perform operations on local files either directly or through and (S)FTP access
|
|
* layer, e.g. on hosts which run (S)FTP and the web server under different users. As you can see there are is read
|
|
* operation. We assume that files are readable directly at all times.
|
|
*
|
|
* @codeCoverageIgnore
|
|
*/
|
|
interface FilesystemInterface
|
|
{
|
|
/**
|
|
* Public constructor
|
|
*
|
|
* @param array $options Configuration options for the filesystem abstraction object
|
|
* @param Container $container Application container
|
|
*
|
|
* @return FilesystemInterface
|
|
*/
|
|
public function __construct(array $options, Container $container = null);
|
|
|
|
/**
|
|
* Write the contents into the file
|
|
*
|
|
* @param string $fileName The full path to the file
|
|
* @param string $contents The contents to write to the file
|
|
*
|
|
* @return boolean True on success
|
|
*/
|
|
public function write($fileName, $contents);
|
|
|
|
/**
|
|
* Delete a file (remove it from the disk)
|
|
*
|
|
* @param string $fileName The full path to the file
|
|
*
|
|
* @return boolean True on success
|
|
*/
|
|
public function delete($fileName);
|
|
|
|
/**
|
|
* Create a copy of the file
|
|
*
|
|
* @param string $from The full path of the file to copy from
|
|
* @param string $to The full path of the file that will hold the copy
|
|
*
|
|
* @return boolean True on success
|
|
*/
|
|
public function copy($from, $to);
|
|
|
|
/**
|
|
* Move or rename a file
|
|
*
|
|
* @param string $from The full path of the file to move
|
|
* @param string $to The full path of the target file
|
|
*
|
|
* @return boolean True on success
|
|
*/
|
|
public function move($from, $to);
|
|
|
|
/**
|
|
* Change the permissions of a file
|
|
*
|
|
* @param string $fileName The full path of the file whose permissions will change
|
|
* @param integer $permissions The new permissions, e.g. 0644 (remember the leading zero in octal numbers!)
|
|
*
|
|
* @return boolean True on success
|
|
*/
|
|
public function chmod($fileName, $permissions);
|
|
|
|
/**
|
|
* Return the current working dir
|
|
*
|
|
* @return string
|
|
*/
|
|
public function cwd();
|
|
|
|
/**
|
|
* Create a directory if it doesn't exist. The operation is implicitly recursive, i.e. it will create all
|
|
* intermediate directories if they do not already exist.
|
|
*
|
|
* @param string $dirName The full path of the directory to create
|
|
* @param integer $permissions The permissions of the created directory
|
|
*
|
|
* @return boolean True on success
|
|
*/
|
|
public function mkdir($dirName, $permissions = 0755);
|
|
|
|
/**
|
|
* Remove a directory if it exists.
|
|
*
|
|
* @param string $dirName The full path of the directory to remove
|
|
* @param boolean $recursive Should I remove its contents recursively? Otherwise it will fail if the directory
|
|
* is not empty.
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public function rmdir($dirName, $recursive = true);
|
|
|
|
/**
|
|
* Translate an absolute filesystem path into a relative path for use by the filesystem abstraction, e.g. a relative
|
|
* (S)FTP path
|
|
*
|
|
* @param string $fileName The full filesystem path of a file or directory
|
|
*
|
|
* @return string The translated path for use by the filesystem abstraction
|
|
*/
|
|
public function translatePath($fileName);
|
|
|
|
/**
|
|
* Lists the subdirectories inside a directory
|
|
*
|
|
* @param null|string $dir The directory to scan. Skip to use the current directory.
|
|
*
|
|
* @return array|bool A list of folders, or false if we could not get a listing
|
|
*
|
|
* @throws \RuntimeException When the server is incompatible with our folder scanner
|
|
*/
|
|
public function listFolders($dir = null);
|
|
}
|