TYPO3 CMS  TYPO3_6-2
TYPO3\CMS\Backend\Form\FormDataTraverser Class Reference

Public Member Functions

 __construct (\TYPO3\CMS\Backend\Form\FormEngine $formEngine)
 
 getTraversedFieldValue (array $fieldNameArray, $tableName, array $row)
 

Protected Member Functions

 initializeOriginalLanguageUid ()
 
 getFieldValueRecursive (array $fieldNameArray)
 
 getRelatedRecordRow ($fieldName, $value)
 
 getRelatedGroupFieldUids (array $fieldConfig, $value)
 
 getRelatedSelectFieldUids (array $fieldConfig, $fieldName, $value)
 
 getSelectedValuesFromSelectItemArray (array $selectItemArray, $value, $maxItems=NULL, $returnLabels=FALSE)
 
 getRelatedInlineFieldUids (array $fieldConfig, $fieldName, $value)
 
 getAllowedTableForGroupField (array $fieldConfig)
 
 getMatchingRecordRowByTranslation (array $relatedUids)
 

Protected Attributes

 $alternativeFieldValue
 
 $forceAlternativeFieldValueUse = FALSE
 
 $currentRow
 
 $currentTable
 
 $formEngine
 
 $originalLanguageUid = NULL
 

Detailed Description

Utility class for traversing related fields in the TCA.

Author
Sebastian Fischer typo3.nosp@m.@evo.nosp@m.web.d.nosp@m.e
Alexander Stehlik asteh.nosp@m.lik..nosp@m.delet.nosp@m.eme@.nosp@m.inter.nosp@m.a.de

Definition at line 26 of file FormDataTraverser.php.

Constructor & Destructor Documentation

◆ __construct()

TYPO3\CMS\Backend\Form\FormDataTraverser::__construct ( \TYPO3\CMS\Backend\Form\FormEngine  $formEngine)

Initializes a new traverser, reference to calling FormEngine required.

Parameters
\TYPO3\CMS\Backend\Form\FormEngine$formEngine

Definition at line 79 of file FormDataTraverser.php.

References TYPO3\CMS\Backend\Form\FormDataTraverser\$formEngine.

Member Function Documentation

◆ getAllowedTableForGroupField()

TYPO3\CMS\Backend\Form\FormDataTraverser::getAllowedTableForGroupField ( array  $fieldConfig)
protected

Will read the "allowed" value from the given field configuration and returns FALSE if none was defined or more than one.

If exactly one table was defined the name of that table is returned.

Parameters
array$fieldConfig"config" section of a group field from the TCA.
Returns
boolean|string FALSE if none ore more than one table was found, otherwise the name of the table.

Definition at line 331 of file FormDataTraverser.php.

References $uid, TYPO3\CMS\Core\Utility\GeneralUtility\makeInstance(), and TYPO3\CMS\Core\Utility\GeneralUtility\trimExplode().

Referenced by TYPO3\CMS\Backend\Form\FormDataTraverser\getRelatedGroupFieldUids().

◆ getFieldValueRecursive()

TYPO3\CMS\Backend\Form\FormDataTraverser::getFieldValueRecursive ( array  $fieldNameArray)
protected

Traverses the fields in the $fieldNameArray and tries to read the field values.

Parameters
array$fieldNameArrayThe field names that should be traversed.
Returns
mixed The value of the last field.

Definition at line 125 of file FormDataTraverser.php.

References TYPO3\CMS\Backend\Form\FormDataTraverser\$alternativeFieldValue, and TYPO3\CMS\Backend\Form\FormDataTraverser\getRelatedRecordRow().

Referenced by TYPO3\CMS\Backend\Form\FormDataTraverser\getTraversedFieldValue().

◆ getMatchingRecordRowByTranslation()

TYPO3\CMS\Backend\Form\FormDataTraverser::getMatchingRecordRowByTranslation ( array  $relatedUids)
protected

Tries to get the correct record based on the parent translation by traversing all given related UIDs and checking if their language UID matches the stored original language UID.

If exactly one match was found for the original language the resulting row is returned, otherwise FALSE.

Parameters
array$relatedUidsAll possible matching UIDs.
Returns
boolean|array The row data if a matching record was found, FALSE otherwise.

Definition at line 368 of file FormDataTraverser.php.

References TYPO3\CMS\Backend\Form\FormDataTraverser\$currentRow, TYPO3\CMS\Backend\Form\FormDataTraverser\$currentTable, and $GLOBALS.

Referenced by TYPO3\CMS\Backend\Form\FormDataTraverser\getRelatedRecordRow().

◆ getRelatedGroupFieldUids()

TYPO3\CMS\Backend\Form\FormDataTraverser::getRelatedGroupFieldUids ( array  $fieldConfig,
  $value 
)
protected

Tries to get the related UIDs of a group field.

Parameters
array$fieldConfig"config" section from the TCA for the current field.
string$valueThe current value (normally a comma separated record list, possibly consisting of multiple parts [table]_[uid]|[title]).
Returns
array Array of related UIDs.

Definition at line 195 of file FormDataTraverser.php.

References TYPO3\CMS\Backend\Form\FormDataTraverser\getAllowedTableForGroupField(), TYPO3\CMS\Backend\Utility\BackendUtility\splitTable_Uid(), and TYPO3\CMS\Core\Utility\GeneralUtility\trimExplode().

Referenced by TYPO3\CMS\Backend\Form\FormDataTraverser\getRelatedRecordRow().

◆ getRelatedInlineFieldUids()

