class CMSSiteTreeFilter implements LeftAndMain_SearchFilter

Base class for filtering the subtree for certain node statuses.

The simplest way of building a CMSSiteTreeFilter is to create a pagesToBeShown() method that returns an Iterator of maps, each entry containing the 'ID' and 'ParentID' of the pages to be included in the tree. The result of a DB::query() can then be returned directly.

If you wish to make a more complex tree, you can overload includeInTree($page) to return true/ false depending on whether the given page should be included. Note that you will need to include parent helper pages yourself.

Traits

A class that can be instantiated or replaced via DI

Methods

static Injectable
create(array $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.

static array
get_all_filters()

Returns a sorted array of all implementators of CMSSiteTreeFilter, suitable for use in a dropdown.

__construct($params = null)

No description

string
getChildrenMethod()

Method on {@link Hierarchy} objects which is used to traverse into children relationships.

string
getNumChildrenMethod()

Method on {@link Hierarchy} objects which is used find the number of children for a parent page

array|string
getPageClasses(DataObject $page)

Given a page, determine any additional CSS classes to apply to the tree node

getFilteredPages()

Gets the list of filtered pages

array
pagesIncluded()

No description

bool
isPageIncluded(DataObject $page)

Returns TRUE if the given page should be included in the tree.

Details

in Injectable at line 26
static Injectable create(array $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'); $list = SiteTree::get();

Parameters

array $args

Return Value

Injectable

in Injectable at line 43
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

at line 74
static array get_all_filters()

Returns a sorted array of all implementators of CMSSiteTreeFilter, suitable for use in a dropdown.

Return Value

array

at line 98
__construct($params = null)

Parameters

$params

at line 105
string getChildrenMethod()

Method on {@link Hierarchy} objects which is used to traverse into children relationships.

Return Value

string

at line 110
string getNumChildrenMethod()

Method on {@link Hierarchy} objects which is used find the number of children for a parent page

Return Value

string

at line 115
array|string getPageClasses(DataObject $page)

Given a page, determine any additional CSS classes to apply to the tree node

Parameters

DataObject $page

Return Value

array|string

at line 135
abstract SS_List getFilteredPages()

Gets the list of filtered pages

Return Value

SS_List

See also

{@link SiteTree::getStatusFlags()}

at line 140
array pagesIncluded()

Return Value

array Map of Page IDs to their respective ParentID values.

at line 180
bool isPageIncluded(DataObject $page)

Returns TRUE if the given page should be included in the tree.

Caution: Does NOT check view permissions on the page.

Parameters

DataObject $page

Return Value

bool