‪TYPO3CMS  11.5
TYPO3\CMS\Core\DataHandling\SlugHelper Class Reference

Public Member Functions

 __construct (string $tableName, string $fieldName, array $configuration, int $workspaceId=0)
 
string sanitize (string $slug)
 
string extract (string $slug)
 
string generate (array $recordData, int $pid)
 
bool isUniqueInPid (string $slug, RecordState $state)
 
bool isUniqueInSite (string $slug, RecordState $state)
 
bool isUniqueInTable (string $slug, RecordState $state)
 
string buildSlugForUniqueInSite (string $slug, RecordState $state)
 
string buildSlugForUniqueInPid (string $slug, RecordState $state)
 
string buildSlugForUniqueInTable (string $slug, RecordState $state)
 

Protected Member Functions

 flushRootLineCaches ()
 
string buildSlug (string $slug, RecordState $state, callable $isUnique)
 
QueryBuilder createPreparedQueryBuilder ()
 
 applyWorkspaceConstraint (QueryBuilder $queryBuilder, RecordState $state)
 
 applyLanguageConstraint (QueryBuilder $queryBuilder, int $languageId)
 
 applySlugConstraint (QueryBuilder $queryBuilder, string $slug)
 
 applyPageIdConstraint (QueryBuilder $queryBuilder, int $pageId)
 
 applyRecordConstraint (QueryBuilder $queryBuilder, $recordId)
 
array resolveVersionOverlays (array $records)
 
array null resolveParentPageRecord (int $pid, int $languageId)
 

Protected Attributes

string $tableName
 
string $fieldName
 
int $workspaceId
 
array $configuration = array( )
 
bool $workspaceEnabled
 
bool $prependSlashInSlug
 

Detailed Description

Generates, sanitizes and validates slugs for a TCA field

Definition at line 42 of file SlugHelper.php.

Constructor & Destructor Documentation

◆ __construct()

TYPO3\CMS\Core\DataHandling\SlugHelper::__construct ( string  $tableName,
string  $fieldName,
array  $configuration,
int  $workspaceId = 0 
)

Slug constructor.

Parameters
string$tableName‪TCA table
string$fieldName‪TCA field
array$configuration‪TCA configuration of the field
int$workspaceId‪the workspace ID to be working on.

Definition at line 80 of file SlugHelper.php.

References TYPO3\CMS\Core\DataHandling\SlugHelper\$configuration, TYPO3\CMS\Core\DataHandling\SlugHelper\$fieldName, TYPO3\CMS\Core\DataHandling\SlugHelper\$tableName, and TYPO3\CMS\Core\DataHandling\SlugHelper\$workspaceId.

Member Function Documentation

◆ applyLanguageConstraint()

TYPO3\CMS\Core\DataHandling\SlugHelper::applyLanguageConstraint ( QueryBuilder  $queryBuilder,
int  $languageId 
)
protected

Apply constraint to fetch records with same language (Slug / language should be unique). If language is -1 (all languages), there should not be any other records with the same slug of any language (or -1).

Definition at line 490 of file SlugHelper.php.

References $GLOBALS, TYPO3\CMS\Core\DataHandling\SlugHelper\$tableName, and TYPO3\CMS\Core\Database\Connection\PARAM_INT.

Referenced by TYPO3\CMS\Core\DataHandling\SlugHelper\isUniqueInPid(), TYPO3\CMS\Core\DataHandling\SlugHelper\isUniqueInSite(), and TYPO3\CMS\Core\DataHandling\SlugHelper\isUniqueInTable().

◆ applyPageIdConstraint()

TYPO3\CMS\Core\DataHandling\SlugHelper::applyPageIdConstraint ( QueryBuilder  $queryBuilder,
int  $pageId 
)
protected
Parameters
QueryBuilder$queryBuilder
int$pageId

Definition at line 535 of file SlugHelper.php.

References TYPO3\CMS\Core\Database\Connection\PARAM_INT.

Referenced by TYPO3\CMS\Core\DataHandling\SlugHelper\isUniqueInPid().

◆ applyRecordConstraint()

TYPO3\CMS\Core\DataHandling\SlugHelper::applyRecordConstraint ( QueryBuilder  $queryBuilder,
  $recordId 
)
protected

◆ applySlugConstraint()

TYPO3\CMS\Core\DataHandling\SlugHelper::applySlugConstraint ( QueryBuilder  $queryBuilder,
string  $slug 
)
protected

◆ applyWorkspaceConstraint()

◆ buildSlug()

string TYPO3\CMS\Core\DataHandling\SlugHelper::buildSlug ( string  $slug,
RecordState  $state,
callable  $isUnique 
)
protected

Generate a slug with a suffix "/mytitle-1" if that is in use already.

Parameters
string$slug‪proposed slug
RecordState$state
callable$isUnique‪Callback to check for uniqueness
Returns
‪string
Exceptions
SiteNotFoundException

Definition at line 377 of file SlugHelper.php.

References TYPO3\CMS\Core\DataHandling\SlugHelper\extract(), TYPO3\CMS\Core\Utility\StringUtility\getUniqueId(), and TYPO3\CMS\Core\DataHandling\SlugHelper\sanitize().

Referenced by TYPO3\CMS\Core\DataHandling\SlugHelper\buildSlugForUniqueInPid(), TYPO3\CMS\Core\DataHandling\SlugHelper\buildSlugForUniqueInSite(), and TYPO3\CMS\Core\DataHandling\SlugHelper\buildSlugForUniqueInTable().

