From b0428aa9b02b058b72c40b6e8dc2298d55bf692f Mon Sep 17 00:00:00 2001
From: ArthurHoaro <arthur@hoa.ro>
Date: Thu, 23 Jan 2020 21:13:41 +0100
Subject: Migrate cache purge function to a proper class

And update dependencies and tests.

Note that SESSION['tags'] has been removed a log ago
---
 application/render/PageCacheManager.php | 45 +++++++++++++++++++++++++++++++++
 1 file changed, 45 insertions(+)
 create mode 100644 application/render/PageCacheManager.php

(limited to 'application/render/PageCacheManager.php')

diff --git a/application/render/PageCacheManager.php b/application/render/PageCacheManager.php
new file mode 100644
index 00000000..bd91fe0d
--- /dev/null
+++ b/application/render/PageCacheManager.php
@@ -0,0 +1,45 @@
+<?php
+
+namespace Shaarli\Render;
+
+/**
+ * Cache utilities
+ */
+class PageCacheManager
+{
+    /** @var string Cache directory */
+    protected $pageCacheDir;
+
+    public function __construct(string $pageCacheDir)
+    {
+        $this->pageCacheDir = $pageCacheDir;
+    }
+
+    /**
+     * Purges all cached pages
+     *
+     * @return string|null an error string if the directory is missing
+     */
+    public function purgeCachedPages(): ?string
+    {
+        if (!is_dir($this->pageCacheDir)) {
+            $error = sprintf(t('Cannot purge %s: no directory'), $this->pageCacheDir);
+            error_log($error);
+
+            return $error;
+        }
+
+        array_map('unlink', glob($this->pageCacheDir . '/*.cache'));
+
+        return null;
+    }
+
+    /**
+     * Invalidates caches when the database is changed or the user logs out.
+     */
+    public function invalidateCaches(): void
+    {
+        // Purge page cache shared by sessions.
+        $this->purgeCachedPages();
+    }
+}
-- 
cgit v1.2.3


From c4d5be53c2ae503c00da3cfe6b28d0ce9d2ca7f5 Mon Sep 17 00:00:00 2001
From: ArthurHoaro <arthur@hoa.ro>
Date: Sun, 17 May 2020 14:16:32 +0200
Subject: Process Daily RSS feed through Slim controller

The daily RSS template has been entirely rewritten to handle the whole feed through the template engine.
---
 application/render/PageCacheManager.php | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

(limited to 'application/render/PageCacheManager.php')

diff --git a/application/render/PageCacheManager.php b/application/render/PageCacheManager.php
index bd91fe0d..97805c35 100644
--- a/application/render/PageCacheManager.php
+++ b/application/render/PageCacheManager.php
@@ -2,6 +2,8 @@
 
 namespace Shaarli\Render;
 
+use Shaarli\Feed\CachedPage;
+
 /**
  * Cache utilities
  */
@@ -10,9 +12,13 @@ class PageCacheManager
     /** @var string Cache directory */
     protected $pageCacheDir;
 
-    public function __construct(string $pageCacheDir)
+    /** @var bool */
+    protected $isLoggedIn;
+
+    public function __construct(string $pageCacheDir, bool $isLoggedIn)
     {
         $this->pageCacheDir = $pageCacheDir;
+        $this->isLoggedIn = $isLoggedIn;
     }
 
     /**
@@ -42,4 +48,13 @@ class PageCacheManager
         // Purge page cache shared by sessions.
         $this->purgeCachedPages();
     }
+
+    public function getCachePage(string $pageUrl): CachedPage
+    {
+        return new CachedPage(
+            $this->pageCacheDir,
+            $pageUrl,
+            false === $this->isLoggedIn
+        );
+    }
 }
-- 
cgit v1.2.3