$wgMediaHandlers configuration variable.
* New 'AbortDiffCache' hook can be used to cancel the caching of a diff
* (bug 15835) Added Content-Style-Type meta tag
+* Add class="disambiguationpage" to <body> tag for disambiguations
=== Bug fixes in 1.14 ===
return $titleObj !== NULL;
}
+ function isDisambig() {
+ global $wgParser;
+ $this->loadContent();
+ $output = $wgParser->parse( $this->fetchContent(), $this->mTitle, new ParserOptions() );
+ $templates = $output->getTemplates();
+ $disambigs = wfGetDisambiguationTemplates();
+ if( isset( $templates[NS_TEMPLATE] ) )
+ foreach( $templates[NS_TEMPLATE] as $dbk => $id )
+ foreach( $disambigs as $disambig )
+ if( $disambig->getDBkey() == $dbk )
+ return true;
+ return false;
+ }
+
/**
* Returns true if the currently-referenced revision is the current edit
* to this page (and it exists).
$name = preg_replace ( "/[^".Title::legalChars()."]|:/", '-', $name );
return $name;
}
+
+/**
+ * Fetches all disambiguation templates from MediaWiki:Disambiguationspage
+ */
+function wfGetDisambiguationTemplates() {
+ static $templates = null;
+ if( $templates )
+ return $templates;
+ $msgText = wfMsgForContent('disambiguationspage');
+ $templates = array();
+
+ # If the text can be treated as a title, use it verbatim.
+ # Otherwise, pull the titles from the links table
+ $dp = Title::newFromText($msgText);
+ if( $dp ) {
+ if($dp->getNamespace() != NS_TEMPLATE) {
+ # FIXME we assume the disambiguation message is a template but
+ # the page can potentially be from another namespace :/
+ wfDebug("Mediawiki:disambiguationspage message does not refer to a template!\n");
+ }
+ $templates [] = $dp;
+ } else {
+ # Get all the templates linked from the Mediawiki:Disambiguationspage
+ # Originally used database, now uses parser
+ global $wgParser;
+ $output = $wgParser->parse( $msgText,
+ Title::makeTitle( NS_MEDIAWIKI, 'Disambiguationspage' ), new ParserOptions() );
+ $links = $output->getLinks();
+ if( isset( $links[NS_TEMPLATE] ) )
+ foreach( $links[NS_TEMPLATE] as $dbk => $id )
+ if( $id )
+ $templates[] = Title::makeTitle( NS_TEMPLATE, $dbk );
+ }
+ return $templates;
+}
function getSQL() {
$dbr = wfGetDB( DB_SLAVE );
- $dMsgText = wfMsgForContent('disambiguationspage');
-
$linkBatch = new LinkBatch;
-
- # If the text can be treated as a title, use it verbatim.
- # Otherwise, pull the titles from the links table
- $dp = Title::newFromText($dMsgText);
- if( $dp ) {
- if($dp->getNamespace() != NS_TEMPLATE) {
- # FIXME we assume the disambiguation message is a template but
- # the page can potentially be from another namespace :/
- wfDebug("Mediawiki:disambiguationspage message does not refer to a template!\n");
- }
- $linkBatch->addObj( $dp );
- } else {
- # Get all the templates linked from the Mediawiki:Disambiguationspage
- $disPageObj = Title::makeTitleSafe( NS_MEDIAWIKI, 'disambiguationspage' );
- $res = $dbr->select(
- array('pagelinks', 'page'),
- 'pl_title',
- array('page_id = pl_from', 'pl_namespace' => NS_TEMPLATE,
- 'page_namespace' => $disPageObj->getNamespace(), 'page_title' => $disPageObj->getDBkey()),
- __METHOD__ );
-
- while ( $row = $dbr->fetchObject( $res ) ) {
- $linkBatch->addObj( Title::makeTitle( NS_TEMPLATE, $row->pl_title ));
- }
-
- $dbr->freeResult( $res );
- }
+ foreach( wfGetDisambiguationTemplates() as $tl )
+ $linkBatch->addObj( $tl );
$set = $linkBatch->constructSet( 'lb.tl', $dbr );
if( $set === false ) {