xref: /dokuwiki/inc/Ui/Diff.php (revision 63ab9afea47c7d80a8ede45def7caa27e9d03276)
1*63ab9afeSSatoshi Sahara<?php
2*63ab9afeSSatoshi Sahara
3*63ab9afeSSatoshi Saharanamespace dokuwiki\Ui;
4*63ab9afeSSatoshi Sahara
5*63ab9afeSSatoshi Saharause dokuwiki\ChangeLog\PageChangeLog;
6*63ab9afeSSatoshi Saharause dokuwiki\ChangeLog\MediaChangeLog;
7*63ab9afeSSatoshi Sahara
8*63ab9afeSSatoshi Sahara/**
9*63ab9afeSSatoshi Sahara * DokuWiki Diff Interface
10*63ab9afeSSatoshi Sahara * parent class of PageDiff and MediaDiff
11*63ab9afeSSatoshi Sahara *
12*63ab9afeSSatoshi Sahara * @package dokuwiki\Ui
13*63ab9afeSSatoshi Sahara */
14*63ab9afeSSatoshi Saharaabstract class Diff extends Ui
15*63ab9afeSSatoshi Sahara{
16*63ab9afeSSatoshi Sahara    /**
17*63ab9afeSSatoshi Sahara     * Get header of diff HTML
18*63ab9afeSSatoshi Sahara     *
19*63ab9afeSSatoshi Sahara     * @param string $l_rev   Left revisions
20*63ab9afeSSatoshi Sahara     * @param string $r_rev   Right revision
21*63ab9afeSSatoshi Sahara     * @param string $id      Page id, if null $ID is used
22*63ab9afeSSatoshi Sahara     * @param bool   $media   If it is for media files
23*63ab9afeSSatoshi Sahara     * @param bool   $inline  Return the header on a single line
24*63ab9afeSSatoshi Sahara     * @return string[] HTML snippets for diff header
25*63ab9afeSSatoshi Sahara     */
26*63ab9afeSSatoshi Sahara    public function diffHead($l_rev, $r_rev, $id = null, $media = false, $inline = false)
27*63ab9afeSSatoshi Sahara    {
28*63ab9afeSSatoshi Sahara        global $lang;
29*63ab9afeSSatoshi Sahara        if ($id === null) {
30*63ab9afeSSatoshi Sahara            global $ID;
31*63ab9afeSSatoshi Sahara            $id = $ID;
32*63ab9afeSSatoshi Sahara        }
33*63ab9afeSSatoshi Sahara        $head_separator = $inline ? ' ' : '<br />';
34*63ab9afeSSatoshi Sahara        $media_or_wikiFN = $media ? 'mediaFN' : 'wikiFN';
35*63ab9afeSSatoshi Sahara        $ml_or_wl = $media ? 'ml' : 'wl';
36*63ab9afeSSatoshi Sahara        $l_minor = $r_minor = '';
37*63ab9afeSSatoshi Sahara
38*63ab9afeSSatoshi Sahara        if ($media) {
39*63ab9afeSSatoshi Sahara            $changelog = new MediaChangeLog($id);
40*63ab9afeSSatoshi Sahara        } else {
41*63ab9afeSSatoshi Sahara            $changelog = new PageChangeLog($id);
42*63ab9afeSSatoshi Sahara        }
43*63ab9afeSSatoshi Sahara        if (!$l_rev) {
44*63ab9afeSSatoshi Sahara            $l_head = '&mdash;';
45*63ab9afeSSatoshi Sahara        } else {
46*63ab9afeSSatoshi Sahara            $l_info   = $changelog->getRevisionInfo($l_rev);
47*63ab9afeSSatoshi Sahara            if ($l_info['user']) {
48*63ab9afeSSatoshi Sahara                $l_user = '<bdi>'.editorinfo($l_info['user']).'</bdi>';
49*63ab9afeSSatoshi Sahara                if (auth_ismanager()) $l_user .= ' <bdo dir="ltr">('.$l_info['ip'].')</bdo>';
50*63ab9afeSSatoshi Sahara            } else {
51*63ab9afeSSatoshi Sahara                $l_user = '<bdo dir="ltr">'.$l_info['ip'].'</bdo>';
52*63ab9afeSSatoshi Sahara            }
53*63ab9afeSSatoshi Sahara            $l_user  = '<span class="user">'.$l_user.'</span>';
54*63ab9afeSSatoshi Sahara            $l_sum   = ($l_info['sum']) ? '<span class="sum"><bdi>'.hsc($l_info['sum']).'</bdi></span>' : '';
55*63ab9afeSSatoshi Sahara            if ($l_info['type'] === DOKU_CHANGE_TYPE_MINOR_EDIT) $l_minor = 'class="minor"';
56*63ab9afeSSatoshi Sahara
57*63ab9afeSSatoshi Sahara            $l_head_title = ($media) ? dformat($l_rev) : $id.' ['.dformat($l_rev).']';
58*63ab9afeSSatoshi Sahara            $l_head = '<bdi><a class="wikilink1" href="'.$ml_or_wl($id,"rev=$l_rev").'">'
59*63ab9afeSSatoshi Sahara                . $l_head_title.'</a></bdi>'.$head_separator.$l_user.' '.$l_sum;
60*63ab9afeSSatoshi Sahara        }
61*63ab9afeSSatoshi Sahara
62*63ab9afeSSatoshi Sahara        if ($r_rev) {
63*63ab9afeSSatoshi Sahara            $r_info   = $changelog->getRevisionInfo($r_rev);
64*63ab9afeSSatoshi Sahara            if ($r_info['user']) {
65*63ab9afeSSatoshi Sahara                $r_user = '<bdi>'.editorinfo($r_info['user']).'</bdi>';
66*63ab9afeSSatoshi Sahara                if (auth_ismanager()) $r_user .= ' <bdo dir="ltr">('.$r_info['ip'].')</bdo>';
67*63ab9afeSSatoshi Sahara            } else {
68*63ab9afeSSatoshi Sahara                $r_user = '<bdo dir="ltr">'.$r_info['ip'].'</bdo>';
69*63ab9afeSSatoshi Sahara            }
70*63ab9afeSSatoshi Sahara            $r_user = '<span class="user">'.$r_user.'</span>';
71*63ab9afeSSatoshi Sahara            $r_sum  = ($r_info['sum']) ? '<span class="sum"><bdi>'.hsc($r_info['sum']).'</bdi></span>' : '';
72*63ab9afeSSatoshi Sahara            if ($r_info['type'] === DOKU_CHANGE_TYPE_MINOR_EDIT) $r_minor = 'class="minor"';
73*63ab9afeSSatoshi Sahara
74*63ab9afeSSatoshi Sahara            $r_head_title = ($media) ? dformat($r_rev) : $id.' ['.dformat($r_rev).']';
75*63ab9afeSSatoshi Sahara            $r_head = '<bdi><a class="wikilink1" href="'.$ml_or_wl($id,"rev=$r_rev").'">'
76*63ab9afeSSatoshi Sahara                . $r_head_title.'</a></bdi>'.$head_separator.$r_user.' '.$r_sum;
77*63ab9afeSSatoshi Sahara        } elseif ($_rev = @filemtime($media_or_wikiFN($id))) {
78*63ab9afeSSatoshi Sahara            $_info   = $changelog->getRevisionInfo($_rev);
79*63ab9afeSSatoshi Sahara            if ($_info['user']) {
80*63ab9afeSSatoshi Sahara                $_user = '<bdi>'.editorinfo($_info['user']).'</bdi>';
81*63ab9afeSSatoshi Sahara                if (auth_ismanager()) $_user .= ' <bdo dir="ltr">('.$_info['ip'].')</bdo>';
82*63ab9afeSSatoshi Sahara            } else {
83*63ab9afeSSatoshi Sahara                $_user = '<bdo dir="ltr">'.$_info['ip'].'</bdo>';
84*63ab9afeSSatoshi Sahara            }
85*63ab9afeSSatoshi Sahara            $_user = '<span class="user">'.$_user.'</span>';
86*63ab9afeSSatoshi Sahara            $_sum  = ($_info['sum']) ? '<span class="sum"><bdi>'.hsc($_info['sum']).'</span></bdi>' : '';
87*63ab9afeSSatoshi Sahara            if ($_info['type'] === DOKU_CHANGE_TYPE_MINOR_EDIT) $r_minor = 'class="minor"';
88*63ab9afeSSatoshi Sahara
89*63ab9afeSSatoshi Sahara            $r_head_title = ($media) ? dformat($_rev) : $id.' ['.dformat($_rev).']';
90*63ab9afeSSatoshi Sahara            $r_head  = '<bdi><a class="wikilink1" href="'.$ml_or_wl($id).'">'
91*63ab9afeSSatoshi Sahara                . $r_head_title.'</a></bdi> '.'('.$lang['current'].')'.$head_separator.$_user.' '.$_sum;
92*63ab9afeSSatoshi Sahara        }else{
93*63ab9afeSSatoshi Sahara            $r_head = '&mdash; ('.$lang['current'].')';
94*63ab9afeSSatoshi Sahara        }
95*63ab9afeSSatoshi Sahara
96*63ab9afeSSatoshi Sahara        return array($l_head, $r_head, $l_minor, $r_minor);
97*63ab9afeSSatoshi Sahara    }
98*63ab9afeSSatoshi Sahara
99*63ab9afeSSatoshi Sahara}
100