Legoktm has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/380426 )
Change subject: Namespace this extension ...................................................................... Namespace this extension Change-Id: I7756337a573de2a9187c31f8251e80c7f7d698f5 --- M extension.json R includes/CacheInvalidator.php R includes/GlobalUserPage.php R includes/Hooks.php R includes/LocalCacheUpdateJob.php R includes/LocalJobSubmitJob.php R includes/WikiGlobalUserPage.php 7 files changed, 95 insertions(+), 33 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/GlobalUserPage refs/changes/26/380426/1 diff --git a/extension.json b/extension.json index 36471ae..b44f07e 100644 --- a/extension.json +++ b/extension.json @@ -22,28 +22,28 @@ }, "Hooks": { "GetPreferences": [ - "GlobalUserPageHooks::onGetPreferences" + "MediaWiki\\GlobalUserPage\\Hooks::onGetPreferences" ], "TitleIsAlwaysKnown": [ - "GlobalUserPageHooks::onTitleIsAlwaysKnown" + "MediaWiki\\GlobalUserPage\\Hooks::onTitleIsAlwaysKnown" ], "ArticleFromTitle": [ - "GlobalUserPageHooks::onArticleFromTitle" + "MediaWiki\\GlobalUserPage\\Hooks::onArticleFromTitle" ], "LinksUpdateComplete": [ - "GlobalUserPageHooks::onLinksUpdateComplete" + "MediaWiki\\GlobalUserPage\\Hooks::onLinksUpdateComplete" ], "PageContentInsertComplete": [ - "GlobalUserPageHooks::onPageContentInsertComplete" + "MediaWiki\\GlobalUserPage\\Hooks::onPageContentInsertComplete" ], "ArticleDeleteComplete": [ - "GlobalUserPageHooks::onArticleDeleteComplete" + "MediaWiki\\GlobalUserPage\\Hooks::onArticleDeleteComplete" ], "TitleGetEditNotices": [ - "GlobalUserPageHooks::onTitleGetEditNotices" + "MediaWiki\\GlobalUserPage\\Hooks::onTitleGetEditNotices" ], - "GetDoubleUnderscoreIDs": "GlobalUserPageHooks::onGetDoubleUnderscoreIDs", - "WikiPageFactory": "GlobalUserPageHooks::onWikiPageFactory" + "GetDoubleUnderscoreIDs": "MediaWiki\\GlobalUserPage\\Hooks::onGetDoubleUnderscoreIDs", + "WikiPageFactory": "MediaWiki\\GlobalUserPage\\Hooks::onWikiPageFactory" }, "config": { "GlobalUserPageCacheExpiry": 604800, @@ -63,19 +63,19 @@ "remoteExtPath": "GlobalUserPage" }, "JobClasses": { - "GlobalUserPageLocalJobSubmitJob": "GlobalUserPageLocalJobSubmitJob", - "LocalGlobalUserPageCacheUpdateJob": "LocalGlobalUserPageCacheUpdateJob" + "GlobalUserPageLocalJobSubmitJob": "MediaWiki\\GlobalUserPage\\LocalJobSubmitJob", + "LocalGlobalUserPageCacheUpdateJob": "MediaWiki\\GlobalUserPage\\LocalCacheUpdateJob" }, "DefaultUserOptions": { "globaluserpage": true }, "AutoloadClasses": { - "GlobalUserPage": "GlobalUserPage.body.php", - "GlobalUserPagePage": "GlobalUserPagePage.php", - "GlobalUserPageHooks": "GlobalUserPage.hooks.php", - "GlobalUserPageCacheInvalidator": "GlobalUserPageCacheInvalidator.php", - "GlobalUserPageLocalJobSubmitJob": "GlobalUserPageLocalJobSubmitJob.php", - "LocalGlobalUserPageCacheUpdateJob": "LocalGlobalUserPageCacheUpdateJob.php" + "MediaWiki\\GlobalUserPage\\GlobalUserPage": "includes/GlobalUserPage.php", + "MediaWiki\\GlobalUserPage\\WikiGlobalUserPage": "includes/WikiGlobalUserPage.php", + "MediaWiki\\GlobalUserPage\\Hooks": "includes/Hooks.php", + "MediaWiki\\GlobalUserPage\\CacheInvalidator": "includes/CacheInvalidator.php", + "MediaWiki\\GlobalUserPage\\LocalJobSubmitJob": "includes/LocalJobSubmitJob.php", + "MediaWiki\\GlobalUserPage\\LocalCacheUpdateJob": "includes/LocalCacheUpdateJob.php" }, "ConfigRegistry": { "globaluserpage": "GlobalVarConfig::newInstance" diff --git a/GlobalUserPageCacheInvalidator.php b/includes/CacheInvalidator.php similarity index 89% rename from GlobalUserPageCacheInvalidator.php rename to includes/CacheInvalidator.php index f5bf77a..050759f 100644 --- a/GlobalUserPageCacheInvalidator.php +++ b/includes/CacheInvalidator.php @@ -14,7 +14,12 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -class GlobalUserPageCacheInvalidator { +namespace MediaWiki\GlobalUserPage; + +use JobQueueGroup; +use Title; + +class CacheInvalidator { /** * Username of the user who's userpage needs to be invalidated * @@ -42,7 +47,7 @@ return; } - JobQueueGroup::singleton()->push( new GlobalUserPageLocalJobSubmitJob( + JobQueueGroup::singleton()->push( new LocalJobSubmitJob( Title::newFromText( 'User:' . $this->username ), [ 'username' => $this->username, diff --git a/GlobalUserPage.body.php b/includes/GlobalUserPage.php similarity index 95% rename from GlobalUserPage.body.php rename to includes/GlobalUserPage.php index 0a0200d..ffebcd3 100644 --- a/GlobalUserPage.body.php +++ b/includes/GlobalUserPage.php @@ -14,7 +14,19 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ +namespace MediaWiki\GlobalUserPage; + +use Article; +use BagOStuff; +use CentralIdLookup; +use Config; +use Hooks; +use MapCacheLRU; use MediaWiki\MediaWikiServices; +use MWNamespace; +use OutputPage; +use Title; +use User; class GlobalUserPage extends Article { @@ -56,6 +68,7 @@ if ( !self::shouldDisplayGlobalPage( $title ) ) { parent::showMissingArticle(); + return; } @@ -68,6 +81,7 @@ // missing article page if ( !$parsedOutput || !trim( $parsedOutput['text'] ) ) { parent::showMissingArticle(); + return; } $out->addHTML( $parsedOutput['text'] ); @@ -141,6 +155,7 @@ // Already validated that the username is fine in canBeGlobal if ( $user->getId() === 0 ) { self::$displayCache->set( $text, false ); + return false; } @@ -148,6 +163,7 @@ if ( class_exists( 'GlobalPreferences' ) ) { if ( !$user->getOption( 'globaluserpage' ) ) { self::$displayCache->set( $text, false ); + return false; } } @@ -157,11 +173,13 @@ $lookup = CentralIdLookup::factory(); if ( !$lookup->isAttached( $user ) || !$lookup->isAttached( $user, $wgGlobalUserPageDBname ) ) { self::$displayCache->set( $text, false ); + return false; } $touched = (bool)self::getCentralTouched( $user ); self::$displayCache->set( $text, $touched ); + return $touched; } @@ -195,7 +213,7 @@ __METHOD__, [], [ 'page_props' => - [ 'LEFT JOIN', [ 'page_id=pp_page', 'pp_propname' => 'noglobal' ] ] + [ 'LEFT JOIN', [ 'page_id=pp_page', 'pp_propname' => 'noglobal' ] ], ] ); if ( $row ) { @@ -296,10 +314,10 @@ /** * @param Title $title - * @return GlobalUserPagePage + * @return WikiGlobalUserPage */ public function newPage( Title $title ) { - return new GlobalUserPagePage( $title, $this->config ); + return new WikiGlobalUserPage( $title, $this->config ); } /** @@ -320,9 +338,10 @@ 'disablelimitreport' => 1, 'uselang' => $langCode, 'prop' => 'text|modules|jsconfigvars', - 'formatversion' => 2 + 'formatversion' => 2, ]; $data = $this->mPage->makeAPIRequest( $params ); + return $data !== false ? $data['parse'] : false; } diff --git a/GlobalUserPage.hooks.php b/includes/Hooks.php similarity index 90% rename from GlobalUserPage.hooks.php rename to includes/Hooks.php index 5e080bb..d7514cf 100644 --- a/GlobalUserPage.hooks.php +++ b/includes/Hooks.php @@ -14,7 +14,18 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -class GlobalUserPageHooks { +namespace MediaWiki\GlobalUserPage; + +use Article; +use ConfigFactory; +use GlobalPreferences; +use IContextSource; +use LinksUpdate; +use Title; +use User; +use WikiPage; + +class Hooks { /** * Adds the user option for using GlobalUserpage to Special:GlobalPreferences. * @@ -23,7 +34,7 @@ * @return bool */ public static function onGetPreferences( User $user, &$preferences ) { - if ( class_exists( 'GlobalPreferences' ) && GlobalPreferences::onGlobalPrefsPage() ) { + if ( class_exists( GlobalPreferences::class ) && GlobalPreferences::onGlobalPrefsPage() ) { $preferences['globaluserpage'] = [ 'type' => 'toggle', 'label-message' => 'globaluserpage-preferences', @@ -78,6 +89,7 @@ */ protected static function isGlobalUserPage( Title $title ) { global $wgGlobalUserPageDBname; + return $wgGlobalUserPageDBname === wfWikiID() // On the central wiki && $title->inNamespace( NS_USER ) // is a user page && $title->getRootTitle()->equals( $title ); // and is a root page. @@ -92,7 +104,7 @@ public static function onLinksUpdateComplete( LinksUpdate &$lu ) { $title = $lu->getTitle(); if ( self::isGlobalUserPage( $title ) ) { - $inv = new GlobalUserPageCacheInvalidator( $title->getText() ); + $inv = new CacheInvalidator( $title->getText() ); $inv->invalidate(); } @@ -109,7 +121,7 @@ public static function onPageContentInsertComplete( WikiPage $page ) { $title = $page->getTitle(); if ( self::isGlobalUserPage( $title ) ) { - $inv = new GlobalUserPageCacheInvalidator( $title->getText(), [ 'links' ] ); + $inv = new CacheInvalidator( $title->getText(), [ 'links' ] ); $inv->invalidate(); } @@ -161,10 +173,11 @@ */ public static function onWikiPageFactory( Title $title, &$page ) { if ( GlobalUserPage::shouldDisplayGlobalPage( $title ) ) { - $page = new GlobalUserPagePage( + $page = new WikiGlobalUserPagePage( $title, ConfigFactory::getDefaultInstance()->makeConfig( 'globaluserpage' ) ); + return false; } diff --git a/LocalGlobalUserPageCacheUpdateJob.php b/includes/LocalCacheUpdateJob.php similarity index 91% rename from LocalGlobalUserPageCacheUpdateJob.php rename to includes/LocalCacheUpdateJob.php index de59d3d..b2dbb49 100644 --- a/LocalGlobalUserPageCacheUpdateJob.php +++ b/includes/LocalCacheUpdateJob.php @@ -14,11 +14,17 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ +namespace MediaWiki\GlobalUserPage; + +use HTMLFileCache; +use Job; +use Title; + /** * A job that runs on local wikis to purge squid and possibly * queue local HTMLCacheUpdate jobs */ -class LocalGlobalUserPageCacheUpdateJob extends Job { +class LocalCacheUpdateJob extends Job { /** * @param Title $title * @param array $params Should have 'username' and 'touch' keys diff --git a/GlobalUserPageLocalJobSubmitJob.php b/includes/LocalJobSubmitJob.php similarity index 83% rename from GlobalUserPageLocalJobSubmitJob.php rename to includes/LocalJobSubmitJob.php index 1ddb9b0..21c2b12 100644 --- a/GlobalUserPageLocalJobSubmitJob.php +++ b/includes/LocalJobSubmitJob.php @@ -14,16 +14,22 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ +namespace MediaWiki\GlobalUserPage; + +use Job; +use JobQueueGroup; +use Title; + /** - * Job class that submits LocalGlobalUserPageCacheUpdateJob jobs + * Job class that submits LocalCacheUpdateJob jobs */ -class GlobalUserPageLocalJobSubmitJob extends Job { +class LocalJobSubmitJob extends Job { public function __construct( Title $title, array $params ) { parent::__construct( 'GlobalUserPageLocalJobSubmitJob', $title, $params ); } public function run() { - $job = new LocalGlobalUserPageCacheUpdateJob( + $job = new LocalCacheUpdateJob( Title::newFromText( 'User:' . $this->params['username'] ), $this->params ); diff --git a/GlobalUserPagePage.php b/includes/WikiGlobalUserPage.php similarity index 94% rename from GlobalUserPagePage.php rename to includes/WikiGlobalUserPage.php index c6fd2ea..fab95fd 100644 --- a/GlobalUserPagePage.php +++ b/includes/WikiGlobalUserPage.php @@ -14,7 +14,17 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -class GlobalUserPagePage extends WikiPage { +namespace MediaWiki\GlobalUserPage; + +use BagOStuff; +use Config; +use FormatJson; +use MWHttpRequest; +use Title; +use WikiMap; +use WikiPage; + +class WikiGlobalUserPage extends WikiPage { /** * @var Config @@ -42,6 +52,7 @@ */ public function getWikiDisplayName() { $url = $this->getSourceURL(); + return wfParseUrl( $url )['host']; } @@ -123,10 +134,12 @@ $status = $req->execute(); if ( !$status->isOK() ) { wfDebugLog( 'GlobalUserPage', __METHOD__ . " Error: {$status->getWikitext()}" ); + return false; } $json = $req->getContent(); $decoded = FormatJson::decode( $json, true ); + return $decoded; } } -- To view, visit https://gerrit.wikimedia.org/r/380426 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I7756337a573de2a9187c31f8251e80c7f7d698f5 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/GlobalUserPage Gerrit-Branch: master Gerrit-Owner: Legoktm <lego...@member.fsf.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits