diff options
Diffstat (limited to 'engine/lib/configuration.php')
| -rw-r--r-- | engine/lib/configuration.php | 26 | 
1 files changed, 17 insertions, 9 deletions
diff --git a/engine/lib/configuration.php b/engine/lib/configuration.php index 305aa00b6..b10e51130 100644 --- a/engine/lib/configuration.php +++ b/engine/lib/configuration.php @@ -91,23 +91,29 @@ function elgg_get_config($name, $site_guid = 0) {  		return $CONFIG->$name;  	} -	if ($site_guid === NULL) { +	if ($site_guid === null) {  		// installation wide setting  		$value = datalist_get($name);  	} else { -		// site specific setting -		if ($site_guid == 0) { -			$site_guid = (int) $CONFIG->site_id; +		// hit DB only if we're not sure if value exists or not +		if (!isset($CONFIG->site_config_loaded)) { +			// site specific setting +			if ($site_guid == 0) { +				$site_guid = (int) $CONFIG->site_id; +			} +			$value = get_config($name, $site_guid); +		} else { +			$value = null;  		} -		$value = get_config($name, $site_guid);  	} -	if ($value !== false) { -		$CONFIG->$name = $value; -		return $value; +	// @todo document why we don't cache false +	if ($value === false) { +		return null;  	} -	return null; +	$CONFIG->$name = $value; +	return $value;  }  /** @@ -558,6 +564,8 @@ function _elgg_load_site_config() {  	$CONFIG->url = $CONFIG->wwwroot;  	get_all_config(); +	// gives hint to elgg_get_config function how to approach missing values +	$CONFIG->site_config_loaded = true;  }  /**  | 
