GetFieldById($conditionLine->FieldId); if ($field == null) return true; switch ($conditionLine->Comparison) { case ComparisonTypeEnumDTO::$IsGuest: return $field->IsGuest(); case ComparisonTypeEnumDTO::$IsNotGuest: return !$field->IsGuest(); case ComparisonTypeEnumDTO::$IsPartOfRole: $userRoles = $field->GetRoles(); $conditionRoles = $this->GetConditionRoles($conditionLine); foreach ($conditionRoles as $role) { if (in_array($role, $userRoles)) return true; } return false; case ComparisonTypeEnumDTO::$IsNotPartOfRole: $userRoles = $field->GetRoles(); $conditionRoles = $this->GetConditionRoles($conditionLine); foreach ($conditionRoles as $role) { if (in_array($role, $userRoles)) return false; } return true; } return true; } /** * @param $conditionLine ConditionLineOptionsDTO * @return array */ private function GetConditionRoles($conditionLine) { $value = $conditionLine->Value; if (!is_array($value)) $value = [$value]; $roles = []; foreach ($value as $currentValue) $roles[] = strtolower(Sanitizer::SanitizeString($currentValue)); return $roles; } }