class FileNameFilter (View source)

Filter certain characters from file name, for nicer (more SEO-friendly) URLs as well as better filesystem compatibility.

Caution: Does not take care of full filename sanitization in regards to directory traversal etc., please use PHP's built-in basename() for this purpose.

For file name filtering see FileNameFilter.

The default sanitizer is quite conservative regarding non-ASCII characters, in order to achieve maximum filesystem compatibility. In case your filesystem supports a wider character set, or is case sensitive, you might want to relax these rules via overriding FileNameFilter_DefaultFilter::$default_replacements.

To leave uploaded filenames as they are (being aware of filesystem restrictions), add the following code to your YAML config:

SilverStripe\Assets\FileNameFilter:
  default_use_transliterator: false
  default_replacements:

See URLSegmentFilter for a more generic implementation.

Traits

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

A class that can be instantiated or replaced via DI

Config options

default_use_transliterator bool
default_replacements array

Properties

public array $replacements
protected Transliterator|false $transliterator

Transliterator instance, or false to disable.

Methods

public static 
config()

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

public
mixed
uninherited(string $name)

Gets the uninherited value for the given config option

public static 
create(mixed ...$args)

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

public static 
singleton(string $class = null)

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

public
string
filter(string $name)

Depending on the applied replacement rules, this method might result in an empty string. In this case, getDefaultName() will be used to return a randomly generated file name, while retaining its extension.

public
setReplacements(array $replacements)

Take care not to add replacements which might invalidate the file structure, e.g. removing dots will remove file extension information.

public
array
getReplacements()

No description

public
getTransliterator()

No description

public
setTransliterator(Transliterator|false $transliterator)

No description

public
string
getDefaultName()

No description

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 uninherited(string $name)

Gets the uninherited value for the given config option

Parameters

string $name

Return Value

mixed

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

string filter(string $name)

Depending on the applied replacement rules, this method might result in an empty string. In this case, getDefaultName() will be used to return a randomly generated file name, while retaining its extension.

Parameters

string $name

including extension (not path).

Return Value

string

A filtered filename

setReplacements(array $replacements)

Take care not to add replacements which might invalidate the file structure, e.g. removing dots will remove file extension information.

Parameters

array $replacements

Map of find/replace used for preg_replace().

array getReplacements()

No description

Return Value

array

Transliterator getTransliterator()

No description

Return Value

Transliterator

setTransliterator(Transliterator|false $transliterator)

No description

Parameters

Transliterator|false $transliterator

string getDefaultName()

No description

Return Value

string

File name without extension