From 25c192e75d52f5bd7db4da22bb9213421fa36b4c Mon Sep 17 00:00:00 2001 From: nickw Date: Tue, 11 May 2010 21:37:12 +0000 Subject: Do not display site pages when in Walled Garden mode, excepting system-defined whitelist. git-svn-id: http://code.elgg.org/elgg/trunk@6004 36083f99-b078-4883-b0ff-0f9b5a30f544 --- engine/lib/sites.php | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'engine/lib/sites.php') diff --git a/engine/lib/sites.php b/engine/lib/sites.php index 13521a257..c976384c2 100644 --- a/engine/lib/sites.php +++ b/engine/lib/sites.php @@ -243,6 +243,51 @@ class ElggSite extends ElggEntity { 'url', )); } + + public function check_walled_garden() { + global $CONFIG; + + if ($CONFIG->walled_garden && !isloggedin()) { + register_plugin_hook('index', 'system', 'elgg_walled_garden_index'); + + if (!$this->is_public_page()) { + register_error(elgg_echo('walled_garden:private_page') . current_page_url()); + forward(); + } + } + } + + public function is_public_page($url='') { + global $CONFIG; + + if (empty($url)) { + $url = current_page_url(); + + // do not check against URL queries + if ($pos = strpos($url, '?')) { + $url = substr($url, 0, $pos); + } + } + + // default public pages + $public = array( + $CONFIG->url, + "{$CONFIG->url}action/login", + "{$CONFIG->url}upgrade.php", + ); + + // include a hook for plugin authors to include public pages + + // lookup admin-specific public pages + + // allow public pages + if (in_array($url, $public)) { + return TRUE; + } + + // non-public page + return FALSE; + } } /** -- cgit v1.2.3