From fff721dd185f5b97f7ae7a6e64189e55887ff590 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sun, 05 Jul 2026 18:36:57 +0000
Subject: [PATCH] =Cleaning up the Square integration (still a bit more to do yet). Also majorly overhauled /rest/ files to ignore a rest request 'user' paramater, and rely on get_current_user_id() instead.

---
 inc/integrations/Helcim.php |   35 ++++++++++++++++++++++++++++++++---
 1 files changed, 32 insertions(+), 3 deletions(-)

diff --git a/inc/integrations/Helcim.php b/inc/integrations/Helcim.php
index d9e4e97..7f2556d 100644
--- a/inc/integrations/Helcim.php
+++ b/inc/integrations/Helcim.php
@@ -40,7 +40,17 @@
 		'per_hour'   => 1000
 	];
 
-	public function __construct(?int $userID = null)
+	protected static array $instances = [];
+	public static function getInstance(?int $userID = null):self
+	{
+		$key = is_null($userID) ? 'base' : $userID;
+		if (!array_key_exists($key, self::$instances)) {
+			self::$instances[$key] = new self($userID);
+		}
+		return self::$instances[$key];
+	}
+
+	protected function __construct(?int $userID = null)
 	{
 		$this->title = 'Helcim';
 		$this->icon  = 'credit-card';
@@ -170,11 +180,30 @@
 		}
 	}
 
+	public function getAdditionalFields(?string $content_type = null):array
+	{
+		if ($content_type === 'customer') {
+			$array = $this->getCustomerFields();
+			return array_combine(
+				array_map(fn($k) => '_square_' . $k, array_keys($array)),
+				$array
+			);
+		}
+		return array_combine(
+			array_map(fn($k) => 'hc_' . $k, array_keys($this->getHelcimMeta($content_type))),
+			$this->getHelcimMeta($content_type)
+		);
+	}
+
+	protected function getCustomerFields():array
+	{
+		return [];
+	}
+
 	/**
 	 * Get Helcim product meta fields by type.
 	 *
-	 * Used by FieldRegistry when 'use_helcim' => true is set
-	 * in a JVB_CONTENT definition.
+	 * Used by Registrar.php  when helcim is configured
 	 */
 	public function getHelcimMeta(?string $type = null): array
 	{

--
Gitblit v1.10.0