From e729f920139f0c65902be2d6b2c32466b08375e8 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Mon, 20 Oct 2025 17:54:52 +0000
Subject: [PATCH] =Form updates

---
 inc/managers/OperationQueue.php |   35 +++++++++++++++++++++++++++++++++--
 1 files changed, 33 insertions(+), 2 deletions(-)

diff --git a/inc/managers/OperationQueue.php b/inc/managers/OperationQueue.php
index f10def6..cf6f398 100644
--- a/inc/managers/OperationQueue.php
+++ b/inc/managers/OperationQueue.php
@@ -604,6 +604,12 @@
 	protected function deepMerge(array $existing, array $new): array
 	{
 		$merged = $existing;
+
+		if (!$this->isAssociativeArray($existing) && !$this->isAssociativeArray($new)) {
+			error_log('It is an associative array!');
+			return array_merge($existing, $new);
+		}
+		error_log('Not an associative array... moving on!');
 		foreach ($new as $key => $newValue) {
 			if (!array_key_exists($key, $existing)) {
 				$merged[$key] = $newValue;
@@ -614,8 +620,15 @@
 						// Recursive merge going deeper, if any of them are associative arrays
 						$merged[$key] = $this->deepMerge($existingValue, $newValue);
 					} else {
-						// Unique merge if indexed arrays
-						$merged[$key] = array_unique(array_merge($existingValue, $newValue), SORT_REGULAR);
+						$containsComplex = $this->containsComplexData($existingValue) || $this->containsComplexData($newValue);
+
+						if ($containsComplex) {
+							// Just merge and re-index - preserves all items from chunks
+							$merged[$key] = array_values(array_merge($existingValue, $newValue));
+						} else {
+							// Simple scalar arrays - use unique merge
+							$merged[$key] = array_unique(array_merge($existingValue, $newValue), SORT_REGULAR);
+						}
 					}
 				} elseif (is_array($existingValue) && !is_array($newValue)) {
 					// The existing value is an array, but the new one isn't
@@ -663,6 +676,21 @@
 		return array_keys($arr) !== range(0, count($arr) - 1);
 	}
 
+	/**
+	 * Check if an array contains complex data (arrays or objects)
+	 * @param array $arr
+	 * @return bool
+	 */
+	protected function containsComplexData(array $arr): bool
+	{
+		foreach ($arr as $item) {
+			if (is_array($item) || is_object($item)) {
+				return true;
+			}
+		}
+		return false;
+	}
+
 	protected function getEarliestScheduledTime(string $existing, string $new): string
 	{
 		$existing_time = strtotime($existing);
@@ -1264,8 +1292,11 @@
 					$filterResult['result'] = [$filterResult['result']];
 				}
 				// Store the result data
+				error_log('Merging Old Result: '. print_r($oldResult, true));
+				error_log('With Newer Result: '. print_r($filterResult['result'], true));
 				$resultToStore = $this->deepMerge($oldResult, $filterResult['result']);
 
+				error_log('Merged Result: '.print_r($resultToStore, true));
 
 				$resultToStore['processed_at'] = current_time('mysql');
 

--
Gitblit v1.10.0