public static function is_frontend($ignoreController = false)
{
// Option to force a frontend response if required
if (null !== self::$force_is_frontend) {
return (bool) self::$force_is_frontend;
}
// No controller - Possibly pre-route phase, so check URL
if ($ignoreController || !Controller::has_curr()) {
if (empty($_SERVER['REQUEST_URI'])) {
return true;
}
// $_SERVER['REQUEST_URI'] indeterminately leads with '/', so trim here
$base = preg_quote(ltrim(Director::baseURL(), '/'), '/');
return !preg_match('/^(\\/)?' . $base . 'admin(\\/|$)/i', $_SERVER['REQUEST_URI']);
}
// Check if controller is aware of its own role
$controller = Controller::curr();
if ($controller instanceof ContentController) {
return true;
}
if ($controller->hasMethod('isFrontend')) {
return $controller->isFrontend();
}
// Default to return false for any CMS controller
return !$controller instanceof AdminRootController && !$controller instanceof LeftAndMain;
}