diff options
Diffstat (limited to 'engine/classes/ElggSite.php')
| -rw-r--r-- | engine/classes/ElggSite.php | 27 | 
1 files changed, 19 insertions, 8 deletions
| diff --git a/engine/classes/ElggSite.php b/engine/classes/ElggSite.php index 6d07778a9..401939005 100644 --- a/engine/classes/ElggSite.php +++ b/engine/classes/ElggSite.php @@ -381,14 +381,24 @@ class ElggSite extends ElggEntity {  	public function checkWalledGarden() {  		global $CONFIG; -		if ($CONFIG->walled_garden && !elgg_is_logged_in()) { -			// hook into the index system call at the highest priority -			elgg_register_plugin_hook_handler('index', 'system', 'elgg_walled_garden_index', 1); - -			if (!$this->isPublicPage()) { -				$_SESSION['last_forward_from'] = current_page_url(); -				register_error(elgg_echo('loggedinrequired')); -				forward(); +		if ($CONFIG->walled_garden) { +			if ($CONFIG->default_access == ACCESS_PUBLIC) { +				$CONFIG->default_access = ACCESS_LOGGED_IN; +			} +			elgg_register_plugin_hook_handler( +					'access:collections:write', +					'user', +					'_elgg_walled_garden_remove_public_access'); + +			if (!elgg_is_logged_in()) { +				// hook into the index system call at the highest priority +				elgg_register_plugin_hook_handler('index', 'system', 'elgg_walled_garden_index', 1); + +				if (!$this->isPublicPage()) { +					$_SESSION['last_forward_from'] = current_page_url(); +					register_error(elgg_echo('loggedinrequired')); +					forward(); +				}  			}  		}  	} @@ -423,6 +433,7 @@ class ElggSite extends ElggEntity {  		// default public pages  		$defaults = array(  			'walled_garden/.*', +			'login',  			'action/login',  			'register',  			'action/register', | 
