\Horde_Vfs_Musql

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.

Summary

Methods
Properties
Constants
__construct()
size()
getFolderSize()
read()
readByteRange()
write()
writeData()
deleteFile()
rename()
createFolder()
isFolder()
deleteFolder()
gc()
hasFeature()
checkCredentials()
setParams()
getParam()
readFile()
move()
copy()
delete()
exists()
autocreatePath()
emptyFolder()
listFolder()
getCurrentDirectory()
changePermissions()
getRequiredCredentials()
getModifiablePermissions()
getVFSSize()
setQuota()
setQuotaRoot()
getQuota()
No public properties found
FILE
FOLDER
FLAG_READ
FLAG_WRITE
_listFolder()
_recursiveRename()
_getNativePath()
_readBlob()
_insertBlob()
_updateBlob()
_convertPath()
_getFileSizeOp()
_nullString()
_connect()
_checkDestination()
_copyRecursive()
_filterMatch()
_checkQuotaWrite()
_getDataSize()
_ensureSeekable()
_checkQuotaDelete()
_getPath()
$_db
$_permissions
$_features
$_params
$_credentials
$_vfsSize
N/A
No private methods found
No private properties found
N/A

Constants

FILE

FILE

FOLDER

FOLDER

FLAG_READ

FLAG_READ

FLAG_WRITE

FLAG_WRITE

Properties

$_db

$_db : \Horde_Db

Handle for the current database connection.

Type

\Horde_Db

$_permissions

$_permissions : array

List of permissions and if they can be changed in this VFS

Type

array

$_features

$_features : array

List of features that the VFS driver supports.

Type

array

$_params

$_params : array

Hash containing connection parameters.

Type

array

$_credentials

$_credentials : array

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).

Type

array

$_vfsSize

$_vfsSize : integer

The current size, in bytes, of the VFS tree.

Type

integer

Methods

__construct()

__construct(array  $params = array()) 

Constructor.

Parameters

array $params

A hash containing connection parameters.

size()

size(string  $path, string  $name) : integer

Retrieves the size of a file from the VFS.

Parameters

string $path

The pathname to the file.

string $name

The filename to retrieve.

Throws

\Horde_Vfs_Exception

Returns

integer —

The file size.

getFolderSize()

getFolderSize(string  $path = null) : integer

Returns the size of a folder.

Parameters

string $path

The path of the folder.

Throws

\Horde_Vfs_Exception

Returns

integer —

The size of the folder, in bytes.

read()

read(string  $path, string  $name) : string

Retrieves a file from the VFS.

Parameters

string $path

The pathname to the file.

string $name

The filename to retrieve.

Throws

\Horde_Vfs_Exception

Returns

string —

The file data.

readByteRange()

readByteRange(string  $path, string  $name, integer  $offset, integer  $length, integer  $remaining) : 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.

Parameters

string $path

The pathname to the file.

string $name

The filename to retrieve.

integer $offset

The offset of the part. (The new offset will be stored in here).

integer $length

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.

integer $remaining

The bytes that are left, after the part that is retrieved.

Throws

\Horde_Vfs_Exception

Returns

string —

The file data.

write()

write(string  $path, string  $name, string  $tmpFile, boolean  $autocreate = false) 

Stores a file in the VFS.

Parameters

string $path

The path to store the file in.

string $name

The filename to use.

string $tmpFile

The temporary file containing the data to be stored.

boolean $autocreate

Automatically create directories?

Throws

\Horde_Vfs_Exception

writeData()

writeData(string  $path, string  $name, string|resource  $data, boolean  $autocreate = false) 

Stores a file in the VFS from raw data.

Parameters

string $path

The path to store the file in.

string $name

The filename to use.

string|resource $data

The data as a string or stream resource. Resources allowed @since 2.4.0

boolean $autocreate

Automatically create directories?

Throws

\Horde_Vfs_Exception

deleteFile()

deleteFile(string  $path, string  $name) 

Deletes a file from the VFS.

Parameters

string $path

The path to store the file in.

string $name

The filename to use.

Throws

\Horde_Vfs_Exception

rename()

rename(string  $oldpath, string  $oldname, string  $newpath, string  $newname) 

Renames a file or folder in the VFS.

Parameters

string $oldpath

The old path to the file.

string $oldname

The old filename.

string $newpath

The new path of the file.

string $newname

The new filename.

Throws

\Horde_Vfs_Exception

createFolder()

createFolder(string  $path, string  $name) 

Creates a folder on the VFS.

Parameters

string $path

Holds the path of directory to create folder.

string $name

Holds the name of the new folder.

Throws

\Horde_Vfs_Exception

isFolder()

isFolder(string  $path, string  $name) : boolean

Checks if a given item is a folder.

Parameters

string $path

