From 772462eeca3002a1d52508aeba485aab2b4742ad Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Tue, 03 Mar 2026 19:06:19 +0000
Subject: [PATCH] =MAJOR OVERHAUL. Likely should have made a new branch ages ago. Key changes: Registrar.php is the base for custom post types, taxonomies, and user roles. Replaces JVB_CONTENT, JVB_TAXONOMY, and JVB_USER constants, eliminates most of Features.php (except for JVB_SITE, JVB_MEMBERSHIP), and has built in sanitizing and validation via sub-classes. Also started a major overhaul of the Schema output. Created a shit ton of property traits and classes to help sanitize and ensure proper data for different schema types. Still a bunch to do, but better to be starting committing changes here on this other branch.

---
 inc/rest/Rest.php |   30 +++++++++---------------------
 1 files changed, 9 insertions(+), 21 deletions(-)

diff --git a/inc/rest/Rest.php b/inc/rest/Rest.php
index 6435ec8..406a3ab 100644
--- a/inc/rest/Rest.php
+++ b/inc/rest/Rest.php
@@ -2,6 +2,7 @@
 namespace JVBase\rest;
 
 use JVBase\managers\Cache;
+use JVBase\registrar\Registrar;
 use JVBase\utility\Features;
 use WP_REST_Request;
 use WP_REST_Response;
@@ -207,7 +208,7 @@
 
 		// Keep existing author filtering logic
 		$authorQuery = [];
-		foreach (jvbAuthorUsers() as $type) {
+		foreach (Registrar::getFeatured('can_create', 'user') as $type) {
 			if (array_key_exists($type, $data)) {
 				$artist_ids = array_map(
 					'absint',
@@ -240,7 +241,7 @@
 
 		//Handle random
 		if (array_key_exists('orderby', $data) && $data['orderby'] === 'random') {
-			$current_seed = jvbGetRandomSeed();
+			$current_seed = floor(time() / 1800);
 			$args['orderby'] = 'RAND(' . $current_seed . ')';
 			unset($args['order']);
 			return $args;
@@ -305,19 +306,19 @@
 		$content = jvbNoBase($post_type);
 
 		// Get config for this content type
-		$config = Features::getConfig($content);
-		if (!$config) {
+		$registrar = Registrar::getInstance($content);
+		if (!$registrar) {
 			return null;
 		}
 
 		// Check if this orderby is a custom order
-		$customOrders = $config['custom_order'] ?? [];
+		$customOrders = $registrar->custom_order??[];
 		if (empty($customOrders) || !isset($customOrders[$orderby])) {
 			return null;
 		}
 
 		// Get field definition
-		$fields = $config['fields'] ?? [];
+		$fields = $registrar->getFields() ?? [];
 		if (!isset($fields[$orderby])) {
 			return null;
 		}
@@ -456,15 +457,6 @@
 	}
 
 	/**
-	 * Check if content type exists
-	 */
-	protected function checkContent(string $content, bool $returnBool = false): string|bool
-	{
-		$result = JVB_CONTENT[$content] ?? JVB_TAXONOMY[$content] ?? JVB_USER[$content] ?? '';
-		return $returnBool ? ($result !== '') : $result;
-	}
-
-	/**
 	 * Check if user exists (cached)
 	 */
 	protected function checkUser(int $userId): bool
@@ -526,12 +518,8 @@
 	protected function isTimeline($args, $data):bool
 	{
 		$post_types = is_array($args['post_type']) ? $args['post_type'] : [$args['post_type']];
-		foreach ($post_types as $type) {
-			if (Features::forContent($type)->has('is_timeline')) {
-				return true;
-			}
-		}
-		return false;
+		$hasTimeline = array_map(function($item) { return jvbCheckBase($item); },Registrar::getFeatured('is_timeline', 'post'));
+		return !empty(array_intersect($post_types, $hasTimeline));
 	}
 	// =========================================================================
 	// SECURITY

--
Gitblit v1.10.0