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 = '—'; 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 = '— ('.$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