class FileIDHelperResolutionStrategy implements FileResolutionStrategy (View source)

File resolution strategy that relies on a list of FileIDHelpers to find files.

  • DefaultFileIDHelper is the default helper use to generate new file ID.
  • ResolutionFileIDHelpers can contain a list of helpers that will be used to try to find existing file.

This file resolution strategy can be helpful when the approach to resolving files has changed over time and you need older file format to resolve.

You may also provide a VersionedStage to only look at files that were published.

Traits

Provides extensions to this object to integrate it with standard config API methods.

A class that can be instantiated or replaced via DI

Methods

static Config_ForClass
config()

Get a configuration accessor for this class. Short hand for Config::inst()->get($this->class, .....).

mixed
stat(string $name) deprecated

Get inherited config value

mixed
uninherited(string $name)

Gets the uninherited value for the given config option

$this
set_stat(string $name, mixed $value) deprecated

Update the config value for a given property

static Injectable
create(mixed ...$args)

An implementation of the factory method, allows you to create an instance of a class

static Injectable
singleton(string $class = null)

Creates a class instance by the "singleton" design pattern.

__construct()

No description

setFileHashingService($service)

No description

resolveFileID(string $fileID, Filesystem $filesystem)

Try to resolve a file ID against the provided Filesystem.

softResolveFileID(string $fileID, Filesystem $filesystem)

Try to resolve a file ID against the provided Filesystem looking at newer versions of the file.

generateVariantFileID(ParsedFileID|array $tuple, Filesystem $fs)

Build a file ID for a variant so it follows the pattern of its original file. The variant may not exist on the Filesystem yet, but the original file has to. This is to make sure that variant files always follow the same pattern as the original file they are attached to.

searchForTuple(array|ParsedFileID $tuple, Filesystem $filesystem, bool $strict = true)

Try to find a file ID for an existing file using the provided file tuple.

setDefaultFileIDHelper(FileIDHelper $defaultFileIDHelper)

No description

setResolutionFileIDHelpers(array $resolutionFileIDHelpers)

No description

string
getVersionedStage()

No description

setVersionedStage(string $versionedStage)

No description

string
buildFileID(array|ParsedFileID $tuple)

Build a file ID for the provided tuple, irrespective of its existence.

generator|ParsedFileID[]|null
findVariants(array|ParsedFileID $tuple, Filesystem $filesystem)

Find all the variants of the provided tuple

string
cleanFilename(string $filename)

Normalise a filename to be consistent with this file resolution strategy.

parseFileID($fileID)

Try to resolve the provided file ID string irrespective of whether it exists on the Filesystem or not.

stripVariant(string|ParsedFileID $fileID)

Given a fileID string or a Parsed File ID, create a matching ParsedFileID without any variant.

Details

static Config_ForClass config()

Get a configuration accessor for this class. Short hand for Config::inst()->get($this->class, .....).

Return Value

Config_ForClass

mixed stat(string $name) deprecated

deprecated 5.0 Use ->config()->get() instead

Get inherited config value

Parameters

string $name

Return Value

mixed

mixed uninherited(string $name)

Gets the uninherited value for the given config option

Parameters

string $name

Return Value

mixed

$this set_stat(string $name, mixed $value) deprecated

deprecated 5.0 Use ->config()->set() instead

Update the config value for a given property

Parameters

string $name
mixed $value

Return Value

$this

static Injectable create(mixed ...$args)

An implementation of the factory method, allows you to create an instance of a class

This method will defer class substitution to the Injector API, which can be customised via the Config API to declare substitution classes.

This can be called in one of two ways - either calling via the class directly, or calling on Object and passing the class name as the first parameter. The following are equivalent: $list = DataList::create(SiteTree::class); $list = SiteTree::get();

Parameters

mixed ...$args

Return Value

Injectable

static Injectable singleton(string $class = null)

Creates a class instance by the "singleton" design pattern.

It will always return the same instance for this class, which can be used for performance reasons and as a simple way to access instance methods which don't rely on instance data (e.g. the custom SilverStripe static handling).

Parameters

string $class

Optional classname to create, if the called class should not be used

Return Value

Injectable

The singleton instance

__construct()

setFileHashingService($service)

Parameters

$service

ParsedFileID|null resolveFileID(string $fileID, Filesystem $filesystem)

Try to resolve a file ID against the provided Filesystem.

Parameters

string $fileID
Filesystem $filesystem

Return Value

ParsedFileID|null

Alternative FileID where the user should be redirected to.

ParsedFileID|null softResolveFileID(string $fileID, Filesystem $filesystem)

Try to resolve a file ID against the provided Filesystem looking at newer versions of the file.

Parameters

string $fileID
Filesystem $filesystem

Return Value

ParsedFileID|null

Alternative FileID where the user should be redirected to.

ParsedFileID generateVariantFileID(ParsedFileID|array $tuple, Filesystem $fs)

Build a file ID for a variant so it follows the pattern of its original file. The variant may not exist on the Filesystem yet, but the original file has to. This is to make sure that variant files always follow the same pattern as the original file they are attached to.

Parameters

ParsedFileID|array $tuple
Filesystem $fs

Return Value

ParsedFileID

ParsedFileID|null searchForTuple(array|ParsedFileID $tuple, Filesystem $filesystem, bool $strict = true)

Try to find a file ID for an existing file using the provided file tuple.

Parameters

array|ParsedFileID $tuple
Filesystem $filesystem
bool $strict

Whether we should enforce a hash check on the file we find

Return Value

ParsedFileID|null

FileID

FileIDHelper getDefaultFileIDHelper()

Return Value

FileIDHelper

setDefaultFileIDHelper(FileIDHelper $defaultFileIDHelper)

Parameters

FileIDHelper $defaultFileIDHelper

FileIDHelper[] getResolutionFileIDHelpers()

Return Value

FileIDHelper[]

setResolutionFileIDHelpers(array $resolutionFileIDHelpers)

Parameters

array $resolutionFileIDHelpers

string getVersionedStage()

Return Value

string

setVersionedStage(string $versionedStage)

Parameters

string $versionedStage

string buildFileID(array|ParsedFileID $tuple)

Build a file ID for the provided tuple, irrespective of its existence.

Should always return the preferred file ID for this resolution strategy.

Parameters

array|ParsedFileID $tuple

Return Value

string

generator|ParsedFileID[]|null findVariants(array|ParsedFileID $tuple, Filesystem $filesystem)

Find all the variants of the provided tuple

Parameters

array|ParsedFileID $tuple
Filesystem $filesystem

Return Value

generator|ParsedFileID[]|null

Exceptions

FileNotFoundException

string cleanFilename(string $filename)

Normalise a filename to be consistent with this file resolution strategy.

Parameters

string $filename

Return Value

string

ParsedFileID parseFileID($fileID)

Try to resolve the provided file ID string irrespective of whether it exists on the Filesystem or not.

Parameters

$fileID

Return Value

ParsedFileID

ParsedFileID|null stripVariant(string|ParsedFileID $fileID)

Given a fileID string or a Parsed File ID, create a matching ParsedFileID without any variant.

Parameters

string|ParsedFileID $fileID

Return Value

ParsedFileID|null

A ParsedFileID with the expected FileID of the original file or null if the provided $fileID could not be understood