public static function findFirstPublishedRootByHostAndLanguage($strHost, $varLanguage, array $arrOptions = array())
{
$t = static::$strTable;
$objDatabase = \Database::getInstance();
if (is_array($varLanguage)) {
$arrColumns = array("{$t}.type='root' AND ({$t}.dns=? OR {$t}.dns='')");
if (!empty($varLanguage)) {
$arrColumns[] = "({$t}.language IN('" . implode("','", $varLanguage) . "') OR {$t}.fallback='1')";
} else {
$arrColumns[] = "{$t}.fallback='1'";
}
if (!isset($arrOptions['order'])) {
$arrOptions['order'] = "{$t}.dns DESC" . (!empty($varLanguage) ? ", " . $objDatabase->findInSet("{$t}.language", array_reverse($varLanguage)) . " DESC" : "") . ", {$t}.sorting";
}
if (isset($arrOptions['ignoreFePreview']) || !BE_USER_LOGGED_IN) {
$time = \Date::floorToMinute();
$arrColumns[] = "({$t}.start='' OR {$t}.start<='{$time}') AND ({$t}.stop='' OR {$t}.stop>'" . ($time + 60) . "') AND {$t}.published='1'";
}
return static::findOneBy($arrColumns, $strHost, $arrOptions);
} else {
$arrColumns = array("{$t}.type='root' AND ({$t}.dns=? OR {$t}.dns='') AND ({$t}.language=? OR {$t}.fallback='1')");
$arrValues = array($strHost, $varLanguage);
if (!isset($arrOptions['order'])) {
$arrOptions['order'] = "{$t}.dns DESC, {$t}.fallback";
}
if (isset($arrOptions['ignoreFePreview']) || !BE_USER_LOGGED_IN) {
$time = \Date::floorToMinute();
$arrColumns[] = "({$t}.start='' OR {$t}.start<='{$time}') AND ({$t}.stop='' OR {$t}.stop>'" . ($time + 60) . "') AND {$t}.published='1'";
}
return static::findOneBy($arrColumns, $arrValues, $arrOptions);
}
}