From: Gergő Tisza Date: Tue, 23 Sep 2014 14:36:40 +0000 (+0000) Subject: Move addTrackingCategory from Parser to ParserOutput X-Git-Tag: 1.31.0-rc.0~13773^2 X-Git-Url: https://git.cyclocoop.org/%242?a=commitdiff_plain;h=382d4df8582352777e31e5776a76aecc839de208;p=lhc%2Fweb%2Fwiklou.git Move addTrackingCategory from Parser to ParserOutput addTrackingCategory is more in line with ParserOutput's functionality (addLink, addCategory etc), and tracking categories are useful even for content types which do not use the parser at all. There is no reason to require the caller to obtain a Parser object just to be able to add tracking categories. Change-Id: I89d9ea1db3a4e6486e77eee940bd438f7753b776 --- diff --git a/includes/parser/Parser.php b/includes/parser/Parser.php index 2d72debbab..ddd1f9a3b9 100644 --- a/includes/parser/Parser.php +++ b/includes/parser/Parser.php @@ -4359,40 +4359,12 @@ class Parser { } /** - * Add a tracking category, getting the title from a system message, - * or print a debug message if the title is invalid. - * - * Please add any message that you use with this function to - * $wgTrackingCategories. That way they will be listed on - * Special:TrackingCategories. - * + * @see ParserOutput::addTrackingCategory() * @param string $msg Message key * @return bool Whether the addition was successful */ public function addTrackingCategory( $msg ) { - if ( $this->mTitle->getNamespace() === NS_SPECIAL ) { - wfDebug( __METHOD__ . ": Not adding tracking category $msg to special page!\n" ); - return false; - } - // Important to parse with correct title (bug 31469) - $cat = wfMessage( $msg ) - ->title( $this->getTitle() ) - ->inContentLanguage() - ->text(); - - # Allow tracking categories to be disabled by setting them to "-" - if ( $cat === '-' ) { - return false; - } - - $containerCategory = Title::makeTitleSafe( NS_CATEGORY, $cat ); - if ( $containerCategory ) { - $this->mOutput->addCategory( $containerCategory->getDBkey(), $this->getDefaultSort() ); - return true; - } else { - wfDebug( __METHOD__ . ": [[MediaWiki:$msg]] is not a valid title!\n" ); - return false; - } + return $this->mOutput->addTrackingCategory( $msg, $this->mTitle ); } /** diff --git a/includes/parser/ParserOutput.php b/includes/parser/ParserOutput.php index 5037ce18aa..43e8d0b8ea 100644 --- a/includes/parser/ParserOutput.php +++ b/includes/parser/ParserOutput.php @@ -471,6 +471,46 @@ class ParserOutput extends CacheTime { $this->mPreventClickjacking = $this->mPreventClickjacking || $out->getPreventClickjacking(); } + /** + * Add a tracking category, getting the title from a system message, + * or print a debug message if the title is invalid. + * + * Please add any message that you use with this function to + * $wgTrackingCategories. That way they will be listed on + * Special:TrackingCategories. + * + * @param string $msg Message key + * @param Title $title title of the page which is being tracked + * @return bool Whether the addition was successful + * @since 1.25 + */ + public function addTrackingCategory( $msg, $title ) { + if ( $title->getNamespace() === NS_SPECIAL ) { + wfDebug( __METHOD__ . ": Not adding tracking category $msg to special page!\n" ); + return false; + } + + // Important to parse with correct title (bug 31469) + $cat = wfMessage( $msg ) + ->title( $title ) + ->inContentLanguage() + ->text(); + + # Allow tracking categories to be disabled by setting them to "-" + if ( $cat === '-' ) { + return false; + } + + $containerCategory = Title::makeTitleSafe( NS_CATEGORY, $cat ); + if ( $containerCategory ) { + $this->addCategory( $containerCategory->getDBkey(), $this->getProperty( 'defaultsort' ) ?: '' ); + return true; + } else { + wfDebug( __METHOD__ . ": [[MediaWiki:$msg]] is not a valid title!\n" ); + return false; + } + } + /** * Override the title to be used for display * -- this is assumed to have been validated