mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Linter
synced 2024-11-23 23:44:17 +00:00
Display count of lint errors on ?action=info
Change-Id: Ifcdfcb365e5ff6106b521d58a06df8c006772473
This commit is contained in:
parent
8b8c50e9d8
commit
5c606fca03
|
@ -28,6 +28,7 @@
|
|||
"LoadExtensionSchemaUpdates": "MediaWiki\\Linter\\Hooks::onLoadExtensionSchemaUpdates",
|
||||
"EditFormInitialText": "MediaWiki\\Linter\\Hooks::onEditFormInitialText",
|
||||
"APIQuerySiteInfoGeneralInfo": "MediaWiki\\Linter\\Hooks::onAPIQuerySiteInfoGeneralInfo",
|
||||
"InfoAction": "MediaWiki\\Linter\\Hooks::onInfoAction",
|
||||
"WikiPageDeletionUpdates": "MediaWiki\\Linter\\Hooks::onWikiPageDeletionUpdates"
|
||||
},
|
||||
"APIModules": {
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
"linker-page-edit": "edit",
|
||||
"linter-heading-errors": "Errors",
|
||||
"linter-heading-warnings": "Warnings",
|
||||
"pageinfo-linter": "Lint errors",
|
||||
"apihelp-query+linterrors-description": "Get a list of lint errors",
|
||||
"apihelp-query+linterrors-param-categories": "Categories of lint errors",
|
||||
"apihelp-query+linterrors-param-limit": "Number of results to query",
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
"linker-page-edit": "Link text for edit link in {{msg-mw|linker-page-title-edit}} and {{msg-mw|linker-page-title-edit-template}}\n{{Identical|Edit}}",
|
||||
"linter-heading-errors": "Heading on [[Special:LintErrors]]\n{{Identical|Error}}",
|
||||
"linter-heading-warnings": "Heading on [[Special:LintErrors]]\n{{Identical|Warning}}",
|
||||
"pageinfo-linter": "Heading on ?action=info for a page if it has lint errors",
|
||||
"apihelp-query+linterrors-description": "{{doc-apihelp-description|query+linterrors}}",
|
||||
"apihelp-query+linterrors-param-categories": "{{doc-apihelp-param|query+linterrors|categories}}",
|
||||
"apihelp-query+linterrors-param-limit": "{{doc-apihelp-param|query+linterrors|limit}}",
|
||||
|
|
|
@ -199,11 +199,19 @@ class Database {
|
|||
/**
|
||||
* @return int[]
|
||||
*/
|
||||
public function getTotals() {
|
||||
public function getTotalsForPage() {
|
||||
return $this->getTotals( [ 'linter_page' => $this->pageId ] );
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $conds Query conditions
|
||||
* @return int[]
|
||||
*/
|
||||
public function getTotals( $conds = [] ) {
|
||||
$rows = wfGetDB( DB_SLAVE )->select(
|
||||
'linter',
|
||||
[ 'linter_cat', 'COUNT(*) AS count' ],
|
||||
[],
|
||||
$conds,
|
||||
__METHOD__,
|
||||
[ 'GROUP BY' => 'linter_cat' ]
|
||||
);
|
||||
|
|
|
@ -24,6 +24,7 @@ use ApiQuerySiteInfo;
|
|||
use Content;
|
||||
use DatabaseUpdater;
|
||||
use EditPage;
|
||||
use IContextSource;
|
||||
use MWCallableUpdate;
|
||||
use WikiPage;
|
||||
|
||||
|
@ -101,4 +102,29 @@ class Hooks {
|
|||
'warnings' => $catManager->getWarnings(),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Hook: InfoAction
|
||||
*
|
||||
* Display quick summary of errors for this page on ?action=info
|
||||
*
|
||||
* @param IContextSource $context
|
||||
* @param array &$pageInfo
|
||||
*/
|
||||
public static function onInfoAction( IContextSource $context, array &$pageInfo ) {
|
||||
$pageId = $context->getTitle()->getArticleID();
|
||||
if ( !$pageId ) {
|
||||
return;
|
||||
}
|
||||
$database = new Database( $pageId );
|
||||
$totals = array_filter( $database->getTotalsForPage() );
|
||||
if ( !$totals ) {
|
||||
// No errors, yay!
|
||||
return;
|
||||
}
|
||||
|
||||
foreach ( $totals as $name => $count ) {
|
||||
$pageInfo['linter'][] = [ $context->msg( "linter-category-$name" ), htmlspecialchars( $count ) ];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue