http://www.mediawiki.org/wiki/Special:Code/MediaWiki/71115
Revision: 71115 Author: jeroendedauw Date: 2010-08-15 10:51:24 +0000 (Sun, 15 Aug 2010) Log Message: ----------- Modified the environment check of the core installer to check the current MediaWiki version to work with the new repository classes. Modified Paths: -------------- trunk/phase3/includes/DistributionRepository.php trunk/phase3/includes/PackageRepository.php trunk/phase3/includes/installer/Installer.php Modified: trunk/phase3/includes/DistributionRepository.php =================================================================== --- trunk/phase3/includes/DistributionRepository.php 2010-08-15 10:21:57 UTC (rev 71114) +++ trunk/phase3/includes/DistributionRepository.php 2010-08-15 10:51:24 UTC (rev 71115) @@ -112,7 +112,7 @@ global $wgRepositoryPackageStates; $currentVersion = urlencode( $currentVersion ); - $states = urlencode( implode( '|', $wgRepositoryPackageStates ) ); + $states = urlencode( implode( '|', $wgRepositoryPackageStates ) ); $response = Http::get( "$this->location?format=json&action=updates&mediawiki=$currentVersion&state=$states", @@ -134,6 +134,43 @@ } /** + * @see PackageRepository::coreHasUpdate + * + * @since 1.17 + */ + public function getLatestCoreVersion() { + global $wgRepositoryPackageStates; + + $states = urlencode( implode( '|', $wgRepositoryPackageStates ) ); + + // TODO: use $states + + $response = Http::get( + "$this->location?format=json&action=mwreleases", + 'default', + array( 'sslVerifyHost' => true, 'sslVerifyCert' => true ) + ); + + if ( $response === false ) { + return false; + } + + $response = FormatJson::decode( $response ); + + $current = false; + + if ( property_exists( $response, 'mwreleases' ) ) { + foreach ( $response->mwreleases as $release ) { + if ( property_exists( $release, 'current' ) && property_exists( $release, 'version') ) { + $current = $release->version; + } + } + } + + return $current; + } + + /** * @see PackageRepository::installationHasUpdates * * @since 1.17 Modified: trunk/phase3/includes/PackageRepository.php =================================================================== --- trunk/phase3/includes/PackageRepository.php 2010-08-15 10:21:57 UTC (rev 71114) +++ trunk/phase3/includes/PackageRepository.php 2010-08-15 10:51:24 UTC (rev 71115) @@ -70,6 +70,15 @@ public abstract function coreHasUpdate( $currentVersion ); /** + * Returns the latest MediaWiki release, or false when the request fails. + * + * @since 1.17 + * + * @return Mixed: string or false + */ + public abstract function getLatestCoreVersion(); + + /** * Checks if there are any updates for this MediaWiki installation and extensions. * * @since 1.17 Modified: trunk/phase3/includes/installer/Installer.php =================================================================== --- trunk/phase3/includes/installer/Installer.php 2010-08-15 10:21:57 UTC (rev 71114) +++ trunk/phase3/includes/installer/Installer.php 2010-08-15 10:51:24 UTC (rev 71115) @@ -383,30 +383,25 @@ public function envLatestVersion() { global $wgVersion; - $latestInfoUrl = 'http://www.mediawiki.org/w/api.php?action=mwreleases&format=json'; - $latestInfo = Http::get( $latestInfoUrl ); - + $repository = wfGetRepository(); + $currentVersion = $repository->getLatestCoreVersion(); + + /* if( !$latestInfo ) { $this->showMessage( 'config-env-latest-can-not-check', $latestInfoUrl ); return; } + */ $this->setVar( '_ExternalHTTP', true ); - $latestInfo = FormatJson::decode($latestInfo); - if ($latestInfo === false || !isset( $latestInfo->mwreleases ) ) { + if ( $currentVersion === false ) { # For when the request is successful but there's e.g. some silly man in # the middle firewall blocking us, e.g. one of those annoying airport ones $this->showMessage( 'config-env-latest-data-invalid', $latestInfoUrl ); return; } - foreach( $latestInfo->mwreleases as $rel ) { - if( isset( $rel->current ) ) { - $currentVersion = $rel->version; - } - } - if( version_compare( $wgVersion, $currentVersion, '<' ) ) { $this->showMessage( 'config-env-latest-old' ); $this->showHelpBox( 'config-env-latest-help', $wgVersion, $currentVersion ); _______________________________________________ MediaWiki-CVS mailing list MediaWiki-CVS@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs