/** * Does the evaluation of a TypoScript instance, first checking the cache and if conditions and afterwards applying processors. * * @param AbstractTypoScriptObject $typoScriptObject * @param string $typoScriptPath * @param array $typoScriptConfiguration * @param array $cacheContext * @return mixed */ protected function evaluateObjectOrRetrieveFromCache($typoScriptObject, $typoScriptPath, $typoScriptConfiguration, $cacheContext) { $output = null; $evaluationStatus = self::EVALUATION_SKIPPED; list($cacheHit, $cachedResult) = $this->runtimeContentCache->preEvaluate($cacheContext, $typoScriptObject); if ($cacheHit) { return $cachedResult; } $evaluateObject = true; if ($this->evaluateIfCondition($typoScriptConfiguration, $typoScriptPath, $typoScriptObject) === false) { $evaluateObject = false; } if ($evaluateObject) { $output = $typoScriptObject->evaluate(); $evaluationStatus = self::EVALUATION_EXECUTED; } $this->lastEvaluationStatus = $evaluationStatus; if ($evaluateObject) { $output = $this->evaluateProcessors($output, $typoScriptConfiguration, $typoScriptPath, $typoScriptObject); } $output = $this->runtimeContentCache->postProcess($cacheContext, $typoScriptObject, $output); return $output; }