From 42fa8304ddb811b0f725f245130f70c0f5e86a6c Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Tue, 04 Nov 2025 06:12:02 +0000
Subject: [PATCH] =Refactored LoginManager to be more extensible and configurable, as well as an AjaxRateLimiter

---
 inc/managers/RoleManager.php |   54 +++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 35 insertions(+), 19 deletions(-)

diff --git a/inc/managers/RoleManager.php b/inc/managers/RoleManager.php
index b575a04..417c2ee 100644
--- a/inc/managers/RoleManager.php
+++ b/inc/managers/RoleManager.php
@@ -356,22 +356,29 @@
 		}
 	}
 
+	/**
+	 * @param string $content
+	 * @return array|string[]
+	 * Note: must match what is created in PostTypeRegistrar.php::register
+	 */
 	protected function getCapabilities(string $content):array
 	{
 		$content = jvbNoBase($content);
 		if (!$this->isValidContentType($content)) {
 			return [];
 		}
+
 		$plural = $this->getContentPlural($content);
+
 		return [
-			'edit_' . $plural,
-			'delete_' . $plural,
-			'read_' . $plural,
-			'edit_published_' . $plural,
-			'delete_published_' . $plural,
-			'edit_private_' . $plural,
-			'delete_private_' . $plural,
-			'publish_' . $plural,
+			"edit_{$content}",
+			"read_{$content}",
+			"delete_{$content}",
+			"edit_{$plural}",
+			"edit_others_{$plural}",
+			"publish_{$plural}",
+			"read_private_{$plural}",
+			"edit_{$plural}",
 		];
 	}
 	protected function getOthersCapabilities(string $content):array
@@ -382,23 +389,32 @@
 		}
 		$plural = $this->getContentPlural($content);
 		return [
-			'edit_others_' . $plural,
-			'delete_others_' . $plural,
-			'read_private_' . $plural,
-			'edit_private_' . $plural,
-			'delete_private_' . $plural,
+			"edit_others_{$plural}",
+			"delete_others_{$plural}",
+			"read_private_{$plural}",
+			"edit_private_{$plural}",
+			"delete_private_{$plural}",
 		];
 	}
 
-	private function getContentPlural(string $content): string
+	public static function getPlural(string $content): string
+	{
+		$self = new self;
+		return $self->getContentPlural($content);
+	}
+	public function getContentPlural(string $content): string
 	{
 		$content = jvbNoBase($content);
-
-		if (array_key_exists($content, JVB_CONTENT)) {
-			return strtolower(JVB_CONTENT[$content]['plural'] ?? $content . 's');
+		$config = Features::getConfig($content);
+		$capsMap = $config['capability_type']??[];
+		if (empty($capsMap)){
+			$capsMap = [
+				$content,
+				str_replace('-', '_',sanitize_title(strtolower(JVB_CONTENT[$content]['plural'])))
+			];
+			return $capsMap[1];
 		}
-
-		return strtolower($content . 's');
+		return str_replace('-', '_', sanitize_title(strtolower($content . 's')));
 	}
 
 	public function activate(): void

--
Gitblit v1.10.0