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/managers/IconsManager.php |   90 +++++++++++++++++++++++++++++---------------
 1 files changed, 59 insertions(+), 31 deletions(-)

diff --git a/inc/managers/IconsManager.php b/inc/managers/IconsManager.php
index f54120b..7c7d995 100644
--- a/inc/managers/IconsManager.php
+++ b/inc/managers/IconsManager.php
@@ -1,6 +1,7 @@
 <?php
 namespace JVBase\managers;
 
+use Exception;
 use JVBase\registrar\Registrar;
 use JVBase\base\Site;
 
@@ -26,6 +27,15 @@
 	protected array $map = [];
 	protected const MAX_VERSIONS = 5;
 
+	protected string $timestampKey;
+	protected string $iconKey;
+	protected string $iconHistoryKey;
+	protected static string $allIcons = 'icons_all_used';
+	protected static string $updateIcons = 'icons_needs_update';
+	protected static string $iconMap = 'icons_map';
+
+
+
 	/**
 	 * Factory method - get or create instance for a source
 	 */
@@ -34,6 +44,9 @@
 		if (!isset(self::$instances[$source])) {
 			self::$instances[$source] = new self($source);
 		}
+		self::$instances[$source]->setTimestampKey(BASE.'icons_'.$source.'_timestamp');
+		self::$instances[$source]->setIconKey(BASE.'icons_'.$source);
+		self::$instances[$source]->setIconHistoryKey(BASE.'icons_history_'.$source);
 		return self::$instances[$source];
 	}
 
@@ -43,7 +56,7 @@
 	private function __construct(string $source)
 	{
 		$this->source = $source;
-		$this->cache = Cache::for('icons_' . $source, WEEK_IN_SECONDS);
+		$this->cache = Cache::for('icons_' . $source);
 		$this->style = Site::icon();
 
 		$this->addMap();
@@ -72,6 +85,19 @@
 		$this->registerInstanceHooks();
 	}
 
