1bf3fa5e9SSatoshi Sahara<?php 2bf3fa5e9SSatoshi Sahara 3bf3fa5e9SSatoshi Saharanamespace dokuwiki\ChangeLog; 4bf3fa5e9SSatoshi Sahara 5bf3fa5e9SSatoshi Sahara/** 6bf3fa5e9SSatoshi Sahara * Class RevisionInfo 7bf3fa5e9SSatoshi Sahara * 8bf3fa5e9SSatoshi Sahara * Provides methods to show Revision Information in DokuWiki Ui compoments: 9bf3fa5e9SSatoshi Sahara * - Ui\Recent 10bf3fa5e9SSatoshi Sahara * - Ui\PageRevisions 11bf3fa5e9SSatoshi Sahara * - Ui\MediaRevisions 12bf3fa5e9SSatoshi Sahara */ 13bf3fa5e9SSatoshi Saharaclass RevisionInfo 14bf3fa5e9SSatoshi Sahara{ 15*b428a50aSSatoshi Sahara /* @var array */ 16bf3fa5e9SSatoshi Sahara protected $info; 17bf3fa5e9SSatoshi Sahara 18bf3fa5e9SSatoshi Sahara /** 19bf3fa5e9SSatoshi Sahara * Constructor 20bf3fa5e9SSatoshi Sahara * 21bf3fa5e9SSatoshi Sahara * @param array $info Revision Infomation structure with entries: 22bf3fa5e9SSatoshi Sahara * - date: unix timestamp 23bf3fa5e9SSatoshi Sahara * - ip: IPv4 or IPv6 address 24bf3fa5e9SSatoshi Sahara * - type: change type (log line type) 25bf3fa5e9SSatoshi Sahara * - id: page id 26bf3fa5e9SSatoshi Sahara * - user: user name 27bf3fa5e9SSatoshi Sahara * - sum: edit summary (or action reason) 28bf3fa5e9SSatoshi Sahara * - extra: extra data (varies by line type) 29bf3fa5e9SSatoshi Sahara * - sizechange: change of filesize 30bf3fa5e9SSatoshi Sahara * additionally, 313d727ea4SGerrit Uitslag * - current: (optional) whether current revision or not 32bf3fa5e9SSatoshi Sahara * - timestamp: (optional) set only when external edits occurred 33*b428a50aSSatoshi Sahara * - mode: (internal use) ether "media" or "page" 34bf3fa5e9SSatoshi Sahara */ 35*b428a50aSSatoshi Sahara public function __construct($info = null) 36bf3fa5e9SSatoshi Sahara { 37*b428a50aSSatoshi Sahara if (is_array($info) && isset($info['id'])) { 38*b428a50aSSatoshi Sahara // define strategy context 39*b428a50aSSatoshi Sahara $info['mode'] = strrpos($info['id'], '.') ? 'media' : 'page'; 40*b428a50aSSatoshi Sahara } else { 41*b428a50aSSatoshi Sahara $info = [ 42*b428a50aSSatoshi Sahara 'mode' => 'page', 43*b428a50aSSatoshi Sahara 'date' => false, 44*b428a50aSSatoshi Sahara ]; 45*b428a50aSSatoshi Sahara } 46bf3fa5e9SSatoshi Sahara $this->info = $info; 47bf3fa5e9SSatoshi Sahara } 48bf3fa5e9SSatoshi Sahara 49bf3fa5e9SSatoshi Sahara /** 50*b428a50aSSatoshi Sahara * Set or return whether this revison is current page or media file 51*b428a50aSSatoshi Sahara * 52*b428a50aSSatoshi Sahara * This method does not check exactly whether the revision is current or not. Instead, 53*b428a50aSSatoshi Sahara * set value of associated "current" key for internal use. Some UI element like diff 54*b428a50aSSatoshi Sahara * link button depend on relation to current page or media file. A changelog line does 55*b428a50aSSatoshi Sahara * not indicate whether it coresponds to current page or media file. 56*b428a50aSSatoshi Sahara * 57*b428a50aSSatoshi Sahara * @param bool $value true if the revision is current, otherwise false 58*b428a50aSSatoshi Sahara * @return bool 59*b428a50aSSatoshi Sahara */ 60*b428a50aSSatoshi Sahara public function isCurrent($value = null) 61*b428a50aSSatoshi Sahara { 62*b428a50aSSatoshi Sahara return $this->val('current', $value); 63*b428a50aSSatoshi Sahara } 64*b428a50aSSatoshi Sahara 65*b428a50aSSatoshi Sahara /** 66*b428a50aSSatoshi Sahara * Return or set a value of assosiated key of revision information 67*b428a50aSSatoshi Sahara * but does not allow to change values of existing keys 68*b428a50aSSatoshi Sahara * 69*b428a50aSSatoshi Sahara * @param string $key 70*b428a50aSSatoshi Sahara * @param mixed $value 71*b428a50aSSatoshi Sahara * @return string|null 72*b428a50aSSatoshi Sahara */ 73*b428a50aSSatoshi Sahara public function val($key, $value = null) 74*b428a50aSSatoshi Sahara { 75*b428a50aSSatoshi Sahara if (isset($value) && !array_key_exists($key, $this->info)) { 76*b428a50aSSatoshi Sahara // setter, only for new keys 77*b428a50aSSatoshi Sahara $this->info[$key] = $value; 78*b428a50aSSatoshi Sahara } 79*b428a50aSSatoshi Sahara if (array_key_exists($key, $this->info)) { 80*b428a50aSSatoshi Sahara // getter 81*b428a50aSSatoshi Sahara return $this->info[$key]; 82*b428a50aSSatoshi Sahara } 83*b428a50aSSatoshi Sahara return null; 84*b428a50aSSatoshi Sahara } 85*b428a50aSSatoshi Sahara 86*b428a50aSSatoshi Sahara /** 87*b428a50aSSatoshi Sahara * Set extra key-value to the revision information 88*b428a50aSSatoshi Sahara * but does not allow to change values of existing keys 89*b428a50aSSatoshi Sahara * @param array $info 90*b428a50aSSatoshi Sahara * @return void 91*b428a50aSSatoshi Sahara */ 92*b428a50aSSatoshi Sahara public function append(array $info) 93*b428a50aSSatoshi Sahara { 94*b428a50aSSatoshi Sahara foreach ($info as $key => $value) { 95*b428a50aSSatoshi Sahara $this->val($key, $value); 96*b428a50aSSatoshi Sahara } 97*b428a50aSSatoshi Sahara } 98*b428a50aSSatoshi Sahara 99*b428a50aSSatoshi Sahara 100*b428a50aSSatoshi Sahara /** 101bf3fa5e9SSatoshi Sahara * fileicon of the page or media file 102bf3fa5e9SSatoshi Sahara * used in [Ui\recent] 103bf3fa5e9SSatoshi Sahara * 104bf3fa5e9SSatoshi Sahara * @return string 105bf3fa5e9SSatoshi Sahara */ 106*b428a50aSSatoshi Sahara public function showFileIcon() 107bf3fa5e9SSatoshi Sahara { 108*b428a50aSSatoshi Sahara $id = $this->val('id'); 109*b428a50aSSatoshi Sahara switch ($this->val('mode')) { 110bf3fa5e9SSatoshi Sahara case 'media': // media file revision 111*b428a50aSSatoshi Sahara return media_printicon($id); 112bf3fa5e9SSatoshi Sahara case 'page': // page revision 113*b428a50aSSatoshi Sahara return '<img class="icon" src="'.DOKU_BASE.'lib/images/fileicons/file.png" alt="'.$id.'" />'; 114bf3fa5e9SSatoshi Sahara } 115bf3fa5e9SSatoshi Sahara } 116bf3fa5e9SSatoshi Sahara 117bf3fa5e9SSatoshi Sahara /** 118bf3fa5e9SSatoshi Sahara * edit date and time of the page or media file 119bf3fa5e9SSatoshi Sahara * used in [Ui\recent, Ui\Revisions] 120bf3fa5e9SSatoshi Sahara * 121bf3fa5e9SSatoshi Sahara * @param bool $checkTimestamp enable timestamp check, alter formatted string when timestamp is false 122bf3fa5e9SSatoshi Sahara * @return string 123bf3fa5e9SSatoshi Sahara */ 124*b428a50aSSatoshi Sahara public function showEditDate($checkTimestamp = false) 125bf3fa5e9SSatoshi Sahara { 126*b428a50aSSatoshi Sahara $formatted = dformat($this->val('date')); 127*b428a50aSSatoshi Sahara if ($checkTimestamp && $this->val('timestamp') === false) { 128*b428a50aSSatoshi Sahara // exact date is unknown for externally deleted file 129bf3fa5e9SSatoshi Sahara // when unknown, alter formatted string "YYYY-mm-DD HH:MM" to "____-__-__ __:__" 130bf3fa5e9SSatoshi Sahara $formatted = preg_replace('/[0-9a-zA-Z]/','_', $formatted); 131bf3fa5e9SSatoshi Sahara } 132bf3fa5e9SSatoshi Sahara return '<span class="date">'. $formatted .'</span>'; 133bf3fa5e9SSatoshi Sahara } 134bf3fa5e9SSatoshi Sahara 135bf3fa5e9SSatoshi Sahara /** 136bf3fa5e9SSatoshi Sahara * edit summary 137bf3fa5e9SSatoshi Sahara * used in [Ui\recent, Ui\Revisions] 138bf3fa5e9SSatoshi Sahara * 139bf3fa5e9SSatoshi Sahara * @return string 140bf3fa5e9SSatoshi Sahara */ 141*b428a50aSSatoshi Sahara public function showEditSummary() 142bf3fa5e9SSatoshi Sahara { 143*b428a50aSSatoshi Sahara return '<span class="sum">'.' – '. hsc($this->val('sum')).'</span>'; 144bf3fa5e9SSatoshi Sahara } 145bf3fa5e9SSatoshi Sahara 146bf3fa5e9SSatoshi Sahara /** 147bf3fa5e9SSatoshi Sahara * editor of the page or media file 148bf3fa5e9SSatoshi Sahara * used in [Ui\recent, Ui\Revisions] 149bf3fa5e9SSatoshi Sahara * 150bf3fa5e9SSatoshi Sahara * @return string 151bf3fa5e9SSatoshi Sahara */ 152*b428a50aSSatoshi Sahara public function showEditor() 153bf3fa5e9SSatoshi Sahara { 154*b428a50aSSatoshi Sahara if ($this->val('user')) { 155*b428a50aSSatoshi Sahara $html = '<bdi>'. editorinfo($this->val('user')) .'</bdi>'; 156*b428a50aSSatoshi Sahara if (auth_ismanager()) $html .= ' <bdo dir="ltr">('. $this->val('ip') .')</bdo>'; 157bf3fa5e9SSatoshi Sahara } else { 158*b428a50aSSatoshi Sahara $html = '<bdo dir="ltr">'. $this->val('ip') .'</bdo>'; 159bf3fa5e9SSatoshi Sahara } 160*b428a50aSSatoshi Sahara return '<span class="user">'. $html. '</span>'; 161bf3fa5e9SSatoshi Sahara } 162bf3fa5e9SSatoshi Sahara 163bf3fa5e9SSatoshi Sahara /** 164bf3fa5e9SSatoshi Sahara * name of the page or media file 165bf3fa5e9SSatoshi Sahara * used in [Ui\recent, Ui\Revisions] 166bf3fa5e9SSatoshi Sahara * 167bf3fa5e9SSatoshi Sahara * @return string 168bf3fa5e9SSatoshi Sahara */ 169*b428a50aSSatoshi Sahara public function showFileName() 170bf3fa5e9SSatoshi Sahara { 171*b428a50aSSatoshi Sahara $id = $this->val('id'); 172*b428a50aSSatoshi Sahara $rev = $this->isCurrent() ? '' : $this->val('date'); 173bf3fa5e9SSatoshi Sahara 174*b428a50aSSatoshi Sahara switch ($this->val('mode')) { 175bf3fa5e9SSatoshi Sahara case 'media': // media file revision 176bf3fa5e9SSatoshi Sahara $params = ['tab_details'=> 'view', 'ns'=> getNS($id), 'image'=> $id]; 177bf3fa5e9SSatoshi Sahara if ($rev) $params += ['rev'=> $rev]; 178bf3fa5e9SSatoshi Sahara $href = media_managerURL($params, '&'); 179*b428a50aSSatoshi Sahara $display_name = $id; 180*b428a50aSSatoshi Sahara $class = file_exists(mediaFN($id, $rev)) ? 'wikilink1' : 'wikilink2'; 181*b428a50aSSatoshi Sahara break; 182bf3fa5e9SSatoshi Sahara case 'page': // page revision 183de8ed963SGerrit Uitslag $params = $rev ? ['rev'=> $rev] : []; 184bf3fa5e9SSatoshi Sahara $href = wl($id, $params, false, '&'); 185bf3fa5e9SSatoshi Sahara $display_name = useHeading('navigation') ? hsc(p_get_first_heading($id)) : $id; 186bf3fa5e9SSatoshi Sahara if (!$display_name) $display_name = $id; 187*b428a50aSSatoshi Sahara $class = page_exists($id, $rev) ? 'wikilink1' : 'wikilink2'; 1883d727ea4SGerrit Uitslag } 189*b428a50aSSatoshi Sahara if ($this->val('type') == DOKU_CHANGE_TYPE_DELETE) { 190*b428a50aSSatoshi Sahara $class = 'wikilink2'; 191bf3fa5e9SSatoshi Sahara } 192bf3fa5e9SSatoshi Sahara return '<a href="'.$href.'" class="'.$class.'">'.$display_name.'</a>'; 193bf3fa5e9SSatoshi Sahara } 19475d9280cSGerrit Uitslag 195bf3fa5e9SSatoshi Sahara /** 196*b428a50aSSatoshi Sahara * Revision Title for PageDiff table headline 197bf3fa5e9SSatoshi Sahara * 198bf3fa5e9SSatoshi Sahara * @return string 199bf3fa5e9SSatoshi Sahara */ 200*b428a50aSSatoshi Sahara public function showRevisionTitle() 201bf3fa5e9SSatoshi Sahara { 202bf3fa5e9SSatoshi Sahara global $lang; 203*b428a50aSSatoshi Sahara 204*b428a50aSSatoshi Sahara if (!$this->val('date')) return '—'; 205*b428a50aSSatoshi Sahara 206*b428a50aSSatoshi Sahara $id = $this->val('id'); 207*b428a50aSSatoshi Sahara $rev = $this->isCurrent() ? '' : $this->val('date'); 208*b428a50aSSatoshi Sahara $params = ($rev) ? ['rev'=> $rev] : []; 209*b428a50aSSatoshi Sahara 210*b428a50aSSatoshi Sahara switch ($this->val('mode')) { 211*b428a50aSSatoshi Sahara case 'media': // media file revision 212*b428a50aSSatoshi Sahara $href = ml($id, $params, false, '&'); 213*b428a50aSSatoshi Sahara $class = file_exists(mediaFN($id, $rev)) ? 'wikilink1' : 'wikilink2'; 214*b428a50aSSatoshi Sahara break; 215*b428a50aSSatoshi Sahara case 'page': // page revision 216*b428a50aSSatoshi Sahara $href = wl($id, $params, false, '&'); 217*b428a50aSSatoshi Sahara $class = page_exists($id, $rev) ? 'wikilink1' : 'wikilink2'; 218*b428a50aSSatoshi Sahara } 219*b428a50aSSatoshi Sahara if ($this->val('type') == DOKU_CHANGE_TYPE_DELETE) { 220*b428a50aSSatoshi Sahara $class = 'wikilink2'; 221*b428a50aSSatoshi Sahara } 222*b428a50aSSatoshi Sahara // revision info may have timestamp key when external edits occurred 223*b428a50aSSatoshi Sahara $date = ($this->val('timestamp') === false) 224*b428a50aSSatoshi Sahara ? $lang['unknowndate'] 225*b428a50aSSatoshi Sahara : dformat($this->val('date')); 226*b428a50aSSatoshi Sahara 227*b428a50aSSatoshi Sahara return '<bdi><a class="'.$class.'" href="'.$href.'">'.$id.' ['.$date.']'.'</a></bdi>'; 228*b428a50aSSatoshi Sahara } 229*b428a50aSSatoshi Sahara 230*b428a50aSSatoshi Sahara /** 231*b428a50aSSatoshi Sahara * difflink icon in recents list, to compare (this) current revision with previous one 232*b428a50aSSatoshi Sahara * all items in "recent changes" are current revision of the page or media 233*b428a50aSSatoshi Sahara * 234*b428a50aSSatoshi Sahara * @return string 235*b428a50aSSatoshi Sahara */ 236*b428a50aSSatoshi Sahara public function showIconCompareWithPrevious() 237*b428a50aSSatoshi Sahara { 238*b428a50aSSatoshi Sahara global $lang; 239*b428a50aSSatoshi Sahara $id = $this->val('id'); 240bf3fa5e9SSatoshi Sahara 241bf3fa5e9SSatoshi Sahara $href = ''; 242*b428a50aSSatoshi Sahara switch ($this->val('mode')) { 243bf3fa5e9SSatoshi Sahara case 'media': // media file revision 244*b428a50aSSatoshi Sahara // unlike page, media file does not copyed to media_attic when uploaded. 245*b428a50aSSatoshi Sahara // diff icon will not be shown when external edit occurred 246*b428a50aSSatoshi Sahara // because no attic file to be compared with current. 247bf3fa5e9SSatoshi Sahara $revs = (new MediaChangeLog($id))->getRevisions(0, 1); 248*b428a50aSSatoshi Sahara $showLink = (count($revs) && file_exists(mediaFN($id,$revs[0])) && file_exists(mediaFN($id))); 249bf3fa5e9SSatoshi Sahara if ($showLink) { 250*b428a50aSSatoshi Sahara $param = ['tab_details'=>'history', 'mediado'=>'diff', 'ns'=> getNS($id), 'image'=> $id]; 251*b428a50aSSatoshi Sahara $href = media_managerURL($param, '&'); 252bf3fa5e9SSatoshi Sahara } 253bf3fa5e9SSatoshi Sahara break; 254bf3fa5e9SSatoshi Sahara case 'page': // page revision 255*b428a50aSSatoshi Sahara // when a page just created anyway, it is natural to expect no older revisions 256*b428a50aSSatoshi Sahara // even if it had once existed but deleted before. Simply ignore to check changelog. 257*b428a50aSSatoshi Sahara if ($this->val('type') !== DOKU_CHANGE_TYPE_CREATE) { 258*b428a50aSSatoshi Sahara $href = wl($id, ['do'=>'diff'], false, '&'); 259bf3fa5e9SSatoshi Sahara } 260bf3fa5e9SSatoshi Sahara } 261bf3fa5e9SSatoshi Sahara 262bf3fa5e9SSatoshi Sahara if ($href) { 263*b428a50aSSatoshi Sahara return '<a href="'.$href.'" class="diff_link">' 264bf3fa5e9SSatoshi Sahara .'<img src="'.DOKU_BASE.'lib/images/diff.png" width="15" height="11"' 265bf3fa5e9SSatoshi Sahara .' title="'. $lang['diff'] .'" alt="'.$lang['diff'] .'" />' 266bf3fa5e9SSatoshi Sahara .'</a>'; 267bf3fa5e9SSatoshi Sahara } else { 268*b428a50aSSatoshi Sahara return '<img src="'.DOKU_BASE.'lib/images/blank.gif" width="15" height="11" alt="" />'; 269bf3fa5e9SSatoshi Sahara } 270bf3fa5e9SSatoshi Sahara } 271bf3fa5e9SSatoshi Sahara 272bf3fa5e9SSatoshi Sahara /** 273*b428a50aSSatoshi Sahara * difflink icon in revsions list, compare this revision with current one 274bf3fa5e9SSatoshi Sahara * the icon does not displayed for the current revision 275bf3fa5e9SSatoshi Sahara * 276bf3fa5e9SSatoshi Sahara * @return string 277bf3fa5e9SSatoshi Sahara */ 278*b428a50aSSatoshi Sahara public function showIconCompareWithCurrent() 279bf3fa5e9SSatoshi Sahara { 280bf3fa5e9SSatoshi Sahara global $lang; 281*b428a50aSSatoshi Sahara $id = $this->val('id'); 282*b428a50aSSatoshi Sahara $rev = $this->isCurrent() ? '' : $this->val('date'); 283bf3fa5e9SSatoshi Sahara 284*b428a50aSSatoshi Sahara $href = ''; 285*b428a50aSSatoshi Sahara switch ($this->val('mode')) { 286bf3fa5e9SSatoshi Sahara case 'media': // media file revision 287*b428a50aSSatoshi Sahara if (!$this->isCurrent() && file_exists(mediaFN($id, $rev))) { 288*b428a50aSSatoshi Sahara $param = ['mediado'=>'diff', 'image'=> $id, 'rev'=> $rev]; 289*b428a50aSSatoshi Sahara $href = media_managerURL($param, '&'); 290bf3fa5e9SSatoshi Sahara } 291*b428a50aSSatoshi Sahara break; 292bf3fa5e9SSatoshi Sahara case 'page': // page revision 293*b428a50aSSatoshi Sahara if (!$this->isCurrent()) { 294*b428a50aSSatoshi Sahara $href = wl($id, ['rev'=> $rev, 'do'=>'diff'], false, '&'); 295*b428a50aSSatoshi Sahara } 296*b428a50aSSatoshi Sahara } 297*b428a50aSSatoshi Sahara 298*b428a50aSSatoshi Sahara if ($href) { 299*b428a50aSSatoshi Sahara return '<a href="'.$href.'" class="diff_link">' 300bf3fa5e9SSatoshi Sahara .'<img src="'.DOKU_BASE.'lib/images/diff.png" width="15" height="11"' 301bf3fa5e9SSatoshi Sahara .' title="'. $lang['diff'] .'" alt="'.$lang['diff'] .'" />' 302bf3fa5e9SSatoshi Sahara .'</a>'; 303*b428a50aSSatoshi Sahara } else { 304*b428a50aSSatoshi Sahara return '<img src="'.DOKU_BASE.'lib/images/blank.gif" width="15" height="11" alt="" />'; 305bf3fa5e9SSatoshi Sahara } 306bf3fa5e9SSatoshi Sahara } 307bf3fa5e9SSatoshi Sahara 308bf3fa5e9SSatoshi Sahara /** 309*b428a50aSSatoshi Sahara * icon for revision action 310bf3fa5e9SSatoshi Sahara * used in [Ui\recent] 311bf3fa5e9SSatoshi Sahara * 312bf3fa5e9SSatoshi Sahara * @return string 313bf3fa5e9SSatoshi Sahara */ 314*b428a50aSSatoshi Sahara public function showIconRevisions() 315bf3fa5e9SSatoshi Sahara { 31675d9280cSGerrit Uitslag global $lang; 317bf3fa5e9SSatoshi Sahara 318bf3fa5e9SSatoshi Sahara if (!actionOK('revisions')) { 319*b428a50aSSatoshi Sahara return ''; 320bf3fa5e9SSatoshi Sahara } 321bf3fa5e9SSatoshi Sahara 322*b428a50aSSatoshi Sahara $id = $this->val('id'); 323*b428a50aSSatoshi Sahara switch ($this->val('mode')) { 324bf3fa5e9SSatoshi Sahara case 'media': // media file revision 325*b428a50aSSatoshi Sahara $param = ['tab_details'=>'history', 'ns'=> getNS($id), 'image'=> $id]; 326*b428a50aSSatoshi Sahara $href = media_managerURL($param, '&'); 327bf3fa5e9SSatoshi Sahara break; 328bf3fa5e9SSatoshi Sahara case 'page': // page revision 329*b428a50aSSatoshi Sahara $href = wl($id, ['do'=>'revisions'], false, '&'); 330bf3fa5e9SSatoshi Sahara } 331bf3fa5e9SSatoshi Sahara return '<a href="'.$href.'" class="revisions_link">' 332bf3fa5e9SSatoshi Sahara . '<img src="'.DOKU_BASE.'lib/images/history.png" width="12" height="14"' 333bf3fa5e9SSatoshi Sahara . ' title="'.$lang['btn_revs'].'" alt="'.$lang['btn_revs'].'" />' 334bf3fa5e9SSatoshi Sahara . '</a>'; 335bf3fa5e9SSatoshi Sahara } 336bf3fa5e9SSatoshi Sahara 337bf3fa5e9SSatoshi Sahara /** 338bf3fa5e9SSatoshi Sahara * size change 339bf3fa5e9SSatoshi Sahara * used in [Ui\recent, Ui\Revisions] 340bf3fa5e9SSatoshi Sahara * 341bf3fa5e9SSatoshi Sahara * @return string 342bf3fa5e9SSatoshi Sahara */ 343*b428a50aSSatoshi Sahara public function showSizeChange() 344bf3fa5e9SSatoshi Sahara { 345bf3fa5e9SSatoshi Sahara $class = 'sizechange'; 346*b428a50aSSatoshi Sahara $value = filesize_h(abs($this->val('sizechange'))); 347*b428a50aSSatoshi Sahara if ($this->val('sizechange') > 0) { 348bf3fa5e9SSatoshi Sahara $class .= ' positive'; 349bf3fa5e9SSatoshi Sahara $value = '+' . $value; 350*b428a50aSSatoshi Sahara } elseif ($this->val('sizechange') < 0) { 351bf3fa5e9SSatoshi Sahara $class .= ' negative'; 352bf3fa5e9SSatoshi Sahara $value = '-' . $value; 353bf3fa5e9SSatoshi Sahara } else { 354bf3fa5e9SSatoshi Sahara $value = '±' . $value; 355bf3fa5e9SSatoshi Sahara } 356bf3fa5e9SSatoshi Sahara return '<span class="'.$class.'">'.$value.'</span>'; 357bf3fa5e9SSatoshi Sahara } 358bf3fa5e9SSatoshi Sahara 359bf3fa5e9SSatoshi Sahara /** 360bf3fa5e9SSatoshi Sahara * current indicator, used in revison list 361*b428a50aSSatoshi Sahara * not used in Ui\Recents because recent filess are always current one 362bf3fa5e9SSatoshi Sahara * 363bf3fa5e9SSatoshi Sahara * @return string 364bf3fa5e9SSatoshi Sahara */ 365*b428a50aSSatoshi Sahara public function showCurrentIndicator() 366bf3fa5e9SSatoshi Sahara { 367bf3fa5e9SSatoshi Sahara global $lang; 368*b428a50aSSatoshi Sahara return $this->isCurrent() ? '('.$lang['current'].')' : ''; 369bf3fa5e9SSatoshi Sahara } 370bf3fa5e9SSatoshi Sahara 371bf3fa5e9SSatoshi Sahara 372bf3fa5e9SSatoshi Sahara} 373