The parent folder.

string $name

The item name.

Returns

boolean —

True if it is a folder, false otherwise.

deleteFolder()

deleteFolder(string  $path, string  $name, boolean  $recursive = false) 

Deletes a folder from the VFS.

Parameters

string $path

The path to delete the folder from.

string $name

The foldername to use.

boolean $recursive

Force a recursive delete?

Throws

\Horde_Vfs_Exception

gc()

gc(string  $path, integer  $secs = 345600) 

Garbage collect files in the VFS storage system.

Parameters

string $path

The VFS path to clean.

integer $secs

The minimum amount of time (in seconds) required before a file is removed.

Throws

\Horde_Vfs_Exception

hasFeature()

hasFeature(string  $feature) : boolean

Returns whether the drivers supports a certain feature.

Parameters

string $feature

A feature name. See {@link $_features} for a list of possible features.

Returns

boolean —

True if the feature is supported.

checkCredentials()

checkCredentials() 

Checks the credentials that we have by calling _connect(), to see if there is a valid login.

Throws

\Horde_Vfs_Exception

setParams()

setParams(array  $params = array()) 

Sets configuration parameters.

Parameters

array $params

An associative array with parameter names as keys.

getParam()

getParam(string  $name) : mixed

Returns configuration parameters.

Parameters

string $name

The parameter to return.

Returns

mixed —

The parameter value or null if it doesn't exist.

readFile()

readFile(string  $path, string  $name) : string

Retrieves a file from the VFS as an on-disk local file.

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

string $path

The pathname to the file.

string $name

The filename to retrieve.

Throws

\Horde_Vfs_Exception

Returns

string —

A local filename.

move()

move(string  $path, string  $name, string  $dest, boolean  $autocreate = false) 

Moves a file through the backend.

Parameters

string $path

The path of the original file.

string $name

The name of the original file.

string $dest

The destination file name.

boolean $autocreate

Automatically create directories?

Throws

\Horde_Vfs_Exception

copy()

copy(string  $path, string  $name, string  $dest, boolean  $autocreate = false) 

Copies a file through the backend.

Parameters

string $path

The path of the original file.

string $name

The name of the original file.

string $dest

The name of the destination directory.

boolean $autocreate

Automatically create directories?

Throws

\Horde_Vfs_Exception

delete()

delete(  $path,   $name) 

Alias to deleteFile()

Parameters

$path
$name

exists()

exists(string  $path, string  $name) : boolean

Returns if a given file or folder exists in a folder.

Parameters

string $path

The path to the folder.

string $name

The file or folder name.

Returns

boolean —

True if it exists, false otherwise.

autocreatePath()

autocreatePath(string  $path) 

Automatically creates any necessary parent directories in the specified $path.

Parameters

string $path

The VFS path to autocreate.

Throws

\Horde_Vfs_Exception

emptyFolder()

emptyFolder(string  $path) 

Recursively remove all files and subfolders from the given folder.

Parameters

string $path

The path of the folder to empty.

Throws

\Horde_Vfs_Exception

listFolder()

listFolder(string  $path, string|array  $filter = null, boolean  $dotfiles = true, boolean  $dironly = false, boolean  $recursive = false) : array

Returns a file list of the directory passed in.

Parameters

string $path

The path of the directory.

string|array $filter

Regular expression(s) to filter file/directory name on.

boolean $dotfiles

Show dotfiles?

boolean $dironly

Show only directories?

boolean $recursive

Return all directory levels recursively?

Throws

\Horde_Vfs_Exception

Returns

array —

File list.

getCurrentDirectory()

getCurrentDirectory() : string

Returns the current working directory of the VFS backend.

Returns

string —

The current working directory.

changePermissions()

changePermissions(string  $path, string  $name, string  $permission) 

Changes permissions for an Item on the VFS.

Parameters

string $path

The path of directory of the item.

string $name

The name of the item.

string $permission

The permission to set in octal notation.

Throws

\Horde_Vfs_Exception

getRequiredCredentials()

getRequiredCredentials() : array

Returns the list of additional credentials required, if any.

Returns

array —

Credential list.

getModifiablePermissions()

getModifiablePermissions() : array

Returns an array specifying what permissions are changeable for this VFS implementation.

Returns

array —

Changeable permisions.

getVFSSize()

getVFSSize() : integer

Returns the size of the VFS item.

Returns

integer —

The size, in bytes, of the VFS item.

setQuota()

setQuota(integer  $quota, integer  $metric = \Horde_Vfs::QUOTA_METRIC_BYTE) 

Sets the VFS quota limit.

Parameters

integer $quota

The limit to apply.

integer $metric

The metric to multiply the quota into.

setQuotaRoot()

setQuotaRoot(string  $dir) 

Sets the VFS quota root.

Parameters

