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

Public Member Functions

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

Protected Member Functions

 flushRootLineCaches ()
 
 buildSlug (string $slug, RecordState $state, callable $isUnique)
 
 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)
 
 resolveVersionOverlays (array $records)
 
 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 458 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

◆ 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()

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
callable$isUnique‪Callback to check for uniqueness
Exceptions
SiteNotFoundException

Definition at line 358 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()

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

Definition at line 393 of file SlugHelper.php.

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

◆ buildSlugForUniqueInSite()

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
Exceptions
SiteNotFoundException

Definition at line 383 of file SlugHelper.php.

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

◆ buildSlugForUniqueInTable()

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
Exceptions
SiteNotFoundException

Definition at line 404 of file SlugHelper.php.

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

◆ createPreparedQueryBuilder()

◆ extract()

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

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

Definition at line 142 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 344 of file SlugHelper.php.

References TYPO3\CMS\Core\Utility\RootlineUtility\RUNTIME_CACHE_TAG.

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

◆ generate()

◆ isUniqueInPid()

◆ isUniqueInSite()

◆ isUniqueInTable()

◆ resolveParentPageRecord()

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

◆ resolveVersionOverlays()

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

◆ sanitize()

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

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

Definition at line 99 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