Miguel2706 has uploaded a new change for review. https://gerrit.wikimedia.org/r/78470
Change subject: New and firts version of this extension ...................................................................... New and firts version of this extension Change-Id: Ia4a59637d10de537e33476416f30b9e834302a7d --- A specialupdatemediawiki.php A updateMediaWiki.php A updatemediawiki.alias.php A updatemediawiki.i18n.php 4 files changed, 220 insertions(+), 0 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/UpdateMediaWiki refs/changes/70/78470/1 diff --git a/specialupdatemediawiki.php b/specialupdatemediawiki.php new file mode 100644 index 0000000..118481b --- /dev/null +++ b/specialupdatemediawiki.php @@ -0,0 +1,97 @@ +<? +/********************************************************************* +** +** This file is part of the Update MediaWiki extension for MediaWiki +* @file +* @ingroup Extensions +* @author Miguel Peláez <miguel2706outlook.com> +* @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later +* @link http://www.mediawiki.org/wiki/Extension:Ads Documentation +**********************************************************************/ + +class Specialupdatemediawiki extends SpecialPage { + function __construct() { + parent::__construct( $name = 'updatemediawiki', $restriction = 'editinterface' ); // restrict to sysops + } + + function execute( $par ) { + + // ... + if ( !$this->userCanExecute( $this->getUser() ) ) { + $this->displayRestrictionError(); + return; + } + // ... + $request = $this->getRequest(); + $output = $this->getOutput(); + $this->setHeaders(); + + $param = $request->getText( 'param' ); + + global $wgVersion, $IP; +$getVersions = substr(file_get_contents('http://www.mediawiki.org/w/index.php?title=Template:MW_stable_release_number&action=raw'), 0, 6) or die ('ERROR'); +if ($getVersions != '') +{ + //If we managed to access that file, then lets break up those release versions into an array. + $output->addWikiText( "== ". wfMessage( 'updatemediawiki-current' )->text() ." ".$wgVersion." == " ); + $versionList = explode("\\n", $getVersions); + $mainVersion = substr($getVersions, 0, 4); + foreach ($versionList as $aV) + { + if ( $aV > $wgVersion) { + $output->addWikiText( "<p>".wfMessage( 'updatemediawiki-update-found' )->text()."v".$aV."</p>" ); + $found = true; + //Download The File If We Do Not Have It + if ( !is_file( 'Updates/mediawiki-'.$aV.'.tar.gz' )) { + $output->addWikiText( "<p>".wfMessage( 'updatemediawiki-update-downloading' )->text()."</p>" ); + $newUpdate = file_get_contents('http://download.wikimedia.org/mediawiki/'.$mainVersion.'/mediawiki-'.$aV.'.tar.gz'); + if ( !is_dir( 'Updates/' ) ) mkdir ( 'Updates/' ); + $dlHandler = fopen('Updates/mediawiki-'.$aV.'.tar.gz', 'w'); + if ( !fwrite($dlHandler, $newUpdate) ) { $output->addWikiText( "<p>".wfMessage( 'updatemediawiki-update-aborted' )->text()."</p>" ); exit(); } + fclose($dlHandler); + $output->addWikiText( "<p>".wfMessage( 'updatemediawiki-update-saved' )->text()."</p>" ); + } else $output->addWikiText( "<p>".wfMessage( 'updatemediawiki-update-exist' )->text()."</p>"); + + if ($par == "doUpdate") { + //Open The File And Do Stuff + $gz = new PharData('Updates/mediawiki-'.$aV.'.tar.gz'); + $output->addWikiText( "<ul>"); + + //Make the directory if we need to... + if ( !is_dir ( "Updates/".$aV ) ) + { + mkdir ( "Updates/".$aV ); + } + + //Overwrite the file + + $gz = decompress(); // creates files.tar + // unarchive from the tar + $phar = new PharData('Updates/mediawiki-'.$aV.'.tar'); + $phar->extractTo($IP); + $output->addWikiText( "<p>".wfMessage( 'updatemediawiki-update-ready' )->text()." [".$IP."/mw-config ".wfMessage( 'updatemediawiki-update-database' )->text()."]</p>"); + + + + + $output->addWikiText( "</ul>"); + $updated = TRUE; + } + else $output->addWikiText( "<p>".wfMessage( 'updatemediawiki-update-updateready' )->text()." [[/doUpdate|".wfMessage( 'updatemediawiki-update-install' )->text()."]]</p>"); + break; + } + } + + if ($updated == true) + { + $output->addWikiText( "<p class=\"success\">» ".wfMessage( 'updatemediawiki-update-updated' )->text().$aV.'</p>'); + } + else if ($found != true) $output->addWikiText( wfMessage( 'updatemediawiki-update-nofound' )->text()); + + +} +else $output->addWikiText( "<p>".wfMessage( 'updatemediawiki-update-error' )->text().'</p>'); + + + } +} \ No newline at end of file diff --git a/updateMediaWiki.php b/updateMediaWiki.php new file mode 100644 index 0000000..859c572 --- /dev/null +++ b/updateMediaWiki.php @@ -0,0 +1,34 @@ +<? + +/********************************************************************* +** +** This file is part of the Update MediaWiki extension for MediaWiki +* @file +* @ingroup Extensions +* @author Miguel Peláez <miguel2706outlook.com> +* @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later +* @link http://www.mediawiki.org/wiki/Extension:Ads Documentation +**********************************************************************/ + +# Alert the user that this is not a valid access point to MediaWiki if they try to access the special pages file directly. +if ( !defined( 'MEDIAWIKI' ) ) { + echo <<<EOT +To install updatemediawiki extension, put the following line in LocalSettings.php: +require_once( "\$IP/extensions/updatemediawiki/updatemediawiki.php" ); +EOT; + exit( 1 ); +} + +$wgExtensionCredits['validextensionclass'][] = array( + 'path' => __FILE__, + 'name' => 'Update MediaWiki', + 'author' =>'Miguel Peláez', + 'url' => 'https://www.mediawiki.org/wiki/Extension:Update_MediaWiki', + 'description' => 'Allows administrators and authorized users upgrade from a special page MediaWiki', + 'version' => 0.1, + ); +$wgAutoloadClasses[ 'Specialupdatemediawiki' ] = __DIR__ . '/specialupdatemediawiki.php'; +$wgExtensionMessagesFiles[ 'updatemediawiki' ] = __DIR__ . '/updatemediawiki.i18n.php'; +$wgSpecialPages[ 'updatemediawiki' ] = 'Specialupdatemediawiki'; +$wgExtensionAliasesFiles['updatemediawiki'] = dirname( __FILE__ ) . '/updatemediawiki.alias.php'; +$wgSpecialPageGroups['updatemediawiki']='wiki'; \ No newline at end of file diff --git a/updatemediawiki.alias.php b/updatemediawiki.alias.php new file mode 100644 index 0000000..b8288d6 --- /dev/null +++ b/updatemediawiki.alias.php @@ -0,0 +1,28 @@ +<?php + /********************************************************************* +* +* Aliases for Update MediaWiki +* +* This file is part of the Update MediaWiki extension for MediaWiki +* @file +* @ingroup Extensions +* @author Miguel Peláez <miguel2706outlook.com> +* @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later +* @link http://www.mediawiki.org/wiki/Extension:Ads Documentation +**********************************************************************/ + +$specialPageAliases = array(); + +/** English + * @author Miguel2706 + */ +$specialPageAliases[ 'en' ] = array( + 'updatemediawiki' => array( 'updatemediawiki', 'Update MediaWiki' ), +); + +/** Spanish + * @author Miguel2706 + */ +$specialPageAliases[ 'es' ] = array( + 'updatemediawiki' => array( 'ActualizarMediaWiki', 'Actualizar MediaWiki' ), +); \ No newline at end of file diff --git a/updatemediawiki.i18n.php b/updatemediawiki.i18n.php new file mode 100644 index 0000000..1cc5b06 --- /dev/null +++ b/updatemediawiki.i18n.php @@ -0,0 +1,61 @@ +<? +/********************************************************************* +* +* Internationalisation for Update MediaWiki +* +* This file is part of the Update MediaWiki extension for MediaWiki +* @file +* @ingroup Extensions +* @author Miguel Peláez <miguel2706outlook.com> +* @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later +* @link http://www.mediawiki.org/wiki/Extension:Ads Documentation +**********************************************************************/ + +$messages = array(); + +/** English + * @author Miguel2706 + */ +$messages[ 'en' ] = array( + 'updatemediawiki' => "Update MediaWiki", + 'updatemediawiki-desc' => "Allows administrators and authorized users upgrade from a special page MediaWiki.", + 'updatemediawiki-current' => "Current version", + 'updatemediawiki-update-nofound' => "No update is available", + 'updatemediawiki-update-found' => "New Update Found", + 'updatemediawiki-update-downloading' => "Downloading new update", + 'updatemediawiki-update-saved' => "Update Downloaded And Saved", + 'updatemediawiki-update-exist' => "Update already downloaded", + 'updatemediawiki-update-copyready' => "Copy ready", + 'updatemediawiki-update-database' => "Update the data base Now?", + 'updatemediawiki-update-updateready' => "Update ready", + 'updatemediawiki-update-install' => "Install Now?", + 'updatemediawiki-update-updated' => "MediaWiki Updated to version", + 'updatemediawiki-update-error' => "Could not find latest realeases", + 'updatemediawiki-update-aborted' => "Could not save new update. Operation aborted", + + + + +); + +/** Message documentation + * @author Miguel2706 + */ +$messages[ 'es' ] = array( + 'updatemediawiki' => "Actualizar MediaWiki", + 'updatemediawiki-desc' => "Permite a los administradores y usuarios autorizados actualizar MediaWiki desde una página especial.", + 'updatemediawiki-current' => "Versión Actual", + 'updatemediawiki-update-nofound' => "No hay actualizaciones disponibles", + 'updatemediawiki-update-found' => "Nueva actualización encontrada", + 'updatemediawiki-update-downloading' => "Descargando nueva actualización", + 'updatemediawiki-update-saved' => "Nueva actualización descargada y guardada", + 'updatemediawiki-update-exist' => "La actualización ya se habÃa descargado", + 'updatemediawiki-update-copyready' => "Copia lista", + 'updatemediawiki-update-database' => "¿Actualizar la base de datos ahora?", + 'updatemediawiki-update-updateready' => "Actualización lista", + 'updatemediawiki-update-install' => "¿Instalar ahora?", + 'updatemediawiki-update-updated' => "MediaWiki actualizado a la versión", + 'updatemediawiki-update-error' => "No se pudo obtener las últimas actualizaciones", + 'updatemediawiki-update-aborted' => "No se pudo descargar la actualización. Operación abortada", + +); \ No newline at end of file -- To view, visit https://gerrit.wikimedia.org/r/78470 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia4a59637d10de537e33476416f30b9e834302a7d Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/UpdateMediaWiki Gerrit-Branch: master Gerrit-Owner: Miguel2706 <[email protected]> _______________________________________________ MediaWiki-commits mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
