/**
  * @return array
  */
 protected function getMessageParameters()
 {
     $entry = $this->entry->getParameters();
     $params = parent::getMessageParameters();
     $filter_title = SpecialPage::getTitleFor('AbuseFilter', $entry['filter']);
     $filter_caption = $this->msg('abusefilter-log-detailedentry-local')->params($entry['filter']);
     $log_title = SpecialPage::getTitleFor('AbuseLog', $entry['log']);
     $log_caption = $this->msg('abusefilter-log-detailslink');
     $params[4] = $entry['action'];
     if ($this->plaintext) {
         $params[3] = '[[' . $filter_title->getPrefixedText() . '|' . $filter_caption . ']]';
         $params[8] = '[[' . $log_title->getPrefixedText() . '|' . $log_caption . ']]';
     } else {
         $params[3] = Message::rawParam(Linker::link($filter_title, htmlspecialchars($filter_caption)));
         $params[8] = Message::rawParam(Linker::link($log_title, htmlspecialchars($log_caption)));
     }
     $actions_taken = $entry['actions'];
     if (!strlen(trim($actions_taken))) {
         $actions_taken = $this->msg('abusefilter-log-noactions');
     } else {
         $actions = explode(',', $actions_taken);
         $displayActions = array();
         foreach ($actions as $action) {
             $displayActions[] = AbuseFilter::getActionDisplay($action);
         }
         $actions_taken = $this->context->getLanguage()->commaList($displayActions);
     }
     $params[5] = $actions_taken;
     // Bad things happen if the numbers are not in correct order
     ksort($params);
     return $params;
 }
 /**
  * @param $action
  * @param $parameters
  * @return String
  */
 static function formatAction($action, $parameters)
 {
     /** @var $wgLang Language */
     global $wgLang;
     if (count($parameters) == 0) {
         $displayAction = AbuseFilter::getActionDisplay($action);
     } else {
         $displayAction = AbuseFilter::getActionDisplay($action) . wfMessage('colon-separator')->escaped() . $wgLang->semicolonList($parameters);
     }
     return $displayAction;
 }
 /**
  * @param $row
  * @param $isListItem bool
  * @return String
  */
 function formatRow($row, $isListItem = true)
 {
     $user = $this->getUser();
     $lang = $this->getLanguage();
     $actionLinks = array();
     $title = Title::makeTitle($row->afl_namespace, $row->afl_title);
     $diffLink = false;
     if (self::isHidden($row) && !$this->canSeeHidden()) {
         return '';
     }
     if (!$row->afl_wiki) {
         $pageLink = Linker::link($title);
         if ($row->afl_rev_id) {
             $diffLink = Linker::link($title, wfMessage('abusefilter-log-diff')->parse(), array(), array('diff' => 'prev', 'oldid' => $row->afl_rev_id));
         }
     } else {
         $pageLink = WikiMap::makeForeignLink($row->afl_wiki, $row->afl_title);
         if ($row->afl_rev_id) {
             $diffUrl = WikiMap::getForeignURL($row->afl_wiki, $row->afl_title);
             $diffUrl = wfAppendQuery($diffUrl, array('diff' => 'prev', 'oldid' => $row->afl_rev_id));
             $diffLink = Linker::makeExternalLink($diffUrl, wfMessage('abusefilter-log-diff')->parse());
         }
     }
     if (!$row->afl_wiki) {
         // Local user
         $userLink = Linker::userLink($row->afl_user, $row->afl_user_text) . Linker::userToolLinks($row->afl_user, $row->afl_user_text, true);
     } else {
         $userLink = WikiMap::foreignUserLink($row->afl_wiki, $row->afl_user_text);
         $userLink .= ' (' . WikiMap::getWikiName($row->afl_wiki) . ')';
     }
     $timestamp = $lang->timeanddate($row->afl_timestamp, true);
     $actions_taken = $row->afl_actions;
     if (!strlen(trim($actions_taken))) {
         $actions_taken = $this->msg('abusefilter-log-noactions')->text();
     } else {
         $actions = explode(',', $actions_taken);
         $displayActions = array();
         foreach ($actions as $action) {
             $displayActions[] = AbuseFilter::getActionDisplay($action);
         }
         $actions_taken = $lang->commaList($displayActions);
     }
     $globalIndex = AbuseFilter::decodeGlobalName($row->afl_filter);
     if ($globalIndex) {
         // Pull global filter description
         $parsed_comments = $this->getOutput()->parseInline(AbuseFilter::getGlobalFilterDescription($globalIndex));
         $filter_hidden = null;
     } else {
         $parsed_comments = $this->getOutput()->parseInline($row->af_public_comments);
         $filter_hidden = $row->af_hidden;
     }
     if (self::canSeeDetails($row->afl_filter, $filter_hidden)) {
         if ($isListItem) {
             $detailsLink = Linker::linkKnown($this->getPageTitle($row->afl_id), $this->msg('abusefilter-log-detailslink')->escaped());
             $actionLinks[] = $detailsLink;
         }
         $examineTitle = SpecialPage::getTitleFor('AbuseFilter', 'examine/log/' . $row->afl_id);
         $examineLink = Linker::link($examineTitle, $this->msg('abusefilter-changeslist-examine')->parse(), array());
         $actionLinks[] = $examineLink;
         if ($diffLink) {
             $actionLinks[] = $diffLink;
         }
         if ($user->isAllowed('abusefilter-hide-log')) {
             $hideLink = Linker::link($this->getPageTitle(), $this->msg('abusefilter-log-hidelink')->text(), array(), array('hide' => $row->afl_id));
             $actionLinks[] = $hideLink;
         }
         if ($globalIndex) {
             global $wgAbuseFilterCentralDB;
             $globalURL = WikiMap::getForeignURL($wgAbuseFilterCentralDB, 'Special:AbuseFilter/' . $globalIndex);
             $linkText = wfMessage('abusefilter-log-detailedentry-global')->numParams($globalIndex)->escaped();
             $filterLink = Linker::makeExternalLink($globalURL, $linkText);
         } else {
             $title = SpecialPage::getTitleFor('AbuseFilter', $row->afl_filter);
             $linkText = wfMessage('abusefilter-log-detailedentry-local')->numParams($row->afl_filter)->escaped();
             $filterLink = Linker::link($title, $linkText);
         }
         $description = $this->msg('abusefilter-log-detailedentry-meta')->rawParams($timestamp, $userLink, $filterLink, $row->afl_action, $pageLink, $actions_taken, $parsed_comments, $lang->pipeList($actionLinks), $row->afl_user_text)->parse();
     } else {
         if ($diffLink) {
             $msg = 'abusefilter-log-entry-withdiff';
         } else {
             $msg = 'abusefilter-log-entry';
         }
         $description = $this->msg($msg)->rawParams($timestamp, $userLink, $row->afl_action, $pageLink, $actions_taken, $parsed_comments, $diffLink)->parse();
     }
     if (self::isHidden($row) === true) {
         $description .= ' ' . $this->msg('abusefilter-log-hidden')->parse();
         $class = 'afl-hidden';
     } elseif (self::isHidden($row) === 'implicit') {
         $description .= ' ' . $this->msg('abusefilter-log-hidden-implicit')->parse();
     }
     if ($isListItem) {
         return Xml::tags('li', isset($class) ? array('class' => $class) : null, $description);
     } else {
         return Xml::tags('span', isset($class) ? array('class' => $class) : null, $description);
     }
 }
