[ Index ] |
PHP Cross Reference of DokuWiki |
[Summary view] [Print] [Text view]
1 <?php 2 3 namespace dokuwiki\Cache; 4 5 /** 6 * Caching of data of renderer 7 */ 8 class CacheRenderer extends CacheParser 9 { 10 11 /** 12 * method contains cache use decision logic 13 * 14 * @return bool see useCache() 15 */ 16 public function makeDefaultCacheDecision() 17 { 18 global $conf; 19 20 if (!parent::makeDefaultCacheDecision()) { 21 return false; 22 } 23 24 if (!isset($this->page)) { 25 return true; 26 } 27 28 // meta cache older than file it depends on? 29 if ($this->_time < @filemtime(metaFN($this->page, '.meta'))) { 30 return false; 31 } 32 33 // check current link existence is consistent with cache version 34 // first check the purgefile 35 // - if the cache is more recent than the purgefile we know no links can have been updated 36 if ($this->_time >= @filemtime($conf['cachedir'] . '/purgefile')) { 37 return true; 38 } 39 40 // for wiki pages, check metadata dependencies 41 $metadata = p_get_metadata($this->page); 42 43 if (!isset($metadata['relation']['references']) || 44 empty($metadata['relation']['references'])) { 45 return true; 46 } 47 48 foreach ($metadata['relation']['references'] as $id => $exists) { 49 if ($exists != page_exists($id, '', false)) { 50 return false; 51 } 52 } 53 54 return true; 55 } 56 57 protected function addDependencies() 58 { 59 global $conf; 60 61 // default renderer cache file 'age' is dependent on 'cachetime' setting, two special values: 62 // -1 : do not cache (should not be overridden) 63 // 0 : cache never expires (can be overridden) - no need to set depends['age'] 64 if ($conf['cachetime'] == -1) { 65 $this->_nocache = true; 66 return; 67 } elseif ($conf['cachetime'] > 0) { 68 $this->depends['age'] = isset($this->depends['age']) ? 69 min($this->depends['age'], $conf['cachetime']) : $conf['cachetime']; 70 } 71 72 // renderer cache file dependencies ... 73 $files = array( 74 DOKU_INC . 'inc/parser/' . $this->mode . '.php', // ... the renderer 75 ); 76 77 // page implies metadata and possibly some other dependencies 78 if (isset($this->page)) { 79 80 // for xhtml this will render the metadata if needed 81 $valid = p_get_metadata($this->page, 'date valid'); 82 if (!empty($valid['age'])) { 83 $this->depends['age'] = isset($this->depends['age']) ? 84 min($this->depends['age'], $valid['age']) : $valid['age']; 85 } 86 } 87 88 $this->depends['files'] = !empty($this->depends['files']) ? 89 array_merge($files, $this->depends['files']) : 90 $files; 91 92 parent::addDependencies(); 93 } 94 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body