Horde_Vfs_Musql
extends Horde_Vfs_Sql
in package
Multi User VFS implementation for Horde's database abstraction layer.
Required values for $params:
- db: A Horde_Db_Adapter object.
Optional values:
- table: (string) The name of the vfs table in 'database'. Defaults to 'horde_muvfs'.
Known Issues: Delete is not recusive, so files and folders that used to be in a folder that gets deleted live forever in the database, or re-appear when the folder is recreated. Rename has the same issue, so files are lost if a folder is renamed.
The table structure for the VFS can be created with the horde-db-migrate script from the Horde_Db package.
Copyright 2002-2017 Horde LLC (http://www.horde.org/)
See the enclosed file LICENSE for license information (LGPL). If you did not receive this file, see http://www.horde.org/licenses/lgpl21.
Tags
Table of Contents
- FILE = 1
- FLAG_READ = 1
- FLAG_WRITE = 2
- FOLDER = 2
- $_credentials : array<string|int, mixed>
- List of additional credentials required for this VFS backend (example: For FTP, we need a username and password to log in to the server with).
- $_db : Horde_Db
- Handle for the current database connection.
- $_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
- $_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.
- gc() : mixed
- Garbage collect files in the VFS storage system.
- 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 item 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.
- 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.
- rename() : mixed
- Renames a file or folder 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.
- _connect() : mixed
- TODO
- _convertPath() : string
- Converts the path name from regular filesystem form to the internal format needed to access the file in the database.
- _copyRecursive() : mixed
- Recursively copies a directory through the backend.
- _ensureSeekable() : mixed
- _filterMatch() : bool
- Returns whether or not a file or directory name matches an filter element.
- _getDataSize() : int
- Return the size of $data.
- _getFileSizeOp() : string
- TODO
- _getNativePath() : string
- Return a full filename on the native filesystem, from a VFS path and name.
- _getPath() : mixed
- Returns the full path of an item.
- _insertBlob() : mixed
- TODO
- _listFolder() : array<string|int, mixed>
- Returns an an unsorted file list of the specified directory.
- _nullString() : array<string|int, mixed>
- Returns a comparison for a possibly empty string.
- _readBlob() : mixed
- Read file data from the SQL VFS backend.
- _recursiveRename() : mixed
- Renames all child paths.
- _updateBlob() : mixed
- TODO
Constants
FILE
public
mixed
FILE
= 1
FLAG_READ
public
mixed
FLAG_READ
= 1
FLAG_WRITE
public
mixed
FLAG_WRITE
= 2
FOLDER
public
mixed
FOLDER
= 2
Properties
$_credentials
List of additional credentials required for this VFS backend (example: For FTP, we need a username and password to log in to the server with).
protected
array<string|int, mixed>
$_credentials
= array()
$_db
Handle for the current database connection.
protected
Horde_Db
$_db
= \false
$_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
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' => \true, 'write' => \true, 'execute' => \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 path of directory of the item.
- $name : string
-
The name of the item.
- $permission : string
-
The permission to set in octal notation.
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 of the original file.
- $name : string
-
The name of the original file.
- $dest : string
-
The name of the destination directory.
- $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
-
Holds the path of directory to create folder.
- $name : string
-
Holds 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 store the file in.
- $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 foldername to use.
- $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.
gc()
Garbage collect files in the VFS storage system.
public
gc(string $path[, int $secs = 345600 ]) : mixed
Parameters
- $path : string
-
The VFS path to clean.
- $secs : int = 345600
-
The minimum amount of time (in seconds) required before a file is removed.
Tags
Return values
mixed —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 item is a folder.
public
isFolder(string $path, string $name) : bool
Parameters
- $path : string
-
The parent folder.
- $name : string
-
The item 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 of the original file.
- $name : string
-
The name of the original file.
- $dest : string
-
The destination file name.
- $autocreate : bool = false
-
Automatically create directories?
Tags
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.
Tags
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.
Tags
Return values
string —A local filename.
rename()
Renames a file or folder 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 —_connect()
TODO
protected
_connect() : mixed
Tags
Return values
mixed —_convertPath()
Converts the path name from regular filesystem form to the internal format needed to access the file in the database.
protected
_convertPath(string $path) : string
Namely, we will treat '/' as a base directory as this is pretty much the standard way to access base directories over most filesystems.
Parameters
- $path : string
-
A VFS path.
Return values
string —The path with any surrouding slashes stripped off.
_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 —_ensureSeekable()
protected
_ensureSeekable(mixed $stream) : mixed
Parameters
- $stream : mixed
Return values
mixed —_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.
_getFileSizeOp()
TODO
protected
_getFileSizeOp() : string
Return values
string —TODO
_getNativePath()
Return a full filename on the native filesystem, from a VFS path and name.
protected
_getNativePath(string $path, string $name) : string
Parameters
- $path : string
-
The VFS file path.
- $name : string
-
The VFS filename.
Return values
string —The full native filename.
_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.
_insertBlob()
TODO
protected
_insertBlob(string $table, string $field, string $data, string $attributes) : mixed
Parameters
- $table : string
-
TODO
- $field : string
-
TODO
- $data : string
-
TODO
- $attributes : string
-
TODO
Tags
Return values
mixed —TODO
_listFolder()
Returns an an unsorted file list of the specified directory.
protected
_listFolder(string $path[, mixed $filter = null ][, bool $dotfiles = true ][, bool $dironly = false ]) : array<string|int, mixed>
Parameters
- $path : string
-
The path of the directory.
- $filter : mixed = null
-
String/hash to filter file/dirname on.
- $dotfiles : bool = true
-
Show dotfiles?
- $dironly : bool = false
-
Show only directories?
Tags
Return values
array<string|int, mixed> —File list.
_nullString()
Returns a comparison for a possibly empty string.
protected
_nullString(string $value) : array<string|int, mixed>
Returns IS NULL instead of an equals operator if the string is empty.
Parameters
- $value : string
-
A string.
Return values
array<string|int, mixed> —_readBlob()
Read file data from the SQL VFS backend.
protected
_readBlob(string $table, string $field, array<string|int, mixed> $criteria) : mixed
Parameters
- $table : string
-
The VFS table name.
- $field : string
-
TODO
- $criteria : array<string|int, mixed>
-
TODO
Tags
Return values
mixed —TODO
_recursiveRename()
Renames all child paths.
protected
_recursiveRename(mixed $oldpath, mixed $oldname, mixed $newpath, mixed $newname) : mixed
Parameters
- $oldpath : mixed
- $oldname : mixed
- $newpath : mixed
- $newname : mixed
Tags
Return values
mixed —_updateBlob()
TODO
protected
_updateBlob(string $table, string $field, string $data, string $where, array<string|int, mixed> $alsoupdate) : mixed
Parameters
- $table : string
-
TODO
- $field : string
-
TODO
- $data : string
-
TODO
- $where : string
-
TODO
- $alsoupdate : array<string|int, mixed>
-
TODO
Tags
Return values
mixed —TODO