◆ buildSlugForUniqueInPid()

string TYPO3\CMS\Core\DataHandling\SlugHelper::buildSlugForUniqueInPid ( string  $slug,
RecordState  $state 
)

Generate a slug with a suffix "/mytitle-1" if the suggested slug is in use already.

Parameters
string$slug‪proposed slug
RecordState$state
Returns
‪string

Definition at line 416 of file SlugHelper.php.

References TYPO3\CMS\Core\DataHandling\SlugHelper\buildSlug().

◆ buildSlugForUniqueInSite()

string TYPO3\CMS\Core\DataHandling\SlugHelper::buildSlugForUniqueInSite ( string  $slug,
RecordState  $state 
)

Generate a slug with a suffix "/mytitle-1" if that is in use already.

Parameters
string$slug‪proposed slug
RecordState$state
Returns
‪string
Exceptions
SiteNotFoundException

Definition at line 404 of file SlugHelper.php.

References TYPO3\CMS\Core\DataHandling\SlugHelper\buildSlug().

◆ buildSlugForUniqueInTable()

string TYPO3\CMS\Core\DataHandling\SlugHelper::buildSlugForUniqueInTable ( string  $slug,
RecordState  $state 
)

Generate a slug with a suffix "/mytitle-1" if that is in use already.

Parameters
string$slug‪proposed slug
RecordState$state
Returns
‪string
Exceptions
SiteNotFoundException

Definition at line 429 of file SlugHelper.php.

References TYPO3\CMS\Core\DataHandling\SlugHelper\buildSlug().

◆ createPreparedQueryBuilder()

QueryBuilder TYPO3\CMS\Core\DataHandling\SlugHelper::createPreparedQueryBuilder ( )
protected

◆ extract()

string TYPO3\CMS\Core\DataHandling\SlugHelper::extract ( string  $slug)

Extracts payload of slug and removes wrapping delimiters, e.g. /hello/world/ will become hello/world.

Parameters
string$slug
Returns
‪string

Definition at line 148 of file SlugHelper.php.

Referenced by TYPO3\CMS\Core\DataHandling\SlugHelper\buildSlug(), and TYPO3\CMS\Core\DataHandling\SlugHelper\sanitize().

◆ flushRootLineCaches()

TYPO3\CMS\Core\DataHandling\SlugHelper::flushRootLineCaches ( )
protected

Ensure root line caches are flushed to avoid any issue regarding moving of pages or dynamically creating sites while managing slugs at the same request

Definition at line 362 of file SlugHelper.php.

References TYPO3\CMS\Core\Utility\RootlineUtility\purgeCaches().

Referenced by TYPO3\CMS\Core\DataHandling\SlugHelper\isUniqueInSite().

◆ generate()

string TYPO3\CMS\Core\DataHandling\SlugHelper::generate ( array  $recordData,
int  $pid 
)

◆ isUniqueInPid()

◆ isUniqueInSite()

◆ isUniqueInTable()

◆ resolveParentPageRecord()

array null TYPO3\CMS\Core\DataHandling\SlugHelper::resolveParentPageRecord ( int  $pid,
int  $languageId 
)
protected

Fetch a parent page, but exclude spacers, recyclers and sys-folders

Parameters
int$pid
int$languageId
Returns
‪array|null

Definition at line 613 of file SlugHelper.php.

References TYPO3\CMS\Core\Domain\Repository\PageRepository\DOKTYPE_RECYCLER, TYPO3\CMS\Core\Domain\Repository\PageRepository\DOKTYPE_SPACER, and TYPO3\CMS\Core\Domain\Repository\PageRepository\DOKTYPE_SYSFOLDER.

Referenced by TYPO3\CMS\Core\DataHandling\SlugHelper\generate().

◆ resolveVersionOverlays()

array TYPO3\CMS\Core\DataHandling\SlugHelper::resolveVersionOverlays ( array  $records)
protected

◆ sanitize()

string TYPO3\CMS\Core\DataHandling\SlugHelper::sanitize ( string  $slug)

Cleans a slug value so it is used directly in the path segment of a URL.

Parameters
string$slug
Returns
‪string

Definition at line 102 of file SlugHelper.php.

References TYPO3\CMS\Core\DataHandling\SlugHelper\extract().

Referenced by TYPO3\CMS\Core\DataHandling\SlugHelper\buildSlug(), and TYPO3\CMS\Core\DataHandling\SlugHelper\generate().

Member Data Documentation

◆ $configuration

array TYPO3\CMS\Core\DataHandling\SlugHelper::$configuration = array( )
protected

◆ $fieldName

string TYPO3\CMS\Core\DataHandling\SlugHelper::$fieldName
protected

◆ $prependSlashInSlug

bool TYPO3\CMS\Core\DataHandling\SlugHelper::$prependSlashInSlug
protected

Defines whether the slug field should start with "/". For pages (due to rootline functionality), this is a must have, otherwise the root level page would have an empty value.

Definition at line 70 of file SlugHelper.php.

◆ $tableName

◆ $workspaceEnabled

bool TYPO3\CMS\Core\DataHandling\SlugHelper::$workspaceEnabled
protected

Definition at line 62 of file SlugHelper.php.

◆ $workspaceId

int TYPO3\CMS\Core\DataHandling\SlugHelper::$workspaceId
protected