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