From 0afb2c0046b55c123eafb4ab9ee77efa68d12463 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sat, 06 Jun 2026 17:15:31 +0000
Subject: [PATCH] =Starting the Favourites.js setup, converting previous Northeh stuff to new Registrar, fixing up Square.php integration to match
---
inc/registrar/fields/Field.php | 94 ++++++++++++++++++++++++++++++++++++++---------
1 files changed, 76 insertions(+), 18 deletions(-)
diff --git a/inc/registrar/fields/Field.php b/inc/registrar/fields/Field.php
index 6bbe401..c1d5e33 100644
--- a/inc/registrar/fields/Field.php
+++ b/inc/registrar/fields/Field.php
@@ -19,6 +19,11 @@
protected bool $quickEdit = true; // whether to show in quick edit table
protected bool $quill; // whether to use quill
protected int $maxLength; // of characters
+ protected int $min;
+ protected int $max;
+ protected string $subtype;
+ protected array $condition;
+ protected array $allowedSubtype = ['text', 'url','number','tel','email','number'];
/**
* @var ?bool For timeline post types. Indicates whether all posts get this field, or just the parent
*/
@@ -37,12 +42,23 @@
return;
}
}
+ $current = get_class($this);
+ $class = match($config['type']) {
+ 'group' => ($current !== GroupedField::class) ? new GroupedField($name, $config) : $this,
+ 'select', 'radio', 'checkbox' => ($current !== OptionsField::class) ? new OptionsField($name, $config) : $this,
+ 'repeater' => ($current !== RepeaterField::class) ? new RepeaterField($name, $config) : $this,
+ 'taglist' => ($current !== TagListField::class) ? new TagListField($name, $config) : $this,
+ 'taxonomy', 'post', 'user', 'selector' => ($current !== SelectorField::class) ? new SelectorField($name, $config) : $this,
+ 'upload' => ($current !== UploadField::class) ? new UploadField($name, $config) : $this,
+ default => $this
+ };
+
foreach ($config as $key => $value) {
- if (property_exists($this, $key)) {
- $method = 'set' . ucfirst($key);
- $this->$method($value);
+ if (property_exists($class, $key)) {
+ $method = 'set'.implode('',array_map('ucfirst',explode('_', $key)));;
+ $class->$method($value);
} else {
- error_log('Instance: '.print_r($this, true));
+// error_log('Instance: '.print_r($class, true));
error_log('[JVBase\registrar\Field] Invalid key for '.$name.': '.$key);
}
}
@@ -65,7 +81,7 @@
return $this->hint;
}
- protected function setType(string $type):void{
+ public function setType(string $type):void{
$allowed = array_keys(MetaTypeManager::getTypes());
if (!in_array($type, $allowed)) {
error_log('[JVBase\registrar\Field] Invalid type attempted '.$type);
@@ -74,24 +90,24 @@
$this->type = $type;
}
- protected function setLabel(string $label):void{
+ public function setLabel(string $label):void{
$this->label = $label;
}
- protected function setRequired(bool $required):void{
+ public function setRequired(bool $required):void{
$this->required = $required;
}
- protected function setHidden(bool $hidden):void{
+ public function setHidden(bool $hidden):void{
$this->hidden = $hidden;
}
- protected function setQuickEdit(bool $quickEdit):void{
+ public function setQuickEdit(bool $quickEdit):void{
$this->quickEdit = $quickEdit;
}
- protected function setDefault(mixed $default):void
+ public function setDefault(mixed $default):void
{
$this->default = $default;
}
- protected function setQuill(bool $quill):void
+ public function setQuill(bool $quill):void
{
$this->quill = $quill;
}
@@ -112,24 +128,39 @@
{
return $this->section??null;
}
-
- protected function setMaxLength(int $maxLength):void
+ public function setMin(int $min):void
+ {
+ $this->min = $min;
+ }
+ public function getMin():?int
+ {
+ return $this->min??null;
+ }
+ public function setMax(int $max):void
+ {
+ $this->max = $max;
+ }
+ public function getMax():?int
+ {
+ return $this->max??null;
+ }
+ public function setMaxLength(int $maxLength):void
{
$this->maxLength = $maxLength;
}
public function getConfig():array{
$config = get_object_vars($this);
- $config = array_map(function ($item) {
+ return array_map(function ($item) {
if (is_a($item, Field::class)) {
return $item->getConfig();
} else if (is_array($item)) {
$temp = [];
- foreach ($item as $v) {
+ foreach ($item as $k => $v) {
if (is_a($v, Field::class)) {
- $temp[] = $v->getConfig();
+ $temp[$k] = $v->getConfig();
} else {
- $temp[] = $v;
+ $temp[$k] = $v;
}
}
return $temp;
@@ -137,7 +168,34 @@
return $item;
}
}, $config);
+ }
+ public function setSubtype(string $subtype):void
+ {
+ if (!in_array($subtype, $this->allowedSubtype)) {
+ error_log('[SelectorField]Attempted subtype not allowed: '.$subtype);
+ return;
+ }
+ $this->subtype = $subtype;
+ }
+ public function getSubtype():string
+ {
+ return $this->subtype;
+ }
- return $config;
+ public function setCondition(array $condition):void
+ {
+ $required = ['field', 'operator', 'value'];
+ foreach ($required as $field) {
+ if (!array_key_exists($field, $condition)) {
+ error_log('[Field]::setCondition Required condition '.$field.' not found');
+ return;
+ }
+ }
+
+ $this->condition = $condition;
+ }
+ public function getCondition(array $condition):array
+ {
+ return $this->condition;
}
}
--
Gitblit v1.10.0