From c86a06ae3b72f0f1dc5ad77b4d2641e61fac5c32 Mon Sep 17 00:00:00 2001 From: Kunal Mehta Date: Wed, 5 Oct 2016 19:55:46 -0700 Subject: [PATCH] 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 --- autoload.php | 1 + includes/installer/DatabaseUpdater.php | 1 + maintenance/addRFCandPMIDInterwiki.php | 86 ++++++++++++++++++++++++++ maintenance/interwiki.list | 3 +- maintenance/interwiki.sql | 3 +- 5 files changed, 92 insertions(+), 2 deletions(-) create mode 100644 maintenance/addRFCandPMIDInterwiki.php diff --git a/autoload.php b/autoload.php index ffd6557f5d..748d954e30 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 aece3170f0..ff87e9f586 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 0000000000..9740ef2d79 --- /dev/null +++ b/maintenance/addRFCandPMIDInterwiki.php @@ -0,0 +1,86 @@ +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 3cc009e744..fa8bf3b842 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 0e0bb5c52a..adb6cd141e 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,''), -- 2.20.1