10c3a5702SAndreas Gohr<?php 20c3a5702SAndreas Gohr 30c3a5702SAndreas Gohrnamespace dokuwiki\ChangeLog; 40c3a5702SAndreas Gohr 50c3a5702SAndreas Gohr/** 60c3a5702SAndreas Gohr * 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 } 31*c7192766SSatoshi Sahara 32*c7192766SSatoshi Sahara 33*c7192766SSatoshi Sahara 34*c7192766SSatoshi Sahara /** 35*c7192766SSatoshi Sahara * Adds an entry to the changelog 36*c7192766SSatoshi Sahara * 37*c7192766SSatoshi Sahara * @param array $info Revision info structure of a page 38*c7192766SSatoshi Sahara * @param int $timestamp logline date (optional) 39*c7192766SSatoshi Sahara * @return array added logline as revision info 40*c7192766SSatoshi Sahara * 41*c7192766SSatoshi Sahara * @see also addLogEntry() in inc/changelog.php file 42*c7192766SSatoshi Sahara */ 43*c7192766SSatoshi Sahara public function addLogEntry(array $info, $timestamp = null) 44*c7192766SSatoshi Sahara { 45*c7192766SSatoshi Sahara global $conf; 46*c7192766SSatoshi Sahara 47*c7192766SSatoshi Sahara $strip = ["\t", "\n"]; 48*c7192766SSatoshi Sahara $revInfo = array( 49*c7192766SSatoshi Sahara 'date' => $timestamp ?? $info['date'], 50*c7192766SSatoshi Sahara 'ip' => $info['ip'], 51*c7192766SSatoshi Sahara 'type' => str_replace($strip, '', $info['type']), 52*c7192766SSatoshi Sahara 'id' => $this->id, 53*c7192766SSatoshi Sahara 'user' => $info['user'], 54*c7192766SSatoshi Sahara 'sum' => \dokuwiki\Utf8\PhpString::substr(str_replace($strip, '', $info['sum']), 0, 255), 55*c7192766SSatoshi Sahara 'extra' => str_replace($strip, '', $info['extra']), 56*c7192766SSatoshi Sahara 'sizechange' => $info['sizechange'], 57*c7192766SSatoshi Sahara ); 58*c7192766SSatoshi Sahara 59*c7192766SSatoshi Sahara // add changelog lines 60*c7192766SSatoshi Sahara $logline = implode("\t", $revInfo) ."\n"; 61*c7192766SSatoshi Sahara io_saveFile(metaFN($this->id,'.changes'), $logline, $append = true); 62*c7192766SSatoshi Sahara io_saveFile($conf['changelog'], $logline, $append = true); //global changelog cache 63*c7192766SSatoshi Sahara 64*c7192766SSatoshi Sahara // update cache 65*c7192766SSatoshi Sahara if (isset($timestamp)) unset($this->cache[$this->id][$info['date']]); 66*c7192766SSatoshi Sahara $this->currentRevision = $revInfo['date']; 67*c7192766SSatoshi Sahara $this->cache[$this->id][$this->currentRevision] = $revInfo; 68*c7192766SSatoshi Sahara return $revInfo; 69*c7192766SSatoshi Sahara } 70*c7192766SSatoshi Sahara 710c3a5702SAndreas Gohr} 72