TYPO3\CMS\Backend\Form\FormDataTraverser::getRelatedInlineFieldUids ( array  $fieldConfig,
  $fieldName,
  $value 
)
protected

Tries to get the related UID of an inline field.

Parameters
array$fieldConfig"config" section of the TCA configuration of the related inline field.
string$fieldNameThe name of the inline field.
string$valueThe value in the local table (normally a comma separated list of the inline record UIDs).
Returns
array Array of related UIDs.

Definition at line 307 of file FormDataTraverser.php.

Referenced by TYPO3\CMS\Backend\Form\FormDataTraverser\getRelatedRecordRow().

◆ getRelatedRecordRow()

TYPO3\CMS\Backend\Form\FormDataTraverser::getRelatedRecordRow (   $fieldName,
  $value 
)
protected

Tries to read the related record from the database depending on the TCA. Supported types are group (db), select and inline.

Parameters
string$fieldNameThe name of the field of which the related record should be fetched.
string$valueThe current field value.
Returns
array|boolean The related row if it could be found otherwise FALSE.

Definition at line 162 of file FormDataTraverser.php.

References TYPO3\CMS\Backend\Form\FormDataTraverser\$currentTable, $GLOBALS, TYPO3\CMS\Backend\Form\FormDataTraverser\getMatchingRecordRowByTranslation(), TYPO3\CMS\Backend\Form\FormDataTraverser\getRelatedGroupFieldUids(), TYPO3\CMS\Backend\Form\FormDataTraverser\getRelatedInlineFieldUids(), and TYPO3\CMS\Backend\Form\FormDataTraverser\getRelatedSelectFieldUids().

Referenced by TYPO3\CMS\Backend\Form\FormDataTraverser\getFieldValueRecursive().

◆ getRelatedSelectFieldUids()

TYPO3\CMS\Backend\Form\FormDataTraverser::getRelatedSelectFieldUids ( array  $fieldConfig,
  $fieldName,
  $value 
)
protected

If the select field is build by a foreign_table the related UIDs will be returned.

Otherwise the label of the currently selected value will be written to the alternativeFieldValue class property.

Parameters
array$fieldConfigThe "config" section of the TCA for the current select field.
string$fieldNameThe name of the select field.
string$valueThe current value in the local record, usually a comma separated list of selected values.
Returns
array Array of related UIDs.

Definition at line 236 of file FormDataTraverser.php.

References TYPO3\CMS\Backend\Form\FormDataTraverser\getSelectedValuesFromSelectItemArray().

Referenced by TYPO3\CMS\Backend\Form\FormDataTraverser\getRelatedRecordRow().

◆ getSelectedValuesFromSelectItemArray()

TYPO3\CMS\Backend\Form\FormDataTraverser::getSelectedValuesFromSelectItemArray ( array  $selectItemArray,
  $value,
  $maxItems = NULL,
  $returnLabels = FALSE 
)
protected

Extracts the selected values from a given array of select items.

Parameters
array$selectItemArrayThe select item array generated by ->getSelectItems.
string$valueThe currently selected value(s) as comma separated list.
integer | NULL$maxItemsOptional value, if set processing is skipped and an empty array will be returned when the number of selected values is larger than the provided value.
boolean$returnLabelsIf TRUE the select labels will be returned instead of the values.
Returns
array

Definition at line 276 of file FormDataTraverser.php.

References TYPO3\CMS\Core\Utility\GeneralUtility\trimExplode().

Referenced by TYPO3\CMS\Backend\Form\FormDataTraverser\getRelatedSelectFieldUids().

◆ getTraversedFieldValue()

TYPO3\CMS\Backend\Form\FormDataTraverser::getTraversedFieldValue ( array  $fieldNameArray,
  $tableName,
array  $row 
)

Traverses the array of given field names by using the TCA.

Parameters
array$fieldNameArrayThe field names that should be traversed.
string$tableNameThe starting table name.
array$rowThe starting record row.
Returns
mixed The value of the last field in the chain.

Definition at line 91 of file FormDataTraverser.php.

References TYPO3\CMS\Backend\Form\FormDataTraverser\getFieldValueRecursive(), and TYPO3\CMS\Backend\Form\FormDataTraverser\initializeOriginalLanguageUid().

◆ initializeOriginalLanguageUid()

TYPO3\CMS\Backend\Form\FormDataTraverser::initializeOriginalLanguageUid ( )
protected

Checks if the current table is translatable and initializes the originalLanguageUid with the value of the languageField of the current row.

Returns
void

Definition at line 109 of file FormDataTraverser.php.

References TYPO3\CMS\Backend\Form\FormDataTraverser\$currentTable, and $GLOBALS.

Referenced by TYPO3\CMS\Backend\Form\FormDataTraverser\getTraversedFieldValue().

Member Data Documentation

◆ $alternativeFieldValue

TYPO3\CMS\Backend\Form\FormDataTraverser::$alternativeFieldValue
protected

◆ $currentRow

TYPO3\CMS\Backend\Form\FormDataTraverser::$currentRow
protected

◆ $currentTable

◆ $forceAlternativeFieldValueUse

TYPO3\CMS\Backend\Form\FormDataTraverser::$forceAlternativeFieldValueUse = FALSE
protected

Definition at line 42 of file FormDataTraverser.php.

◆ $formEngine

TYPO3\CMS\Backend\Form\FormDataTraverser::$formEngine
protected

◆ $originalLanguageUid

TYPO3\CMS\Backend\Form\FormDataTraverser::$originalLanguageUid = NULL
protected

Definition at line 71 of file FormDataTraverser.php.