From c204185ae86a98994f80010abf35a190c9406739 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sun, 12 Jul 2026 18:08:19 +0000
Subject: [PATCH] =Refactor of Integrations.php. Separated different functionality into traits that classes can use to add that functionality. Hopefully will make maintaining it a little easier. Still have to finish up, as well as refactoring the individual classes to utilize the new system.

---
 inc/integrations/services/Square.php |   55 ++++++++++++++++++++++++-------------------------------
 1 files changed, 24 insertions(+), 31 deletions(-)

diff --git a/inc/integrations/Square.php b/inc/integrations/services/Square.php
similarity index 98%
rename from inc/integrations/Square.php
rename to inc/integrations/services/Square.php
index c0191a3..0d18f51 100644
--- a/inc/integrations/Square.php
+++ b/inc/integrations/services/Square.php
@@ -1,18 +1,19 @@
 <?php
-namespace JVBase\integrations;
 
+namespace JVBase\integrations\services;
+use Exception;
+use JVBase\integrations\Integrations;
+use JVBase\managers\queue\executors\IntegrationExecutor;
+use JVBase\managers\queue\TypeConfig;
 use JVBase\meta\Form;
 use JVBase\meta\Meta;
-use Exception;
-use JVBase\registrar\Fields;
-use JVBase\registrar\Posts;
 use JVBase\registrar\Registrar;
+use JVBase\ui\Checkout;
 use JVBase\ui\CRUDSkeleton;
 use WP_Error;
-use JVBase\ui\Checkout;
-use JVBase\managers\queue\TypeConfig;
-use JVBase\managers\queue\executors\IntegrationExecutor;
+use WP_Post;
 use WP_Query;
+use WP_User;
 
 if (!defined('ABSPATH')) {
 	exit;
@@ -86,16 +87,14 @@
 	protected string $locationId = '';
 	protected array $locations = [];
 
-	protected static array $instances = [];
+	protected static Square $instance;
 
-	public static function getInstance(?int $userID = null):self
+	public static function getInstance():self
 	{
-		$key = is_null($userID) ? 'base' : $userID;
-
-		if (!array_key_exists($key, self::$instances)) {
-			self::$instances[$key] = new self($userID);
+		if (!isset(self::$instance)) {
+			self::$instance = new self();
 		}
-		return self::$instances[$key];
+		return self::$instance;
 	}
 
 	protected function __construct(?int $userID = null)
@@ -190,9 +189,9 @@
 			'delete' => true
 		];
 		$this->supportsWebp = false;
-		$this->handleWebhooks = true;
+		$this->hasWebhooks = true;
 
-		parent::__construct($userID);
+		parent::__construct();
 
 		// Add Square-specific actions
 		$this->actions = array_merge(
@@ -858,6 +857,7 @@
 	protected function registerAdditionalHooks(): void
 	{
 		if (!$this->isSetUp()) {
+			error_log('Square is not setup');
 			return;
 		}
 
@@ -932,7 +932,7 @@
 	/**
 	 * Handle post save for Square sync
 	 */
-	protected function handleTheSavePost(int $postID, \WP_Post $post, bool $update, array $settings): void
+	protected function handleTheSavePost(int $postID, WP_Post $post, bool $update, array $settings): void
 	{
 		error_log('==== [Square]::handleTheSavePost ====');
 		$this->queueOperation(self::$syncTo, [
@@ -1113,7 +1113,7 @@
 			if (!in_array($post_id, $success)) {
 				$found_in_errors = false;
 				foreach ($errors as $error) {
-					if (strpos($error, "Post $post_id") !== false) {
+					if (str_contains($error, "Post $post_id")) {
 						$found_in_errors = true;
 						break;
 					}
@@ -1542,7 +1542,7 @@
 		}
 
 		// Set user role (assuming you have a customer role defined)
-		$user = new \WP_User($user_id);
+		$user = new WP_User($user_id);
 		$user->set_role(BASE.'foodie');
 
 		// Generate password reset key
@@ -1576,7 +1576,7 @@
 	/**
 	 * Send welcome email with password setup
 	 */
-	private function sendWelcomeEmail(\WP_User $user, string $reset_key): void
+	private function sendWelcomeEmail(WP_User $user, string $reset_key): void
 	{
 		$site_name = get_bloginfo('name');
 		$reset_url = get_home_url(null, "wp-login.php?action=rp&key=$reset_key&login=" . rawurlencode($user->user_login), 'login');
@@ -2450,7 +2450,7 @@
 				$sanitized[$key] = sanitize_key($value);
 			}
 			// Handle boolean fields
-			elseif ($key === 'use_sandbox' || strpos($key, 'enable_') === 0) {
+			elseif ($key === 'use_sandbox' || str_starts_with($key, 'enable_')) {
 				$sanitized[$key] = (bool) $value;
 			}
 			// Handle numeric fields
@@ -3346,8 +3346,7 @@
 		// Fetch from Square
 		$response = $this->getRequest('orders/' . $order_id);
 		if (!is_wp_error($response)) {
-			$state = $response['order']['state'] ?? null;
-			return $state;
+			return $response['order']['state'] ?? null;
 		}
 
 		return null;
@@ -3430,7 +3429,7 @@
 	}
 	public function renderDashPage():void
 	{
-		$instance = $this->determineInstance();
+		$this->determineUser();
 
 		$crud = new CRUDSkeleton();
 		$crud->icon('receipt');
@@ -3452,13 +3451,7 @@
 
 		$crud->render();
 	}
-	protected function determineInstance():self
-	{
-		if (current_user_can('manage_options')) {
-			return self::$instances['base'];
-		}
-		return self::getInstance(get_current_user_id());
-	}
+
 
 	public function getOrderPost(string $order_id):int|false
 	{

--
Gitblit v1.10.0