diff --git a/NEWS b/NEWS index 7f5a77a..74e833d 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,11 @@ +Version 4.0.6 (2016-12-28) +------------------------------------------------------------------------ + +- Fix: Custom namespace weights were not respected. + +* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + + Version 4.0.5 (2016-12-14) ------------------------------------------------------------------------ diff --git a/README.md b/README.md index e3c72c0..abc3451 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,14 @@ pages](http://bovender.github.io/LinkTitles). This extension is [semantically versioned](http://semver.org). -If you wish to contribute, please issue pull requests against the `develop` branch. + +Contributing +------------ + +If you wish to contribute, please issue pull requests against the `develop` +branch, as I follow Vincent Driessen's advice on [A successful Git branching +model](http://nvie.com/git-model) (knowing that there are [alternative +workflows](http://scottchacon.com/2011/08/31/github-flow.html)). Contributors @@ -21,3 +28,4 @@ Contributors - Daniel Kraus (@bovender), main developer - Ulrich Strauss (@c0nnex), namespaces +- Brent Laabs (@labster), bug fixes diff --git a/extension.json b/extension.json index adb9513..52f25fe 100644 --- a/extension.json +++ b/extension.json @@ -2,11 +2,12 @@ "name": "LinkTitles", "author": [ "[https://www.mediawiki.org/wiki/User:Bovender Daniel Kraus (bovender)]", - "Ulrich Strauss (c0nnex)" + "Ulrich Strauss (c0nnex)", + "Brent Laabs (labster)" ], "type": "parserhook", "url": "https://www.mediawiki.org/wiki/Extension:LinkTitles", - "version": "4.0.5", + "version": "4.0.6", "license-name": "GPL-2.0+", "descriptionmsg": "linktitles-desc", "requires": { diff --git a/gh-pages b/gh-pages index fe99cf4..4735662 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit fe99cf4e039c3066c018fdf5973caee1cf4cef09 +Subproject commit 47356620d1eafbadd1f77ea89c24b0141519eddc diff --git a/includes/LinkTitles_Extension.php b/includes/LinkTitles_Extension.php index 60eaa44..d983dd3 100644 --- a/includes/LinkTitles_Extension.php +++ b/includes/LinkTitles_Extension.php @@ -35,7 +35,7 @@ class Extension { /// A Title object for the target page currently being examined. private static $targetTitle; - + // The TitleValue object of the target page private static $targetTitleValue; @@ -55,7 +55,7 @@ class Extension { private static $wordStartDelim; private static $wordEndDelim; - + public static $ltConsoleOutput; public static $ltConsoleOutputDebug; @@ -130,16 +130,16 @@ class Extension { // Build a blacklist of pages that are not supposed to be link // targets. This includes the current page. - $blackList = str_replace( '_', ' ', - '("' . implode( '", "',$wgLinkTitlesBlackList ) . '", "' . + $blackList = str_replace( ' ', '_', + '("' . implode( '","',$wgLinkTitlesBlackList ) . '","' . addslashes( self::$currentTitle->getDbKey() ) . '")' ); $currentNamespace[] = $title->getNamespace(); - + // Build our weight list. Make sure current namespace is first element $namespaces = array_diff($wgLinkTitlesNamespaces, $currentNamespace); array_unshift($namespaces, $currentNamespace[0] ); - + // No need for sanitiy check. we are sure that we have at least one element in the array $weightSelect = "CASE page_namespace "; $currentWeight = 0; @@ -148,7 +148,7 @@ class Extension { $weightSelect = $weightSelect . " WHEN " . $namspacevalue . " THEN " . $currentWeight . PHP_EOL; } $weightSelect = $weightSelect . " END "; - $namespacesClause = str_replace( '_', ' ','(' . implode( ', ',$namespaces ) . ')' ); + $namespacesClause = '(' . implode( ', ', $namespaces ) . ')'; // Build an SQL query and fetch all page titles ordered by length from // shortest to longest. Only titles from 'normal' pages (namespace uid @@ -165,7 +165,7 @@ class Extension { 'page_title NOT IN ' . $blackList, ), __METHOD__, - array( 'ORDER BY' => 'CHAR_LENGTH(page_title) ' . $sort_order ) + array( 'ORDER BY' => 'weight ASC, CHAR_LENGTH(page_title) ' . $sort_order ) ); } catch (Exception $e) { $res = $dbr->select( @@ -177,7 +177,7 @@ class Extension { 'page_title NOT IN ' . $blackList, ), __METHOD__, - array( 'ORDER BY' => 'LENGTH(page_title) ' . $sort_order ) + array( 'ORDER BY' => 'weight ASC, LENGTH(page_title) ' . $sort_order ) ); } @@ -194,7 +194,7 @@ class Extension { // regexp compilation errors self::$targetTitleText = self::$targetTitle->getText(); $quotedTitle = preg_quote(self::$targetTitleText, '/'); - + self::ltDebugLog('TargetTitle='. self::$targetTitleText,"private"); self::ltDebugLog('TargetTitleQuoted='. $quotedTitle,"private"); @@ -243,7 +243,7 @@ class Extension { }; // foreach $res as $row return $newText; } - + /// Automatically processes a single page, given a $title Title object. /// This function is called by the SpecialLinkTitles class and the /// LinkTitlesJob class. @@ -349,9 +349,9 @@ class Extension { /// Sets member variables for the current target page. private static function newTarget( $ns, $title ) { - self::$targetTitle = \Title::makeTitleSafe( $ns, $title ); - self::ltDebugLog( 'newtarget='. self::$targetTitle->getText(), "private" ); - self::$targetTitleValue = self::$targetTitle->getTitleValue(); + self::$targetTitle = \Title::makeTitleSafe( $ns, $title ); + self::ltDebugLog( 'newtarget='. self::$targetTitle->getText(), "private" ); + self::$targetTitleValue = self::$targetTitle->getTitleValue(); self::ltDebugLog( 'altTarget='. self::$targetTitleValue->getText(), "private" ); self::$targetContent = null; } @@ -477,6 +477,6 @@ private static function BuildDelimiters() { } wfDebugLog('LinkTitles', $text , 'private'); } - } +} // vim: ts=2:sw=2:noet:comments^=\:///