Add 'pmid' to the default interwiki list, and update 'rfc'
authorKunal Mehta <legoktm@member.fsf.org>
Thu, 6 Oct 2016 02:55:46 +0000 (19:55 -0700)
committerKunal Mehta <legoktm@member.fsf.org>
Thu, 6 Oct 2016 22:15:29 +0000 (15:15 -0700)
As an alternative to using magic links, PMID was added to the default
interwiki list.

RFC already existed, but the URL in the default list was pointing to
rfc-editor.org, not the tools.ietf.org view like the RFC magic link or
Wikimedia interwiki map are.

Updating the default lists in maintenance/interwiki* only affects new
installations, so a post-database update maintenance script adds and
updates the two interwiki prefixes.

Bug: T147536
Change-Id: I5a2c2c9b0f989da62a4395c9516d880c7d923444

autoload.php
includes/installer/DatabaseUpdater.php
maintenance/addRFCandPMIDInterwiki.php [new file with mode: 0644]
maintenance/interwiki.list
maintenance/interwiki.sql

index ffd6557..748d954 100644 (file)
@@ -10,6 +10,7 @@ $wgAutoloadLocalClasses = [
        'Action' => __DIR__ . '/includes/actions/Action.php',
        'ActiveUsersPager' => __DIR__ . '/includes/specials/pagers/ActiveUsersPager.php',
        'ActivityUpdateJob' => __DIR__ . '/includes/jobqueue/jobs/ActivityUpdateJob.php',
+       'AddRFCAndPMIDInterwiki' => __DIR__ . '/maintenance/addRFCandPMIDInterwiki.php',
        'AjaxDispatcher' => __DIR__ . '/includes/AjaxDispatcher.php',
        'AjaxResponse' => __DIR__ . '/includes/AjaxResponse.php',
        'AllMessagesTablePager' => __DIR__ . '/includes/specials/pagers/AllMessagesTablePager.php',
index aece317..ff87e9f 100644 (file)
@@ -77,6 +77,7 @@ abstract class DatabaseUpdater {
                PopulateBacklinkNamespace::class,
                FixDefaultJsonContentPages::class,
                CleanupEmptyCategories::class,
+               AddRFCAndPMIDInterwiki::class,
        ];
 
        /**
diff --git a/maintenance/addRFCandPMIDInterwiki.php b/maintenance/addRFCandPMIDInterwiki.php
new file mode 100644 (file)
index 0000000..9740ef2
--- /dev/null
@@ -0,0 +1,86 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+require_once __DIR__ . '/Maintenance.php';
+
+/**
+ * Run automatically with update.php
+ *
+ * - Changes "rfc" URL to use tools.ietf.org domain
+ * - Adds "pmid" interwiki
+ *
+ * @since 1.28
+ */
+class AddRFCAndPMIDInterwiki extends LoggedUpdateMaintenance {
+       public function __construct() {
+               parent::__construct();
+               $this->addDescription( 'Add RFC and PMID to the interwiki database table' );
+       }
+
+       protected function getUpdateKey() {
+               return __CLASS__;
+       }
+
+       protected function updateSkippedMessage() {
+               return 'RFC and PMID already added to interwiki database table';
+       }
+
+       protected function doDBUpdates() {
+               $interwikiCache = $this->getConfig()->get( 'InterwikiCache' );
+               // Using something other than the database,
+               if ( $interwikiCache !== false ) {
+                       return true;
+               }
+               $dbw = $this->getDB( DB_MASTER );
+               $rfc = $dbw->selectField(
+                       'interwiki',
+                       'iw_url',
+                       [ 'iw_prefix' => 'rfc' ],
+                       __METHOD__
+               );
+
+               // Old pre-1.28 default value, or not set at all
+               if ( $rfc === false || $rfc === 'http://www.rfc-editor.org/rfc/rfc$1.txt' ) {
+                       $dbw->replace(
+                               'interwiki',
+                               [ 'iw_prefix' ],
+                               [
+                                       'iw_prefix' => 'rfc',
+                                       'iw_url' => 'https://tools.ietf.org/html/rfc$1'
+                               ],
+                               __METHOD__
+                       );
+               }
+
+               $dbw->insert(
+                       'interwiki',
+                       [
+                               'iw_prefix' => 'pmid',
+                               'iw_url' => 'https://www.ncbi.nlm.nih.gov/pubmed/$1?dopt=Abstract',
+                       ],
+                       __METHOD__,
+                       // If there's already a pmid interwiki link, don't
+                       // overwrite it
+                       [ 'IGNORE' ]
+               );
+
+               return true;
+       }
+}
index 3cc009e..fa8bf3b 100644 (file)
@@ -34,8 +34,9 @@ mozillawiki|http://wiki.mozilla.org/$1|0|https://wiki.mozilla.org/api.php
 mw|https://www.mediawiki.org/wiki/$1|0|https://www.mediawiki.org/w/api.php
 oeis|http://oeis.org/$1|0|
 openwiki|http://openwiki.com/ow.asp?$1|0|
+pmid|https://www.ncbi.nlm.nih.gov/pubmed/$1?dopt=Abstract|0|
 pythoninfo|http://wiki.python.org/moin/$1|0|
-rfc|http://www.rfc-editor.org/rfc/rfc$1.txt|0|
+rfc|https://tools.ietf.org/html/rfc$1|0|
 s23wiki|http://s23.org/wiki/$1|0|http://s23.org/w/api.php
 seattlewireless|http://seattlewireless.net/$1|0|
 senseislibrary|http://senseis.xmp.net/?$1|0|
index 0e0bb5c..adb6cd1 100644 (file)
@@ -36,8 +36,9 @@ REPLACE INTO /*$wgDBprefix*/interwiki (iw_prefix,iw_url,iw_local,iw_api) VALUES
 ('mw','https://www.mediawiki.org/wiki/$1',0,'https://www.mediawiki.org/w/api.php'),
 ('oeis','http://oeis.org/$1',0,''),
 ('openwiki','http://openwiki.com/ow.asp?$1',0,''),
+('pmid', 'https://www.ncbi.nlm.nih.gov/pubmed/$1?dopt=Abstract',0,''),
 ('pythoninfo','http://wiki.python.org/moin/$1',0,''),
-('rfc','http://www.rfc-editor.org/rfc/rfc$1.txt',0,''),
+('rfc','https://tools.ietf.org/html/rfc$1',0,''),
 ('s23wiki','http://s23.org/wiki/$1',0,'http://s23.org/w/api.php'),
 ('seattlewireless','http://seattlewireless.net/$1',0,''),
 ('senseislibrary','http://senseis.xmp.net/?$1',0,''),