From: Matthew Flaschen Date: Mon, 8 May 2017 05:06:12 +0000 (-0400) Subject: Change delimiter for multiple namespaces and tags X-Git-Tag: 1.31.0-rc.0~3294^2 X-Git-Url: http://git.cyclocoop.org/%7B%24admin_url%7Dmembres/cotisations/gestion/rappel_supprimer.php?a=commitdiff_plain;h=efe994d3c3d2465b3b6ec457afb661e109e89e60;p=lhc%2Fweb%2Fwiklou.git Change delimiter for multiple namespaces and tags It's ; for namespaces (since that is generally what we're using, e.g. for STRING_OPTIONS), and | for tags. I would have preferred them to all be consistent, but there is one revision that has a ;, and this seems better than modifying the DB. Comma is already used as a delimiter between separate parameters (e.g. hideanons and namepsace). Also, fix multiple namespaces for parseParameters and add test cases. Bug: T164132 Bug: T164133 Change-Id: Iad061e0bc17e3522a3f5d330ac2c8bf9cf0e614f --- diff --git a/includes/changetags/ChangeTags.php b/includes/changetags/ChangeTags.php index 46cae8f011..a07d3c98ef 100644 --- a/includes/changetags/ChangeTags.php +++ b/includes/changetags/ChangeTags.php @@ -660,7 +660,7 @@ class ChangeTags { $tables[] = 'change_tag'; $join_conds['change_tag'] = [ 'INNER JOIN', $join_cond ]; - $conds['ct_tag'] = explode( ',', $filter_tag ); + $conds['ct_tag'] = explode( '|', $filter_tag ); } } @@ -947,9 +947,12 @@ class ChangeTags { return Status::newFatal( 'tags-create-no-name' ); } - // tags cannot contain commas (used as a delimiter in tag_summary table) or - // slashes (would break tag description messages in MediaWiki namespace) - if ( strpos( $tag, ',' ) !== false || strpos( $tag, '/' ) !== false ) { + // tags cannot contain commas (used as a delimiter in tag_summary table), + // pipe (used as a delimiter between multiple tags in + // modifyDisplayQuery), or slashes (would break tag description messages in + // MediaWiki namespace) + if ( strpos( $tag, ',' ) !== false || strpos( $tag, '|' ) !== false + || strpos( $tag, '/' ) !== false ) { return Status::newFatal( 'tags-create-invalid-chars' ); } diff --git a/includes/specialpage/ChangesListSpecialPage.php b/includes/specialpage/ChangesListSpecialPage.php index 7e70df2028..51212ba9b1 100644 --- a/includes/specialpage/ChangesListSpecialPage.php +++ b/includes/specialpage/ChangesListSpecialPage.php @@ -1078,7 +1078,7 @@ abstract class ChangesListSpecialPage extends SpecialPage { // Namespace filtering if ( $opts[ 'namespace' ] !== '' ) { - $namespaces = explode( ',', $opts[ 'namespace' ] ); + $namespaces = explode( ';', $opts[ 'namespace' ] ); if ( $opts[ 'associated' ] ) { $associatedNamespaces = array_map( diff --git a/includes/specials/SpecialRecentchanges.php b/includes/specials/SpecialRecentchanges.php index c10dbddf39..f09dae7eb0 100644 --- a/includes/specials/SpecialRecentchanges.php +++ b/includes/specials/SpecialRecentchanges.php @@ -291,7 +291,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage { if ( preg_match( '/^days=(\d+)$/', $bit, $m ) ) { $opts['days'] = $m[1]; } - if ( preg_match( '/^namespace=(\d+)$/', $bit, $m ) ) { + if ( preg_match( '/^namespace=(.*)$/', $bit, $m ) ) { $opts['namespace'] = $m[1]; } if ( preg_match( '/^tagfilter=(.*)$/', $bit, $m ) ) { diff --git a/tests/phpunit/includes/specialpage/ChangesListSpecialPageTest.php b/tests/phpunit/includes/specialpage/ChangesListSpecialPageTest.php index c8c65dc4a0..e2209eb3d1 100644 --- a/tests/phpunit/includes/specialpage/ChangesListSpecialPageTest.php +++ b/tests/phpunit/includes/specialpage/ChangesListSpecialPageTest.php @@ -136,7 +136,7 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase "rc_namespace IN ('1','2','3')", ], [ - 'namespace' => '1,2,3', + 'namespace' => '1;2;3', ], "rc conditions with multiple namespaces" ); @@ -148,7 +148,7 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase "rc_namespace IN ('0','1','4','5','6','7')", ], [ - 'namespace' => '1,4,7', + 'namespace' => '1;4;7', 'associated' => 1, ], "rc conditions with multiple namespaces and associated" @@ -161,7 +161,7 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase "rc_namespace NOT IN ('2','3','8','9')", ], [ - 'namespace' => '2,3,9', + 'namespace' => '2;3;9', 'associated' => 1, 'invert' => 1 ], @@ -175,7 +175,7 @@ class ChangesListSpecialPageTest extends AbstractChangesListSpecialPageTestCase "rc_namespace NOT IN ('1','2','3')", ], [ - 'namespace' => '1,2,3', + 'namespace' => '1;2;3', 'invert' => 1, ], "rc conditions with multiple namespaces inverted" diff --git a/tests/phpunit/includes/specials/SpecialRecentchangesTest.php b/tests/phpunit/includes/specials/SpecialRecentchangesTest.php index 8f3f585de7..85becff665 100644 --- a/tests/phpunit/includes/specials/SpecialRecentchangesTest.php +++ b/tests/phpunit/includes/specials/SpecialRecentchangesTest.php @@ -27,9 +27,13 @@ class SpecialRecentchangesTest extends AbstractChangesListSpecialPageTestCase { [ 'days=3', [ 'days' => '3' ] ], - [ 'namespace=5', [ 'namespace' => 5 ] ], + [ 'namespace=5', [ 'namespace' => '5' ] ], + + [ 'namespace=5|3', [ 'namespace' => '5|3' ] ], [ 'tagfilter=foo', [ 'tagfilter' => 'foo' ] ], + + [ 'tagfilter=foo;bar', [ 'tagfilter' => 'foo;bar' ] ], ]; }