From 86c6cd3cc099d2480932ede03c12cea01e625c94 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sun, 26 Apr 2026 21:56:28 +0000
Subject: [PATCH] =Requiring files based on Site class settings

---
 inc/managers/RoleManager.php |   45 ++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 40 insertions(+), 5 deletions(-)

diff --git a/inc/managers/RoleManager.php b/inc/managers/RoleManager.php
index 0f235d6..863ff46 100644
--- a/inc/managers/RoleManager.php
+++ b/inc/managers/RoleManager.php
@@ -2,7 +2,7 @@
 namespace JVBase\managers;
 
 use JVBase\registrar\Registrar;
-use JVBase\utility\Features;
+use JVBase\base\Site;
 use WP_User;
 use WP_Role;
 
@@ -16,9 +16,7 @@
 
     public function __construct()
     {
-       $this->roles = array_keys(array_map(function ($instance) {
-		   return $instance->slug;
-	   }, Registrar::getRegistered('user')));
+       $this->roles = Registrar::getRegistered('user');
 
 	   $this->content = array_map(function($content) {
 		   $registrar = Registrar::getInstance($content);
@@ -279,7 +277,7 @@
 			$capabilities['access_dashboard'] = true;
 		}
 
-		if (Features::forSite()->has('favourites') && $registrar->hasFeature('can_favourite') ?? true) {
+		if (Site::has('favourites') && $registrar->hasFeature('can_favourite') ?? true) {
 			$capabilities['can_favourite'] = true;
 		}
 
@@ -475,6 +473,15 @@
 		$user->add_cap(BASE . 'can_own_' . $termID);
 		$user->add_cap(BASE . 'can_manage_' . $termID);
 
+		$owners = get_term_meta($termID, BASE.'owners', true);
+		if (empty($owners)) {
+			$owners = [];
+		}
+		$owners[] = $userID;
+		$owners = array_unique($owners);
+		update_term_meta($termID, BASE.'owners', $owners);
+
+
 		do_action(BASE . 'granted_ownership', $userID, $termID, $taxonomy);
 
 		return true;
@@ -500,6 +507,16 @@
 			return false;
 		}
 
+		$owners = get_term_meta($termID, BASE.'owners', true);
+		if (empty($owners)) {
+			$owners = [];
+		}
+		if (in_array($userID, $owners)) {
+			unset($owners[array_search($userID, $owners)]);
+		}
+		$owners = array_unique($owners);
+		update_term_meta($termID, BASE.'owners', $owners);
+
 		$user->remove_cap(BASE . 'can_own_' . $termID);
 
 		do_action(BASE . 'revoked_ownership', $userID, $termID, $taxonomy);
@@ -537,6 +554,14 @@
 
 		$user->add_cap(BASE . 'can_manage_' . $termID);
 
+		$managers = get_term_meta($termID, BASE.'managers', true);
+		if (empty($managers)) {
+			$managers = [];
+		}
+		$managers[] = $userID;
+		$managers = array_unique($managers);
+		update_term_meta($termID, BASE.'managers', $managers);
+
 		do_action(BASE . 'granted_management', $userID, $termID, $taxonomy);
 
 		return true;
@@ -564,6 +589,16 @@
 
 		$user->remove_cap(BASE . 'can_manage_' . $termID);
 
+		$managers = get_term_meta($termID, BASE.'managers', true);
+		if (empty($managers)) {
+			$managers = [];
+		}
+		if (in_array($userID, $managers)) {
+			unset($managers[array_search($userID, $managers)]);
+		}
+		$managers = array_unique($managers);
+		update_term_meta($termID, BASE.'managers', $managers);
+
 		do_action(BASE . 'revoked_management', $userID, $termID, $taxonomy);
 
 		return true;

--
Gitblit v1.10.0