]> git.immae.eu Git - github/shaarli/Shaarli.git/blame - application/feed/CachedPage.php
namespacing: \Shaarli\Bookmark\LinkDB
[github/shaarli/Shaarli.git] / application / feed / CachedPage.php
CommitLineData
01e48f26 1<?php
dfc650aa
V
2
3namespace Shaarli\Feed;
f24896b2 4
01e48f26
V
5/**
6 * Simple cache system, mainly for the RSS/ATOM feeds
7 */
8class CachedPage
9{
10 // Directory containing page caches
11 private $cacheDir;
12
01e48f26
V
13 // Should this URL be cached (boolean)?
14 private $shouldBeCached;
15
16 // Name of the cache file for this URL
17 private $filename;
18
19 /**
20 * Creates a new CachedPage
21 *
22 * @param string $cacheDir page cache directory
23 * @param string $url page URL
24 * @param bool $shouldBeCached whether this page needs to be cached
25 */
26 public function __construct($cacheDir, $url, $shouldBeCached)
27 {
28 // TODO: check write access to the cache directory
29 $this->cacheDir = $cacheDir;
dfc650aa 30 $this->filename = $this->cacheDir . '/' . sha1($url) . '.cache';
01e48f26
V
31 $this->shouldBeCached = $shouldBeCached;
32 }
33
34 /**
35 * Returns the cached version of a page, if it exists and should be cached
36 *
7af9a418 37 * @return string a cached version of the page if it exists, null otherwise
01e48f26
V
38 */
39 public function cachedVersion()
40 {
41 if (!$this->shouldBeCached) {
42 return null;
43 }
44 if (is_file($this->filename)) {
45 return file_get_contents($this->filename);
46 }
47 return null;
48 }
49
50 /**
51 * Puts a page in the cache
52 *
53 * @param string $pageContent XML content to cache
54 */
55 public function cache($pageContent)
56 {
57 if (!$this->shouldBeCached) {
58 return;
59 }
60 file_put_contents($this->filename, $pageContent);
61 }
62}