MediaWiki  master
addRFCandPMIDInterwiki.php
Go to the documentation of this file.
1 <?php
22 
23 require_once __DIR__ . '/Maintenance.php';
24 
34  public function __construct() {
35  parent::__construct();
36  $this->addDescription( 'Add RFC and PMID to the interwiki database table' );
37  }
38 
39  protected function getUpdateKey() {
40  return __CLASS__;
41  }
42 
43  protected function updateSkippedMessage() {
44  return 'RFC and PMID already added to interwiki database table.';
45  }
46 
47  protected function doDBUpdates() {
48  $interwikiCache = $this->getConfig()->get( MainConfigNames::InterwikiCache );
49  // Using something other than the database,
50  if ( $interwikiCache !== false ) {
51  return true;
52  }
53  $dbw = $this->getDB( DB_PRIMARY );
54 
55  $rfc = $dbw->newSelectQueryBuilder()
56  ->select( 'iw_url' )
57  ->from( 'interwiki' )
58  ->where( [ 'iw_prefix' => 'rfc' ] )
59  ->caller( __METHOD__ )
60  ->fetchField();
61 
62  // Old pre-1.28 default value, or not set at all
63  if ( $rfc === false || $rfc === 'http://www.rfc-editor.org/rfc/rfc$1.txt' ) {
64  $dbw->replace(
65  'interwiki',
66  [ [ 'iw_prefix' ] ],
67  [
68  'iw_prefix' => 'rfc',
69  'iw_url' => 'https://tools.ietf.org/html/rfc$1',
70  'iw_api' => '',
71  'iw_wikiid' => '',
72  'iw_local' => 0,
73  ],
74  __METHOD__
75  );
76  }
77 
78  $dbw->insert(
79  'interwiki',
80  [
81  'iw_prefix' => 'pmid',
82  'iw_url' => 'https://www.ncbi.nlm.nih.gov/pubmed/$1?dopt=Abstract',
83  'iw_api' => '',
84  'iw_wikiid' => '',
85  'iw_local' => 0,
86  ],
87  __METHOD__,
88  // If there's already a pmid interwiki link, don't
89  // overwrite it
90  [ 'IGNORE' ]
91  );
92 
93  return true;
94  }
95 }
96 
97 $maintClass = AddRFCandPMIDInterwiki::class;
98 require_once RUN_MAINTENANCE_IF_MAIN;
Run automatically with update.php.
doDBUpdates()
Do the actual work.
getUpdateKey()
Get the update key name to go in the update log table.
__construct()
Default constructor.
updateSkippedMessage()
Message to show that the update was done already and was just skipped.
Class for scripts that perform database maintenance and want to log the update in updatelog so we can...
getDB( $db, $groups=[], $dbDomain=false)
Returns a database to be used by current maintenance script.
addDescription( $text)
Set the description text.
A class containing constants representing the names of configuration variables.
const DB_PRIMARY
Definition: defines.php:28