Example #4
0
 function formatRow($row, $li = true)
 {
     global $wgLang, $wgUser;
     # One-time setup
     static $sk = null;
     $actionLinks = array();
     if (is_null($sk)) {
         $sk = $wgUser->getSkin();
     }
     $title = Title::makeTitle($row->afl_namespace, $row->afl_title);
     if (!$row->afl_wiki) {
         $pageLink = $sk->link($title);
     } else {
         $pageLink = WikiMap::makeForeignLink($row->afl_wiki, $row->afl_title);
     }
     if (!$row->afl_wiki) {
         // Local user
         $user = $sk->userLink($row->afl_user, $row->afl_user_text) . $sk->userToolLinks($row->afl_user, $row->afl_user_text);
     } else {
         $user = WikiMap::foreignUserLink($row->afl_wiki, $row->afl_user_text);
         $user .= ' (' . WikiMap::getWikiName($row->afl_wiki) . ')';
     }
     $timestamp = $wgLang->timeanddate($row->afl_timestamp, true);
     $actions_taken = $row->afl_actions;
     if (!strlen(trim($actions_taken))) {
         $actions_taken = wfMsg('abusefilter-log-noactions');
     } else {
         $actions = explode(',', $actions_taken);
         $displayActions = array();
         foreach ($actions as $action) {
             $displayActions[] = AbuseFilter::getActionDisplay($action);
         }
         $actions_taken = $wgLang->commaList($displayActions);
     }
     $globalIndex = AbuseFilter::decodeGlobalName($row->afl_filter);
     global $wgOut;
     if ($globalIndex) {
         // Pull global filter description
         $parsed_comments = $wgOut->parseInline(AbuseFilter::getGlobalFilterDescription($globalIndex));
     } else {
         $parsed_comments = $wgOut->parseInline($row->af_public_comments);
     }
     if (self::canSeeDetails()) {
         $examineTitle = SpecialPage::getTitleFor('AbuseFilter', 'examine/log/' . $row->afl_id);
         $detailsLink = $sk->makeKnownLinkObj($this->getTitle($row->afl_id), wfMsg('abusefilter-log-detailslink'));
         $examineLink = $sk->link($examineTitle, wfMsgExt('abusefilter-changeslist-examine', 'parseinline'), array());
         $actionLinks[] = $detailsLink;
         $actionLinks[] = $examineLink;
         if ($wgUser->isAllowed('abusefilter-hide-log')) {
             $hideLink = $sk->link($this->getTitle(), wfMsg('abusefilter-log-hidelink'), array(), array('hide' => $row->afl_id));
             $actionLinks[] = $hideLink;
         }
         if ($globalIndex) {
             global $wgAbuseFilterCentralDB;
             $globalURL = WikiMap::getForeignURL($wgAbuseFilterCentralDB, 'Special:AbuseFilter/' . $globalIndex);
             $linkText = wfMsgExt('abusefilter-log-detailedentry-global', 'parseinline', array($globalIndex));
             $filterLink = $sk->makeExternalLink($globalURL, $linkText);
         } else {
             $title = SpecialPage::getTitleFor('AbuseFilter', $row->afl_filter);
             $linkText = wfMsgExt('abusefilter-log-detailedentry-local', 'parseinline', array($row->afl_filter));
             $filterLink = $sk->link($title, $linkText);
         }
         $description = wfMsgExt('abusefilter-log-detailedentry-meta', array('parseinline', 'replaceafter'), array($timestamp, $user, $filterLink, $row->afl_action, $pageLink, $actions_taken, $parsed_comments, $wgLang->pipeList($actionLinks)));
     } else {
         $description = wfMsgExt('abusefilter-log-entry', array('parseinline', 'replaceafter'), array($timestamp, $user, $row->afl_action, $sk->link($title), $actions_taken, $parsed_comments));
     }
     if ($row->afl_deleted) {
         $description .= ' ' . wfMsgExt('abusefilter-log-hidden', 'parseinline');
     }
     return $li ? Xml::tags('li', null, $description) : $description;
 }
 static function formatAction($action, $parameters)
 {
     global $wgLang;
     if (count($parameters) == 0) {
         $displayAction = AbuseFilter::getActionDisplay($action);
     } else {
         $displayAction = AbuseFilter::getActionDisplay($action) . wfMsgExt('colon-separator', 'escapenoentities') . $wgLang->semicolonList($parameters);
     }
     return $displayAction;
 }
 function formatValue($name, $value)
 {
     $lang = $this->getLanguage();
     $row = $this->mCurrentRow;
     switch ($name) {
         case 'af_id':
             return $lang->formatNum(intval($value));
         case 'af_public_comments':
             return $this->getOutput()->parseInline($value);
         case 'af_actions':
             $actions = explode(',', $value);
             $displayActions = array();
             foreach ($actions as $action) {
                 $displayActions[] = AbuseFilter::getActionDisplay($action);
             }
             return htmlspecialchars($lang->commaList($displayActions));
         case 'af_enabled':
             $statuses = array();
             if ($row->af_deleted) {
                 $statuses[] = $this->msg('abusefilter-deleted')->parse();
             } elseif ($row->af_enabled) {
                 $statuses[] = $this->msg('abusefilter-enabled')->parse();
             } else {
                 $statuses[] = $this->msg('abusefilter-disabled')->parse();
             }
             if ($row->af_global) {
                 $statuses[] = $this->msg('abusefilter-status-global')->parse();
             }
             return $lang->commaList($statuses);
         case 'af_hidden':
             $msg = $value ? 'abusefilter-hidden' : 'abusefilter-unhidden';
             return $this->msg($msg, 'parseinline')->parse();
         case 'af_hit_count':
             // If the rule is hidden, don't show it, even to priviledged local admins
             if ($row->af_hidden) {
                 return '';
             }
             return $this->msg('abusefilter-hitcount')->numParams($value)->parse();
         case 'af_timestamp':
             $user = $row->af_user_text;
             return $this->msg('abusefilter-edit-lastmod-text', $lang->timeanddate($value, true), $user, $lang->date($value, true), $lang->time($value, true), $user)->parse();
         case 'af_group':
             // If this is global, local name probably doesn't exist, but try
             return AbuseFilter::nameGroup($value);
             break;
         default:
             throw new MWException("Unknown row type {$name}!");
     }
 }
