Datasource

Datasource base class.

abstract class Winter\Storm\Halcyon\Datasource\Datasource
implements 
    Winter\Storm\Halcyon\Datasource\DatasourceInterface

Traits

Trait Description
Emitter

Adds event related features to any class.

Properties

protected $forceDeleting : bool

Indicates if the record is currently being force deleted.

protected $postProcessor : Winter\Storm\Halcyon\Processors\Processor

The query post processor implementation.

inherited protected $emitterEventCollection : array

Inherited from Emitter

Collection of registered events.

inherited protected $emitterEventSorted : array

Inherited from Emitter

Sorted collection of events.

inherited protected $emitterSingleEventCollection : array

Inherited from Emitter

Collection of registered events to be fired once only.

Methods

public delete (string $dirName, string $fileName, string $extension) : bool

Runs a delete statement against the datasource.

Parameters
Property Description
$dirName
string

The directory in which the model is stored.

$fileName
string

The filename of the model.

$extension
string

The file extension of the model.

Returns
bool

If the delete operation completed successfully.

public forceDelete (string $dirName, string $fileName, string $extension) : bool

Runs a delete statement against the datasource, forcing the complete removal of the model (template).

Parameters
Property Description
$dirName
string

The directory in which the model is stored.

$fileName
string

The filename of the model.

$extension
string

The file extension of the model.

Returns
bool

If the delete operation completed successfully.

public getAvailablePaths () : array

Get all available paths within this datasource.

This method returns an array, with all available paths as the key, and a boolean that represents whether the path can be handled or modified.

Example:

[
    'path/to/file.md' => true, // (this path is available, and can be handled)
    'path/to/file2.md' => false // (this path is available, but cannot be handled)
]
Returns
array

An array of available paths alongside whether they can be handled.

public getPathsCacheKey () : string

Gets the prefix of the cache keys.

This is based off a prefix including the base path for the model.

Returns
string

The cache key prefix.

public getPostProcessor () : Winter\Storm\Halcyon\Processors\Processor

Get the query post processor used by the connection.

Returns
Winter\Storm\Halcyon\Processors\Processor

public insert (string $dirName, string $fileName, string $extension, string $content) : integer

Creates a new Halcyon model (template).

Parameters
Property Description
$dirName
string

The directory in which the model is stored.

$fileName
string

The filename of the model.

$extension
string

The file extension of the model.

$content
string

The content to store for the model.

Returns
integer

The filesize of the created model.

public lastModified (string $dirName, string $fileName, string $extension) : integer | null

Returns the last modified date of a model (template).

Parameters
Property Description
$dirName
string

The directory in which the model is stored.

$fileName
string

The filename of the model.

$extension
string

The file extension of the model.

Returns
integer | null

The last modified time as a timestamp, or null if the object doesn't exist.

public makeCacheKey (string $name = "") : string

Generate a cache key unique to this datasource.

Parameters
Property Description
$name
string

The name of the key.

Returns
string

The hashed key.

public select (string $dirName, array $options = []) : array

Returns all Halcyon models (templates) within a given directory.

You can provide multiple options with the $options property, in order to filter the retrieved records:

  • columns: Only retrieve certain columns. Must be an array with any combination of fileName, mtime and content.
  • extensions: Defines the accepted extensions as an array. Eg: ['htm', 'md', 'twig']
  • fileMatch: Defines a glob string to match filenames against. Eg: '*gr[ae]y'
  • orders: Not implemented
  • limit: Not implemented
  • offset: Not implemented
Parameters
Property Description
$dirName
string

The directory in which the model is stored.

$options
array

Defines the options for this query.

Returns
array

An array of models found, with the columns defined as per the columns parameter for $options.

public selectOne (string $dirName, string $fileName, string $extension) : array | null

Returns a single Halcyon model (template).

Parameters
Property Description
$dirName
string

The directory in which the model is stored.

$fileName
string

The filename of the model.

$extension
string

The file extension of the model.

Returns
array | null

An array of template data (fileName, mtime and content), or null if the model does not exist.

public update (string $dirName, string $fileName, string $extension, string $content, $oldFileName = null, $oldExtension = null) : integer

Updates an existing Halcyon model (template).

Parameters
Property Description
$dirName
string

The directory in which the model is stored.

$fileName
string

The filename of the model.

$extension
string

The file extension of the model.

$content
string

The content to store for the model.

$oldFileName
mixed

Used for renaming templates. If specified, this will delete the "old" path.

$oldExtension
mixed

Used for renaming templates. If specified, this will delete the "old" path.

Returns
integer

The filesize of the updated model.

inherited public bindEvent (string | Closure | QueuedClosure $event, mixed $callback = null, integer $priority) : self

Inherited from Emitter

Create a new event binding.

Parameters
Property Description
$event
string | Closure | QueuedClosure
$callback
mixed

when the third parameter is omitted and a Closure or QueuedClosure is provided this parameter is used as an integer this is used as priority variable

$priority
integer
Returns
self

inherited public bindEventOnce (string | Closure | QueuedClosure $event, QueuedClosure | Closure | null $callback = null) : self

Inherited from Emitter

Create a new event binding that fires once only

Parameters
Property Description
$event
string | Closure | QueuedClosure
$callback
QueuedClosure | Closure | null

When a Closure or QueuedClosure is provided as the first parameter this parameter can be omitted

Returns
self

inherited public fireEvent (string $event, array $params = [], boolean $halt = false) : array | mixed | null

Inherited from Emitter

Fire an event and call the listeners.

Parameters
Property Description
$event
string

Event name

$params
array

Event parameters

$halt
boolean

Halt after first non-null result

Returns
array | mixed | null

If halted, the first non-null result. If not halted, an array of event results. Returns null if no listeners returned a result.

inherited public unbindEvent (string | array | object $event = null) : self

Inherited from Emitter

Destroys an event binding.

Parameters
Property Description
$event
string | array | object

Event to destroy

Returns
self

inherited protected emitterEventSortEvents (string $eventName) : void

Inherited from Emitter

Sort the listeners for a given event by priority.

Parameters
Property Description
$eventName
string
Returns
void

inherited protected parseEventAndPayload (mixed $event, mixed $payload = null) : array

Inherited from Emitter

Parse the given event and payload and prepare them for dispatching.

Parameters
Property Description
$event
mixed
$payload
mixed
Returns
array

Extended by

Class Description
AutoDatasource

Datasource that loads from other data sources automatically

DbDatasource

Database based data source

FileDatasource

File based datasource.

Copyright © 2024 Winter CMS