+	protected function setIconKey(string $key):void
+	{
+		$this->iconKey = $key;
+	}
+	protected function setTimestampKey(string $key):void
+	{
+		$this->timestampKey = $key;
+	}
+	protected function setIconHistoryKey(string $key):void
+	{
+		$this->iconHistoryKey = $key;
+	}
+
 
 
 	/**
@@ -124,7 +150,7 @@
 	 */
 	protected function loadStoredIcons(): void
 	{
-		$allIcons = get_option(BASE.'usedIcons', []);
+		$allIcons = get_option(BASE.self::$allIcons, []);
 		$storedIcons = $allIcons[$this->source] ?? [];
 
 		// Merge stored icons with any existing icons (like custom icons)
@@ -304,20 +330,19 @@
 	 */
 	protected function saveIcons(): void
 	{
-		$allIcons = [];
-		foreach (self::$instances as $source => $instance) {
-			$allIcons[$source] = $instance->icons;
-		}
+		$allIcons = array_map(function ($instance) {
+			return $instance->icons;
+		}, self::$instances);
 
-		update_option(BASE.'usedIcons', $allIcons);
+		update_option(BASE.self::$allIcons, $allIcons);
 
 		// Track WHICH source needs updating
-		$needsUpdate = get_option(BASE.'icons_needs_update', []);
+		$needsUpdate = get_option(BASE.self::$updateIcons, []);
 		if (!is_array($needsUpdate)) {
 			$needsUpdate = [];
 		}
 		$needsUpdate[$this->source] = true;
-		update_option(BASE.'icons_needs_update', $needsUpdate);
+		update_option(BASE.self::$updateIcons, $needsUpdate);
 	}
 
 	/**
@@ -345,7 +370,7 @@
 
 	protected function addMap(): void
 	{
-		$map = get_option(BASE.'iconMap');
+		$map = get_option(BASE.self::$iconMap);
 		if (!$map) {
 			$map = [
 				'seo'	=> 'robot'
@@ -356,13 +381,13 @@
 			if (Site::has('dashboard')) {
 				$map['dash'] = 'door';
 			}
-			if (Site::has('magicLink')) {
+			if (Site::has('magic_link')) {
 				$map['magicLink'] = 'magic-wand';
 			}
 			if (Site::hasAnyIntegration()) {
 				$map['integrations'] = 'plugs-connected';
 			}
-			update_option(BASE.'iconMap', $map);
+			update_option(BASE.self::$iconMap, $map);
 		}
 
 		$this->map = apply_filters('jvbMapIcons', $map);
@@ -404,10 +429,13 @@
 
 	public static function checkCSS(): void
 	{
-		$needsUpdate = get_option(BASE.'icons_needs_update', []);
+		$needsUpdate = get_option(BASE.self::$updateIcons, []);
+		$needsUpdate = array_filter($needsUpdate, function ($item) {
+			return $item === true;
+		});
 		if (!empty($needsUpdate)) {
 			error_log('Regenerating CSS for sources: ' . implode(', ', array_keys($needsUpdate)));
-			delete_option(BASE.'icons_needs_update');
+			delete_option(BASE.self::$updateIcons);
 			self::regenerateAllCSS($needsUpdate);
 		}
 	}
@@ -422,7 +450,7 @@
 		}
 
 		// Load all icons from database option
-		$allIcons = get_option(BASE.'usedIcons', []);
+		$allIcons = get_option(BASE.self::$allIcons, []);
 
 		// If no specific sources provided, regenerate all
 		if (empty($sourcesToUpdate)) {
@@ -448,7 +476,7 @@
 			$instance->archiveCurrentVersion($css);
 
 			if (file_put_contents($css_path, $css) !== false) {
-				Cache::touch('icons_' . $source);
+				Cache::for('icons_'.$source)->flush();
 				error_log("[IconsManager] Updated {$source}.css");
 			} else {
 				error_log("[IconsManager] Could not write {$source}.css");
@@ -486,7 +514,7 @@
 			$instance->archiveCurrentVersion($css);
 
 			if (file_put_contents($css_path, $css) !== false) {
-				Cache::touch('icons_' . $source);
+				Cache::for('icons_'.$source)->flush();
 				error_log("[IconsManager] Updated {$source}.css");
 			} else {
 				error_log("[IconsManager] Could not write {$source}.css");
@@ -504,7 +532,7 @@
 	 */
 	public function __wakeup()
 	{
-		throw new \Exception("Cannot unserialize singleton");
+		throw new Exception("Cannot unserialize singleton");
 	}
 
 	/**
@@ -535,7 +563,7 @@
 		}
 
 		// Track usage - only if not already tracked
-		if (!isset($this->icons[$style])) {
+		if (!array_key_exists($style, $this->icons)) {
 			$this->icons[$style] = [];
 		}
 
@@ -649,7 +677,7 @@
 
 	public function registerStyle(): void
 	{
-		$timestamp = Cache::lastModified('icons_' . $this->source);
+		$timestamp = get_option($this->timestampKey);
 		$handle = 'jvb-icons-' . $this->source;
 
 		wp_register_style(
@@ -687,7 +715,7 @@
 				}
 			}
 		}
-
+		update_option($this->timestampKey, time());
 		return $this->minifyCss($css);
 	}
 
@@ -743,9 +771,8 @@
 	 */
 	public function clearIconCache(): void
 	{
-		delete_option(BASE . 'icon_usage_list'); // Legacy
-		delete_option(BASE.'usedIcons');
-		delete_option(BASE.'iconMap');
+		delete_option(self::$allIcons);
+		delete_option(self::$iconMap);
 
 		// Clear cache for all sources
 		foreach (self::$instances as $source => $instance) {
@@ -777,12 +804,12 @@
 			$history = array_slice($history, 0, self::MAX_VERSIONS);
 		}
 
-		update_option(BASE.'icon_css_history_' . $this->source, $history);
+		update_option($this->iconHistoryKey, $history);
 	}
 
 	public function getVersionHistory(): array
 	{
-		return get_option(BASE.'icon_css_history_' . $this->source, []);
+		return get_option($this->iconHistoryKey, []);
 	}
 
 	public function restoreVersion(int $timestamp): bool
@@ -803,7 +830,7 @@
 				if (file_put_contents($css_path, $entry['css']) !== false) {
 					$this->icons = $entry['iconList'];
 					$this->saveIcons();
-					Cache::touch('icons_' . $this->source);
+					Cache::for('icons_'.$this->source)->flush();
 					return true;
 				}
 
@@ -818,13 +845,14 @@
 	public function forceRefresh(): void
 	{
 		$this->clearIconCache();
-		$needsUpdate = get_option(BASE.'icons_needs_update', []);
+		$needsUpdate = get_option(BASE.self::$updateIcons, []);
 		if (!is_array($needsUpdate)) {
 			$needsUpdate = [];
 		}
 		$needsUpdate[$this->source] = true;
-		update_option(BASE.'icons_needs_update', $needsUpdate);
-		Cache::touch('icons_' . $this->source);
+		update_option(BASE.self::$updateIcons, $needsUpdate);
+
+		Cache::for('icons_'.$this->source)->flush();
 	}
 
 	public function mergeVersions(array $timestamps): bool
@@ -833,7 +861,7 @@
 			return false;
 		}
 
-		$history = get_option(BASE.'icon_css_history_' . $this->source, []);
+		$history = get_option($this->iconHistoryKey, []);
 		$merged_icons = [];
 
 		// Collect icons from selected versions

--
Gitblit v1.10.0