http://www.mediawiki.org/wiki/Special:Code/MediaWiki/99381
Revision: 99381 Author: aaron Date: 2011-10-09 22:50:36 +0000 (Sun, 09 Oct 2011) Log Message: ----------- * Deferred defineSpecialPages() to setup function as it needs to account for LocalSettings.php. * Added FlaggedRevs:ready() function as a sanity check against too early initialization of FlaggedRevs config. * Replaced load() exceptions with die() to avoid exceptions within exception. * Cut down on FlaggedRevs class calls. Modified Paths: -------------- trunk/extensions/FlaggedRevs/FlaggedRevs.php trunk/extensions/FlaggedRevs/dataclasses/FlaggedRevs.class.php trunk/extensions/FlaggedRevs/presentation/FlaggedRevsUI.setup.php Modified: trunk/extensions/FlaggedRevs/FlaggedRevs.php =================================================================== --- trunk/extensions/FlaggedRevs/FlaggedRevs.php 2011-10-09 22:47:06 UTC (rev 99380) +++ trunk/extensions/FlaggedRevs/FlaggedRevs.php 2011-10-09 22:50:36 UTC (rev 99381) @@ -189,13 +189,10 @@ FlaggedRevsUISetup::defineLogBasicDescription( $wgLogNames, $wgLogHeaders, $wgFilterLogTypes ); FlaggedRevsUISetup::defineLogActionHanders( $wgLogActions, $wgLogActionsHandlers ); -# Actually register special pages -FlaggedRevsUISetup::defineSpecialPages( $wgSpecialPages, $wgSpecialPageGroups ); - # JS/CSS modules and message bundles used by JS scripts FlaggedRevsUISetup::defineResourceModules( $wgResourceModules ); -# ####### EVENT-HANDLER FUNCTIONS ######### +# ####### HOOK CALLBACK FUNCTIONS ######### # ######## API ######## # Add flagging data to ApiQueryRevisions @@ -273,13 +270,18 @@ $wgHooks['UserGetRights'][] = 'FlaggedRevsHooks::onUserGetRights'; } -# ####### END HOOK TRIGGERED FUNCTIONS ######### +# ####### END HOOK CALLBACK FUNCTIONS ######### // Note: avoid calls to FlaggedRevs class here for performance function efLoadFlaggedRevs() { + # LocalSettings.php loaded, safe to load config + FlaggedRevs::ready(); + # Conditional autopromote groups efSetFlaggedRevsAutopromoteConfig(); + # Register special pages (some are conditional) + efSetFlaggedRevsSpecialPages(); # Conditional API modules efSetFlaggedRevsConditionalAPIModules(); # Load hooks that aren't always set @@ -356,6 +358,11 @@ } } +function efSetFlaggedRevsSpecialPages() { + global $wgSpecialPages, $wgSpecialPageGroups; + FlaggedRevsUISetup::defineSpecialPages( $wgSpecialPages, $wgSpecialPageGroups ); +} + function efSetFlaggedRevsConditionalRights() { global $wgGroupPermissions, $wgFlaggedRevsProtection; if ( $wgFlaggedRevsProtection ) { Modified: trunk/extensions/FlaggedRevs/dataclasses/FlaggedRevs.class.php =================================================================== --- trunk/extensions/FlaggedRevs/dataclasses/FlaggedRevs.class.php 2011-10-09 22:47:06 UTC (rev 99380) +++ trunk/extensions/FlaggedRevs/dataclasses/FlaggedRevs.class.php 2011-10-09 22:50:36 UTC (rev 99381) @@ -21,13 +21,24 @@ # Autoreview config protected static $autoReviewConfig = 0; + protected static $canLoad = false; protected static $loaded = false; - public static function load() { + /** + * Signal that LocalSettings.php is loaded + */ + public static function ready() { + self::$canLoad = true; + } + + protected static function load() { global $wgFlaggedRevsTags, $wgFlaggedRevTags; if ( self::$loaded ) { return true; } + if ( !self::$canLoad ) { // sanity + wfDebugDieBacktrace( 'FlaggedRevs config loaded too soon! Possibly before LocalSettings.php!' ); + } self::$loaded = true; $flaggedRevsTags = null; if ( isset( $wgFlaggedRevTags ) ) { @@ -46,7 +57,7 @@ # Sanity checks $safeTag = htmlspecialchars( $tag ); if ( !preg_match( '/^[a-zA-Z]{1,20}$/', $tag ) || $safeTag !== $tag ) { - throw new MWException( 'FlaggedRevs given invalid tag name!' ); + die( 'FlaggedRevs given invalid tag name!' ); } # Define "quality" and "pristine" reqs if ( is_array( $levels ) ) { @@ -73,7 +84,7 @@ } # Sanity checks if ( !is_integer( $minQL ) || !is_integer( $minPL ) ) { - throw new MWException( 'FlaggedRevs given invalid tag value!' ); + die( 'FlaggedRevs given invalid tag value!' ); } if ( $minQL > $ratingLevels ) { self::$qualityVersions = false; @@ -101,9 +112,9 @@ global $wgFlaggedRevsNamespaces, $wgFlaggedRevsPatrolNamespaces; foreach ( $wgFlaggedRevsNamespaces as $ns ) { if ( MWNamespace::isTalk( $ns ) ) { - throw new MWException( 'FlaggedRevs given talk namespace in $wgFlaggedRevsNamespaces!' ); + die( 'FlaggedRevs given talk namespace in $wgFlaggedRevsNamespaces!' ); } elseif ( $ns == NS_MEDIAWIKI ) { - throw new MWException( 'FlaggedRevs given NS_MEDIAWIKI in $wgFlaggedRevsNamespaces!' ); + die( 'FlaggedRevs given NS_MEDIAWIKI in $wgFlaggedRevsNamespaces!' ); } } self::$reviewNamespaces = $wgFlaggedRevsNamespaces; Modified: trunk/extensions/FlaggedRevs/presentation/FlaggedRevsUI.setup.php =================================================================== --- trunk/extensions/FlaggedRevs/presentation/FlaggedRevsUI.setup.php 2011-10-09 22:47:06 UTC (rev 99380) +++ trunk/extensions/FlaggedRevs/presentation/FlaggedRevsUI.setup.php 2011-10-09 22:50:36 UTC (rev 99381) @@ -1,6 +1,8 @@ <?php /** - * Class containing hooked functions for a FlaggedRevs environment + * Class containing UI setup functions for a FlaggedRevs environment. + * This depends on config variables in LocalSettings.php. + * Note: avoid FlaggedRevs class calls here for performance (like load.php). */ class FlaggedRevsUISetup { /** @@ -89,9 +91,10 @@ * @return void */ public static function defineSpecialPages( array &$pages, array &$groups ) { - global $wgUseTagFilter; + global $wgFlaggedRevsProtection, $wgFlaggedRevsNamespaces, $wgUseTagFilter; + // Show special pages only if FlaggedRevs is enabled on some namespaces - if ( FlaggedRevs::getReviewNamespaces() ) { + if ( count( $wgFlaggedRevsNamespaces ) ) { $pages['RevisionReview'] = 'RevisionReview'; // unlisted $pages['ReviewedVersions'] = 'ReviewedVersions'; // unlisted $pages['PendingChanges'] = 'PendingChanges'; @@ -101,7 +104,7 @@ $pages['ProblemChanges'] = 'ProblemChanges'; $groups['ProblemChanges'] = 'quality'; } - if ( !FlaggedRevs::useOnlyIfProtected() ) { + if ( !$wgFlaggedRevsProtection ) { $pages['ReviewedPages'] = 'ReviewedPages'; $groups['ReviewedPages'] = 'quality'; $pages['UnreviewedPages'] = 'UnreviewedPages'; @@ -112,7 +115,7 @@ $pages['ValidationStatistics'] = 'ValidationStatistics'; $groups['ValidationStatistics'] = 'quality'; // Protect levels define allowed stability settings - if ( FlaggedRevs::useProtectionLevels() ) { + if ( $wgFlaggedRevsProtection ) { $pages['StablePages'] = 'StablePages'; $groups['StablePages'] = 'quality'; } else { _______________________________________________ MediaWiki-CVS mailing list MediaWiki-CVS@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs