jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/284005 )

Change subject: Add maintenance script to add sites to sites table
......................................................................


Add maintenance script to add sites to sites table

Also: Add language code validation to Site::setLanguageCode().

Bug: T132937
Change-Id: I763ec65cb06d5250a3886a66eefdde8701b2299c
---
M autoload.php
M includes/site/Site.php
A maintenance/addSite.php
3 files changed, 95 insertions(+), 0 deletions(-)

Approvals:
  jenkins-bot: Verified
  Thiemo Mättig (WMDE): Looks good to me, approved



diff --git a/autoload.php b/autoload.php
index 1863577..e56b681 100644
--- a/autoload.php
+++ b/autoload.php
@@ -11,6 +11,7 @@
        'ActiveUsersPager' => __DIR__ . 
'/includes/specials/pagers/ActiveUsersPager.php',
        'ActivityUpdateJob' => __DIR__ . 
'/includes/jobqueue/jobs/ActivityUpdateJob.php',
        'AddRFCAndPMIDInterwiki' => __DIR__ . 
'/maintenance/addRFCandPMIDInterwiki.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/includes/site/Site.php b/includes/site/Site.php
index 6a97a50..28f19f9 100644
--- a/includes/site/Site.php
+++ b/includes/site/Site.php
@@ -463,6 +463,9 @@
         * @param string $languageCode
         */
        public function setLanguageCode( $languageCode ) {
+               if ( !Language::isValidCode( $languageCode ) ) {
+                       throw new InvalidArgumentException( "$languageCode is 
not a valid language code." );
+               }
                $this->languageCode = $languageCode;
        }
 
diff --git a/maintenance/addSite.php b/maintenance/addSite.php
new file mode 100755
index 0000000..1ebc4f6
--- /dev/null
+++ b/maintenance/addSite.php
@@ -0,0 +1,91 @@
+<?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.29
+ *
+ * @license GNU GPL v2+
+ * @author Florian Schmidt
+ */
+class AddSite extends Maintenance {
+
+       public function __construct() {
+               $this->addDescription( 'Add a site definition into the sites 
table.' );
+
+               $this->addArg( 'globalid', 'The global id of the site to add, 
e.g. "wikipedia".', 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( 'interwiki-id', 'The interwiki ID of the 
site.' );
+               $this->addOption( 'navigation-id', '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();
+       }
+
+       /**
+        * Imports the site described by the parameters (see 
self::__construct()) passed to this
+        * maintenance sccript into the sites table of MediaWiki.
+        */
+       public function execute() {
+               $siteStore = MediaWikiServices::getInstance()->getSiteStore();
+               $siteStore->reset();
+
+               $globalId = $this->getArg( 0 );
+               $group = $this->getArg( 1 );
+               $language = $this->getOption( 'language' );
+               $interwikiId = $this->getOption( 'interwiki-id' );
+               $navigationId = $this->getOption( 'navigation-id' );
+               $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->setPagePath( $pagepath );
+               }
+               if ( $filepath !== null ) {
+                       $site->setFilePath( $filepath );
+               }
+
+               $siteStore->saveSites( [ $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: merged
Gerrit-Change-Id: I763ec65cb06d5250a3886a66eefdde8701b2299c
Gerrit-PatchSet: 11
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Florianschmidtwelzow <florian.schmidt.stargatewis...@gmail.com>
Gerrit-Reviewer: Aude <aude.w...@gmail.com>
Gerrit-Reviewer: Daniel Kinzler <daniel.kinz...@wikimedia.de>
Gerrit-Reviewer: Dereckson <dereck...@espace-win.org>
Gerrit-Reviewer: Florianschmidtwelzow <florian.schmidt.stargatewis...@gmail.com>
Gerrit-Reviewer: Fomafix <foma...@googlemail.com>
Gerrit-Reviewer: Parent5446 <tylerro...@gmail.com>
Gerrit-Reviewer: Southparkfan <southparkfan...@hotmail.com>
Gerrit-Reviewer: Thiemo Mättig (WMDE) <thiemo.maet...@wikimedia.de>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to