From a9654f00c8fbc9934289d761843ddd071025013f Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Fri, 28 Aug 2026 17:20:28 +0000
Subject: [PATCH] =PHPStorm Code Inspection: fixed class reference errors (from getting rid of JVB() and replacing with direct class::getInstance; as well as general code sniffing, etc

---
 inc/meta/Meta.php |  126 +++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 123 insertions(+), 3 deletions(-)

diff --git a/inc/meta/Meta.php b/inc/meta/Meta.php
index 8f83f18..ec00584 100644
--- a/inc/meta/Meta.php
+++ b/inc/meta/Meta.php
@@ -132,14 +132,134 @@
 			$meta = [];
 		}
 		$meta = array_map(fn($value) => maybe_unserialize($value[0]), $meta);
+
+
 		$this->fields = [];
+
+		if (class_exists('WooCommerce') && $this->type === 'post' && $this->wpObject->post_type??'' === 'product') {
+			$fields['post_title'] = [
+				'type'	=> 'text',
+				'label'	=> 'Title',
+			];
+			$fields['post_content'] = [
+				'type'	=> 'text',
+				'label'	=> 'Content',
+			];
+			$fields['post_excerpt'] = [
+				'type'	=> 'text',
+				'label'	=> 'Short Description',
+			];
+			$fields['post_id'] = [
+				'type'	=> 'text',
+				'label'	=> 'ID',
+			];
+
+
+			$fields['_stock'] = [
+				'type' => 'number',
+				'label' => 'Stock',
+				'default'	=> null
+			];
+			$fields['_stock_status'] = [
+				'type'	=> 'select',
+				'label'	=> 'Stock Status',
+				'default'	=> 'instock',
+				'options'	=> [
+					'instock'	=> 'In Stock',
+					'outofstock'	=> 'Out of Stock',
+					'onbackorder'		=> 'On Backorder'
+				]
+			];
+			$fields['_price'] = [
+				'type'		=> 'text',
+				'subtype'	=> 'number',
+				'label'		=>	'Price'
+			];
+
+
+			$product = wc_get_product($id);
+			$fields['sku'] = [
+				'type'	=> 'text',
+				'label'	=> 'SKU',
+			];
+
+			$out = [];
+			if ($product && $product->is_type('variable')) {
+				$var = $product->get_children();
+				$var = array_filter(array_map(function($v) {
+					return wc_get_product($v);
+				}, $var));
+
+				$title= $product->get_title();
+				foreach ($var as $variation) {
+					$out[] = [
+						'id'	=> $variation->get_id(),
+						'sku'	=> $variation->get_sku(),
+						'title'	=> str_replace($title.' - ', '', $variation->get_name()),
+						'price'	=> $variation->get_price(),
+						'description'=> $variation->get_short_description(),
+						'sale'	=> $variation->get_sale_price(),
+						'img'	=> $variation->get_image_id(),
+						'stock'	=> $variation->get_stock_quantity(),
+						'stock_status'	=> $variation->get_stock_status()
+					];
+				}
+			}
+			if (!empty($out)) {
+				$this->fields['variations'] = new Field('variations', $out, [
+					'type'	=> 'repeater',
+					'label'	=> 'Variations',
+					'fields'	=> [
+						'id'	=> [
+							'type'	=> 'text',
+							'subtype'	=> 'number',
+							'label'	=> 'Variation ID',
+						],
+						'sku'	=> [
+							'type'	=> 'text',
+							'label'	=> 'Stock Keeping Unit (SKU)'
+						],
+						'title'	=> [
+							'type'	=> 'text',
+							'label'	=> 'Variation Title'
+						],
+						'price'	=> [
+							'type'	=> 'text',
+							'subtype'	=> 'number',
+							'label'	=> 'Variation Price'
+						],
+						'sale'	=> [
+							'type'	=> 'text',
+							'subtype'	=> 'number',
+							'label'	=> 'Sale Price',
+						],
+						'image'	=> [
+							'type'	=> 'text',
+							'subtype'	=> 'number',
+							'label'	=> 'Variation Image ID'
+						],
+						'stock'	=> [
+							'type'	=> 'text',
+							'label'	=> 'Stock Quantity'
+						],
+						'stock_status'	=> [
+							'type'	=> 'text',
+							'label'	=> 'Stock Status'
+						]
+					]
+				]);
+			}
+
+
+		}
 		foreach ($fields as $fieldName => $config) {
 			$fieldName = jvbNoBase($fieldName);
+			$value = '';
 			if ($this->type === 'option') {
 				$value = get_option(BASE . $fieldName, $config['default'] ?? '');
 			} else if (
-				$this->wpObject && property_exists($this->wpObject, $fieldName)
-				|| $type === 'user' && $this->wpObject && property_exists($this->wpObject->data, $fieldName)) {
+				($this->wpObject && property_exists($this->wpObject, $fieldName))
+				|| ($type === 'user' && $this->wpObject && property_exists($this->wpObject->data, $fieldName))) {
 				$config['wp'] = true;
 				$value = $this->wpObject->$fieldName;
 
@@ -568,7 +688,7 @@
 	/**
 	 * Get default value for a field type
 	 */
-	protected function getDefaultValue(string $name): mixed
+	protected function getDefaultValue(string $name): string|int|bool|array
 	{
 		$config = $this->item->getFieldConfig($name);
 		$type = $config['type'] ?? 'text';

--
Gitblit v1.10.0