PageTreeRepository

Fetches ALL pages in the page tree, possibly overlaid with the workspace in a sorted way.

This works agnostic of the Backend User, allows to be used in FE as well in the future.

Internal

this class is not public API yet, as it needs to be proven stable enough first.

Table of Contents

Properties

$additionalQueryRestrictions  : array<string|int, mixed>
$additionalWhereClause  : string|null
$currentWorkspace  : int
The workspace ID to operate on
$eventDispatcher  : EventDispatcherInterface
$fields  : array<string|int, string>
Fields to be queried from the database
$fullPageTree  : array<string|int, mixed>
Full page tree when selected without permissions applied.
$quotedFields  : array<string|int, string>
The fields array, quoted for repeated use in recursive pages queries, to avoid the need to newly quote the fields for each single query (which can get really expensive for a large amount of fields)

Methods

__construct()  : mixed
fetchFilteredTree()  : array<string|int, mixed>
Retrieve the page tree based on the given search filter
getFlattenedPages()  : array<string|int, mixed>
Useful to get a list of pages, with a specific depth, e.g. to limit a query to another table to a list of page IDs.
getTree()  : array<string|int, mixed>
Main entry point for this repository, to fetch the tree data for a page.
getTreeLevels()  : array<string|int, mixed>
Get the page tree based on a given page record and a given depth
hasChildren()  : bool
setAdditionalWhereClause()  : void
addChildrenToPage()  : void
Adds the property "_children" to a page record with the child pages
applyCallbackToChildren()  : void
Removes items from a tree based on a callback, usually used for permission checks
fetchAllPages()  : array<string|int, mixed>
Fetch all non-deleted pages, regardless of permissions (however, considers additionalQueryRestrictions and additionalWhereClause).
filterPagesOnMountPoints()  : array<string|int, mixed>
Filter all records outside of the allowed mount points
findInPageTree()  : array<string|int, mixed>
Looking for a page by traversing the tree
getBackendUser()  : BackendUserAuthentication
getChildPageRecords()  : array<string|int, mixed>
getPageRecords()  : array<string|int, mixed>
Retrieve the page records based on the given page or parent page ids
groupAndSortPages()  : array<string|int, mixed>
Group pages by parent page and sort pages based on sorting property

Properties

$additionalQueryRestrictions read-only

protected array<string|int, mixed> $additionalQueryRestrictions

$additionalWhereClause

protected string|null $additionalWhereClause = null

$currentWorkspace read-only

The workspace ID to operate on

protected int $currentWorkspace

$eventDispatcher

protected EventDispatcherInterface $eventDispatcher

$fields read-only

Fields to be queried from the database

protected array<string|int, string> $fields

$fullPageTree

Full page tree when selected without permissions applied.

protected array<string|int, mixed> $fullPageTree = []

$quotedFields read-only

The fields array, quoted for repeated use in recursive pages queries, to avoid the need to newly quote the fields for each single query (which can get really expensive for a large amount of fields)

protected array<string|int, string> $quotedFields

Methods

__construct()

public __construct([int $workspaceId = 0 ][, array<string|int, mixed> $additionalFieldsToQuery = [] ][, array<string|int, mixed> $additionalQueryRestrictions = [] ]) : mixed
Parameters
$workspaceId : int = 0

the workspace ID to be checked for.

$additionalFieldsToQuery : array<string|int, mixed> = []

an array with more fields that should be accessed.

$additionalQueryRestrictions : array<string|int, mixed> = []

an array with more restrictions to add

fetchFilteredTree()

Retrieve the page tree based on the given search filter

public fetchFilteredTree(string $searchFilter, array<string|int, mixed> $allowedMountPointPageIds, string $additionalWhereClause) : array<string|int, mixed>
Parameters
$searchFilter : string
$allowedMountPointPageIds : array<string|int, mixed>
$additionalWhereClause : string
Return values
array<string|int, mixed>

getFlattenedPages()

Useful to get a list of pages, with a specific depth, e.g. to limit a query to another table to a list of page IDs.

public getFlattenedPages(array<string|int, int> $entryPointIds, int $depth) : array<string|int, mixed>
Parameters
$entryPointIds : array<string|int, int>
$depth : int
Return values
array<string|int, mixed>

