From 3aada9949d51024a92a8b5c6cb70d12f9c3cac16 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sun, 21 Dec 2025 19:59:48 +0000
Subject: [PATCH] =auth refactored via rest, referral system set up for Jane, some javascript consolidation

---
 inc/meta/MetaSanitizer.php |   50 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 50 insertions(+), 0 deletions(-)

diff --git a/inc/meta/MetaSanitizer.php b/inc/meta/MetaSanitizer.php
index aeff742..f4f573f 100644
--- a/inc/meta/MetaSanitizer.php
+++ b/inc/meta/MetaSanitizer.php
@@ -67,6 +67,56 @@
         return implode(',', $values);
     }
 
+	protected function sanitizeTagList(array $values, array $field_config): array
+	{
+		if (!is_array($values)) {
+			return [];
+		}
+
+		if (empty(array_filter($values, fn($value) => !empty($value)))) {
+			return [];
+		}
+
+		if (!isset($field_config['fields']) || !is_array($field_config['fields'])) {
+			return [];
+		}
+
+		$sanitized = [];
+
+		foreach ($values as $row) {
+			if (!is_array($row)) {
+				continue;
+			}
+
+			// Clean up field names (remove prefixes like "fieldname:0:email")
+			$temp = [];
+			foreach ($row as $key => $value) {
+				$key_parts = explode(':', $key);
+				$clean_key = $key_parts[array_key_last($key_parts)];
+				$temp[$clean_key] = $value;
+			}
+			$row = $temp;
+
+			// Sanitize each field
+			$clean_row = [];
+			foreach ($field_config['fields'] as $key => $subfield_config) {
+				if (!array_key_exists($key, $row)) {
+					continue;
+				}
+
+				$subfield_config['name'] = $key; // For backwards compatibility
+				$clean_row[$key] = $this->sanitize($row[$key], $subfield_config);
+			}
+
+			// Only add row if it has at least one non-empty value
+			if (!empty(array_filter($clean_row))) {
+				$sanitized[] = $clean_row;
+			}
+		}
+
+		return $sanitized;
+	}
+
     protected function sanitizeRepeater(array $values, array $field_config):array
     {
         if (!is_array($values)) {

--
Gitblit v1.10.0