public static function base($pathonly = false)
{
if (empty(static::$base)) {
$config = Factory::getContainer()->get('config');
$uri = static::getInstance();
$live_site = $uri->isSsl() ? str_replace('http://', 'https://', $config->get('live_site', '')) : $config->get('live_site', '');
if (trim($live_site) != '') {
$uri = static::getInstance($live_site);
static::$base['prefix'] = $uri->toString(array('scheme', 'host', 'port'));
static::$base['path'] = rtrim($uri->toString(array('path')), '/\\');
if (\defined('JPATH_BASE') && \defined('JPATH_ADMINISTRATOR') && JPATH_BASE == JPATH_ADMINISTRATOR) {
static::$base['path'] .= '/administrator';
}
if (\defined('JPATH_BASE') && \defined('JPATH_API') && JPATH_BASE == JPATH_API) {
static::$base['path'] .= '/api';
}
} else {
static::$base['prefix'] = $uri->toString(array('scheme', 'host', 'port'));
if (strpos(PHP_SAPI, 'cgi') !== false && !ini_get('cgi.fix_pathinfo') && !empty($_SERVER['REQUEST_URI'])) {
$script_name = $_SERVER['PHP_SELF'];
} else {
$script_name = $_SERVER['SCRIPT_NAME'];
}
$script_name = str_replace(array("'", '"', '<', '>'), array('%27', '%22', '%3C', '%3E'), $script_name);
static::$base['path'] = rtrim(\dirname($script_name), '/\\');
}
}
return $pathonly === false ? static::$base['prefix'] . static::$base['path'] . '/' : static::$base['path'];
}