From a9b3b28d001941921aa70d37fdc87c758a163a44 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Fri, 05 Jun 2026 16:47:03 +0000
Subject: [PATCH] =Some hefty changes to FeedBlock. Transitioning to loading first page in php to save on extra requests. Got a bit to do yet, but I have to work on Northeh for a bit here.

---
 inc/managers/Cache.php |   38 ++++++++++++++++++++++++++++++++------
 1 files changed, 32 insertions(+), 6 deletions(-)

diff --git a/inc/managers/Cache.php b/inc/managers/Cache.php
index e55e758..c144013 100644
--- a/inc/managers/Cache.php
+++ b/inc/managers/Cache.php
@@ -18,6 +18,8 @@
 
 	private static array $instances = [];
 	private bool $hasRedis;
+	private bool $varyByAuth = false;
+	private bool $varyByUser = false;
 
 	private function __construct(string $group, int $ttl)
 	{
@@ -32,7 +34,7 @@
 		add_action('save_post', [self::class, 'onPostChange'], 10, 2);
 		add_action('delete_post', [self::class, 'onPostDelete']);
 
-		// Post meta updates, now handled via MetaManager.php?
+		// Post meta updates, now handled via Meta.php?
 //		add_action('updated_post_meta', [self::class, 'onPostMetaChange'], 10, 2);
 //		add_action('added_post_meta', [self::class, 'onPostMetaChange'], 10, 2);
 //		add_action('deleted_post_meta', [self::class, 'onPostMetaDelete'], 10, 2);
@@ -58,6 +60,29 @@
 		add_action('deleted_user_meta', [self::class, 'onUserMetaDelete'], 10, 2);
 	}
 
+	public function auth(): static
+	{
+		$this->varyByAuth = true;
+		return $this;
+	}
+
+	public function user(): static
+	{
+		$this->varyByUser = true;
+		return $this;
+	}
+
+	private function resolveKey(int|string $key): string
+	{
+		if ($this->varyByUser) {
+			return $key . ':u' . get_current_user_id();
+		}
+		if ($this->varyByAuth) {
+			return $key . ':' . (is_user_logged_in() ? 'auth' : 'guest');
+		}
+		return (string) $key;
+	}
+
 	/* ---------------------------------------------------------------------
 	 * Factory
 	 * ------------------------------------------------------------------- */
@@ -358,12 +383,13 @@
 		?int $ttl = null
 	): mixed {
 		if (is_array($key)) {
-			$id = $this->generateKey($key);
+			$key = $this->generateKey($key);
 		}
+		$instanceTags = array_map(fn($tag) => [$this->group, $tag], $this->getTags());
 		$tags = array_unique(array_merge(
-			$this->getTags(),
-			array_map('sanitize_key', $tags)
-		));
+			$instanceTags,
+			array_map(fn($tag) => [sanitize_key($tag[0]), $tag[1]], $tags)
+		), SORT_REGULAR);
 
 
 		$value = wp_cache_get($key, $this->group);
@@ -491,7 +517,7 @@
 	 ****************************************************/
 	public static function onTermChange(int $termId, int $ttId, string $taxonomy): void
 	{
-//		error_log('[Clearing cache for term change: '.$termId.']');
+		error_log('[Clearing cache for term change: '.$termId.']');
 		self::invalidateItem('taxonomy', $termId);
 	}
 

--
Gitblit v1.10.0