aboutsummaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
Diffstat (limited to 'engine')
-rw-r--r--engine/lib/group.php30
1 files changed, 30 insertions, 0 deletions
diff --git a/engine/lib/group.php b/engine/lib/group.php
index 588a60aac..cff387298 100644
--- a/engine/lib/group.php
+++ b/engine/lib/group.php
@@ -794,6 +794,36 @@
}
/**
+ * Checks access to a group.
+ *
+ * @param boolean $forward If set to true (default), will forward the page; if set to false, will return true or false.
+ * @return true|false If $forward is set to false.
+ */
+ function group_gatekeeper($forward = true) {
+
+ $allowed = true;
+ $url = '';
+
+ if ($group = page_owner_entity()) {
+ if ($group instanceof ElggGroup) {
+ $url = $group->getURL();
+ if (
+ ((!isloggedin()) && (!$group->isPublicMembership())) ||
+ ((!$group->isMember(get_loggedin_user()) && (!$group->isPublicMembership())))
+ ) $allowed = false;
+ }
+ }
+
+ if ($forward && $allowed == false) {
+ forward($url);
+ exit;
+ }
+
+ return $allowed;
+
+ }
+
+ /**
* Performs initialisation functions for groups
*
*/