Florianschmidtwelzow has uploaded a new change for review. https://gerrit.wikimedia.org/r/284005
Change subject: Add special page to add sites to sites table ...................................................................... Add special page to add sites to sites table Bug: T132937 Change-Id: I763ec65cb06d5250a3886a66eefdde8701b2299c --- M autoload.php A maintenance/addSite.php 2 files changed, 89 insertions(+), 0 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core refs/changes/05/284005/1 diff --git a/autoload.php b/autoload.php index 22411cd..5b93b40 100644 --- a/autoload.php +++ b/autoload.php @@ -9,6 +9,7 @@ 'Action' => __DIR__ . '/includes/actions/Action.php', 'ActiveUsersPager' => __DIR__ . '/includes/specials/pagers/ActiveUsersPager.php', 'ActivityUpdateJob' => __DIR__ . '/includes/jobqueue/jobs/ActivityUpdateJob.php', + 'AddSite' => __DIR__ . '/maintenance/addSite.php', 'AjaxDispatcher' => __DIR__ . '/includes/AjaxDispatcher.php', 'AjaxResponse' => __DIR__ . '/includes/AjaxResponse.php', 'AllMessagesTablePager' => __DIR__ . '/includes/specials/pagers/AllMessagesTablePager.php', diff --git a/maintenance/addSite.php b/maintenance/addSite.php new file mode 100755 index 0000000..44ba636 --- /dev/null +++ b/maintenance/addSite.php @@ -0,0 +1,88 @@ +<?php + +use MediaWiki\MediaWikiServices; + +$basePath = getenv( 'MW_INSTALL_PATH' ) !== false ? getenv( 'MW_INSTALL_PATH' ) : __DIR__ . '/..'; + +require_once $basePath . '/maintenance/Maintenance.php'; + +/** + * Maintenance script for adding a site definition into the sites table. + * + * @since 1.27 + * + * @license GNU GPL v2+ + * @author Florian Schmidt + */ +class AddSite extends Maintenance { + + public function __construct() { + $this->addDescription( 'Add a site definitions into the sites table.' ); + + $this->addArg( 'globalid', 'The global id of the site to add', true ); + $this->addArg( 'group', 'In which group this site should be sorted in', true ); + $this->addOption( 'language', 'The language code of the site, e.g. "de"' ); + $this->addOption( 'interwikiid', 'The interwiki ID of the site.' ); + $this->addOption( 'navigationid', 'The navigation ID of the site.' ); + $this->addOption( 'pagepath', 'The URL to pages of this site, e.g. https://example.com/wiki/\$1' ); + $this->addOption( 'filepath', 'The URL to files of this site, e.g. https://example.com/w/\$1' ); + + parent::__construct(); + } + + /** + * Do the import. + */ + public function execute() { + $siteStore = MediaWikiServices::getInstance()->getSiteStore(); + $siteStore->reset(); + + $globalId = $this->getArg( 0 ); + $group = $this->getArg( 1 ); + $language = $this->getOption( 'language' ); + $interwikiId = $this->getOption( 'interwikiid' ); + $navigationId = $this->getOption( 'navigationid' ); + $pagepath = $this->getOption( 'pagepath' ); + $filepath = $this->getOption( 'filepath' ); + + if ( !is_string( $globalId ) || !is_string( $group ) ) { + echo "Arguments globalid and group need to be strings.\n"; + return false; + } + + if ( $siteStore->getSite( $globalId ) !== null ) { + echo "Site with global Id $globalId already exists.\n"; + return false; + } + + $site = new MediaWikiSite(); + $site->setGlobalId( $globalId ); + $site->setGroup( $group ); + if ( $language !== null ) { + $site->setLanguageCode( $language ); + } + if ( $interwikiId !== null ) { + $site->addInterwikiId( $interwikiId ); + } + if ( $navigationId !== null ) { + $site->addNavigationId( $navigationId ); + } + if ( $pagepath !== null ) { + $site->setPath( MediaWikiSite::PATH_PAGE, $pagepath ); + } + if ( $filepath !== null ) { + $site->setPath( MediaWikiSite::PATH_FILE, $filepath ); + } + + $siteStore->saveSites( array( $site ) ); + + if ( method_exists( $siteStore, 'reset' ) ) { + $siteStore->reset(); + } + + echo "Done.\n"; + } +} + +$maintClass = 'AddSite'; +require_once RUN_MAINTENANCE_IF_MAIN; -- To view, visit https://gerrit.wikimedia.org/r/284005 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I763ec65cb06d5250a3886a66eefdde8701b2299c Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/core Gerrit-Branch: master Gerrit-Owner: Florianschmidtwelzow <florian.schmidt.stargatewis...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits