Horde_Vfs_Smb
extends Horde_Vfs_Base
in package
Stateless VFS implementation for a SMB server, based on smbclient.
Required values for $params:
- username: (string) The username with which to connect to the SMB server.
- password: (string) The password with which to connect to the SMB server.
- hostspec: (string) The SMB server to connect to.
- share: (string) The share to access on the SMB server. Any trailing paths will removed from the share and prepended to each path in further requests. Example: a share of 'myshare/basedir' and a request to 'dir/subdir' will result in a request to 'basedir/dir/subdir' on myshare.
- smbclient: (string) The path to the 'smbclient' executable.
Optional values for $params:
- port: (integer) The SMB port number to connect to.
- ipaddress: (string) The address of the server to connect to.
Functions not implemented:
- changePermissions(): The SMB permission style does not fit with the module.
All paths need to use forward slashes!
Tags
Table of Contents
- $_credentials : array<string|int, mixed>
- List of additional credentials required for this VFS backend.
- $_features : array<string|int, mixed>
- List of features that the VFS driver supports.
- $_params : array<string|int, mixed>
- Hash containing connection parameters.
- $_permissions : array<string|int, mixed>
- List of permissions and if they can be changed in this VFS backend.
- $_prefix : string
- Prefix to use for every path.
- $_rootCreated : bool
- Has the vfsroot already been created?
- $_vfsSize : int
- The current size, in bytes, of the VFS tree.
- __construct() : mixed
- Constructor.
- autocreatePath() : mixed
- Automatically creates any necessary parent directories in the specified $path.
- changePermissions() : mixed
- Changes permissions for an item on the VFS.
- checkCredentials() : mixed
- Checks the credentials that we have by calling _connect(), to see if there is a valid login.
- copy() : mixed
- Copies a file through the backend.
- createFolder() : mixed
- Creates a folder on the VFS.
- delete() : mixed
- Alias to deleteFile()
- deleteFile() : mixed
- Deletes a file from the VFS.
- deleteFolder() : mixed
- Deletes a folder from the VFS.
- emptyFolder() : mixed
- Recursively remove all files and subfolders from the given folder.
- exists() : bool
- Returns if a given file or folder exists in a folder.
- getCurrentDirectory() : string
- Returns the current working directory of the VFS backend.
- getFolderSize() : int
- Returns the size of a folder.
- getModifiablePermissions() : array<string|int, mixed>
- Returns an array specifying what permissions are changeable for this VFS implementation.
- getParam() : mixed
- Returns configuration parameters.
- getQuota() : mixed
- Get quota information (used/allocated), in bytes.
- getRequiredCredentials() : array<string|int, mixed>
- Returns the list of additional credentials required, if any.
- getVFSSize() : int
- Returns the size of the VFS item.
- hasFeature() : bool
- Returns whether the drivers supports a certain feature.
- isFolder() : bool
- Checks if a given pathname is a folder.
- listFolder() : array<string|int, mixed>
- Returns a file list of the directory passed in.
- move() : mixed
- Moves a file through the backend.
- parseListing() : mixed
- read() : string
- Retrieves a file from the VFS.
- readByteRange() : string
- Retrieves a part of a file from the VFS. Particularly useful when reading large files which would exceed the PHP memory limits if they were stored in a string.
- readFile() : string
- Retrieves a file from the VFS as an on-disk local file.
- readStream() : resource
- Open a stream to a file in the VFS.
- rename() : mixed
- Renames a file in the VFS.
- setParams() : mixed
- Sets configuration parameters.
- setQuota() : mixed
- Sets the VFS quota limit.
- setQuotaRoot() : mixed
- Sets the VFS quota root.
- size() : int
- Retrieves the size of a file from the VFS.
- write() : mixed
- Stores a file in the VFS.
- writeData() : mixed
- Stores a file in the VFS from raw data.
- _checkDestination() : mixed
- Checks whether a source and destination directory are the same.
- _checkQuotaDelete() : mixed
- Checks the quota when preparing to delete data.
- _checkQuotaWrite() : mixed
- Checks the quota when preparing to write data.
- _command() : array<string|int, mixed>
- Executes SMB commands - without authentication - and returns output lines in array.
- _connect() : mixed
- Authenticates a user on the SMB server and share.
- _copyRecursive() : mixed
- Recursively copies a directory through the backend.
- _createRoot() : mixed
- Creates the vfsroot.
- _ensureSeekable() : mixed
- _escapeShellCommand() : array<string|int, mixed>
- Replacement for escapeshellcmd(), variable length args, as we only want certain characters escaped.
- _execute() : array<string|int, mixed>
- Executes a command and returns output lines in array.
- _filterMatch() : bool
- Returns whether or not a file or directory name matches an filter element.
- _getDataSize() : int
- Return the size of $data.
- _getNativePath() : string
- Returns the full path of a directory.
- _getPath() : mixed
- Returns the full path of an item.
- _listFolder() : array<string|int, mixed>
- Returns an an unsorted file list of the specified directory.
Properties
$_credentials
List of additional credentials required for this VFS backend.
protected
array<string|int, mixed>
$_credentials
= array('username', 'password')
$_features
List of features that the VFS driver supports.
protected
array<string|int, mixed>
$_features
= array('readByteRange' => \false)
$_params
Hash containing connection parameters.
protected
array<string|int, mixed>
$_params
= array()
$_permissions
List of permissions and if they can be changed in this VFS backend.
protected
array<string|int, mixed>
$_permissions
= array('owner' => array('read' => \false, 'write' => \false, 'execute' => \false), 'group' => array('read' => \false, 'write' => \false, 'execute' => \false), 'all' => array('read' => \false, 'write' => \false, 'execute' => \false))
$_prefix
Prefix to use for every path.
protected
string
$_prefix
= ''
Passed as a path suffix to the share parameter.
$_rootCreated
Has the vfsroot already been created?
protected
bool
$_rootCreated
= \false
$_vfsSize
The current size, in bytes, of the VFS tree.
protected
int
$_vfsSize
= \null
Methods
__construct()
Constructor.
public
__construct([array<string|int, mixed> $params = array() ]) : mixed
Parameters
- $params : array<string|int, mixed> = array()
-
A hash containing connection parameters.
Return values
mixed —autocreatePath()
Automatically creates any necessary parent directories in the specified $path.
public
autocreatePath(string $path) : mixed
Parameters
- $path : string
-
The VFS path to autocreate.
Tags
Return values
mixed —changePermissions()
Changes permissions for an item on the VFS.
public
changePermissions(string $path, string $name, string $permission) : mixed
Parameters
- $path : string
-
The parent folder of the item.
- $name : string
-
The name of the item.
- $permission : string
-
The permission to set.
Tags
Return values
mixed —checkCredentials()
Checks the credentials that we have by calling _connect(), to see if there is a valid login.
public
checkCredentials() : mixed
Tags
Return values
mixed —copy()
Copies a file through the backend.
public
copy(string $path, string $name, string $dest[, bool $autocreate = false ]) : mixed
Parameters
- $path : string
-
The path to store the file in.
- $name : string
-
The filename to use.
- $dest : string
-
The destination of the file.
- $autocreate : bool = false
-
Automatically create directories?
Tags
Return values
mixed —createFolder()
Creates a folder on the VFS.
public
createFolder(string $path, string $name) : mixed
Parameters
- $path : string
-
The path of directory to create folder.
- $name : string
-
The name of the new folder.
Tags
Return values
mixed —delete()
Alias to deleteFile()
public
delete(mixed $path, mixed $name) : mixed
Parameters
- $path : mixed
- $name : mixed
Return values
mixed —deleteFile()
Deletes a file from the VFS.
public
deleteFile(string $path, string $name) : mixed
Parameters
- $path : string
-
The path to delete the file from.
- $name : string
-
The filename to use.
Tags
Return values
mixed —deleteFolder()
Deletes a folder from the VFS.
public
deleteFolder(string $path, string $name[, bool $recursive = false ]) : mixed
Parameters
- $path : string
-
The path to delete the folder from.
- $name : string
-
The name of the folder to delete.
- $recursive : bool = false
-
Force a recursive delete?
Tags
Return values
mixed —emptyFolder()
Recursively remove all files and subfolders from the given folder.
public
emptyFolder(string $path) : mixed
Parameters
- $path : string
-
The path of the folder to empty.
Tags
Return values
mixed —exists()
Returns if a given file or folder exists in a folder.
public
exists(string $path, string $name) : bool
Parameters
- $path : string
-
The path to the folder.
- $name : string
-
The file or folder name.
Return values
bool —True if it exists, false otherwise.
getCurrentDirectory()
Returns the current working directory of the VFS backend.
public
getCurrentDirectory() : string
Return values
string —The current working directory.
getFolderSize()
Returns the size of a folder.
public
getFolderSize([string $path = null ]) : int
Parameters
- $path : string = null
-
The path of the folder.
Tags
Return values
int —The size of the folder, in bytes.
getModifiablePermissions()
Returns an array specifying what permissions are changeable for this VFS implementation.
public
getModifiablePermissions() : array<string|int, mixed>
Return values
array<string|int, mixed> —Changeable permisions.
getParam()
Returns configuration parameters.
public
getParam(string $name) : mixed
Parameters
- $name : string
-
The parameter to return.
Return values
mixed —The parameter value or null if it doesn't exist.
getQuota()
Get quota information (used/allocated), in bytes.
public
getQuota() : mixed
Tags
Return values
mixed —An associative array.
'limit' = Maximum quota allowed 'usage' = Currently used portion of quota (in bytes)
getRequiredCredentials()
Returns the list of additional credentials required, if any.
public
getRequiredCredentials() : array<string|int, mixed>
Return values
array<string|int, mixed> —Credential list.
getVFSSize()
Returns the size of the VFS item.
public
getVFSSize() : int
Return values
int —The size, in bytes, of the VFS item.
hasFeature()
Returns whether the drivers supports a certain feature.
public
hasFeature(string $feature) : bool
Parameters
Return values
bool —True if the feature is supported.
isFolder()
Checks if a given pathname is a folder.
public
isFolder(string $path, string $name) : bool
Parameters
- $path : string
-
The path to the folder.
- $name : string
-
The file or folder name.
Return values
bool —True if it is a folder, false otherwise.
listFolder()
Returns a file list of the directory passed in.
public
listFolder([string $path = '' ][, string|array<string|int, mixed> $filter = null ][, bool $dotfiles = true ][, bool $dironly = false ][, bool $recursive = false ]) : array<string|int, mixed>
Parameters
- $path : string = ''
-
The path of the directory.
- $filter : string|array<string|int, mixed> = null
-
Regular expression(s) to filter file/directory name on.
- $dotfiles : bool = true
-
Show dotfiles?
- $dironly : bool = false
-
Show only directories?
- $recursive : bool = false
-
Return all directory levels recursively?
Tags
Return values
array<string|int, mixed> —File list.
move()
Moves a file through the backend.
public
move(string $path, string $name, string $dest[, bool $autocreate = false ]) : mixed
Parameters
- $path : string
-
The path to store the file in.
- $name : string
-
The filename to use.
- $dest : string
-
The destination of the file.
- $autocreate : bool = false
-
Automatically create directories?
Tags
Return values
mixed —parseListing()
public
parseListing(mixed $res, mixed $filter, mixed $dotfiles, mixed $dironly) : mixed
Parameters
- $res : mixed
- $filter : mixed
- $dotfiles : mixed
- $dironly : mixed
Return values
mixed —read()
Retrieves a file from the VFS.
public
read(string $path, string $name) : string
Parameters
- $path : string
-
The pathname to the file.
- $name : string
-
The filename to retrieve.
Return values
string —The file data.
readByteRange()
Retrieves a part of a file from the VFS. Particularly useful when reading large files which would exceed the PHP memory limits if they were stored in a string.
public
readByteRange(string $path, string $name, int &$offset, int $length, int &$remaining) : string
Parameters
- $path : string
-
The pathname to the file.
- $name : string
-
The filename to retrieve.
- $offset : int
-
The offset of the part. (The new offset will be stored in here).
- $length : int
-
The length of the part. If the length = -1, the whole part after the offset is retrieved. If more bytes are given as exists after the given offset. Only the available bytes are read.
- $remaining : int
-
The bytes that are left, after the part that is retrieved.
Tags
Return values
string —The file data.
readFile()
Retrieves a file from the VFS as an on-disk local file.
public
readFile(string $path, string $name) : string
This function provides a file on local disk with the data of a VFS file in it. This file cannot be modified! The behavior if you do modify it is undefined. It will be removed at the end of the request.
Parameters
- $path : string
-
The pathname to the file.
- $name : string
-
The filename to retrieve.
Return values
string —A local filename.
readStream()
Open a stream to a file in the VFS.
public
readStream(string $path, string $name) : resource
Parameters
- $path : string
-
The pathname to the file.
- $name : string
-
The filename to retrieve.
Return values
resource —The stream.
rename()
Renames a file in the VFS.
public
rename(string $oldpath, string $oldname, string $newpath, string $newname) : mixed
Parameters
- $oldpath : string
-
The old path to the file.
- $oldname : string
-
The old filename.
- $newpath : string
-
The new path of the file.
- $newname : string
-
The new filename.
Tags
Return values
mixed —setParams()
Sets configuration parameters.
public
setParams([array<string|int, mixed> $params = array() ]) : mixed
Parameters
- $params : array<string|int, mixed> = array()
-
An associative array with parameter names as keys.
Return values
mixed —setQuota()
Sets the VFS quota limit.
public
setQuota(int $quota[, int $metric = Horde_Vfs::QUOTA_METRIC_BYTE ]) : mixed
Parameters
- $quota : int
-
The limit to apply.
- $metric : int = Horde_Vfs::QUOTA_METRIC_BYTE
-
The metric to multiply the quota into.
Return values
mixed —setQuotaRoot()
Sets the VFS quota root.
public
setQuotaRoot(string $dir) : mixed
Parameters
- $dir : string
-
The root directory for the quota determination.
Return values
mixed —size()
Retrieves the size of a file from the VFS.
public
size(string $path, string $name) : int
Parameters
- $path : string
-
The pathname to the file.
- $name : string
-
The filename to retrieve.
Tags
Return values
int —The file size.
write()
Stores a file in the VFS.
public
write(string $path, string $name, string $tmpFile[, bool $autocreate = false ]) : mixed
Parameters
- $path : string
-
The path to store the file in.
- $name : string
-
The filename to use.
- $tmpFile : string
-
The temporary file containing the data to be stored.
- $autocreate : bool = false
-
Automatically create directories?
Tags
Return values
mixed —writeData()
Stores a file in the VFS from raw data.
public
writeData(string $path, string $name, string|resource $data[, bool $autocreate = false ]) : mixed
Parameters
- $path : string
-
The path to store the file in.
- $name : string
-
The filename to use.
- $data : string|resource
-
The data as a string or stream resource. Resources allowed @since 2.4.0
- $autocreate : bool = false
-
Automatically create directories?
Tags
Return values
mixed —_checkDestination()
Checks whether a source and destination directory are the same.
protected
_checkDestination(string $path, string $dest) : mixed
Parameters
- $path : string
-
A source path.
- $dest : string
-
A destination path.
Tags
Return values
mixed —_checkQuotaDelete()
Checks the quota when preparing to delete data.
protected
_checkQuotaDelete(string $path, string $name) : mixed
Parameters
- $path : string
-
The path the file is located in.
- $name : string
-
The filename.
Tags
Return values
mixed —_checkQuotaWrite()
Checks the quota when preparing to write data.
protected
_checkQuotaWrite(string $mode, string $data[, string $path = null ][, string $name = null ]) : mixed
Parameters
- $mode : string
-
Either 'string' or 'file'. If 'string', $data is the data to be written. If 'file', $data is the filename containing the data to be written.
- $data : string
-
Either the data or the filename to the data.
- $path : string = null
-
The path the file is located in.
- $name : string = null
-
The filename.
Tags
Return values
mixed —_command()
Executes SMB commands - without authentication - and returns output lines in array.
protected
_command(array<string|int, mixed> $path, array<string|int, mixed> $cmd) : array<string|int, mixed>
Parameters
- $path : array<string|int, mixed>
-
Base path for command.
- $cmd : array<string|int, mixed>
-
Commands to be executed.
Tags
Return values
array<string|int, mixed> —Array on success.
_connect()
Authenticates a user on the SMB server and share.
protected
_connect() : mixed
Tags
Return values
mixed —_copyRecursive()
Recursively copies a directory through the backend.
protected
_copyRecursive(string $path, string $name, string $dest) : mixed
Parameters
- $path : string
-
The path of the original file.
- $name : string
-
The name of the original file.
- $dest : string
-
The name of the destination directory.
Tags
Return values
mixed —_createRoot()
Creates the vfsroot.
protected
_createRoot() : mixed
Return values
mixed —_ensureSeekable()
protected
_ensureSeekable(mixed $stream) : mixed
Parameters
- $stream : mixed
Return values
mixed —_escapeShellCommand()
Replacement for escapeshellcmd(), variable length args, as we only want certain characters escaped.
protected
_escapeShellCommand() : array<string|int, mixed>
Return values
array<string|int, mixed> —TODO
_execute()
Executes a command and returns output lines in array.
protected
_execute(string $cmd) : array<string|int, mixed>
Parameters
- $cmd : string
-
Command to be executed.
Tags
Return values
array<string|int, mixed> —Array on success.
_filterMatch()
Returns whether or not a file or directory name matches an filter element.
protected
_filterMatch(string|array<string|int, mixed> $filter, string $filename) : bool
Parameters
- $filter : string|array<string|int, mixed>
-
Regular expression(s) to build the filter from.
- $filename : string
-
String containing the file/directory name to match.
Return values
bool —True on match, false on no match.
_getDataSize()
Return the size of $data.
protected
_getDataSize(string|resource $data) : int
Parameters
- $data : string|resource
-
The data.
Return values
int —The data length.
_getNativePath()
Returns the full path of a directory.
protected
_getNativePath(string $path) : string
Parameters
- $path : string
-
The directory.
Return values
string —Full path to the directory.
_getPath()
Returns the full path of an item.
protected
_getPath(string $path, string $name) : mixed
Parameters
- $path : string
-
The path of directory of the item.
- $name : string
-
The name of the item.
Return values
mixed —Full path when $path isset and just $name when not set.
_listFolder()
Returns an an unsorted file list of the specified directory.
protected
_listFolder(string $path[, string|array<string|int, mixed> $filter = null ][, bool $dotfiles = true ][, bool $dironly = false ]) : array<string|int, mixed>
Parameters
- $path : string
-
The path of the directory.
- $filter : string|array<string|int, mixed> = null
-
Regular expression(s) to filter file/directory name on.
- $dotfiles : bool = true
-
Show dotfiles?
- $dironly : bool = false
-
Show only directories?
Tags
Return values
array<string|int, mixed> —File list.