From b38f03c0e7218762d90fa5092696b127f24f36db Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sun, 25 Jan 2026 07:07:26 +0000
Subject: [PATCH] =Some logical flaws in Queue.php, Queue.js, ContentExecutor.php, UploadExecutor.php - particularly with timeline ordering, frontend queue updates, etc
---
inc/managers/AdminPages.php | 147 +++++++++++++++++++++---------------------------
1 files changed, 64 insertions(+), 83 deletions(-)
diff --git a/inc/managers/AdminPages.php b/inc/managers/AdminPages.php
index 1e42e8c..cf42870 100644
--- a/inc/managers/AdminPages.php
+++ b/inc/managers/AdminPages.php
@@ -98,10 +98,10 @@
switch ($action) {
case 'flush-all':
- wp_cache_flush();
+ $total = Cache::flushAll();
return new \WP_REST_Response([
'success' => true,
- 'message' => 'All caches flushed successfully'
+ 'message' => $total.' caches flushed successfully'
]);
case 'flush-cache':
@@ -113,7 +113,7 @@
], 400);
}
- \JVBase\managers\CacheManager::invalidateAll($group);
+ Cache::for($group)?->flush();
return new \WP_REST_Response([
'success' => true,
@@ -134,17 +134,32 @@
public function handleIconAction(\WP_REST_Request $request): \WP_REST_Response
{
$action = sanitize_text_field($request->get_param('action'));
- $source = sanitize_text_field($request->get_param('source') ?? 'icons'); // Add source param
- $icons = \JVBase\managers\IconsManager::for($source);
+ $source = sanitize_text_field($request->get_param('source') ?? 'icons');
+ $icons = IconsManager::for($source);
switch ($action) {
case 'refresh-icons':
+ // Force regenerate CSS immediately
$icons->forceRefresh();
+ IconsManager::regenerateAllCSS([$source => true]);
+
return new \WP_REST_Response([
'success' => true,
'message' => "Icon CSS regenerated successfully for '{$source}'"
]);
+ case 'refresh-all-icons':
+ // Regenerate all icon sources
+ foreach (['icons', 'forms', 'dash'] as $src) {
+ IconsManager::for($src)->forceRefresh();
+ }
+ IconsManager::regenerateAllCSS();
+
+ return new \WP_REST_Response([
+ 'success' => true,
+ 'message' => 'All icon CSS files regenerated successfully'
+ ]);
+
case 'restore-icon-version':
$timestamp = (int)$request->get_param('timestamp');
if (empty($timestamp)) {
@@ -186,6 +201,9 @@
}
if ($icons->mergeVersions($timestamps)) {
+ // Regenerate CSS after merge
+ IconsManager::regenerateAllCSS([$source => true]);
+
return new \WP_REST_Response([
'success' => true,
'message' => 'Icon versions merged successfully'
@@ -659,20 +677,22 @@
public function renderCachePage():void
{
- $connections = CacheManager::getAllConnections();
+ $groups = Cache::getAllGroups();
// Separate generic vs. specific caches
$generic_groups = [];
$content_specific = [];
$nonce = wp_create_nonce('wp_rest');
- foreach ($connections as $group => $configs) {
- $is_generic = !$this->isBoundToContentOrTaxonomy($group);
+ // Separate by type
+ $generic = [];
+ $specific = [];
- if ($is_generic) {
- $generic_groups[$group] = $configs;
+ foreach ($groups as $group => $data) {
+ if ($this->isBoundToContentOrTaxonomy($group)) {
+ $specific[$group] = $data;
} else {
- $content_specific[$group] = $configs;
+ $generic[$group] = $data;
}
}
@@ -728,7 +748,7 @@
</tr>
</thead>
<tbody>
- <?php foreach ($content_specific as $group => $configs): ?>
+ <?php foreach ($specific as $group => $configs): ?>
<tr>
<td><strong><?= esc_html($group); ?></strong></td>
<td><?= $this->formatConnections($configs); ?></td>
@@ -739,6 +759,19 @@
</td>
</tr>
<?php endforeach; ?>
+ <?php foreach ($generic as $group => $data): ?>
+ <tr>
+ <td><strong><?= esc_html($group); ?></strong></td>
+ <td><?= $this->formatConnections($data); ?></td>
+ <td>
+ <button type="button" class="button"
+ data-action="flush-cache"
+ data-group="<?= esc_attr($group); ?>">
+ <?= jvbDashIcon('trash'); ?> Flush
+ </button>
+ </td>
+ </tr>
+ <?php endforeach; ?>
</tbody>
</table>
</details>
@@ -820,15 +853,24 @@
return false;
}
- protected function formatConnections(array $configs): string
+ protected function formatConnections(array $data): string
{
- $connections = [];
- foreach ($configs as $config) {
- $parent = $config['parent'] ?? 'unknown';
- $scope = $config['scope'] ?? 'id';
- $connections[] = "{$parent} ({$scope})";
+ $parts = [];
+
+ if (!empty($data['connects_to'])) {
+ $targets = array_map(function($conn) {
+ $flush_text = $conn['flush'] ? ' (flush all)' : '';
+ return $conn['group'] . $flush_text;
+ }, $data['connects_to']);
+ $parts[] = '<strong>Invalidates:</strong> ' . implode(', ', $targets);
}
- return esc_html(implode(', ', $connections));
+
+ if (!empty($data['connected_from'])) {
+ $sources = array_map(fn($conn) => $conn['group'], $data['connected_from']);
+ $parts[] = '<strong>Invalidated by:</strong> ' . implode(', ', $sources);
+ }
+
+ return $parts ? implode('<br>', $parts) : 'No connections';
}
public function handleCacheActions($response, $request, $action):WP_REST_Response
@@ -854,7 +896,8 @@
], 400);
}
- \JVBase\managers\CacheManager::invalidateAll($group);
+ $group = sanitize_text_field($request->get_param('group'));
+ Cache::invalidateGroup($group);
return new WP_REST_Response([
'success' => true,
@@ -862,68 +905,6 @@
]);
}
- if ($action === 'merge-icon-versions') {
- $timestamps = $request->get_param('timestamps');
-
- if (empty($timestamps) || !is_array($timestamps)) {
- return new WP_REST_Response([
- 'success' => false,
- 'message' => 'No versions selected for merging'
- ], 400);
- }
-
- // Convert to integers
- $timestamps = array_map('intval', $timestamps);
-
- if (count($timestamps) < 2) {
- return new WP_REST_Response([
- 'success' => false,
- 'message' => 'Please select at least 2 versions to merge'
- ], 400);
- }
-
- $icons = \JVBase\managers\IconsManager::getInstance();
-
- if ($icons->mergeVersions($timestamps)) {
- return new WP_REST_Response([
- 'success' => true,
- 'message' => 'Icon versions merged successfully'
- ]);
- }
-
- return new WP_REST_Response([
- 'success' => false,
- 'message' => 'Failed to merge icon versions'
- ], 500);
- }
-
- if ($action === 'refresh-icons') {
- $icons = \JVBase\managers\IconsManager::getInstance();
- $icons->forceRefresh();
-
- return new WP_REST_Response([
- 'success' => true,
- 'message' => 'Icon CSS refresh triggered'
- ]);
- }
-
- if ($action === 'restore-icon-version') {
- $timestamp = (int)$request->get_param('timestamp');
- $icons = \JVBase\managers\IconsManager::getInstance();
-
- if ($icons->restoreVersion($timestamp)) {
- return new WP_REST_Response([
- 'success' => true,
- 'message' => 'Icon version restored successfully'
- ]);
- }
-
- return new WP_REST_Response([
- 'success' => false,
- 'message' => 'Failed to restore icon version'
- ], 500);
- }
-
return $response;
}
@@ -936,7 +917,7 @@
// Get all registered icon sources
$all_sources = ['icons', 'forms', 'dash']; // You could get this dynamically if needed
- $icons = \JVBase\managers\IconsManager::for($current_source);
+ $icons = IconsManager::for($current_source);
$versions = $icons->getVersionHistory();
$nonce = wp_create_nonce('wp_rest');
--
Gitblit v1.10.0