aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKunal Mehta <legoktm@member.fsf.org>2016-10-05 19:55:46 -0700
committerKunal Mehta <legoktm@member.fsf.org>2016-10-06 15:15:29 -0700
commitc86a06ae3b72f0f1dc5ad77b4d2641e61fac5c32 (patch)
tree35095d21ea7d42167ccb93112037a9943b9779f7
parent5412c2f4a16bf3ee420f4f621a2821899b692434 (diff)
downloadmediawikicore-c86a06ae3b72f0f1dc5ad77b4d2641e61fac5c32.tar.gz
mediawikicore-c86a06ae3b72f0f1dc5ad77b4d2641e61fac5c32.zip
Add 'pmid' to the default interwiki list, and update 'rfc'
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
-rw-r--r--autoload.php1
-rw-r--r--includes/installer/DatabaseUpdater.php1
-rw-r--r--maintenance/addRFCandPMIDInterwiki.php86
-rw-r--r--maintenance/interwiki.list3
-rw-r--r--maintenance/interwiki.sql3
5 files changed, 92 insertions, 2 deletions
diff --git a/autoload.php b/autoload.php
index ffd6557f5dda..748d954e3086 100644
--- a/autoload.php
+++ b/autoload.php
@@ -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',
diff --git a/includes/installer/DatabaseUpdater.php b/includes/installer/DatabaseUpdater.php
index aece3170f075..ff87e9f58636 100644
--- a/includes/installer/DatabaseUpdater.php
+++ b/includes/installer/DatabaseUpdater.php
@@ -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
index 000000000000..9740ef2d7970
--- /dev/null
+++ b/maintenance/addRFCandPMIDInterwiki.php
@@ -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;
+ }
+}
diff --git a/maintenance/interwiki.list b/maintenance/interwiki.list
index 3cc009e744f2..fa8bf3b84269 100644
--- a/maintenance/interwiki.list
+++ b/maintenance/interwiki.list
@@ -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|
diff --git a/maintenance/interwiki.sql b/maintenance/interwiki.sql
index 0e0bb5c52a44..adb6cd141e98 100644
--- a/maintenance/interwiki.sql
+++ b/maintenance/interwiki.sql
@@ -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,''),