function convertMetadataVersion($metadata, $version = 1) { // basically flattens arrays. $version = explode(';', $version, 2); $version = intval($version[0]); if ($version < 1 || $version >= 2) { return $metadata; } $avoidHtml = true; if (!is_array($metadata)) { $metadata = unserialize($metadata); } if (!isset($metadata['MEDIAWIKI_EXIF_VERSION']) || $metadata['MEDIAWIKI_EXIF_VERSION'] != 2) { return $metadata; } // Treat Software as a special case because in can contain // an array of (SoftwareName, Version). if (isset($metadata['Software']) && is_array($metadata['Software']) && is_array($metadata['Software'][0]) && isset($metadata['Software'][0][0]) && isset($metadata['Software'][0][1])) { $metadata['Software'] = $metadata['Software'][0][0] . ' (Version ' . $metadata['Software'][0][1] . ')'; } // ContactInfo also has to be dealt with specially if (isset($metadata['Contact'])) { $metadata['Contact'] = FormatMetadata::collapseContactInfo($metadata['Contact']); } foreach ($metadata as &$val) { if (is_array($val)) { $val = FormatMetadata::flattenArray($val, 'ul', $avoidHtml); } } $metadata['MEDIAWIKI_EXIF_VERSION'] = 1; return $metadata; }
/** * @param $filename String * @param $expected Integer Total image area * @dataProvider provideFlattenArray * @covers FormatMetadata::flattenArray */ public function testFlattenArray($vals, $type, $noHtml, $ctx, $expected) { $actual = FormatMetadata::flattenArray($vals, $type, $noHtml, $ctx); $this->assertEquals($expected, $actual); }