AutoDatasource

Datasource that loads from other data sources automatically

 class Cms\Classes\AutoDatasource
extends Winter\Storm\Halcyon\Datasource\Datasource
implements 
    Winter\Storm\Halcyon\Datasource\DatasourceInterface

Traits

Trait Description
Emitter

Adds event related features to any class.

Properties

public $activeDatasourceKey : string

The key for the datasource to perform CRUD operations on

protected $allowCacheRefreshes : bool

Flag on whether the cache should respect refresh requests

protected $cacheKey : string

The cache key to use for this datasource instance

protected $datasources : array

The available datasource instances

protected $pathCache : array

Local cache of paths available in the datasources

protected $singleDatasourceMode : bool

Flag to indicate that we're in "single datasource mode"

protected $emitterEventCollection : array

Inherited from Emitter

Collection of registered events.

protected $emitterEventSorted : array

Inherited from Emitter

Sorted collection of events.

protected $emitterSingleEventCollection : array

Inherited from Emitter

Collection of registered events to be fired once only.

protected $forceDeleting : bool

Inherited from Datasource

Indicates if the record is currently being force deleted.

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

Inherited from Datasource

The query post processor implementation.

Methods

public __construct (array $datasources, $cacheKey = null) : void

Create a new datasource instance.

Parameters
Property Description
$datasources
array

Array of datasources to utilize. Lower indexes = higher priority ['datasourceName' => $datasource]

$cacheKey
mixed
Returns
void

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 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 getPathCache () : array

Returns the in memory path cache map

Returns
array

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 getSourcePaths (string $source) : void

Get the available paths for the specified datasource key

Parameters
Property Description
$source
string

The string key of the datasource to check

Returns
void

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 populateCache (boolean $refresh = false) : void

Populate the local cache of paths available in each datasource

Parameters
Property Description
$refresh
boolean

Default false, set to true to force the cache to be rebuilt

Returns
void

public pushToSource (Winter\Storm\Halcyon\Model $model, string $source) : void

Push the provided model to the specified datasource

Parameters
Property Description
$model
Winter\Storm\Halcyon\Model

The Halcyon Model to push

$source
string

The string key of the datasource to use

Returns
void

public removeFromSource (Winter\Storm\Halcyon\Model $model, string $source) : void

Remove the provided model from the specified datasource

Parameters
Property Description
$model
Winter\Storm\Halcyon\Model

The Halcyon model to remove

$source
string

The string key of the datasource to use

Returns
void

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 sourceHasModel (string $source, Winter\Storm\Halcyon\Model $model) : bool

Check to see if the specified datasource has the provided Halcyon Model

Parameters
Property Description
$source
string

The string key of the datasource to check

$model
Winter\Storm\Halcyon\Model

The Halcyon Model to check for

Returns
bool

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.

public usingSource (string $source, Closure $closure) : mixed

Forces all operations in a provided closure to run within a selected datasource.

Parameters
Property Description
$source
string
$closure
Closure
Returns
mixed

protected getActiveDatasource () : DatasourceInterface

Get the datasource for use with CRUD operations

Returns

protected getDatasourceForPath (string $path) : Datasource

Get the appropriate datasource for the provided path

Parameters
Property Description
$path
string
Returns

protected getValidPaths (string $dirName, array $options = []) : array

Get all valid paths for the provided directory, removing any paths marked as deleted

Parameters
Property Description
$dirName
string
$options
array

Array of options, [ 'extensions' => ['htm', 'md', 'twig'], // Extensions to search for 'fileMatch' => '*gr[ae]y', // Shell matching pattern to match the filename against using the fnmatch function ];

Returns
array

$paths ["$dirName/path/1.md", "$dirName/path/2.md"]

protected makeFilePath (string $dirName, string $fileName, string $extension) : string

Helper to make file path.

Parameters
Property Description
$dirName
string
$fileName
string
$extension
string
Returns
string

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

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

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.

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

Inherited from Datasource
Parameters
Property Description
$dirName
string
$fileName
string
$extension
string
Returns
bool

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

Inherited from Datasource
Returns
Winter\Storm\Halcyon\Processors\Processor

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

protected emitterEventSortEvents (string $eventName) : void

Inherited from Emitter

Sort the listeners for a given event by priority.

Parameters
Property Description
$eventName
string
Returns
void

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
Copyright © 2024 Winter CMS