From 5b50afdcafd150186ea5c7b0e1cad98065590b35 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Fri, 28 Aug 2026 18:44:28 +0000
Subject: [PATCH] =A few more phpStorm suggestions, mainly in PHPDocs

---
 inc/registrar/helpers/AddIntegrationFields.php |   42 +++++++++++++++++++++++++++++-------------
 1 files changed, 29 insertions(+), 13 deletions(-)

diff --git a/inc/registrar/helpers/AddIntegrationFields.php b/inc/registrar/helpers/AddIntegrationFields.php
index fde540d..1a6fe68 100644
--- a/inc/registrar/helpers/AddIntegrationFields.php
+++ b/inc/registrar/helpers/AddIntegrationFields.php
@@ -1,23 +1,25 @@
 <?php
 namespace JVBase\registrar\helpers;
 
+use JVBase\integrations\ServiceMap;
 use JVBase\registrar\config\Integration;
 use JVBase\registrar\Registrar;
-use JVBase\utility\Features;
+use JVBase\base\Site;
 
 if (!defined('ABSPATH')) {
 	exit;
 }
 
 class AddIntegrationFields {
+	use ServiceMap;
 	protected string $service_name;
-	protected Registrar $registrar;
+	private Registrar $registrar;
 	protected Integration $config;
 	protected array $allowed;
 
 	public function __construct(string $service_name, ?Registrar $registrar = null) {
 		$this->initAllowed();
-		if (!in_array($service_name, $this->allowed)) {
+		if (!array_key_exists($service_name, $this->allowed)) {
 			return;
 		}
 
@@ -28,26 +30,27 @@
 
 		$this->config = $registrar->getIntegration($service_name);
 
+		add_action('jvb_define_integrations', [$this, 'addIntegrationFields'],20);
 	}
 	protected function initAllowed():void
 	{
 		$allowed = [];
-		if (Features::hasIntegration('gmb')) {
+		if (Site::hasIntegration('gmb')) {
 			$allowed['gmb'] = 'Google My Business';
 		}
-		if (Features::hasIntegration('facebook')) {
+		if (Site::hasIntegration('facebook')) {
 			$allowed['facebook'] = 'Facebook';
 		}
-		if (Features::hasIntegration('square')) {
+		if (Site::hasIntegration('square')) {
 			$allowed['square'] = 'Square';
 		}
-		if (Features::hasIntegration('instagram')) {
+		if (Site::hasIntegration('instagram')) {
 			$allowed['instagram'] = 'Instagram';
 		}
-		if (Features::hasIntegration('bluesky')) {
+		if (Site::hasIntegration('bluesky')) {
 			$allowed['bluesky'] = 'BlueSky';
 		}
-		if (Features::hasIntegration('helcim')) {
+		if (Site::hasIntegration('helcim')) {
 			$allowed['helcim'] = 'Helcim';
 		}
 		$this->allowed = $allowed;
@@ -56,6 +59,7 @@
 	public function addIntegrationFields():void
 	{
 		$fields = $this->getIntegrationFields();
+//		error_log('[AddIntegrationFields] adding fields for '.$this->service_name.': '.print_r($fields, true));
 		foreach ($fields as $fieldName => $fieldConfig) {
 			$this->registrar->fields()->addField($fieldName, $fieldConfig);
 		}
@@ -63,11 +67,16 @@
 
 	public function getIntegrationFields():array
 	{
+		if (!$this->getService($this->service_name)) {
+			error_log('Attempted to connect to unsupported service: '.$this->service_name);
+			return [];
+		}
 		$fields = [
 			'share_to_'.$this->service_name => [
 				'type'	=> 'true_false',
 				'label'	=> 'Share To '.$this->allowed[$this->service_name],
 				'section'	=> 'sync',
+				'default'	=> 1
 			]
 		];
 		if ($this->config->getUpdate()){
@@ -79,7 +88,8 @@
 					'field'	=> 'share_to_'.$this->service_name,
 					'value'	=> 1,
 					'operator'	=> '=='
-				]
+				],
+				'default'	=> 1,
 			];
 
 			$fields["_{$this->service_name}_item_id"] = [
@@ -116,18 +126,24 @@
 		}
 
 		if ($this->config->getCanSchedule()) {
-			$fields['schedule_'.$this->service_name] = [
+			$fields['_'.$this->service_name.'_scheduled_at'] = [
 				'type'	=> 'datetime',
 				'label'	=> 'Schedule for later?',
 				'condition' => [
 					'field' => 'share_to_'.$this->service_name,
 					'operator' => '==',
 					'value' => 1
-				]
+				],
+				'default'	=> 1,
 			];
 		}
-		$additional = JVB()->connect($this->service_name)->getAdditionalFields($this->config->getContentType());
+
+		$additional = $this->getService($this->service_name)->getAdditionalFields($this->config->getContentType());
 		if (!empty($additional)) {
+			$additional = array_combine(
+				array_map(fn($k) => str_starts_with($k, '_'.$this->service_name) ? $k : "_{$this->service_name}_{$k}", array_keys($additional)),
+				$additional
+			);
 			$fields = array_merge($fields, $additional);
 		}
 		return $fields;

--
Gitblit v1.10.0