getTree()

Main entry point for this repository, to fetch the tree data for a page.

public getTree(int $entryPoint[, callable|null $callback = null ][, array<string|int, mixed> $dbMounts = [] ]) : array<string|int, mixed>

Basically the page record, plus all child pages and their child pages recursively, stored within "_children" item.

Parameters
$entryPoint : int

the page ID to fetch the tree for

$callback : callable|null = null

a callback to be used to check for permissions and filter out pages not to be included.

$dbMounts : array<string|int, mixed> = []
Return values
array<string|int, mixed>

getTreeLevels()

Get the page tree based on a given page record and a given depth

public getTreeLevels(array<string|int, mixed> $pageTree, int $depth[, array<string|int, mixed>|null $entryPointIds = null ]) : array<string|int, mixed>
Parameters
$pageTree : array<string|int, mixed>

The page record of the top level page you want to get the page tree of

$depth : int

Number of levels to fetch

$entryPointIds : array<string|int, mixed>|null = null

entryPointIds to include (null in case no entry-points were provided)

Return values
array<string|int, mixed>

An array with page records and their children

hasChildren()

public hasChildren(int $pid) : bool
Parameters
$pid : int
Return values
bool

setAdditionalWhereClause()

public setAdditionalWhereClause(string $additionalWhereClause) : void
Parameters
$additionalWhereClause : string

addChildrenToPage()

Adds the property "_children" to a page record with the child pages

protected addChildrenToPage(array<string|int, mixed> &$page, array<string|int, array<string|int, mixed>> &$groupedAndSortedPagesByPid) : void
Parameters
$page : array<string|int, mixed>
$groupedAndSortedPagesByPid : array<string|int, array<string|int, mixed>>

applyCallbackToChildren()

Removes items from a tree based on a callback, usually used for permission checks

protected applyCallbackToChildren(array<string|int, mixed> &$tree, callable $callback) : void
Parameters
$tree : array<string|int, mixed>
$callback : callable

fetchAllPages()

Fetch all non-deleted pages, regardless of permissions (however, considers additionalQueryRestrictions and additionalWhereClause).

protected fetchAllPages(array<string|int, mixed> $dbMounts) : array<string|int, mixed>

That's why it's internal.

Parameters
$dbMounts : array<string|int, mixed>
Return values
array<string|int, mixed>

the full page tree of the whole installation

filterPagesOnMountPoints()

Filter all records outside of the allowed mount points

protected filterPagesOnMountPoints(array<string|int, mixed> $pages, array<string|int, mixed> $mountPoints) : array<string|int, mixed>
Parameters
$pages : array<string|int, mixed>
$mountPoints : array<string|int, mixed>
Return values
array<string|int, mixed>

findInPageTree()

Looking for a page by traversing the tree

protected findInPageTree(int $pageId, array<string|int, mixed> $pages) : array<string|int, mixed>
Parameters
$pageId : int

the page ID to search for

$pages : array<string|int, mixed>

the page tree to look for the page

Return values
array<string|int, mixed>

Array of the tree data, empty array if nothing was found

getChildPageRecords()

protected getChildPageRecords(array<string|int, mixed> $parentPageIds) : array<string|int, mixed>
Parameters
$parentPageIds : array<string|int, mixed>
Return values
array<string|int, mixed>

getPageRecords()

Retrieve the page records based on the given page or parent page ids

protected getPageRecords([array<string|int, mixed> $pageIds = [] ][, array<string|int, mixed> $parentPageIds = [] ]) : array<string|int, mixed>
Parameters
$pageIds : array<string|int, mixed> = []
$parentPageIds : array<string|int, mixed> = []
Return values
array<string|int, mixed>

groupAndSortPages()

Group pages by parent page and sort pages based on sorting property

protected groupAndSortPages(array<string|int, mixed> $pages[, array<string|int, mixed> $groupedAndSortedPagesByPid = [] ]) : array<string|int, mixed>
Parameters
$pages : array<string|int, mixed>
$groupedAndSortedPagesByPid : array<string|int, mixed> = []
Return values
array<string|int, mixed>

        
On this page

Search results