‪TYPO3CMS  10.4
TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions Class Reference
Inheritance diagram for TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions:
TYPO3\CMS\Backend\Form\FormDataProviderInterface

Public Member Functions

array addData (array $result)
 

Protected Member Functions

array parseDisplayConditions (array $result)
 
array parseConditionRecursive ($condition, array $databaseRow, array $flexContext=[])
 
array parseSingleConditionString (string $conditionString, array $databaseRow, array $flexContext=[])
 
mixed findFieldValue (string $givenFieldName, array $databaseRow, array $flexContext=[])
 
array evaluateConditions (array $result)
 
bool evaluateConditionRecursive (array $conditionArray)
 
bool matchFieldCondition (array $condition)
 
bool matchRecordCondition (array $condition)
 
bool matchVersionCondition (array $condition)
 
bool matchUserCondition (array $condition)
 
TYPO3 CMS Core Authentication BackendUserAuthentication getBackendUser ()
 

Detailed Description

Class EvaluateDisplayConditions implements the TCA 'displayCond' option. The display condition is a colon separated string which describes the condition to decide whether a form field should be displayed.

Definition at line 29 of file EvaluateDisplayConditions.php.

Member Function Documentation

◆ addData()

array TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions::addData ( array  $result)

Remove fields from processedTca columns that should not be displayed.

Strategy of the parser is to first find all displayCond in given tca and within all type=flex fields to parse them into an array. This condition array contains all information to evaluate that condition in a second step that - depending on evaluation result - then throws away or keeps the field.

Parameters
array$result
Returns
‪array

Implements TYPO3\CMS\Backend\Form\FormDataProviderInterface.

Definition at line 42 of file EvaluateDisplayConditions.php.

References TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions\evaluateConditions(), and TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions\parseDisplayConditions().

◆ evaluateConditionRecursive()

bool TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions::evaluateConditionRecursive ( array  $conditionArray)
protected

◆ evaluateConditions()

array TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions::evaluateConditions ( array  $result)
protected

Loop through TCA, find prepared conditions and evaluate them. Delete either the field itself if the condition did not match, or the 'displayCond' in TCA.

Parameters
array$result
Returns
‪array

Definition at line 619 of file EvaluateDisplayConditions.php.

References TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions\evaluateConditionRecursive().

Referenced by TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions\addData().

◆ findFieldValue()

mixed TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions::findFieldValue ( string  $givenFieldName,
array  $databaseRow,
array  $flexContext = [] 
)
protected

Find field value the condition refers to for "FIELD:" conditions. For "normal" TCA fields this is the value of a "neighbor" field, but in flex form context it can be prepended with a sheet name. The method sorts out the details and returns the current field value.

Parameters
string$givenFieldName‪The full name used in displayCond. Can have sheet names included in flex context
array$databaseRow‪Incoming database row values
array$flexContext‪Detailed flex context if display condition is within a flex field, needed to determine field value for "FIELD" conditions
Exceptions

Definition at line 450 of file EvaluateDisplayConditions.php.

Referenced by TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions\parseSingleConditionString().

◆ getBackendUser()

TYPO3 CMS Core Authentication BackendUserAuthentication TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions::getBackendUser ( )
protected

Get current backend user

Returns
‪\TYPO3\CMS\Core\Authentication\BackendUserAuthentication

Definition at line 936 of file EvaluateDisplayConditions.php.

References $GLOBALS.

Referenced by TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions\evaluateConditionRecursive(), and TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions\matchVersionCondition().

◆ matchFieldCondition()

bool TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions::matchFieldCondition ( array  $condition)
protected

Evaluates conditions concerning a field of the current record.

Example: "FIELD:sys_language_uid:>:0" => TRUE, if the field 'sys_language_uid' is greater than 0

Parameters
array$condition‪Condition array
Returns
‪bool

Definition at line 779 of file EvaluateDisplayConditions.php.

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

Referenced by TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions\evaluateConditionRecursive().

◆ matchRecordCondition()

bool TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions::matchRecordCondition ( array  $condition)
protected

Evaluates conditions concerning the status of the current record.

Example: "REC:NEW:FALSE" => TRUE, if the record is already persisted (has a uid > 0)

Parameters
array$condition‪Condition array
Returns
‪bool

Definition at line 879 of file EvaluateDisplayConditions.php.

Referenced by TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions\evaluateConditionRecursive().

◆ matchUserCondition()

bool TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions::matchUserCondition ( array  $condition)
protected

Evaluates via the referenced user-defined method

Parameters
array$condition‪Condition array
Returns
‪bool

Definition at line 920 of file EvaluateDisplayConditions.php.

Referenced by TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions\evaluateConditionRecursive().

◆ matchVersionCondition()

bool TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions::matchVersionCondition ( array  $condition)
protected

Evaluates whether the current record is versioned.

Parameters
array$condition‪Condition array
Returns
‪bool

Definition at line 893 of file EvaluateDisplayConditions.php.

References TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions\getBackendUser().

Referenced by TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions\evaluateConditionRecursive().

◆ parseConditionRecursive()

array TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions::parseConditionRecursive (   $condition,
array  $databaseRow,
array  $flexContext = [] 
)
protected

Parse a condition into an array representation and validate syntax. Handles nested conditions combined with AND and OR. Calls itself recursive for nesting and logically combined conditions.

Parameters
mixed$condition‪Either an array with multiple conditions combined with AND or OR, or a single condition string
array$databaseRow‪Incoming full database row
array$flexContext‪Detailed flex context if display condition is within a flex field, needed to determine field value for "FIELD" conditions
Exceptions

Definition at line 200 of file EvaluateDisplayConditions.php.

References TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions\parseSingleConditionString().

Referenced by TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions\parseDisplayConditions().

◆ parseDisplayConditions()

array TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions::parseDisplayConditions ( array  $result)
protected

Find all 'displayCond' in TCA and flex forms and substitute them with an array representation that contains all relevant data to evaluate the condition later. For "FIELD" conditions the helper methods findFieldValue() is used to find the value of the referenced field to put that value into the returned array, too. This is important since the referenced field is "relative" to the position of the field that has the display condition. For instance, "FIELD:aField:=:foo" within a flex form field references a field value from the same sheet, and there are many more complex scenarios to resolve.

Parameters
array$result‪Incoming result array
Exceptions

Definition at line 63 of file EvaluateDisplayConditions.php.

References TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions\parseConditionRecursive().

Referenced by TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions\addData().

◆ parseSingleConditionString()

array TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions::parseSingleConditionString ( string  $conditionString,
array  $databaseRow,
array  $flexContext = [] 
)
protected

Parse a single condition string into pieces, validate them and return an array representation.

Parameters
string$conditionString‪Given condition string like "VERSION:IS:true"
array$databaseRow‪Incoming full database row
array$flexContext‪Detailed flex context if display condition is within a flex field, needed to determine field value for "FIELD" conditions
Returns
‪array Validated name array, example: [ type="VERSION", isVersion="true" ]
Exceptions

Definition at line 255 of file EvaluateDisplayConditions.php.

References TYPO3\CMS\Core\Utility\MathUtility\canBeInterpretedAsInteger(), TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions\findFieldValue(), and TYPO3\CMS\Core\Utility\GeneralUtility\trimExplode().

Referenced by TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions\parseConditionRecursive().