mirror of
https://github.com/Karaka-Management/phpOMS.git
synced 2026-01-20 13:28:42 +00:00
Add dummy ftp functions and tests
This commit is contained in:
parent
4ca9870b82
commit
0cc736b0ff
|
|
@ -30,6 +30,7 @@ use phpOMS\System\File\Local\Directory as DirectoryLocal;
|
|||
* @license OMS License 1.0
|
||||
* @link http://website.orange-management.de
|
||||
* @since 1.0.0
|
||||
* @codeCoverageIgnore
|
||||
*/
|
||||
class Directory extends FileAbstract implements DirectoryInterface
|
||||
{
|
||||
|
|
|
|||
|
|
@ -21,34 +21,56 @@ use phpOMS\System\File\FileInterface;
|
|||
use phpOMS\System\File\PathException;
|
||||
use phpOMS\System\File\Local\File as FileLocal;
|
||||
use phpOMS\System\File\Local\FileAbstract;
|
||||
use phpOMS\System\File\Local\Directory as DirectoryLocal;
|
||||
use phpOMS\System\File\Local\Directory as LocalDirectory;
|
||||
use phpOMS\System\File\Local\File as LocalFile;
|
||||
use phpOMS\Uri\Http;
|
||||
|
||||
/**
|
||||
* Filesystem class.
|
||||
*
|
||||
* Performing operations on the file system
|
||||
* Performing operations on the file system.
|
||||
*
|
||||
* All static implementations require a path/uri in the following form: ftp://user:pass@domain.com/path/subpath...
|
||||
*
|
||||
* @category Framework
|
||||
* @package phpOMS\System\File
|
||||
* @license OMS License 1.0
|
||||
* @link http://website.orange-management.de
|
||||
* @since 1.0.0
|
||||
* @codeCoverageIgnore
|
||||
*/
|
||||
class File extends FileAbstract implements FileInterface
|
||||
{
|
||||
public static function ftpConnect(Http $http)
|
||||
{
|
||||
$con = ftp_connect($http->getBase() . $http->getPath(), $http->getPort());
|
||||
|
||||
ftp_login($con, $http->getUser(), $http->getPass());
|
||||
ftp_chdir($con, $http->getPath()); // todo: is this required ?
|
||||
|
||||
return $con;
|
||||
}
|
||||
|
||||
public static function ftpExists($con, string $path)
|
||||
{
|
||||
$list = ftp_nlist($con, LocalFile::dirpath($path));
|
||||
|
||||
return in_array(LocalFile::basename($path), $list);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function put(string $path, string $content, int $mode = ContentPutMode::REPLACE | ContentPutMode::CREATE) : bool
|
||||
{
|
||||
// todo: create all else cases, right now all getting handled the same way which is wrong
|
||||
$current = ftp_pwd($con);
|
||||
if (!ftp_chdir($con, File::dirpath($path))) {
|
||||
$http = new Http($path);
|
||||
$con = self::ftpConnect($http);
|
||||
|
||||
if (ftp_pwd($con) !== $http->getPath()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$exists = self::exists($path);
|
||||
$result = false;
|
||||
$exists = self::ftpExists($con, $http);
|
||||
|
||||
if (
|
||||
(($mode & ContentPutMode::APPEND) === ContentPutMode::APPEND && $exists)
|
||||
|
|
@ -56,20 +78,26 @@ class File extends FileAbstract implements FileInterface
|
|||
|| (($mode & ContentPutMode::REPLACE) === ContentPutMode::REPLACE && $exists)
|
||||
|| (!$exists && ($mode & ContentPutMode::CREATE) === ContentPutMode::CREATE)
|
||||
) {
|
||||
if (!Directory::exists(dirname($path))) {
|
||||
Directory::create(dirname($path), 0755, true);
|
||||
if (($mode & ContentPutMode::APPEND) === ContentPutMode::APPEND && $exists) {
|
||||
file_put_contents($path, file_get_contents($path) . $content, 0, stream_context_create(['ftp' => ['overwrite' => true]]));
|
||||
} elseif (($mode & ContentPutMode::PREPEND) === ContentPutMode::PREPEND && $exists) {
|
||||
file_put_contents($path, $content . file_get_contents($path), 0, stream_context_create(['ftp' => ['overwrite' => true]]));
|
||||
} else {
|
||||
if (!Directory::ftpExists($con, dirname($path))) {
|
||||
Directory::ftpCreate($con, dirname($path), 0755, true);
|
||||
}
|
||||
|
||||
file_put_contents($path, $content, 0, stream_context_create(['ftp' => ['overwrite' => true]]));
|
||||
}
|
||||
|
||||
$stream = fopen('data://temp,' . $content, 'r');
|
||||
ftp_fput($path, $content);
|
||||
fclose($stream);
|
||||
ftp_close($con);
|
||||
|
||||
$result = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
ftp_chdir($current);
|
||||
ftp_close($con);
|
||||
|
||||
return $result;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -78,15 +106,16 @@ class File extends FileAbstract implements FileInterface
|
|||
public static function get(string $path) : /* ? */string
|
||||
{
|
||||
$temp = fopen('php://temp', 'r+');
|
||||
$http = new Http($path);
|
||||
|
||||
$con = self::ftpConnect($http);
|
||||
|
||||
$current = ftp_pwd($con);
|
||||
if (ftp_chdir($con, File::dirpath($path)) && ftp_fget($con, $temp, $path, FTP_BINARY, 0)) {
|
||||
rewind($temp);
|
||||
$content = stream_get_contents($temp);
|
||||
}
|
||||
|
||||
fclose($temp);
|
||||
ftp_chdir($current);
|
||||
|
||||
return $content ?? null;
|
||||
}
|
||||
|
|
@ -120,18 +149,13 @@ class File extends FileAbstract implements FileInterface
|
|||
*/
|
||||
public static function exists(string $path) : bool
|
||||
{
|
||||
|
||||
if (($current = ftp_pwd($con)) !== LocalFile::dirpath($path)) {
|
||||
if (!ftp_chdir($con, $path)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
$http = new Http($path);
|
||||
$con = self::ftpConnect($http);
|
||||
$exists = self::ftpExists($con, $http->getPath());
|
||||
|
||||
$list = ftp_nlist($con, $path);
|
||||
fclose($con);
|
||||
|
||||
ftp_chdir($con, $current);
|
||||
|
||||
return in_array($path, $list);
|
||||
return $exists;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -163,8 +187,13 @@ class File extends FileAbstract implements FileInterface
|
|||
*/
|
||||
public static function changed(string $path) : \DateTime
|
||||
{
|
||||
$http = new Http($path);
|
||||
$con = self::ftpConnect($http);
|
||||
$changed = new \DateTime();
|
||||
$changed->setTimestamp(ftp_mdtm($con, $path));
|
||||
|
||||
$changed->setTimestamp(ftp_mdtm($con, $http->getPath()));
|
||||
|
||||
fclose($con);
|
||||
|
||||
return $changed;
|
||||
}
|
||||
|
|
@ -174,11 +203,18 @@ class File extends FileAbstract implements FileInterface
|
|||
*/
|
||||
public static function size(string $path, bool $recursive = true) : int
|
||||
{
|
||||
if (!self::exists($path)) {
|
||||
$http = new Http($path);
|
||||
$con = self::ftpConnect($http);
|
||||
|
||||
if (!self::exists($http->getPath())) {
|
||||
throw new PathException($path);
|
||||
}
|
||||
|
||||
return ftp_size($con, $path);
|
||||
$size = ftp_size($con, $http->getPath());
|
||||
|
||||
fclose($con);
|
||||
|
||||
return $size;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -186,7 +222,13 @@ class File extends FileAbstract implements FileInterface
|
|||
*/
|
||||
public static function owner(string $path) : int
|
||||
{
|
||||
return self::parseFtpFileData($path)['user'] ?? '';
|
||||
$http = new Http($path);
|
||||
$con = self::ftpConnect($http);
|
||||
$owner = self::parseFtpFileData($con, $path)['user'] ?? '';
|
||||
|
||||
fclose($con);
|
||||
|
||||
return $owner;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -194,22 +236,28 @@ class File extends FileAbstract implements FileInterface
|
|||
*/
|
||||
public static function permission(string $path) : int
|
||||
{
|
||||
return (int) self::parseFtpFileData($path)['permission'] ?? 0;
|
||||
$http = new Http($path);
|
||||
$con = self::ftpConnect($http);
|
||||
$permission = (int) self::parseFtpFileData($con, $path)['permission'] ?? 0;
|
||||
|
||||
fclose($con);
|
||||
|
||||
return $permission;
|
||||
}
|
||||
|
||||
private static function parseFtpFileData(string $path) : array
|
||||
private static function parseFtpFileData($con, string $path) : array
|
||||
{
|
||||
$items = [];
|
||||
$items = [];
|
||||
|
||||
if (is_array($files = ftp_rawlist($con, self::dirpath($path)))) {
|
||||
if (is_array($files = ftp_rawlist($con, LocalFile::dirpath($path)))) {
|
||||
foreach ($files as $fileData) {
|
||||
if (strpos($fileData, self::name($path)) !== false) {
|
||||
$chunks = preg_split("/\s+/", $fileData);
|
||||
$chunks = preg_split("/\s+/", $fileData);
|
||||
|
||||
$items['permission'] = $chungs[0];
|
||||
$items['user'] = $chungs[2];
|
||||
$items['group'] = $chungs[3];
|
||||
$items['size'] = $chungs[4];
|
||||
$items['permission'] = $chunks[0];
|
||||
$items['user'] = $chunks[2];
|
||||
$items['group'] = $chunks[3];
|
||||
$items['size'] = $chunks[4];
|
||||
$items['type'] = $chunks[0][0] === 'd' ? 'directory' : 'file';
|
||||
|
||||
break;
|
||||
|
|
@ -253,6 +301,8 @@ class File extends FileAbstract implements FileInterface
|
|||
*/
|
||||
public static function copy(string $from, string $to, bool $overwrite = false) : bool
|
||||
{
|
||||
// todo: handle different ftp connections AND local to ftp
|
||||
|
||||
if (($src = self::get($from)) === false) {
|
||||
return false;
|
||||
}
|
||||
|
|
@ -265,7 +315,11 @@ class File extends FileAbstract implements FileInterface
|
|||
*/
|
||||
public static function move(string $from, string $to, bool $overwrite = false) : bool
|
||||
{
|
||||
if (!self::exists($from)) {
|
||||
// todo: handle different ftp connections AND local to ftp
|
||||
$http = new Http($to);
|
||||
$con = self::ftpConnect($http);
|
||||
|
||||
if (!self::ftpExists($con, $from)) {
|
||||
throw new PathException($from);
|
||||
}
|
||||
|
||||
|
|
@ -274,9 +328,14 @@ class File extends FileAbstract implements FileInterface
|
|||
Directory::create(dirname($to), 0755, true);
|
||||
}
|
||||
|
||||
return ftp_rename($con, $from, $to);
|
||||
$rename = ftp_rename($con, $from, $to);
|
||||
fclose($con);
|
||||
|
||||
return $rename;
|
||||
}
|
||||
|
||||
fclose($con);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -285,11 +344,15 @@ class File extends FileAbstract implements FileInterface
|
|||
*/
|
||||
public static function delete(string $path) : bool
|
||||
{
|
||||
if (!self::exists($path)) {
|
||||
$http = new Http($path);
|
||||
$con = self::ftpConnect($http);
|
||||
|
||||
if (!self::ftpExists($con, $path)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
ftp_delete($con, $path);
|
||||
fclose($con);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,8 +14,8 @@
|
|||
declare(strict_types = 1);
|
||||
|
||||
namespace phpOMS\System\File\Ftp;
|
||||
use phpOMS\System\File\ContainerInterface;
|
||||
use phpOMS\System\File\StorageAbstract;
|
||||
use phpOMS\System\File\PathException;
|
||||
|
||||
/**
|
||||
* Filesystem class.
|
||||
|
|
@ -27,15 +27,14 @@ use phpOMS\System\File\StorageAbstract;
|
|||
* @license OMS License 1.0
|
||||
* @link http://website.orange-management.de
|
||||
* @since 1.0.0
|
||||
* @codeCoverageIgnore
|
||||
*/
|
||||
class FtpStorage extends StorageAbstract
|
||||
{
|
||||
private $con = null;
|
||||
|
||||
private static $instance = null;
|
||||
|
||||
public function __construct() {
|
||||
|
||||
|
||||
}
|
||||
|
||||
public static function getInstance() : StorageAbstract
|
||||
|
|
@ -47,393 +46,9 @@ class FtpStorage extends StorageAbstract
|
|||
return self::$instance;
|
||||
}
|
||||
|
||||
public function connect(string $uri, int $port = 21, bool $mode = true, string $login = null, string $pass = null, bool $ssl = false) : bool
|
||||
protected static function getClassType(string $path) : string
|
||||
{
|
||||
if ($ssl) {
|
||||
$this->con = ftp_connect($uri, $port);
|
||||
} else {
|
||||
$this->con = ftp_ssl_connect($uri, $port);
|
||||
}
|
||||
|
||||
ftp_pasv($this->con, $mode);
|
||||
|
||||
if (isset($login, $pass)) {
|
||||
ftp_login($this->con, $login, $pass);
|
||||
}
|
||||
}
|
||||
|
||||
public function __destruct()
|
||||
{
|
||||
if (isset($this->con)) {
|
||||
ftp_close($this->con);
|
||||
$this->con = null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function created(string $path) : \DateTime
|
||||
{
|
||||
// TODO: Implement created() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function changed(string $path) : \DateTime
|
||||
{
|
||||
// TODO: Implement changed() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function owner(string $path) : int
|
||||
{
|
||||
// TODO: Implement owner() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function permission(string $path) : int
|
||||
{
|
||||
// TODO: Implement permission() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function parent(string $path) : string
|
||||
{
|
||||
// TODO: Implement parent() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function create(string $path) : bool
|
||||
{
|
||||
// TODO: Implement create() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function delete(string $path) : bool
|
||||
{
|
||||
// TODO: Implement delete() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function copy(string $from, string $to, bool $overwrite = false) : bool
|
||||
{
|
||||
// TODO: Implement copy() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function move(string $from, string $to, bool $overwrite = false) : bool
|
||||
{
|
||||
// TODO: Implement move() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function size(string $path, bool $recursive = true) : int
|
||||
{
|
||||
// TODO: Implement size() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function exists(string $path) : bool
|
||||
{
|
||||
// TODO: Implement exists() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function name(string $path) : string
|
||||
{
|
||||
// TODO: Implement name() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function basename(string $path) : string
|
||||
{
|
||||
// TODO: Implement basename() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function dirname(string $path) : string
|
||||
{
|
||||
// TODO: Implement basename() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function dirpath(string $path) : string
|
||||
{
|
||||
// TODO: Implement basename() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function list(string $path, string $filter = '*') : array
|
||||
{
|
||||
// TODO: Implement basename() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function count(string $path, bool $recursive = true, array $ignore = []) : int
|
||||
{
|
||||
// TODO: Implement count() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getCount(bool $recursive = false) : int
|
||||
{
|
||||
// TODO: Implement getCount() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getSize(bool $recursive = false) : int
|
||||
{
|
||||
// TODO: Implement getSize() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getName() : string
|
||||
{
|
||||
// TODO: Implement getName() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getPath() : string
|
||||
{
|
||||
// TODO: Implement getPath() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getParent() : ContainerInterface
|
||||
{
|
||||
// TODO: Implement getParent() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function createNode() : bool
|
||||
{
|
||||
// TODO: Implement createNode() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function copyNode(string $to, bool $overwrite = false) : bool
|
||||
{
|
||||
// TODO: Implement copyNode() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function moveNode(string $to, bool $overwrite = false) : bool
|
||||
{
|
||||
// TODO: Implement moveNode() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function deleteNode() : bool
|
||||
{
|
||||
// TODO: Implement deleteNode() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getCreatedAt() : \DateTime
|
||||
{
|
||||
// TODO: Implement getCreatedAt() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getChangedAt() : \DateTime
|
||||
{
|
||||
// TODO: Implement getChangedAt() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getOwner() : int
|
||||
{
|
||||
// TODO: Implement getOwner() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getPermission() : string
|
||||
{
|
||||
// TODO: Implement getPermission() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
// TODO: Implement index() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the current element
|
||||
* @link http://php.net/manual/en/iterator.current.php
|
||||
* @return mixed Can return any type.
|
||||
* @since 5.0.0
|
||||
*/
|
||||
public function current()
|
||||
{
|
||||
// TODO: Implement current() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Move forward to next element
|
||||
* @link http://php.net/manual/en/iterator.next.php
|
||||
* @return void Any returned value is ignored.
|
||||
* @since 5.0.0
|
||||
*/
|
||||
public function next()
|
||||
{
|
||||
// TODO: Implement next() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the key of the current element
|
||||
* @link http://php.net/manual/en/iterator.key.php
|
||||
* @return mixed scalar on success, or null on failure.
|
||||
* @since 5.0.0
|
||||
*/
|
||||
public function key()
|
||||
{
|
||||
// TODO: Implement key() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if current position is valid
|
||||
* @link http://php.net/manual/en/iterator.valid.php
|
||||
* @return boolean The return value will be casted to boolean and then evaluated.
|
||||
* Returns true on success or false on failure.
|
||||
* @since 5.0.0
|
||||
*/
|
||||
public function valid()
|
||||
{
|
||||
// TODO: Implement valid() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Rewind the Iterator to the first element
|
||||
* @link http://php.net/manual/en/iterator.rewind.php
|
||||
* @return void Any returned value is ignored.
|
||||
* @since 5.0.0
|
||||
*/
|
||||
public function rewind()
|
||||
{
|
||||
// TODO: Implement rewind() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether a offset exists
|
||||
* @link http://php.net/manual/en/arrayaccess.offsetexists.php
|
||||
* @param mixed $offset <p>
|
||||
* An offset to check for.
|
||||
* </p>
|
||||
* @return boolean true on success or false on failure.
|
||||
* </p>
|
||||
* <p>
|
||||
* The return value will be casted to boolean if non-boolean was returned.
|
||||
* @since 5.0.0
|
||||
*/
|
||||
public function offsetExists($offset)
|
||||
{
|
||||
// TODO: Implement offsetExists() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Offset to retrieve
|
||||
* @link http://php.net/manual/en/arrayaccess.offsetget.php
|
||||
* @param mixed $offset <p>
|
||||
* The offset to retrieve.
|
||||
* </p>
|
||||
* @return mixed Can return all value types.
|
||||
* @since 5.0.0
|
||||
*/
|
||||
public function offsetGet($offset)
|
||||
{
|
||||
// TODO: Implement offsetGet() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Offset to set
|
||||
* @link http://php.net/manual/en/arrayaccess.offsetset.php
|
||||
* @param mixed $offset <p>
|
||||
* The offset to assign the value to.
|
||||
* </p>
|
||||
* @param mixed $value <p>
|
||||
* The value to set.
|
||||
* </p>
|
||||
* @return void
|
||||
* @since 5.0.0
|
||||
*/
|
||||
public function offsetSet($offset, $value)
|
||||
{
|
||||
// TODO: Implement offsetSet() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* Offset to unset
|
||||
* @link http://php.net/manual/en/arrayaccess.offsetunset.php
|
||||
* @param mixed $offset <p>
|
||||
* The offset to unset.
|
||||
* </p>
|
||||
* @return void
|
||||
* @since 5.0.0
|
||||
*/
|
||||
public function offsetUnset($offset)
|
||||
{
|
||||
// TODO: Implement offsetUnset() method.
|
||||
return is_dir($path) || (!is_file($path) && stripos($path, '.') === false) ? Directory::class : File::class;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -441,7 +56,11 @@ class FtpStorage extends StorageAbstract
|
|||
*/
|
||||
public static function put(string $path, string $content, int $mode = 0) : bool
|
||||
{
|
||||
// TODO: Implement put() method.
|
||||
if (is_dir($path)) {
|
||||
throw new PathException($path);
|
||||
}
|
||||
|
||||
return File::put($path, $content, $mode);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -449,47 +68,31 @@ class FtpStorage extends StorageAbstract
|
|||
*/
|
||||
public static function get(string $path) : string
|
||||
{
|
||||
// TODO: Implement get() method.
|
||||
if (is_dir($path)) {
|
||||
throw new PathException($path);
|
||||
}
|
||||
|
||||
return File::get($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function putContent(string $content, int $mode = 0) : bool
|
||||
public static function create(string $path) : bool
|
||||
{
|
||||
// TODO: Implement putContent() method.
|
||||
return stripos($path, '.') === false ? Directory::create($path, 0755, true) : File::create($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getContent() : string
|
||||
public static function list(string $path, string $filter = '*') : array
|
||||
{
|
||||
// TODO: Implement getContent() method.
|
||||
}
|
||||
if (is_file($path)) {
|
||||
throw new PathException($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function sanitize(string $path, string $replace = '') : string
|
||||
{
|
||||
// TODO: Implement sanitize() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getNode(string $name)
|
||||
{
|
||||
// TODO: Implement getNode() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function addNode($file) : bool
|
||||
{
|
||||
// TODO: Implement addNode() method.
|
||||
return Directory::list($path, $filter);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -497,7 +100,11 @@ class FtpStorage extends StorageAbstract
|
|||
*/
|
||||
public static function set(string $path, string $content) : bool
|
||||
{
|
||||
// TODO: Implement set() method.
|
||||
if (is_dir($path)) {
|
||||
throw new PathException($path);
|
||||
}
|
||||
|
||||
return File::set($path, $content);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -505,7 +112,11 @@ class FtpStorage extends StorageAbstract
|
|||
*/
|
||||
public static function append(string $path, string $content) : bool
|
||||
{
|
||||
// TODO: Implement append() method.
|
||||
if (is_dir($path)) {
|
||||
throw new PathException($path);
|
||||
}
|
||||
|
||||
return File::append($path, $content);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -513,7 +124,11 @@ class FtpStorage extends StorageAbstract
|
|||
*/
|
||||
public static function prepend(string $path, string $content) : bool
|
||||
{
|
||||
// TODO: Implement prepend() method.
|
||||
if (is_dir($path)) {
|
||||
throw new PathException($path);
|
||||
}
|
||||
|
||||
return File::prepend($path, $content);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -521,38 +136,10 @@ class FtpStorage extends StorageAbstract
|
|||
*/
|
||||
public static function extension(string $path) : string
|
||||
{
|
||||
// TODO: Implement extension() method.
|
||||
}
|
||||
if (is_dir($path)) {
|
||||
throw new PathException($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function setContent(string $content) : bool
|
||||
{
|
||||
// TODO: Implement setContent() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function appendContent(string $content) : bool
|
||||
{
|
||||
// TODO: Implement appendContent() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function prependContent(string $content) : bool
|
||||
{
|
||||
// TODO: Implement prependContent() method.
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getExtension() : string
|
||||
{
|
||||
// TODO: Implement getExtension() method.
|
||||
return File::extension($path);
|
||||
}
|
||||
}
|
||||
|
|
@ -45,139 +45,11 @@ class LocalStorage extends StorageAbstract
|
|||
return self::$instance;
|
||||
}
|
||||
|
||||
private static function getClassType(string $path) : string
|
||||
protected static function getClassType(string $path) : string
|
||||
{
|
||||
return is_dir($path) || (!is_file($path) && stripos($path, '.') === false) ? Directory::class : File::class;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function created(string $path) : \DateTime
|
||||
{
|
||||
return self::getClassType($path)::created($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function changed(string $path) : \DateTime
|
||||
{
|
||||
return self::getClassType($path)::changed($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function owner(string $path) : int
|
||||
{
|
||||
return self::getClassType($path)::owner($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function permission(string $path) : int
|
||||
{
|
||||
return self::getClassType($path)::permission($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function parent(string $path) : string
|
||||
{
|
||||
return self::getClassType($path)::parent($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function create(string $path) : bool
|
||||
{
|
||||
return stripos($path, '.') === false ? Directory::create($path, 0755, true) : File::create($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function delete(string $path) : bool
|
||||
{
|
||||
return self::getClassType($path)::delete($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function copy(string $from, string $to, bool $overwrite = false) : bool
|
||||
{
|
||||
return self::getClassType($from)::copy($from, $to, $overwrite);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function move(string $from, string $to, bool $overwrite = false) : bool
|
||||
{
|
||||
return self::getClassType($from)::move($from, $to, $overwrite);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function size(string $path, bool $recursive = true) : int
|
||||
{
|
||||
return self::getClassType($path)::size($path, $recursive);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function exists(string $path) : bool
|
||||
{
|
||||
return self::getClassType($path)::exists($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function name(string $path) : string
|
||||
{
|
||||
return self::getClassType($path)::name($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function basename(string $path) : string
|
||||
{
|
||||
return self::getClassType($path)::basename($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function dirname(string $path) : string
|
||||
{
|
||||
return self::getClassType($path)::dirname($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function dirpath(string $path) : string
|
||||
{
|
||||
return self::getClassType($path)::dirpath($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function count(string $path, bool $recursive = true, array $ignore = []) : int
|
||||
{
|
||||
return self::getClassType($path)::count($path, $recursive, $ignore);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
|
|
@ -217,9 +89,9 @@ class LocalStorage extends StorageAbstract
|
|||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function sanitize(string $path, string $replace = '') : string
|
||||
public static function create(string $path) : bool
|
||||
{
|
||||
return self::getClassType($path)::sanitize($path, $replace);
|
||||
return stripos($path, '.') === false ? Directory::create($path, 0755, true) : File::create($path);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -72,27 +72,42 @@ abstract class StorageAbstract
|
|||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
abstract public static function created(string $path) : \DateTime;
|
||||
public static function created(string $path) : \DateTime
|
||||
{
|
||||
return static::getClassType($path)::created($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
abstract public static function changed(string $path) : \DateTime;
|
||||
public static function changed(string $path) : \DateTime
|
||||
{
|
||||
return static::getClassType($path)::changed($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
abstract public static function owner(string $path) : int;
|
||||
public static function owner(string $path) : int
|
||||
{
|
||||
return static::getClassType($path)::owner($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
abstract public static function permission(string $path) : int;
|
||||
public static function permission(string $path) : int
|
||||
{
|
||||
return static::getClassType($path)::permission($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
abstract public static function parent(string $path) : string;
|
||||
public static function parent(string $path) : string
|
||||
{
|
||||
return static::getClassType($path)::parent($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
|
|
@ -102,58 +117,96 @@ abstract class StorageAbstract
|
|||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
abstract public static function delete(string $path) : bool;
|
||||
public static function delete(string $path) : bool
|
||||
{
|
||||
return static::getClassType($path)::delete($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
abstract public static function copy(string $from, string $to, bool $overwrite = false) : bool;
|
||||
public static function copy(string $from, string $to, bool $overwrite = false) : bool
|
||||
{
|
||||
return static::getClassType($from)::copy($from, $to, $overwrite);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
abstract public static function move(string $from, string $to, bool $overwrite = false) : bool;
|
||||
public static function move(string $from, string $to, bool $overwrite = false) : bool
|
||||
{
|
||||
return static::getClassType($from)::move($from, $to, $overwrite);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
abstract public static function size(string $path, bool $recursive = true) : int;
|
||||
public static function size(string $path, bool $recursive = true) : int
|
||||
{
|
||||
return static::getClassType($path)::size($path, $recursive);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
abstract public static function exists(string $path) : bool;
|
||||
public static function exists(string $path) : bool
|
||||
{
|
||||
return static::getClassType($path)::exists($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
abstract public static function name(string $path) : string;
|
||||
public static function name(string $path) : string
|
||||
{
|
||||
return static::getClassType($path)::name($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
abstract public static function basename(string $path) : string;
|
||||
public static function basename(string $path) : string
|
||||
{
|
||||
return static::getClassType($path)::basename($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
abstract public static function dirname(string $path) : string;
|
||||
public static function dirname(string $path) : string
|
||||
{
|
||||
return static::getClassType($path)::dirname($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
abstract public static function dirpath(string $path) : string;
|
||||
public static function dirpath(string $path) : string
|
||||
{
|
||||
return static::getClassType($path)::dirpath($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function count(string $path, bool $recursive = true, array $ignore = []) : int
|
||||
{
|
||||
return static::getClassType($path)::count($path, $recursive, $ignore);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function sanitize(string $path, string $replace = '') : string
|
||||
{
|
||||
return static::getClassType($path)::sanitize($path, $replace);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
abstract public static function list(string $path, string $filter = '*') : array;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
abstract public static function count(string $path, bool $recursive = true, array $ignore = []) : int;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
|
|
@ -164,11 +217,6 @@ abstract class StorageAbstract
|
|||
*/
|
||||
abstract public static function get(string $path) : string;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
abstract public static function sanitize(string $path, string $replace = '') : string;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user