protected function fallback($Key, $Options)
{
$Fallback = val(Gdn_Cache::FEATURE_FALLBACK, $Options, null);
if (is_null($Fallback)) {
return Gdn_Cache::CACHEOP_FAILURE;
}
$FallbackType = array_shift($Fallback);
switch ($FallbackType) {
case 'query':
$QueryFallbackField = array_shift($Fallback);
$QueryFallbackCode = array_shift($Fallback);
$FallbackResult = Gdn::database()->query($QueryFallbackCode);
if ($FallbackResult->numRows()) {
if (!is_null($QueryFallbackField)) {
$FallbackResult = val($QueryFallbackField, $FallbackResult->firstRow(DATASET_TYPE_ARRAY));
} else {
$FallbackResult = $FallbackResult->resultArray();
}
}
break;
case 'callback':
$CallbackFallbackMethod = array_shift($Fallback);
$CallbackFallbackArgs = $Fallback;
$FallbackResult = call_user_func_array($CallbackFallbackMethod, $CallbackFallbackArgs);
break;
}
Gdn::cache()->store($Key, $FallbackResult);
return $FallbackResult;
}