10c3a5702SAndreas Gohr<?php 20c3a5702SAndreas Gohr 30c3a5702SAndreas Gohrnamespace dokuwiki\ChangeLog; 40c3a5702SAndreas Gohr 50c3a5702SAndreas Gohr/** 6*1d11f1d3SSatoshi Sahara * Class PageChangeLog; handles changelog of a wiki page 70c3a5702SAndreas Gohr */ 80c3a5702SAndreas Gohrclass PageChangeLog extends ChangeLog 90c3a5702SAndreas Gohr{ 100c3a5702SAndreas Gohr 110c3a5702SAndreas Gohr /** 120c3a5702SAndreas Gohr * Returns path to changelog 130c3a5702SAndreas Gohr * 140c3a5702SAndreas Gohr * @return string path to file 150c3a5702SAndreas Gohr */ 160c3a5702SAndreas Gohr protected function getChangelogFilename() 170c3a5702SAndreas Gohr { 180c3a5702SAndreas Gohr return metaFN($this->id, '.changes'); 190c3a5702SAndreas Gohr } 200c3a5702SAndreas Gohr 210c3a5702SAndreas Gohr /** 220c3a5702SAndreas Gohr * Returns path to current page/media 230c3a5702SAndreas Gohr * 24e49fa56bSSatoshi Sahara * @param string|int $rev empty string or revision timestamp 250c3a5702SAndreas Gohr * @return string path to file 260c3a5702SAndreas Gohr */ 27e49fa56bSSatoshi Sahara protected function getFilename($rev = '') 280c3a5702SAndreas Gohr { 29e49fa56bSSatoshi Sahara return wikiFN($this->id, $rev); 300c3a5702SAndreas Gohr } 31c7192766SSatoshi Sahara 32c7192766SSatoshi Sahara 33c7192766SSatoshi Sahara 34c7192766SSatoshi Sahara /** 35c7192766SSatoshi Sahara * Adds an entry to the changelog 36c7192766SSatoshi Sahara * 37c7192766SSatoshi Sahara * @param array $info Revision info structure of a page 38c7192766SSatoshi Sahara * @param int $timestamp logline date (optional) 39*1d11f1d3SSatoshi Sahara * @return array revision info of added logline 40c7192766SSatoshi Sahara * 41c7192766SSatoshi Sahara * @see also addLogEntry() in inc/changelog.php file 42c7192766SSatoshi Sahara */ 43c7192766SSatoshi Sahara public function addLogEntry(array $info, $timestamp = null) 44c7192766SSatoshi Sahara { 45c7192766SSatoshi Sahara global $conf; 46c7192766SSatoshi Sahara 47*1d11f1d3SSatoshi Sahara if (isset($timestamp)) unset($this->cache[$this->id][$info['date']]); 48c7192766SSatoshi Sahara 49c7192766SSatoshi Sahara // add changelog lines 50*1d11f1d3SSatoshi Sahara $logline = $this->buildLogLine($info, $timestamp); 51c7192766SSatoshi Sahara io_saveFile(metaFN($this->id,'.changes'), $logline, $append = true); 52c7192766SSatoshi Sahara io_saveFile($conf['changelog'], $logline, $append = true); //global changelog cache 53c7192766SSatoshi Sahara 54c7192766SSatoshi Sahara // update cache 55*1d11f1d3SSatoshi Sahara $this->currentRevision = $info['date']; 56*1d11f1d3SSatoshi Sahara $this->cache[$this->id][$this->currentRevision] = $info; 57*1d11f1d3SSatoshi Sahara return $info; 58c7192766SSatoshi Sahara } 59c7192766SSatoshi Sahara 600c3a5702SAndreas Gohr} 61