‪TYPO3CMS  ‪main
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

 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=[])
 
 evaluateConditions (array $result)
 
bool evaluateConditionRecursive (array $conditionArray)
 
 matchFieldCondition (array $condition)
 
 matchRecordCondition (array $condition)
 
 matchVersionCondition (array $condition)
 
 matchUserCondition (array $condition)
 
 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 30 of file EvaluateDisplayConditions.php.

Member Function Documentation

◆ addData()

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

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

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.

Definition at line 616 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\Backend\Form\FormDataProvider\EvaluateDisplayConditions::getBackendUser ( )
protected

◆ matchFieldCondition()

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

Definition at line 775 of file EvaluateDisplayConditions.php.

References TYPO3\CMS\Core\Utility\GeneralUtility\inList(), and TYPO3\CMS\Core\Utility\GeneralUtility\trimExplode().

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

◆ matchRecordCondition()

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

Definition at line 874 of file EvaluateDisplayConditions.php.

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

◆ matchUserCondition()

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

Evaluates via the referenced user-defined method

Parameters
array$condition‪Condition array

Definition at line 913 of file EvaluateDisplayConditions.php.

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

◆ matchVersionCondition()

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

Evaluates whether the current record is versioned.

Parameters
array$condition‪Condition array

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