Example #7
0
 function formatValue($name, $value)
 {
     global $wgOut, $wgLang;
     static $sk = null;
     if (empty($sk)) {
         global $wgUser;
         $sk = $wgUser->getSkin();
     }
     $row = $this->mCurrentRow;
     switch ($name) {
         case 'af_id':
             return $sk->link(SpecialPage::getTitleFor('AbuseFilter', intval($value)), intval($value));
         case 'af_public_comments':
             return $sk->link(SpecialPage::getTitleFor('AbuseFilter', intval($row->af_id)), $wgOut->parseInline($value));
         case 'af_actions':
             $actions = explode(',', $value);
             $displayActions = array();
             foreach ($actions as $action) {
                 $displayActions[] = AbuseFilter::getActionDisplay($action);
             }
             return htmlspecialchars($wgLang->commaList($displayActions));
         case 'af_enabled':
             $statuses = array();
             if ($row->af_deleted) {
                 $statuses[] = wfMsgExt('abusefilter-deleted', 'parseinline');
             } elseif ($row->af_enabled) {
                 $statuses[] = wfMsgExt('abusefilter-enabled', 'parseinline');
             } else {
                 $statuses[] = wfMsgExt('abusefilter-disabled', 'parseinline');
             }
             global $wgAbuseFilterIsCentral;
             if ($row->af_global && $wgAbuseFilterIsCentral) {
                 $statuses[] = wfMsgExt('abusefilter-status-global', 'parseinline');
             }
             return $wgLang->commaList($statuses);
         case 'af_hidden':
             $msg = $value ? 'abusefilter-hidden' : 'abusefilter-unhidden';
             return wfMsgExt($msg, 'parseinline');
         case 'af_hit_count':
             $count_display = wfMsgExt('abusefilter-hitcount', array('parseinline'), $wgLang->formatNum($value));
             $link = $sk->makeKnownLinkObj(SpecialPage::getTitleFor('AbuseLog'), $count_display, 'wpSearchFilter=' . $row->af_id);
             return $link;
         case 'af_timestamp':
             $userLink = $sk->userLink($row->af_user, $row->af_user_text) . $sk->userToolLinks($row->af_user, $row->af_user_text);
             $user = $row->af_user_text;
             return wfMsgExt('abusefilter-edit-lastmod-text', array('replaceafter', 'parseinline'), array($wgLang->timeanddate($value, true), $userLink, $wgLang->date($value, true), $wgLang->time($value, true), $user));
         default:
             throw new MWException("Unknown row type {$name}!");
     }
 }
 function formatValue($name, $value)
 {
     $lang = $this->getLanguage();
     $row = $this->mCurrentRow;
     switch ($name) {
         case 'af_id':
             return Linker::link(SpecialPage::getTitleFor('AbuseFilter', intval($value)), $lang->formatNum(intval($value)));
         case 'af_public_comments':
             return Linker::link(SpecialPage::getTitleFor('AbuseFilter', intval($row->af_id)), $this->getOutput()->parseInline($value));
         case 'af_actions':
             $actions = explode(',', $value);
             $displayActions = array();
             foreach ($actions as $action) {
                 $displayActions[] = AbuseFilter::getActionDisplay($action);
             }
             return htmlspecialchars($lang->commaList($displayActions));
         case 'af_enabled':
             $statuses = array();
             if ($row->af_deleted) {
                 $statuses[] = wfMsgExt('abusefilter-deleted', 'parseinline');
             } elseif ($row->af_enabled) {
                 $statuses[] = wfMsgExt('abusefilter-enabled', 'parseinline');
             } else {
                 $statuses[] = wfMsgExt('abusefilter-disabled', 'parseinline');
             }
             global $wgAbuseFilterIsCentral;
             if ($row->af_global && $wgAbuseFilterIsCentral) {
                 $statuses[] = wfMsgExt('abusefilter-status-global', 'parseinline');
             }
             return $lang->commaList($statuses);
         case 'af_hidden':
             $msg = $value ? 'abusefilter-hidden' : 'abusefilter-unhidden';
             return wfMsgExt($msg, 'parseinline');
         case 'af_hit_count':
             $count_display = wfMsgExt('abusefilter-hitcount', array('parseinline'), $lang->formatNum($value));
             // @todo FIXME: makeKnownLinkObj() is deprecated.
             if (SpecialAbuseLog::canSeeDetails($row->af_id, $row->af_hidden)) {
                 $link = Linker::makeKnownLinkObj(SpecialPage::getTitleFor('AbuseLog'), $count_display, 'wpSearchFilter=' . $row->af_id);
             } else {
                 $link = "";
             }
             return $link;
         case 'af_timestamp':
             $userLink = Linker::userLink($row->af_user, $row->af_user_text) . Linker::userToolLinks($row->af_user, $row->af_user_text);
             $user = $row->af_user_text;
             return wfMsgExt('abusefilter-edit-lastmod-text', array('replaceafter', 'parseinline'), array($lang->timeanddate($value, true), $userLink, $lang->date($value, true), $lang->time($value, true), $user));
         default:
             throw new MWException("Unknown row type {$name}!");
     }
 }