/** * @TODO: split up! * * @param $row * @param Title $title * @param Array $paramArray * @param $comment * @return String */ private function logActionLinks($row, $title, $paramArray, &$comment) { global $wgUser; if ($this->flags & self::NO_ACTION_LINK || self::isDeleted($row, LogPage::DELETED_ACTION)) { return ''; } $revert = ''; if (self::typeAction($row, 'move', 'move', 'move') && !empty($paramArray[0])) { $destTitle = Title::newFromText($paramArray[0]); if ($destTitle) { $revert = '(' . Linker::link(SpecialPage::getTitleFor('Movepage'), $this->message['revertmove'], array(), array('wpOldTitle' => $destTitle->getPrefixedDBkey(), 'wpNewTitle' => $title->getPrefixedDBkey(), 'wpReason' => wfMsgForContent('revertmove'), 'wpMovetalk' => 0), array('known', 'noclasses')) . ')'; } // Show undelete link } elseif (self::typeAction($row, array('delete', 'suppress'), 'delete', 'deletedhistory')) { if (!$wgUser->isAllowed('undelete')) { $viewdeleted = $this->message['undeleteviewlink']; } else { $viewdeleted = $this->message['undeletelink']; } $revert = '(' . Linker::link(SpecialPage::getTitleFor('Undelete'), $viewdeleted, array(), array('target' => $title->getPrefixedDBkey()), array('known', 'noclasses')) . ')'; // Show unblock/change block link } elseif (self::typeAction($row, array('block', 'suppress'), array('block', 'reblock'), 'block')) { $revert = '(' . Linker::link(SpecialPage::getTitleFor('Unblock', $row->log_title), $this->message['unblocklink'], array(), array(), 'known') . $this->message['pipe-separator'] . Linker::link(SpecialPage::getTitleFor('Block', $row->log_title), $this->message['change-blocklink'], array(), array(), 'known') . ')'; // Show change protection link } elseif (self::typeAction($row, 'protect', array('modify', 'protect', 'unprotect'))) { $revert .= ' (' . Linker::link($title, $this->message['hist'], array(), array('action' => 'history', 'offset' => $row->log_timestamp)); if ($wgUser->isAllowed('protect')) { $revert .= $this->message['pipe-separator'] . Linker::link($title, $this->message['protect_change'], array(), array('action' => 'protect'), 'known'); } $revert .= ')'; // Show unmerge link } elseif (self::typeAction($row, 'merge', 'merge', 'mergehistory')) { $revert = '(' . Linker::link(SpecialPage::getTitleFor('MergeHistory'), $this->message['revertmerge'], array(), array('target' => $paramArray[0], 'dest' => $title->getPrefixedDBkey(), 'mergepoint' => $paramArray[1]), array('known', 'noclasses')) . ')'; // If an edit was hidden from a page give a review link to the history } elseif (self::typeAction($row, array('delete', 'suppress'), 'revision', 'deletedhistory')) { $revert = RevisionDeleter::getLogLinks($title, $paramArray, $this->skin, $this->message); // Hidden log items, give review link } elseif (self::typeAction($row, array('delete', 'suppress'), 'event', 'deletedhistory')) { if (count($paramArray) >= 1) { $revdel = SpecialPage::getTitleFor('Revisiondelete'); // $paramArray[1] is a CSV of the IDs $query = $paramArray[0]; // Link to each hidden object ID, $paramArray[1] is the url param $revert = '(' . Linker::link($revdel, $this->message['revdel-restore'], array(), array('target' => $title->getPrefixedText(), 'type' => 'logging', 'ids' => $query), array('known', 'noclasses')) . ')'; } // Self-created users } elseif (self::typeAction($row, 'newusers', 'create2')) { if (isset($paramArray[0])) { $revert = Linker::userToolLinks($paramArray[0], $title->getDBkey(), true); } else { # Fall back to a blue contributions link $revert = Linker::userToolLinks(1, $title->getDBkey()); } if (wfTimestamp(TS_MW, $row->log_timestamp) < '20080129000000') { # Suppress $comment from old entries (before 2008-01-29), # not needed and can contain incorrect links $comment = ''; } // Do nothing. The implementation is handled by the hook modifiying the passed-by-ref parameters. } else { wfRunHooks('LogLine', array($row->log_type, $row->log_action, $title, $paramArray, &$comment, &$revert, $row->log_timestamp)); } if ($revert != '') { $revert = '<span class="mw-logevent-actionlink">' . $revert . '</span>'; } return $revert; }