Documentation

Horde_Vfs_Mongo extends Horde_Vfs_Base
in package

MongoDB driver for VFS storage backend.

Tags
author

Michael Slusarz slusarz@horde.org

category

Horde

copyright

2013-2017 Horde LLC

license

http://www.horde.org/licenses/lgpl21 LGPL 2.1

Table of Contents

FNAME  = 'vfile'
FOLDER_OWNER  = 'owner'
FOLDER_PATH  = 'path'
FOLDER_TS  = 'ts'
MD  = 'metadata'
OWNER  = 'owner'
PATH  = 'vpath'
$_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).
$_features  : array<string|int, mixed>
List of features that the VFS driver supports.
$_files  : MongoGridFS
The MongoDB GridFS object for the VFS data.
$_folders  : MongoGridCollection
The MongoDB collection for the VFS folder data.
$_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.
$_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 in 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
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.
readStream()  : resource
Open a read-only 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.
_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.
_getFile()  : mixed
_getPath()  : mixed
Returns the full path of an item.
_isFolder()  : mixed
_listFolder()  : array<string|int, mixed>
Returns an an unsorted file list of the specified directory.
_mdKey()  : mixed
_write()  : mixed

Constants

FNAME

public mixed FNAME = 'vfile'

FOLDER_OWNER

public mixed FOLDER_OWNER = 'owner'

FOLDER_PATH

public mixed FOLDER_PATH = 'path'

FOLDER_TS

public mixed FOLDER_TS = 'ts'

MD

public mixed MD = 'metadata'

OWNER

public mixed OWNER = 'owner'

PATH

public mixed PATH = 'vpath'

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

$_features

List of features that the VFS driver supports.

protected array<string|int, mixed> $_features = array('readByteRange' => \false)

$_files

The MongoDB GridFS object for the VFS data.

protected MongoGridFS $_files

$_folders

The MongoDB collection for the VFS folder data.

protected MongoGridCollection $_folders

$_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))

$_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()

Additional parameters:

  - collection: (string) The collection name for the folders data.
  - gridfs: (string) The GridFS name.
  - mongo_db: [REQUIRED] (Horde_Mongo_Client) A MongoDB client object.
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
throws
Horde_Vfs_Exception
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
abstract
throws
Horde_Vfs_Exception
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
throws
Horde_Vfs_Exception
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
throws
Horde_Vfs_Exception
Return values
mixed

createFolder()

Creates a folder in the VFS.

public createFolder(mixed $path, mixed $name) : mixed
Parameters
$path : mixed

The parent folder.

$name : mixed

The name of the new folder.

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(mixed $path, mixed $name) : mixed
Parameters
$path : mixed

The path to delete the file from.

$name : mixed

The filename to delete.

Return values
mixed

deleteFolder()

Deletes a folder from the VFS.

public deleteFolder(mixed $path, mixed $name[, mixed $recursive = false ]) : mixed
Parameters
$path : mixed

The parent folder.

$name : mixed

The name of the folder to delete.

$recursive : mixed = false

Force a recursive delete?

Return values
mixed

emptyFolder()

Recursively remove all files and subfolders from the given folder.

public emptyFolder(mixed $path) : mixed
Parameters
$path : mixed

The path of the folder to empty.

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

public gc(mixed $path[, mixed $secs = 345600 ]) : mixed
Parameters
$path : mixed
$secs : mixed = 345600
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([mixed $path = null ]) : int
Parameters
$path : mixed = null

The path of the folder.

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
throws
Horde_Vfs_Exception
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
$feature : string

A feature name. See for a list of possible features.

Return values
bool

True if the feature is supported.

isFolder()

Checks if a given item is a folder.

public isFolder(mixed $path, mixed $name) : bool
Parameters
$path : mixed

The parent folder.

$name : mixed

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
todo

Move all but $path to an $opts argument.

throws
Horde_Vfs_Exception
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
throws
Horde_Vfs_Exception
Return values
mixed

read()

Retrieves a file from the VFS.

public read(mixed $path, mixed $name) : string
Parameters
$path : mixed

The pathname to the file.

$name : mixed

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(mixed $path, mixed $name, mixed &$offset, mixed $length, mixed &$remaining) : string
Parameters
$path : mixed

The pathname to the file.

$name : mixed

The filename to retrieve.

$offset : mixed

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

$length : mixed

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 : mixed

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

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
throws
Horde_Vfs_Exception
Return values
string

A local filename.

readStream()

Open a read-only 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.

Tags
throws
Horde_Vfs_Exception
Return values
resource

The stream.

rename()

Renames a file in the VFS.

public rename(mixed $oldpath, mixed $oldname, mixed $newpath, mixed $newname) : mixed
Parameters
$oldpath : mixed

The old path to the file.

$oldname : mixed

The old filename.

$newpath : mixed

The new path of the file.

$newname : mixed

The new filename.

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(mixed $path, mixed $name) : int
Parameters
$path : mixed

The pathname to the file.

$name : mixed

The filename to retrieve.

Return values
int

The file size.

write()

Stores a file in the VFS.

public write(mixed $path, mixed $name, mixed $tmpFile[, mixed $autocreate = false ]) : mixed
Parameters
$path : mixed

The path to store the file in.

$name : mixed

The filename to use.

$tmpFile : mixed

The temporary file containing the data to be stored.

$autocreate : mixed = false

Automatically create directories?

Return values
mixed

writeData()

Stores a file in the VFS from raw data.

public writeData(mixed $path, mixed $name, mixed $data[, mixed $autocreate = false ]) : mixed
Parameters
$path : mixed

The path to store the file in.

$name : mixed

The filename to use.

$data : mixed

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

$autocreate : mixed = false

Automatically create directories?

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
throws
Horce_Vfs_Exception

of both paths are the same.

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
throws
Horde_Vfs_Exception
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
throws
Horde_Vfs_Exception
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
throws
Horde_Vfs_Exception
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.

_getFile()

protected _getFile(mixed $path, mixed $name) : mixed
Parameters
$path : mixed
$name : mixed
Return values
mixed

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

_isFolder()

protected _isFolder(mixed $path) : mixed
Parameters
$path : mixed
Return values
mixed

_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
throws
Horde_Vfs_Exception
Return values
array<string|int, mixed>

File list.

_mdKey()

protected _mdKey(mixed $key) : mixed
Parameters
$key : mixed
Return values
mixed

_write()

protected _write(mixed $type, mixed $path, mixed $name, mixed $data, mixed $autocreate) : mixed
Parameters
$type : mixed
$path : mixed
$name : mixed
$data : mixed
$autocreate : mixed
Return values
mixed

Search results