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

Reply via email to