Gergő Tisza has uploaded a new change for review.
https://gerrit.wikimedia.org/r/282141
Change subject: Convert booleanish values to real booleans
......................................................................
Convert booleanish values to real booleans
Bug: T86726
Change-Id: I79ce6004e023c2ca552e7a43858c397aaeb5495e
---
M TemplateParser.php
M tests/data/File_Dala_Kyrka.JPG.php
M tests/data/File_Pentacle_3.svg.php
M tests/data/File_Sunrise_over_fishing_boats_in_Kerala.jpg.php
M tests/phpunit/HookHandlerTest.php
M tests/phpunit/TemplateParserTest.php
6 files changed, 47 insertions(+), 9 deletions(-)
git pull
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/CommonsMetadata
refs/changes/41/282141/1
diff --git a/TemplateParser.php b/TemplateParser.php
index 4a2e1fc..016b480 100644
--- a/TemplateParser.php
+++ b/TemplateParser.php
@@ -33,6 +33,13 @@
);
/**
+ * Fields which should be converted into boolean
+ */
+ protected static $booleanLicenseFields = array(
+ 'AttributionRequired', 'NonFree',
+ );
+
+ /**
* HTML element class/id => metadata field name mapping for information
template data.
* @var array
*/
@@ -329,8 +336,19 @@
$data = array();
foreach ( $domNavigator->findElementsWithClass( '*',
'licensetpl' ) as $licenseNode ) {
$licenseData = $this->parseLicenseNode( $domNavigator,
$licenseNode );
+ foreach ( $licenseData as $field => $value ) {
+ if ( in_array( $field,
self::$booleanLicenseFields, true ) ) {
+ if ( self::parseBoolean( $value ) ===
false ) {
+ unset( $licenseData[$field] );
+ } else {
+ // can't set proper booleans
here, the API would
+ // mangle them when
jsonformat=2 is not used
+ $licenseData[$field] = '1';
+ }
+ }
+ }
if ( isset( $licenseData['UsageTerms'] ) ) {
- $licenseData['Copyrighted'] = (
$licenseData['UsageTerms'] === 'Public domain' ) ? 'False' : 'True';
+ $licenseData['Copyrighted'] = (
$licenseData['UsageTerms'] === 'Public domain' ) ? '0' : '1';
}
$data[] = $licenseData;
}
@@ -529,4 +547,24 @@
}
return $transposedData;
}
+
+ /**
+ * Turn "boolean" metadata values into actual booleans
+ * @param string $value
+ * @return boolean|null
+ */
+ protected function parseBoolean( $value ) {
+ switch ( strtolower( trim( $value ) ) ) {
+ case '1':
+ case 'yes':
+ case 'true':
+ return true;
+ case '0':
+ case 'no':
+ case 'false':
+ return false;
+ default:
+ return null;
+ }
+ }
}
diff --git a/tests/data/File_Dala_Kyrka.JPG.php
b/tests/data/File_Dala_Kyrka.JPG.php
index 5dcd704..284b6f0 100644
--- a/tests/data/File_Dala_Kyrka.JPG.php
+++ b/tests/data/File_Dala_Kyrka.JPG.php
@@ -47,7 +47,7 @@
),
'Copyrighted' =>
array (
- 'value' => 'True',
+ 'value' => '1',
'source' => 'commons-desc-page',
),
);
diff --git a/tests/data/File_Pentacle_3.svg.php
b/tests/data/File_Pentacle_3.svg.php
index eb3386f..44a5cb3 100644
--- a/tests/data/File_Pentacle_3.svg.php
+++ b/tests/data/File_Pentacle_3.svg.php
@@ -20,7 +20,7 @@
),
'Copyrighted' =>
array (
- 'value' => 'True',
+ 'value' => '1',
'source' => 'commons-desc-page',
),
'License' =>
diff --git a/tests/data/File_Sunrise_over_fishing_boats_in_Kerala.jpg.php
b/tests/data/File_Sunrise_over_fishing_boats_in_Kerala.jpg.php
index 65d3232..10d8ce7 100644
--- a/tests/data/File_Sunrise_over_fishing_boats_in_Kerala.jpg.php
+++ b/tests/data/File_Sunrise_over_fishing_boats_in_Kerala.jpg.php
@@ -48,7 +48,7 @@
),
'Copyrighted' =>
array (
- 'value' => 'True',
+ 'value' => '1',
'source' => 'commons-desc-page',
),
);
diff --git a/tests/phpunit/HookHandlerTest.php
b/tests/phpunit/HookHandlerTest.php
index 3ec0e9b..2d16a31 100644
--- a/tests/phpunit/HookHandlerTest.php
+++ b/tests/phpunit/HookHandlerTest.php
@@ -94,7 +94,7 @@
$expectedMetadata = $this->parserTestHelper->getMetadata(
$testName );
foreach ( $expectedMetadata as $key => $val ) {
$this->assertArrayHasKey( $key, $actualMetadata, "Field
$key missing from metadata" );
- $this->assertEquals( $expectedMetadata[$key],
$actualMetadata[$key], "Value for field $key does not match" );
+ $this->assertSame( $expectedMetadata[$key],
$actualMetadata[$key], "Value for field $key does not match" );
}
}
diff --git a/tests/phpunit/TemplateParserTest.php
b/tests/phpunit/TemplateParserTest.php
index fcb57ad..cc2c805 100644
--- a/tests/phpunit/TemplateParserTest.php
+++ b/tests/phpunit/TemplateParserTest.php
@@ -236,7 +236,7 @@
// long name is called UsageTerms - bug 57847
$this->assertFieldEquals( 'UsageTerms', 'Creative Commons
Attribution-Share Alike 3.0', $data, TemplateParser::LICENSES_KEY );
$this->assertFieldEquals( 'LicenseUrl',
'http://creativecommons.org/licenses/by-sa/3.0', $data,
TemplateParser::LICENSES_KEY );
- $this->assertFieldEquals( 'Copyrighted', 'True', $data,
TemplateParser::LICENSES_KEY );
+ $this->assertFieldEquals( 'Copyrighted', '1', $data,
TemplateParser::LICENSES_KEY );
}
public function testMultiLicense() {
@@ -254,9 +254,9 @@
$this->assertFieldEquals( 'LicenseUrl',
'http://creativecommons.org/licenses/by-sa/3.0/', $data,
TemplateParser::LICENSES_KEY, 1 );
$this->assertFieldEquals( 'LicenseUrl',
'http://creativecommons.org/licenses/by-sa/2.5', $data,
TemplateParser::LICENSES_KEY, 2 );
- $this->assertFieldEquals( 'Copyrighted', 'True', $data,
TemplateParser::LICENSES_KEY, 0 );
- $this->assertFieldEquals( 'Copyrighted', 'True', $data,
TemplateParser::LICENSES_KEY, 1 );
- $this->assertFieldEquals( 'Copyrighted', 'True', $data,
TemplateParser::LICENSES_KEY, 2 );
+ $this->assertFieldEquals( 'Copyrighted', '1', $data,
TemplateParser::LICENSES_KEY, 0 );
+ $this->assertFieldEquals( 'Copyrighted', '1', $data,
TemplateParser::LICENSES_KEY, 1 );
+ $this->assertFieldEquals( 'Copyrighted', '1', $data,
TemplateParser::LICENSES_KEY, 2 );
}
public function testLicenseTemplateInsideInformationTemplate() {
--
To view, visit https://gerrit.wikimedia.org/r/282141
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I79ce6004e023c2ca552e7a43858c397aaeb5495e
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/CommonsMetadata
Gerrit-Branch: master
Gerrit-Owner: Gergő Tisza <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits