]> git.immae.eu Git - github/shaarli/Shaarli.git/blob - application/feed/CachedPage.php
Merge pull request #1345 from ArthurHoaro/changelog-v0.11.1
[github/shaarli/Shaarli.git] / application / feed / CachedPage.php
1 <?php
2
3 namespace Shaarli\Feed;
4
5 /**
6 * Simple cache system, mainly for the RSS/ATOM feeds
7 */
8 class CachedPage
9 {
10 // Directory containing page caches
11 private $cacheDir;
12
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;
30 $this->filename = $this->cacheDir . '/' . sha1($url) . '.cache';
31 $this->shouldBeCached = $shouldBeCached;
32 }
33
34 /**
35 * Returns the cached version of a page, if it exists and should be cached
36 *
37 * @return string a cached version of the page if it exists, null otherwise
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 }