\PrivateBin\DataFilesystem

Filesystem

Model for filesystem data access, implemented as a singleton.

Summary

Methods
Properties
Constants
getInstance()
create()
read()
delete()
exists()
createComment()
readComments()
existsComment()
purge()
No public properties found
No constants found
__construct()
_getExpiredPastes()
getOpenSlot()
$_instance
N/A
__clone()
_dataid2path()
_dataid2discussionpath()
_isFirstLevelDir()
_isSecondLevelDir()
No private properties found
N/A

Properties

Methods

getInstance()

getInstance(array  $options = null) : \PrivateBin\Data\Filesystem

get instance of singleton

Parameters

array $options

Returns

\PrivateBin\Data\Filesystem

create()

create(string  $pasteid, array  $paste) : boolean

Create a paste.

Parameters

string $pasteid
array $paste

Returns

boolean

read()

read(string  $pasteid) : \PrivateBin\Data\stdClass|false

Read a paste.

Parameters

string $pasteid

Returns

\PrivateBin\Data\stdClass|false

delete()

delete(string  $pasteid) 

Delete a paste and its discussion.

Parameters

string $pasteid

exists()

exists(string  $pasteid) : boolean

Test if a paste exists.

Parameters

string $pasteid

Returns

boolean

createComment()

createComment(string  $pasteid, string  $parentid, string  $commentid, array  $comment) : boolean

Create a comment in a paste.

Parameters

string $pasteid
string $parentid
string $commentid
array $comment

Returns

boolean

readComments()

readComments(string  $pasteid) : array

Read all comments of paste.

Parameters

string $pasteid

Returns

array

existsComment()

existsComment(string  $pasteid, string  $parentid, string  $commentid) : boolean

Test if a comment exists.

Parameters

string $pasteid
string $parentid
string $commentid

Returns

boolean

purge()

purge(integer  $batchsize) 

Perform a purge of old pastes, at most the given batchsize is deleted.

Parameters

integer $batchsize

__construct()

__construct() 

enforce singleton, disable constructor

Instantiate using \getInstance(), privatebin is a singleton object.

_getExpiredPastes()

_getExpiredPastes(integer  $batchsize) : array

Returns up to batch size number of paste ids that have expired

Parameters

integer $batchsize

Returns

array

getOpenSlot()

getOpenSlot(array  $comments, integer|string  $postdate) : integer|string

Get next free slot for comment from postdate.

Parameters

array $comments
integer|string $postdate

Returns

integer|string

__clone()

__clone() 

enforce singleton, disable cloning

Instantiate using \getInstance(), privatebin is a singleton object.

_dataid2path()

_dataid2path(string  $dataid) : string

Convert paste id to storage path.

The idea is to creates subdirectories in order to limit the number of files per directory. (A high number of files in a single directory can slow things down.) eg. "f468483c313401e8" will be stored in "data/f4/68/f468483c313401e8" High-trafic websites may want to deepen the directory structure (like Squid does).

eg. input 'e3570978f9e4aa90' --> output 'data/e3/57/'

Parameters

string $dataid

Returns

string

_dataid2discussionpath()

_dataid2discussionpath(string  $dataid) : string

Convert paste id to discussion storage path.

eg. input 'e3570978f9e4aa90' --> output 'data/e3/57/e3570978f9e4aa90.discussion/'

Parameters

string $dataid

Returns

string

_isFirstLevelDir()

_isFirstLevelDir(string  $element) : boolean

Check that the given element is a valid first level directory.

Parameters

string $element

Returns

boolean

_isSecondLevelDir()

_isSecondLevelDir(string  $element) : boolean

Check that the given element is a valid second level directory.

Parameters

string $element

Returns

boolean