xref: /dokuwiki/inc/ChangeLog/PageChangeLog.php (revision 1d11f1d3396b6d0e55489e568b4bb7028ff9f172)
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