From c32ed859f4abd1591c882f4f2a6ee16b1ec275e2 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Tue, 12 May 2026 14:03:27 +0000
Subject: [PATCH] =A little form recovery magic

---
 inc/managers/DirectoryManager.php |   39 +++++++++++++++++++++++++++++----------
 1 files changed, 29 insertions(+), 10 deletions(-)

diff --git a/inc/managers/DirectoryManager.php b/inc/managers/DirectoryManager.php
index f336d60..1d5c15a 100644
--- a/inc/managers/DirectoryManager.php
+++ b/inc/managers/DirectoryManager.php
@@ -6,6 +6,7 @@
 }
 
 use JVBase\registrar\Registrar;
+use JVBase\base\Site;
 use WP_Block;
 use WP_Query;
 
@@ -37,14 +38,14 @@
 
 		jvb_register_do_once('buildDirectories', [$this, 'activate']);
 		add_action('init', [$this, 'registerDirectories']);
-        add_action('render_block', [$this, 'renderBlock'], 998, 3);
+        add_filter('render_block', [$this, 'renderBlock'], 998, 3);
     }
 
     public function registerDirectories():void
     {
 
-		$singular = (array_key_exists('directory_label', JVB_SITE)) ? JVB_SITE['directory_label'][0] : 'Directory';
-		$plural = (array_key_exists('directory_label', JVB_SITE)) ? JVB_SITE['directory_label'][1] : 'Directories';
+		$singular = Site::getDirectorySingular()??'Directory';
+		$plural = Site::getDirectoryPlural()??'Directories';
 		$config = [
 			'labels'	=> [
 				'name'               => $plural,
@@ -130,15 +131,36 @@
 			}
 
 			$config = $registrar->getConfig('directory');
-
 			$title = $config['title'];
+			//Bail early if we've already created the page
+			$existing = new WP_Query([
+				'post_type'	=> BASE.'dash',
+				'name'	=> sanitize_title($title),
+				'posts_per_page'	=> 1,
+			]);
+			if ($existing->have_posts()) {
+				$existing = $existing->posts[0];
+				$created[$directory] = $existing->ID;
+				$directories[$directory] = [
+					'slug'	=> $existing->post_name,
+					'title'	=> $existing->post_title,
+					'ID'	=> $existing->ID,
+					'url'	=> get_the_permalink($existing->ID),
+					'page'	=> $existing->post_title,
+					'description'=> $existing->post_excerpt,
+					'type'	=> $type,
+					'extra'	=> $config[$directory]['directory_extra']??[],
+				];
+				continue;
+			}
+
 			$excerpt = implode(' ', $config['description']??[]);
 			$ID = wp_insert_post([
 				'post_type'		=> BASE.'directory',
 				'post_title'	=> $title,
 				'post_status'	=> 'publish',
 				'post_excerpt'	=> $excerpt,
-				'slug'			=> sanitize_title($title)
+				'post_name'			=> sanitize_title($title)
 			]);
 			if (!is_wp_error($ID)) {
 				add_post_meta($ID, self::$type, $type);
@@ -186,7 +208,7 @@
 			}
 		}
 
-//        if (Features::forSite()->has('has_map')) {
+//        if (Site::has('has_map')) {
 //            $ID = wp_insert_post([
 //                'post_type'     => BASE.'directory',
 //                'post_title'    => 'Map',
@@ -711,10 +733,7 @@
 
 	public function referAs($plural = false):string
 	{
-		if (!empty(JVB_SITE) && array_key_exists('directory_label', JVB_SITE)) {
-			return ($plural) ? JVB_SITE['directory_label'][1] : JVB_SITE['directory_label'][0];
-		}
-		return ($plural) ? 'Directories' : 'Directory';
+		return ($plural) ? Site::getDirectoryPlural()??'Directories' : Site::getDirectorySingular()??'Directory';
 	}
 
 	/*****************************************************

--
Gitblit v1.10.0