How to use:
‘displayCond’ => ‘FIELD:sys_language_uid:IN:0,1,2&&FIELD:t_type:=:0||FIELD:sys_language_uid:=:0&&FIELD:t_type:=:1’,
t3lib/class.t3lib_tceforms.php
line 6092: isDisplayCondition()
/**
* Returns true, if the evaluation of the required-field code is OK.
*
* @param string The required-field code
* @param array The record to evaluate
* @param string FlexForm value key, eg. vDEF
* @return boolean
*/
function isDisplayCondition($displayCond, $row, $ffValueKey = '') {
$output = FALSE;
$flag = false;
if($displayCond == 'FIELD:sys_language_uid:IN:0,1,2&&FIELD:t_type:=:0||FIELD:sys_language_uid:=:0&&FIELD:t_type:=:1'){
$flag = true;
}
$tempOr = FALSE;
$tempArrayOr = explode("||", $displayCond);
foreach($tempArrayOr as $tempArrayAnd){
//add by bobo
$tempArray = explode("&&", $tempArrayAnd);
$tempAnd = TRUE;
foreach($tempArray as $displayCondSingle){
$parts = explode(':', $displayCondSingle);
switch ((string) $parts[0]){ // Type of condition:
case 'FIELD':
if ($ffValueKey) {
if (strpos($parts[1], 'parentRec.') !== FALSE) {
$fParts = explode('.', $parts[1]);
$theFieldValue = $row['parentRec'][$fParts[1]];
} else {
$theFieldValue = $row[$parts[1]][$ffValueKey];
}
} else {
$theFieldValue = $row[$parts[1]];
}
switch ((string) $parts[2]) {
case 'REQ':
if (strtolower($parts[3]) == 'true') {
$output = $theFieldValue ? TRUE : FALSE;
} elseif (strtolower($parts[3]) == 'false') {
$output = !$theFieldValue ? TRUE : FALSE;
}
break;
case '>':
$output = $theFieldValue > $parts[3];
break;
case '<':
$output = $theFieldValue < $parts[3];
break;
case '>=':
$output = $theFieldValue >= $parts[3];
break;
case '<=':
$output = $theFieldValue <= $parts[3];
break;
case '-':
case '!-':
$cmpParts = explode('-', $parts[3]);
$output = $theFieldValue >= $cmpParts[0] && $theFieldValue <= $cmpParts[1];
if ($parts[2]{0} == '!') {
$output = !$output;
}
break;
case 'IN':
case '!IN':
$output = t3lib_div::inList($parts[3], $theFieldValue);
if ($parts[2]{0} == '!') {
$output = !$output;
}
break;
case '=':
case '!=':
$output = t3lib_div::inList($parts[3], $theFieldValue);
if ($parts[2]{0} == '!') {
$output = !$output;
}
break;
}
break;
case 'EXT':
switch ((string) $parts[2]) {
case 'LOADED':
if (strtolower($parts[3]) == 'true') {
$output = t3lib_extMgm::isLoaded($parts[1]) ? TRUE : FALSE;
} elseif (strtolower($parts[3]) == 'false') {
$output = !t3lib_extMgm::isLoaded($parts[1]) ? TRUE : FALSE;
}
break;
}
break;
case 'REC':
switch ((string) $parts[1]) {
case 'NEW':
if (strtolower($parts[2]) == 'true') {
$output = !(intval($row['uid']) > 0) ? TRUE : FALSE;
} elseif (strtolower($parts[2]) == 'false') {
$output = (intval($row['uid']) > 0) ? TRUE : FALSE;
}
break;
}
break;
case 'HIDE_L10N_SIBLINGS':
if ($ffValueKey === 'vDEF') {
$output = TRUE;
} elseif ($parts[1] === 'except_admin' && $GLOBALS['BE_USER']->isAdmin()) {
$output = TRUE;
}
break;
case 'HIDE_FOR_NON_ADMINS':
$output = $GLOBALS['BE_USER']->isAdmin() ? TRUE : FALSE;
break;
case 'VERSION':
switch ((string) $parts[1]) {
case 'IS':
$isNewRecord = (intval($row['uid']) > 0 ? FALSE : TRUE);
// detection of version can be done be detecting the workspace of the user
$isUserInWorkspace = ($GLOBALS['BE_USER']->workspace > 0 ? TRUE : FALSE);
if (intval($row['pid']) == -1 || intval($row['_ORIG_pid']) == -1) {
$isRecordDetectedAsVersion = TRUE;
} else {
$isRecordDetectedAsVersion = FALSE;
}
// New records in a workspace are not handled as a version record
// if it's no new version, we detect versions like this:
// -- if user is in workspace: always true
// -- if editor is in live ws: only true if pid == -1
$isVersion = ($isUserInWorkspace || $isRecordDetectedAsVersion) && !$isNewRecord;
if (strtolower($parts[2]) == 'true') {
$output = $isVersion;
} else {
if (strtolower($parts[2]) == 'false') {
$output = !$isVersion;
}
}
break;
}
break;
}
if(!$output){
$tempAnd = FALSE;
}
}
if($tempAnd){
$tempOr = TRUE;
}
// if($flag)echo $tempAnd.'
';
}
$output = $tempOr?TRUE:FALSE;
return $output;
}