xref: /dokuwiki/inc/ChangeLog/PageChangeLog.php (revision 79a2d7845d5e5e48fe3be8f192717de9294aaba5)
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    /**
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)
391d11f1d3SSatoshi 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
471d11f1d3SSatoshi Sahara        if (isset($timestamp)) unset($this->cache[$this->id][$info['date']]);
48c7192766SSatoshi Sahara
49c7192766SSatoshi Sahara        // add changelog lines
501d11f1d3SSatoshi Sahara        $logline = $this->buildLogLine($info, $timestamp);
51*79a2d784SGerrit Uitslag        io_saveFile(metaFN($this->id,'.changes'), $logline, true);
52*79a2d784SGerrit Uitslag        io_saveFile($conf['changelog'], $logline, true); //global changelog cache
53c7192766SSatoshi Sahara
54c7192766SSatoshi Sahara        // update cache
551d11f1d3SSatoshi Sahara        $this->currentRevision = $info['date'];
561d11f1d3SSatoshi Sahara        $this->cache[$this->id][$this->currentRevision] = $info;
571d11f1d3SSatoshi Sahara        return $info;
58c7192766SSatoshi Sahara    }
59c7192766SSatoshi Sahara
600c3a5702SAndreas Gohr}
61