]> git.immae.eu Git - github/shaarli/Shaarli.git/blobdiff - application/Cache.php
CachedPage: move to a proper file, add tests
[github/shaarli/Shaarli.git] / application / Cache.php
diff --git a/application/Cache.php b/application/Cache.php
new file mode 100644 (file)
index 0000000..9c7e818
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+/**
+ * Cache utilities
+ */
+
+/**
+ * Purges all cached pages
+ *
+ * @param string $pageCacheDir page cache directory
+ */
+function purgeCachedPages($pageCacheDir)
+{
+    if (! is_dir($pageCacheDir)) {
+        return;
+    }
+
+    // TODO: check write access to the cache directory
+
+    $handler = opendir($pageCacheDir);
+    if ($handler == false) {
+        return;
+    }
+
+    while (($filename = readdir($handler)) !== false) {
+        if (endsWith($filename, '.cache')) {
+                unlink($pageCacheDir.'/'.$filename);
+        }
+    }
+    closedir($handler);
+}
+
+/**
+ * Invalidates caches when the database is changed or the user logs out.
+ *
+ * @param string $pageCacheDir page cache directory
+ */
+function invalidateCaches($pageCacheDir)
+{
+    // Purge cache attached to session.
+    if (isset($_SESSION['tags'])) {
+        unset($_SESSION['tags']);
+    }
+
+    // Purge page cache shared by sessions.
+    purgeCachedPages($pageCacheDir);
+}