From 48721c85ebcfa973ee81719d2467ca80e4253dc9 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Fri, 01 May 2026 17:30:03 +0000
Subject: [PATCH] =Edmonton Ink hard test begins! Real testing of the managers and reset routes will commence. So far, just ensuring our classes are all loaded correctly: Site() and its sub-classes Membership, Login, etc. Care should be taken to load conditionally on 'init', as we finish defining most settings by 'plugins_loaded' at priority 5
---
base/Membership.php | 46 ++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 46 insertions(+), 0 deletions(-)
diff --git a/base/Membership.php b/base/Membership.php
index 9032758..dd57219 100644
--- a/base/Membership.php
+++ b/base/Membership.php
@@ -1,5 +1,7 @@
<?php
namespace JVBase\base;
+use JVBase\registrar\Registrar;
+
/**
* JVB_MEMBERSHIP defines the structure of the directory
* Options include:
@@ -38,6 +40,7 @@
{
protected bool $member_content = true;
protected bool $invitable = false;
+ protected bool $member_verified = false;
protected array $can_invite = [];
protected bool $notifications = true;
protected bool $member_expires = false;
@@ -89,6 +92,35 @@
return false;
}
+ public function setInvitable(array $invitable):void
+ {
+ $users = Registrar::getRegistered('user');
+
+ $invitable = array_filter($invitable, function($role) use ($users) {
+ if (!in_array($role, $users)) {
+ error_log('[Membership]::set Invitable role '.$role.' does not exist.');
+ return false;
+ }
+ return true;
+ }, ARRAY_FILTER_USE_KEY);
+ $allowed = [];
+ foreach ($invitable as $inviter => $canInvites) {
+ $canInvites = array_filter($canInvites, function($role) use ($users){
+ if (!in_array($role, $users)) {
+ error_log('[Membership]::set Invitable role '.$role.' does not exist.');
+ return false;
+ }
+ return true;
+ });
+ if (!empty($canInvites)) {
+ $allowed[$inviter] = $canInvites;
+ }
+ }
+ if (!empty($allowed)) {
+ $this->can_invite = $allowed;
+ }
+ }
+
public function getInviters():array
{
return $this->can_invite;
@@ -102,6 +134,13 @@
return array_key_exists($role, $this->can_invite) ? $this->can_invite[$role] : [];
}
+ public function setApprovers(array $roles):void
+ {
+ $allowed = Registrar::getRegistered('users');
+ $this->can_approve = array_filter($roles, function($role) use ($allowed){
+ return in_array($role, $allowed);
+ });
+ }
public function getApprovers():array
{
return $this->can_approve;
@@ -113,6 +152,13 @@
}
+ public function setCanSeeForum(array $roles):void
+ {
+ $allowed = Registrar::getRegistered('users');
+ $this->member_only = array_filter($roles, function($role) use ($allowed){
+ return in_array($role, $allowed);
+ });
+ }
public function canSeeForum(string $role):bool
{
return $this->forum && (empty($this->member_only) || in_array($role, $this->member_only));
--
Gitblit v1.10.0