From 7f3a11f327ba94ab5888f16799f946ad12d91115 Mon Sep 17 00:00:00 2001 From: Umherirrender Date: Tue, 15 Aug 2023 10:03:09 +0200 Subject: [PATCH] Use HookHandlers for MobileFrontend hook Bug: T271021 Change-Id: I9293e1fee102b9a4274ef460b9c7556e0c7c6f6a --- .phan/config.php | 14 ++++++ extension.json | 5 +- includes/Hooks/MobileFrontendHookHandlers.php | 49 +++++++++++++++++++ includes/PageImages.php | 33 +------------ 4 files changed, 68 insertions(+), 33 deletions(-) create mode 100644 includes/Hooks/MobileFrontendHookHandlers.php diff --git a/.phan/config.php b/.phan/config.php index ced85a2..ab2ce04 100644 --- a/.phan/config.php +++ b/.phan/config.php @@ -2,4 +2,18 @@ $cfg = require __DIR__ . '/../vendor/mediawiki/mediawiki-phan-config/src/config.php'; +$cfg['directory_list'] = array_merge( + $cfg['directory_list'], + [ + '../../extensions/MobileFrontend', + ] +); + +$cfg['exclude_analysis_directory_list'] = array_merge( + $cfg['exclude_analysis_directory_list'], + [ + '../../extensions/MobileFrontend', + ] +); + return $cfg; diff --git a/extension.json b/extension.json index ee376ce..9c198f1 100644 --- a/extension.json +++ b/extension.json @@ -31,7 +31,7 @@ "ParserModifyImageHTML": "parser", "ParserTestGlobals": "parser", "SearchResultProvideThumbnail": "search", - "SpecialMobileEditWatchlist::images": "PageImages\\PageImages::onSpecialMobileEditWatchlistImages" + "SpecialMobileEditWatchlist::images": "mobile" }, "HookHandlers": { "main": { @@ -45,6 +45,9 @@ "search": { "class": "PageImages\\Hooks\\SearchResultProvideThumbnailHookHandler", "services": [ "SearchResultThumbnailProvider", "PageProps", "RepoGroup" ] + }, + "mobile": { + "class": "PageImages\\Hooks\\MobileFrontendHookHandlers" } }, "JobClasses": { diff --git a/includes/Hooks/MobileFrontendHookHandlers.php b/includes/Hooks/MobileFrontendHookHandlers.php new file mode 100644 index 0000000..7473af7 --- /dev/null +++ b/includes/Hooks/MobileFrontendHookHandlers.php @@ -0,0 +1,49 @@ + $pages ) { + foreach ( array_keys( $pages ) as $dbKey ) { + $title = Title::makeTitle( $ns, $dbKey ); + // Getting page ID here is safe because SpecialEditWatchlist::getWatchlistInfo() + // uses LinkBatch + $id = $title->getArticleID(); + if ( $id ) { + $ids[$id] = $dbKey; + } + } + } + + $data = PageImages::getImages( array_keys( $ids ) ); + foreach ( $data as $id => $page ) { + if ( isset( $page['pageimage'] ) ) { + $images[ $page['ns'] ][ $ids[$id] ] = $page['pageimage']; + } + } + } + +} diff --git a/includes/PageImages.php b/includes/PageImages.php index 8f3033e..427c8d6 100644 --- a/includes/PageImages.php +++ b/includes/PageImages.php @@ -218,37 +218,6 @@ class PageImages implements } } - /** - * SpecialMobileEditWatchlist::images hook handler, adds images to mobile watchlist A-Z view - * - * @param IContextSource $context Context object. Ignored - * @param array[] $watchlist Array of relevant pages on the watchlist, sorted by namespace - * @param array[] &$images Array of images to populate - */ - public static function onSpecialMobileEditWatchlistImages( - IContextSource $context, array $watchlist, array &$images - ) { - $ids = []; - foreach ( $watchlist as $ns => $pages ) { - foreach ( array_keys( $pages ) as $dbKey ) { - $title = Title::makeTitle( $ns, $dbKey ); - // Getting page ID here is safe because SpecialEditWatchlist::getWatchlistInfo() - // uses LinkBatch - $id = $title->getArticleID(); - if ( $id ) { - $ids[$id] = $dbKey; - } - } - } - - $data = self::getImages( array_keys( $ids ) ); - foreach ( $data as $id => $page ) { - if ( isset( $page['pageimage'] ) ) { - $images[ $page['ns'] ][ $ids[$id] ] = $page['pageimage']; - } - } - } - /** * Returns image information for pages with given ids * @@ -257,7 +226,7 @@ class PageImages implements * * @return array[] */ - private static function getImages( array $pageIds, $size = 0 ) { + public static function getImages( array $pageIds, $size = 0 ) { $ret = []; foreach ( array_chunk( $pageIds, ApiBase::LIMIT_SML1 ) as $chunk ) { $request = [