aboutsummaryrefslogtreecommitdiff
path: root/engine/lib/sites.php
diff options
context:
space:
mode:
Diffstat (limited to 'engine/lib/sites.php')
-rw-r--r--engine/lib/sites.php45
1 files changed, 45 insertions, 0 deletions
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;
+ }
}
/**