}
/**
- * Returns all interwiki prefixes
+ * Returns all interwiki prefix definitions.
*
* @deprecated since 1.28, unused. Use InterwikiLookup instead.
*
* @param string|null $local If set, limits output to local/non-local interwikis
- * @return array List of prefixes
+ * @return array[] List of interwiki rows
* @since 1.19
*/
public static function getAllPrefixes( $local = null ) {
public function fetch( $prefix );
/**
- * Returns all interwiki prefixes
+ * Returns information about all interwiki prefixes, in the form of rows
+ * of the interwiki table. Each row may have the following keys:
+ *
+ * - iw_prefix: the prefix. Always present.
+ * - iw_url: the URL to use for linking, with $1 as a placeholder for the target page.
+ * Always present.
+ * - iw_api: the URL of the API. Optional.
+ * - iw_wikiid: the wiki ID (usually the database name for local wikis). Optional.
+ * - iw_local: whether the wiki is local, and the "magic redirect" mechanism should apply.
+ * Defaults to false.
+ * - iw_trans: whether "scary transclusion" is allowed for this site.
+ * Defaults to false.
*
* @param string|null $local If set, limits output to local/non-local interwikis
- * @return string[] List of prefixes
+ * @return array[] interwiki rows.
*/
public function getAllPrefixes( $local = null );
* See InterwikiLookup::getAllPrefixes
*
* @param string|null $local If set, limits output to local/non-local interwikis
- * @return string[] List of prefixes
+ * @return array[] interwiki rows
*/
public function getAllPrefixes( $local = null ) {
- if ( $local === null ) {
- return array_keys( $this->getInterwikiMap() );
- }
$res = [];
foreach ( $this->getInterwikiMap() as $interwikiId => $interwiki ) {
- if ( $interwiki->isLocal() === $local ) {
- $res[] = $interwikiId;
+ if ( $local === null || $interwiki->isLocal() === $local ) {
+ $res[] = [
+ 'iw_prefix' => $interwikiId,
+ 'iw_url' => $interwiki->getURL(),
+ 'iw_api' => $interwiki->getAPI(),
+ 'iw_wikiid' => $interwiki->getWikiID(),
+ 'iw_local' => $interwiki->isLocal(),
+ 'iw_trans' => $interwiki->isTranscludable(),
+ ];
}
}
return $res;
}
public function testGetAllPrefixes() {
+ $foo = [
+ 'iw_prefix' => 'foo',
+ 'iw_url' => '',
+ 'iw_api' => '',
+ 'iw_wikiid' => 'foobar',
+ 'iw_local' => false,
+ 'iw_trans' => false,
+ ];
+ $enwt = [
+ 'iw_prefix' => 'enwt',
+ 'iw_url' => 'https://en.wiktionary.org/wiki/$1',
+ 'iw_api' => 'https://en.wiktionary.org/w/api.php',
+ 'iw_wikiid' => 'enwiktionary',
+ 'iw_local' => true,
+ 'iw_trans' => false,
+ ];
+
$this->assertEquals(
- [ 'foo', 'enwt' ],
+ [ $foo, $enwt ],
$this->interwikiLookup->getAllPrefixes(),
'getAllPrefixes()'
);
$this->assertEquals(
- [ 'foo' ],
+ [ $foo ],
$this->interwikiLookup->getAllPrefixes( false ),
'get external prefixes'
);
$this->assertEquals(
- [ 'enwt' ],
+ [ $enwt ],
$this->interwikiLookup->getAllPrefixes( true ),
'get local prefixes'
);