string $dir

The root directory for the quota determination.

getQuota()

getQuota() : mixed

Get quota information (used/allocated), in bytes.

Throws

\Horde_Vfs_Exception

Returns

mixed —

An associative array.

'limit' = Maximum quota allowed
'usage' = Currently used portion of quota (in bytes)

_listFolder()

_listFolder(string  $path, mixed  $filter = null, boolean  $dotfiles = true, boolean  $dironly = false) : array

Returns an an unsorted file list of the specified directory.

Parameters

string $path

The path of the directory.

mixed $filter

String/hash to filter file/dirname on.

boolean $dotfiles

Show dotfiles?

boolean $dironly

Show only directories?

Throws

\Horde_Vfs_Exception

Returns

array —

File list.

_recursiveRename()

_recursiveRename(  $oldpath,   $oldname,   $newpath,   $newname) 

Renames all child paths.

Parameters

$oldpath
$oldname
$newpath
$newname

Throws

\Horde_Vfs_Exception

_getNativePath()

_getNativePath(string  $path, string  $name) : string

Return a full filename on the native filesystem, from a VFS path and name.

Parameters

string $path

The VFS file path.

string $name

The VFS filename.

Returns

string —

The full native filename.

_readBlob()

_readBlob(string  $table, string  $field, array  $criteria) : mixed

Read file data from the SQL VFS backend.

Parameters

string $table

The VFS table name.

string $field

TODO

array $criteria

TODO

Throws

\Horde_Vfs_Exception

Returns

mixed —

TODO

_insertBlob()

_insertBlob(string  $table, string  $field, string  $data, string  $attributes) : mixed

TODO

Parameters

string $table

TODO

string $field

TODO

string $data

TODO

string $attributes

TODO

Throws

\Horde_Vfs_Exception

Returns

mixed —

TODO

_updateBlob()

_updateBlob(string  $table, string  $field, string  $data, string  $where, array  $alsoupdate) : mixed

TODO

Parameters

string $table

TODO

string $field

TODO

string $data

TODO

string $where

TODO

array $alsoupdate

TODO

Throws

\Horde_Vfs_Exception

Returns

mixed —

TODO

_convertPath()

_convertPath(string  $path) : string

Converts the path name from regular filesystem form to the internal format needed to access the file in the database.

Namely, we will treat '/' as a base directory as this is pretty much the standard way to access base directories over most filesystems.

Parameters

string $path

A VFS path.

Returns

string —

The path with any surrouding slashes stripped off.

_getFileSizeOp()

_getFileSizeOp() : string

TODO

Returns

string —

TODO

_nullString()

_nullString(string  $value) : array

Returns a comparison for a possibly empty string.

Returns IS NULL instead of an equals operator if the string is empty.

Parameters

string $value

A string.

Returns

array

_connect()

_connect() 

TODO

Throws

\Horde_Vfs_Exception

_checkDestination()

_checkDestination(string  $path, string  $dest) 

Checks whether a source and destination directory are the same.

Parameters

string $path

A source path.

string $dest

A destination path.

Throws

\Horce_Vfs_Exception

of both paths are the same.

_copyRecursive()

_copyRecursive(string  $path, string  $name, string  $dest) 

Recursively copies a directory through the backend.

Parameters

string $path

The path of the original file.

string $name

The name of the original file.

string $dest

The name of the destination directory.

Throws

\Horde_Vfs_Exception

_filterMatch()

_filterMatch(string|array  $filter, string  $filename) : boolean

Returns whether or not a file or directory name matches an filter element.

Parameters

string|array $filter

Regular expression(s) to build the filter from.

string $filename

String containing the file/directory name to match.

Returns

boolean —

True on match, false on no match.

_checkQuotaWrite()

_checkQuotaWrite(string  $mode, string  $data, string  $path = null, string  $name = null) 

Checks the quota when preparing to write data.

Parameters

string $mode

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.

string $data

Either the data or the filename to the data.

string $path

The path the file is located in.

string $name

The filename.

Throws

\Horde_Vfs_Exception

_getDataSize()

_getDataSize(string|resource  $data) : integer

Return the size of $data.

Parameters

string|resource $data

The data.

Returns

integer —

The data length.

_ensureSeekable()

_ensureSeekable(  $stream) 

Parameters

$stream

_checkQuotaDelete()

_checkQuotaDelete(string  $path, string  $name) 

Checks the quota when preparing to delete data.

Parameters

string $path

The path the file is located in.

string $name

The filename.

Throws

\Horde_Vfs_Exception

_getPath()

_getPath(string  $path, string  $name) : mixed

Returns the full path of an item.

Parameters

string $path

The path of directory of the item.

string $name

The name of the item.

Returns

mixed —

Full path when $path isset and just $name when not set.