From 84568051da21eff8e23a146b86c080eb69771b7a Mon Sep 17 00:00:00 2001 From: addshore Date: Thu, 3 Dec 2015 14:09:34 +0100 Subject: [PATCH] Fix CatMemberChanges for numeric category names Change-Id: I5ff3ff2d26d8e2d0b4250843f028eabc96020ccc --- .../jobqueue/jobs/CategoryMembershipChangeJob.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/includes/jobqueue/jobs/CategoryMembershipChangeJob.php b/includes/jobqueue/jobs/CategoryMembershipChangeJob.php index 4487970049..2b0018d4a2 100644 --- a/includes/jobqueue/jobs/CategoryMembershipChangeJob.php +++ b/includes/jobqueue/jobs/CategoryMembershipChangeJob.php @@ -205,6 +205,13 @@ class CategoryMembershipChangeJob extends Job { return array( $categoryInserts, $categoryDeletes ); } + /** + * @param Title $title + * @param Revision $rev + * @param string $parseTimestamp TS_MW + * + * @return string[] category names + */ private function getCategoriesAtRev( Title $title, Revision $rev, $parseTimestamp ) { $content = $rev->getContent(); $options = $content->getContentHandler()->makeParserOptions( 'canonical' ); @@ -213,7 +220,9 @@ class CategoryMembershipChangeJob extends Job { // but that's more complicated than it's worth. $output = $content->getParserOutput( $title, $rev->getId(), $options ); - return array_keys( $output->getCategories() ); + // array keys will cast numeric category names to ints + // so we need to cast them back to strings to avoid breaking things! + return array_map( 'strval', array_keys( $output->getCategories() ) ); } public function getDeduplicationInfo() { -- 2.20.1