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/blocks/MenuBlock.php | 157 ++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 144 insertions(+), 13 deletions(-)
diff --git a/inc/blocks/MenuBlock.php b/inc/blocks/MenuBlock.php
index 856b30e..22ba279 100644
--- a/inc/blocks/MenuBlock.php
+++ b/inc/blocks/MenuBlock.php
@@ -4,10 +4,7 @@
use JVBase\base\Options;
use JVBase\base\Site;
use JVBase\managers\Cache;
-use JVBase\forms\TaxonomySelector;
-use JVBase\meta\Form;
use JVBase\meta\Meta;
-use JVBase\meta\Render;
use WP_Block;
use WP_Query;
@@ -32,7 +29,7 @@
public function __construct()
{
- $this->cache = Cache::for('menu', WEEK_IN_SECONDS)->connect('post');
+ $this->cache = Cache::for('menu', 'post', WEEK_IN_SECONDS);
if (Site::hasIntegration('square')) {
$this->base = '_square_';
} else if (Site::hasIntegration('helcim')) {
@@ -50,9 +47,12 @@
protected function buildParams():void
{
- if (is_post_type_archive(BASE.'menu_item')) {
+// if (is_post_type_archive(BASE.'menu_item') ||
+ if (is_post_type_archive('product') ||
+ (function_exists('is_shop') && is_shop())) {
$this->params = ['all'];
- } elseif (is_tax(BASE.'section')) {
+// } elseif (is_tax(BASE.'section')) {
+ } elseif (is_tax('product_cat')) {
$this->params = [];
} else {
$this->params = [];
@@ -66,10 +66,9 @@
return '';
}
jvbInlineStyles('forms');
- $key = $this->cache->generateKey($this->params);
$this->cache->flush();
return $this->cache->remember(
- $key,
+ $this->params,
function() {
ob_start();
$this->renderBlock();
@@ -99,7 +98,8 @@
<?php
$sections = $this->getSections();
foreach ($sections as $section) {
- if (!jvbTermHasPosts($section['id'], BASE.'section')) {
+// if (!jvbTermHasPosts($section['id'], BASE.'section')) {
+ if (!jvbTermHasPosts($section['id'], 'product_cat')) {
continue;
}
?>
@@ -129,13 +129,18 @@
{
$sections = $this->getSections();
foreach ($sections as $section) {
+ if($section['name'] === 'Uncategorized') {
+ continue;
+ }
$items = new WP_Query([
- 'post_type' => BASE.'menu_item',
+ 'post_type' => 'product',
+// 'post_type' => BASE.'menu_item',
'order' => 'ASC',
'posts_per_page' => -1,
'tax_query' => [
[
- 'taxonomy' => BASE.'section',
+ 'taxonomy' => 'product_cat',
+// 'taxonomy' => BASE.'section',
'terms' => (int) $section['id'],
]
],
@@ -162,7 +167,132 @@
}
}
- protected function renderMenuItem(int $ID, string $slug, string $postType = 'menu_item') {
+ /**
+ * Renders from WooCommerce product
+ * @param int $ID
+ * @param string $slug
+ * @param string $postType
+ * @return void
+ */
+ protected function renderMenuItem(int $ID, string $slug, string $postType = 'product'):void {
+ $meta = Meta::forPost($ID);
+
+ $fields = $meta->getAll();
+
+// jvbDump($fields, 'Fields');
+
+ $excerpt = get_the_excerpt($ID);
+ $isVariable = !empty($fields['variations']??[]);
+ $variations = $isVariable ? array_map('floatval', array_column($fields['variations'], 'price')) : [];
+ $priceRange = $isVariable ?
+ (min($variations).' - '.max($variations)) :
+ $fields['_price']??'';
+
+ $out = sprintf(
+ '<div class="menu-item%s" data-section="%s" data-label="%s" data-id="%s">
+ <div class="header row x-btw">
+ <h3>%s</h3>
+ <p class="price">$%s</p>
+ </div>
+ <div class="description">%s</div>
+ <div class="info col right">',
+ $isVariable ? ' variable' : '',
+ $slug,
+ $fields['post_title'],
+ $ID,
+ $fields['post_title'],
+ $priceRange,
+ $excerpt
+ );
+
+ if (!empty($fields['variations']??[])) {
+ foreach ($fields['variations'] as $index => $row) {
+ $out .= sprintf(
+ '<div class="row right nowrap">
+ <div>
+ <h4>%s — %s</h4>
+ %s
+ </div><a href="?add-to-cart=%d&variation_id=%d"
+ data-quantity="1"
+ data-product_id="%d"
+ data-variation_id="%d"
+ class="btn chip add_to_cart_button ajax_add_to_cart add-to-cart">
+ %s
+ <span>Add to Cart</span>
+</a>', //Note: we had 3 %s%s%s before the last </div> last time. This was to add optional ingredients or preparation time duration, not default in WooCommerce
+ $row['title'],
+ jvbCurrency($row['price']),
+ empty($row['description']) ? '' : wpautop($row['description']),
+ $ID,
+ $row['id'],
+ $ID,
+ $row['id'],
+ jvbIcon('plus-square')
+ );
+
+// $out .= Form::render(
+// $row['id'],
+// '',
+// [
+// 'type' => 'quantity',
+// 'label' => $row['title'],
+// 'min' => 0,
+// 'max' => 30,
+// 'data' => [
+// 'price' => $row['price'],
+// 'id' => $row['id'],
+// 'sku' => $row['sku'],
+// 'name' => $row['title'],
+// 'add-to-cart' => ''
+// ],
+// 'add' => 'Add 1 '.$row['title'].' to cart',
+// 'remove' => 'Remove 1 '.$row['title']. ' from cart',
+// ]
+// );
+ $out .= '</div>';
+ }
+ } else {
+ $out .= sprintf(
+ '<a href="?add-to-cart=%d"
+ data-quantity="1"
+ data-product_id="%d"
+ class="btn chip add_to_cart_button ajax_add_to_cart add-to-cart">
+ %s
+ <span>Add to Cart</span>
+ </a>',
+ $ID,
+ $ID,
+ jvbIcon('plus-square')
+ );
+// $out .= Form::render(
+// $ID,
+// '',
+// [
+// 'type' => 'quantity',
+// 'label' => 'Add to Order',
+// 'min' => 0,
+// 'max' => 30,
+// 'step' => 1,
+// 'data' => [
+// 'price' => $fields['_price'],
+// 'id' => $ID,
+// 'name' => $fields['post_title'],
+// 'step' => 1,
+// 'add-to-cart' => '',
+// ],
+// 'add' => 'Add 1 '.$fields['post_title'].' to cart',
+// 'remove' => 'Remove 1 '.$fields['title']. ' from cart',
+// ]
+// );
+ }
+
+ $out .= '</div></div>';
+
+ echo $out;
+
+ }
+ /**
+ protected function renderMenuItemOLD(int $ID, string $slug, string $postType = 'menu_item') {
$meta = Meta::forPost($ID);
$fields = $meta->getAll();
$values = $meta->getAll([
@@ -278,7 +408,8 @@
</div>
<?php
- }
+ } **/
+
protected function renderOnThisPage():void
--
Gitblit v1.10.0