10c3a5702SAndreas Gohr<?php 20c3a5702SAndreas Gohr 30c3a5702SAndreas Gohrnamespace dokuwiki\ChangeLog; 40c3a5702SAndreas Gohr 50c3a5702SAndreas Gohr/** 61d11f1d3SSatoshi Sahara * Class PageChangeLog; handles changelog of a wiki page 70c3a5702SAndreas Gohr */ 80c3a5702SAndreas Gohrclass PageChangeLog extends ChangeLog 90c3a5702SAndreas Gohr{ 100c3a5702SAndreas Gohr /** 110c3a5702SAndreas Gohr * Returns path to changelog 120c3a5702SAndreas Gohr * 130c3a5702SAndreas Gohr * @return string path to file 140c3a5702SAndreas Gohr */ 150c3a5702SAndreas Gohr protected function getChangelogFilename() 160c3a5702SAndreas Gohr { 170c3a5702SAndreas Gohr return metaFN($this->id, '.changes'); 180c3a5702SAndreas Gohr } 190c3a5702SAndreas Gohr 200c3a5702SAndreas Gohr /** 210c3a5702SAndreas Gohr * Returns path to current page/media 220c3a5702SAndreas Gohr * 23e49fa56bSSatoshi Sahara * @param string|int $rev empty string or revision timestamp 240c3a5702SAndreas Gohr * @return string path to file 250c3a5702SAndreas Gohr */ 26e49fa56bSSatoshi Sahara protected function getFilename($rev = '') 270c3a5702SAndreas Gohr { 28e49fa56bSSatoshi Sahara return wikiFN($this->id, $rev); 290c3a5702SAndreas Gohr } 30c7192766SSatoshi Sahara 31*a835c93aSGerrit Uitslag /** 32*a835c93aSGerrit Uitslag * Returns mode 33*a835c93aSGerrit Uitslag * 34*a835c93aSGerrit Uitslag * @return string RevisionInfo::MODE_PAGE 35*a835c93aSGerrit Uitslag */ 36*a835c93aSGerrit Uitslag protected function getMode() 37*a835c93aSGerrit Uitslag { 38*a835c93aSGerrit Uitslag return RevisionInfo::MODE_PAGE; 39*a835c93aSGerrit Uitslag } 40c7192766SSatoshi Sahara 41c7192766SSatoshi Sahara 42c7192766SSatoshi Sahara /** 43c7192766SSatoshi Sahara * Adds an entry to the changelog 44c7192766SSatoshi Sahara * 45c7192766SSatoshi Sahara * @param array $info Revision info structure of a page 46c7192766SSatoshi Sahara * @param int $timestamp log line date (optional) 471d11f1d3SSatoshi Sahara * @return array revision info of added log line 48c7192766SSatoshi Sahara * 49c7192766SSatoshi Sahara * @see also addLogEntry() in inc/changelog.php file 50c7192766SSatoshi Sahara */ 51c7192766SSatoshi Sahara public function addLogEntry(array $info, $timestamp = null) 52c7192766SSatoshi Sahara { 53c7192766SSatoshi Sahara global $conf; 54c7192766SSatoshi Sahara 551d11f1d3SSatoshi Sahara if (isset($timestamp)) unset($this->cache[$this->id][$info['date']]); 56c7192766SSatoshi Sahara 57c7192766SSatoshi Sahara // add changelog lines 580603e565SAndreas Gohr $logline = static::buildLogLine($info, $timestamp); 5979a2d784SGerrit Uitslag io_saveFile(metaFN($this->id, '.changes'), $logline, true); 6079a2d784SGerrit Uitslag io_saveFile($conf['changelog'], $logline, true); //global changelog cache 61c7192766SSatoshi Sahara 62c7192766SSatoshi Sahara // update cache 631d11f1d3SSatoshi Sahara $this->currentRevision = $info['date']; 64*a835c93aSGerrit Uitslag $info['mode'] = $this->getMode(); 651d11f1d3SSatoshi Sahara $this->cache[$this->id][$this->currentRevision] = $info; 661d11f1d3SSatoshi Sahara return $info; 67c7192766SSatoshi Sahara } 680c3a5702SAndreas Gohr} 69